55#include "mcelcommon.h"
67#define MCEL_MERKLE_HASH_SIZE 32U
73#define MCEL_MERKLE_NODE_SIZE (MCEL_MERKLE_HASH_SIZE * 2U)
82#define MCEL_MERKLE_PROOF_HASHES_MAX 32U
114MCEL_EXPORT_API
bool mcel_merkle_prove_member(uint8_t* proof,
size_t prooflen,
const uint8_t* leaves,
size_t count,
size_t index);
128MCEL_EXPORT_API
bool mcel_merkle_member_verify(
const uint8_t* root,
const uint8_t* leaf,
const uint8_t* proof,
size_t prooflen,
size_t count,
size_t index);
139MCEL_EXPORT_API
bool mcel_merkle_root(uint8_t* root,
const uint8_t* leaves,
size_t count);
160MCEL_EXPORT_API
bool mcel_merkle_node_hash(uint8_t* output,
const uint8_t* left,
const uint8_t* right);
MCEL domain support header.
mcel_domain_types
The MCEL hash domain identifiers used to separate commitment types.
Definition domain.h:92
MCEL_EXPORT_API size_t mcel_merkle_proof_size(size_t count)
Get the required buffer size for a MCEL Merkle membership proof.
Definition merkle.c:48
MCEL_EXPORT_API bool mcel_merkle_prove_member(uint8_t *proof, size_t prooflen, const uint8_t *leaves, size_t count, size_t index)
Generate a MCEL Merkle membership proof for a leaf index.
Definition merkle.c:81
MCEL_EXPORT_API bool mcel_merkle_member_verify(const uint8_t *root, const uint8_t *leaf, const uint8_t *proof, size_t prooflen, size_t count, size_t index)
Verify a MCEL Merkle membership proof for a leaf hash.
Definition merkle.c:319
MCEL_EXPORT_API size_t mcel_merkle_consistency_proof_size(size_t oldcount, size_t newcount)
Get the required buffer size for a MCEL Merkle consistency proof.
Definition merkle.c:6
MCEL_EXPORT_API bool mcel_merkle_root(uint8_t *root, const uint8_t *leaves, size_t count)
Compute the MCEL Merkle root from an ordered list of leaf hashes.
Definition merkle.c:198
MCEL_EXPORT_API bool mcel_merkle_root_hash(uint8_t *output, mcel_domain_types domain)
Compute the MCEL Merkle root hash.
Definition merkle.c:299
MCEL_EXPORT_API bool mcel_merkle_node_hash(uint8_t *output, const uint8_t *left, const uint8_t *right)
Compute the MCEL Merkle node hash.
Definition merkle.c:36