A store’s master key material: every key it holds. This is the value custody
implementations store, unlock, and re-protect — never a cipher. coven builds
the EncryptionService cipher from it internally; custody never touches
cipher machinery.
What a sealed payload’s header says about its own layout: where its base
nonce comes from, the chunk size it was sealed at, and the plaintext length
it covers. Every other offset in the object is arithmetic over those, so a
payload describes its own shape and nothing per-chunk is stored.
Opens a sealed blob’s chunks in any order. A chunk that opens is authentic —
the tag covers its bytes, its position, and the header that framed it — so
decryption is the whole verification and no separate hash is read.
Seals one blob’s chunks in order, so an upload streams without ever holding
the whole plaintext or ciphertext. The header it emits first is what a later
read needs to compute every chunk offset.
The chunk size a blob is sealed at when the host configures none. A read
honors whatever its own header records, so this is only ever the writer’s
choice and can change without touching a blob already stored.
[version: 1][nonce policy: 1][chunk_size: 4 LE][plaintext_len: 8 LE] — the
fixed part of the header every sealed payload carries ahead of its first
chunk. A payload under NoncePolicy::RandomStored follows it with the
24-byte base nonce; SealedBlobHeader::prefix_len is the whole
of it either way.