Module hash_ref

Source
Expand description

§Hash References

Some MLS messages refer to other MLS objects by hash. For example, Welcome messages refer to KeyPackages for the members being welcomed, and Commits refer to Proposals they cover. These identifiers are computed as follows:

opaque HashReference<V>;

MakeKeyPackageRef(value) = RefHash("MLS 1.0 KeyPackage Reference", value)
MakeProposalRef(value)   = RefHash("MLS 1.0 Proposal Reference", value)

RefHash(label, value) = Hash(RefHashInput)

Where RefHashInput is defined as:

struct {
 opaque label<V> = label;
 opaque value<V> = value;
} RefHashInput;

For a KeyPackageRef, the value input is the encoded KeyPackage, and the ciphersuite specified in the KeyPackage determines the hash function used. For a ProposalRef, the value input is the PublicMessage carrying the proposal, and the hash function is determined by the group’s ciphersuite.

Structs§

HashReference
A reference to an MLS object computed as a hash of the value.

Functions§

make_key_package_ref
Compute a new KeyPackageRef value for a value.
make_proposal_ref
Compute a new ProposalRef value for a value.

Type Aliases§

KeyPackageRef
A reference to a key package. This value uniquely identifies a key package.
ProposalRef
A reference to a proposal. This value uniquely identifies a proposal.