EVIDENCE PACKAGE — Invoice INV-2026-0001 for FooBarTech
Generated: 2026-09-14T12:23:48.415Z  ·  Anchor status: externally_anchored

WHAT THIS IS
------------
A self-verifying evidence package for the invoice above. It contains:

  manifest.json   The signed, machine-readable source of truth: every billed
                  work-log record, its full signed audit events, Merkle
                  inclusion proofs, and the RFC 3161 timestamp chain.
  verify.html     Open this in any modern browser. It re-runs every
                  cryptographic check FULLY OFFLINE — no network requests.
  invoice.html    A human-readable rendering of the invoice.
  lines.csv       The billed lines as a spreadsheet, for your own bookkeeping.
                  A convenience copy — see HONEST LIMITS below.
  anchors/*.der   Raw RFC 3161 timestamp tokens (and certificate chains),
                  byte-exact as returned by the timestamp authorities.

HOW TO VERIFY
-------------
1. Unzip everything into one folder.
2. Double-click verify.html. Green means the check passed; any red check
   means the package cannot be trusted as-is. Nothing is sent anywhere.
3. Compare the signing-key fingerprint shown on the page —

       e041 1b38 69b4 bc48

   — against the one in your contract, or against a previous invoice from
   the same sender. The same key across invoices means the same signer
   (key continuity). The signature proves "made by the holder of this key";
   binding the key to a person happens out of band.

WHAT THE CHECKS PROVE
---------------------
- The billed lines equal the work data recorded at capture time, replayed
  through signed, hash-chained audit events (Ed25519, SHA-256, RFC 8785).
- Each event is committed into a Merkle block root, and each anchored root
  was timestamped by an independent RFC 3161 timestamp authority — so the
  work records existed, in exactly this form, at the timestamped moments.
  Backdating outside the reported time windows is provably inconsistent.

HONEST LIMITS
-------------
- The browser page proves each timestamp token covers the exact block root
  and extracts its signed time, but does not validate the authority's CMS
  certificate chain (no trust store is available to an offline page), and
  revocation cannot be checked offline by any tool. To fully validate a
  token yourself:

      openssl ts -reply -in anchors/<receipt>.der -token_in -text
      openssl ts -verify -token_in -in anchors/<receipt>.der \
          -digest <blockRootHash from manifest.json> -CAfile <TSA CA cert>

- Crypto posture: SoftwareKeySigned — the signing key lives in the sender's
  application database, not in secure hardware.
- The package's line composition and totals are attested by the manifest
  signature made at export time; each export is also recorded in the signed
  audit ledger (with this manifest's hash) and covered by the next anchor,
  not by an anchor inside this package.
- invoice.html and lines.csv are renderings for convenience and are NOT
  covered by the signature; only manifest.json is. Check anything that
  matters against verify.html. Rounding is applied once to the invoice
  total, so summing the amounts in lines.csv may differ from the invoice
  total by a cent — that is by design, not a discrepancy.
- This proves what the sender's application observed and when — it cannot
  prove who was at the keyboard.
