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
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 includes:
Stored encrypted as well.