Attributes

Each attribute is:

attribute_leaf = Hash(
    "LIVRE_ATTR_V1" ||
    descriptor_id ||
    value_commitment ||
    issuer_commitment ||
    validity_window
)

Encrypted value = stored in Vault

Leaf commitment = stored in Merkle tree

Documents

Similar to attributes, but with file chunks:

document_leaf = Hash(
    "LIVRE_DOC_V1" ||
    file_commitment ||
    issuer_commitment ||
    validity_window
)

Where file_commitment = Merkle root of chunk commitments.

Metadata

Metadata includes:

Stored encrypted as well.