BACAP types: MessageBoxIndex, ReadCap, WriteCap (Echomix §4) #
Binary layouts:
- MessageBoxIndex: uint64 LE ++ [32]byte ++ [32]byte ++ [32]byte = 104 bytes
- ReadCap: [32]byte pubkey ++ MessageBoxIndex = 136 bytes
- WriteCap: [32]byte seed ++ [32]byte pubkey ++ MessageBoxIndex = 168 bytes
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
- Cryptlib.Protocols.BACAP.Types.MessageBoxIndex.empty = { idx64 := 0, curBlindingFactor := Vector.replicate 32 0, curEncryptionKey := Vector.replicate 32 0, hkdfState := Vector.replicate 32 0 }
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
- messageBoxIndex : MessageBoxIndex
Instances For
Deserialize pubkey ++ index; none if the root public key is not an edwards25519 point
(an unreduced y is accepted).
Equations
- One or more equations did not get rendered due to their size.
Instances For
A write capability: the root Ed25519 seed plus the earliest reachable index. The seed is
kept because the expanded scalar clamp(SHA-512(seed)) cannot be inverted for serialization.
- messageBoxIndex : MessageBoxIndex
Instances For
The root signing scalar S_R, expanded from the seed per RFC 8032.
Instances For
The root verification key P_R = S_R · G.
Instances For
The read capability at the same index: derives and decrypts the same boxes, cannot sign.
Equations
- wc.readCap = { rootPublicKey := wc.rootPublicKey, messageBoxIndex := wc.messageBoxIndex }
Instances For
Re-base the cap to idx. The holder of the result learns nothing about earlier indices.
Equations
- wc.withMessageBoxIndex idx = { rootSeed := wc.rootSeed, messageBoxIndex := idx }
Instances For
Re-base the cap to idx. The holder of the result learns nothing about earlier indices.
Equations
- rc.withMessageBoxIndex idx = { rootPublicKey := rc.rootPublicKey, messageBoxIndex := idx }
Instances For
Serialize as seed ++ pubkey ++ index.
Equations
Instances For
Deserialize seed ++ pubkey ++ index; none if the stored public key is not the one the
seed derives.
Equations
- One or more equations did not get rendered due to their size.
Instances For
unmarshal ∘ marshal is the identity #
A read cap whose root public key is a curve point round-trips.
Every write cap round-trips.
marshal ∘ unmarshal is the identity on blobs that parse: encodings are canonical #
A read cap that parses re-serializes to the bytes it came from.
A write cap that parses re-serializes to the bytes it came from.