Skip to content

Conversation

@robinbryce
Copy link
Contributor

…statement

DEMONSTRATION CODE NOT PRODUCTION SAFE

Given a local replica of any datatrails log (production or otherwise):

  • verify the locally replicated log state
  • generate an mmr leaf value using the first 24 bytes of the sha256 of the signed statement as the trie index extrabytes, and an idTimestamp representing the current time, and the raw bytes of the statement as the leaf content to be hashed.
  • add the leaf value to the in memory copy of the ledger tile (massif)
  • generate a consistency proof form the old, verified, state to the newly created state.
  • sign using an ephemeral ecdsa private key (or one providded on the cli)
  • write out the new (forked) ledger state:
    1. receipt-{mmrIndex}.cbor - the scitt signed statement for the MMR draft ledger
    2. checkpoint-{oldSize}-{newSize}.cbor - the signed checkpoint (from which self service receipts can be produced without the ephemeral private key)
    3. fork-{oldSize}-{newSize}.bin the MMR draft leger tile data with the newly appended leaf.
    4. the ephemeral private key in .cbor and .pem format (only if generated)
    5. the ephemeral public key in .cbor and .pem format (only if generated)

Note: only minimal testing has been performed at this point.

…statement

DEMONSTRATION CODE NOT PRODUCTION SAFE

Given a local replica of any datatrails log (production or otherwise):

- verify the locally replicated log state
- generate an mmr leaf value using the first 24 bytes of the sha256 of
  the signed statement as the trie index extrabytes, and an idTimestamp
  representing the current time, and the raw bytes of the statement as
  the leaf content to be hashed.
- add the leaf value to the in memory copy of the ledger tile (massif)
- generate a consistency proof form the old, verified, state to the
  newly created state.
- sign using an ephemeral ecdsa private key (or one providded on the cli)
- write out the new (forked) ledger state:
  1. receipt-{mmrIndex}.cbor - the scitt signed statement for the MMR draft ledger
  2. checkpoint-{oldSize}-{newSize}.cbor - the signed checkpoint (from
     which self service receipts can be produced *without* the ephemeral
     private key)
  3. fork-{oldSize}-{newSize}.bin the MMR draft leger tile data with the
     newly appended leaf.
  4. the ephemeral private key in .cbor and .pem format (only if generated)
  5. the ephemeral public key in .cbor and .pem format (only if generated)

Note: only minimal testing has been performed at this point.
@robinbryce robinbryce force-pushed the robin/ietf-130-amoury-receipt-for-signed-ccf-statement branch from 2865e68 to 91fab32 Compare July 3, 2025 21:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant