83#define UDIF_REGISTRY_DEFAULT_CAPACITY 1024U
89#define UDIF_REGISTRY_MAX_CAPACITY 1048576U
96#define UDIF_REGISTRY_COMMIT_STRUCTURE_SIZE (UDIF_SIGNED_HASH_SIZE + \
97 UDIF_SERIAL_NUMBER_SIZE + \
98 UDIF_CRYPTO_HASH_SIZE + \
133#define UDIF_REGISTRY_FLAG_ACTIVE 0x00000001UL
139#define UDIF_REGISTRY_FLAG_DESTROYED 0x00000002UL
145#define UDIF_REGISTRY_FLAG_TRANSFERRED 0x00000004UL
UDIF_EXPORT_API udif_errors udif_registry_commit_serialize(uint8_t *output, size_t outlen, const udif_registry_commit *commit)
Serialize a signed registry commitment.
Definition registry.c:881
UDIF_EXPORT_API udif_errors udif_registry_initialize(udif_registry_state *reg, const uint8_t *ownerser, size_t capacity)
Initialize a registry.
Definition registry.c:604
UDIF_EXPORT_API bool udif_registry_object_is_active(const udif_registry_state *reg, const uint8_t *serial)
Test whether a registry leaf is active.
Definition registry.c:218
UDIF_EXPORT_API udif_errors udif_registry_update_object(udif_registry_state *reg, const udif_object *obj)
Update an object in the registry.
Definition registry.c:715
UDIF_EXPORT_API void udif_registry_clear(udif_registry_state *reg)
Clear registry.
Definition registry.c:344
UDIF_EXPORT_API udif_errors udif_registry_leaf_digest(uint8_t *digest, const udif_registry_leaf *leaf)
Compute a registry leaf digest.
Definition registry.c:130
UDIF_EXPORT_API udif_errors udif_registry_resize(udif_registry_state *reg, size_t newcapacity)
Resize registry.
Definition registry.c:682
UDIF_EXPORT_API udif_errors udif_registry_remove_object(udif_registry_state *reg, const uint8_t *serial)
Remove an object from the registry.
Definition registry.c:654
UDIF_EXPORT_API udif_errors udif_registry_leaf_encode(uint8_t *output, const udif_registry_leaf *leaf)
Encode a registry leaf in canonical UDIF order.
Definition registry.c:102
UDIF_EXPORT_API udif_errors udif_registry_add_leaf(udif_registry_state *reg, const udif_registry_leaf *leaf)
Add or update a canonical registry leaf.
Definition registry.c:157
UDIF_EXPORT_API udif_errors udif_registry_get_leaf(udif_registry_leaf *leaf, const udif_registry_state *reg, const uint8_t *serial)
Copy a registry leaf by object serial.
Definition registry.c:191
UDIF_EXPORT_API udif_errors udif_registry_compute_root(uint8_t *root, const udif_registry_state *reg)
Compute registry Merkle root.
Definition registry.c:353
UDIF_EXPORT_API bool udif_registry_is_full(const udif_registry_state *reg)
Check if registry is full.
Definition registry.c:638
UDIF_EXPORT_API udif_errors udif_registry_commit_digest(uint8_t *digest, const udif_registry_commit *commit)
Compute the canonical digest of a registry commitment.
Definition registry.c:815
UDIF_EXPORT_API udif_errors udif_registry_commit_sign(udif_registry_commit *commit, const uint8_t *sigkey, bool(*rng_generate)(uint8_t *, size_t))
Sign a registry commitment.
Definition registry.c:912
UDIF_EXPORT_API size_t udif_registry_get_count(const udif_registry_state *reg)
Get object count.
Definition registry.c:571
UDIF_EXPORT_API bool udif_registry_find_object(const udif_registry_state *reg, const uint8_t *serial, size_t *index)
Find object in registry.
Definition registry.c:430
UDIF_EXPORT_API void udif_registry_dispose(udif_registry_state *reg)
Dispose registry.
Definition registry.c:414
UDIF_EXPORT_API udif_errors udif_registry_generate_proof(uint8_t *proof, size_t *prooflen, const udif_registry_state *reg, const uint8_t *serial)
Generate membership proof.
Definition registry.c:460
UDIF_EXPORT_API size_t udif_registry_get_capacity(const udif_registry_state *reg)
Get registry capacity.
Definition registry.c:555
UDIF_EXPORT_API udif_errors udif_registry_commit_deserialize(udif_registry_commit *commit, const uint8_t *input, size_t inlen)
Deserialize a signed registry commitment.
Definition registry.c:844
UDIF_EXPORT_API void udif_registry_commit_clear(udif_registry_commit *commit)
Clear a registry commitment record.
Definition registry.c:807
UDIF_EXPORT_API udif_errors udif_registry_transfer_object(udif_registry_state *origin, udif_registry_state *dest, const udif_transfer_record *transfer)
Move an object leaf from one owner registry to another.
Definition registry.c:239
UDIF_EXPORT_API udif_errors udif_registry_add_object(udif_registry_state *reg, const udif_object *obj)
Add an object to the registry.
Definition registry.c:295
UDIF_EXPORT_API udif_errors udif_registry_get_digest_at(uint8_t *digest, const udif_registry_state *reg, size_t index)
Get registry leaf digest at index.
Definition registry.c:587
UDIF_EXPORT_API bool udif_registry_commit_verify(const udif_registry_commit *commit, const uint8_t *verkey)
Verify a registry commitment signature.
Definition registry.c:947
UDIF_EXPORT_API bool udif_registry_verify_proof(const uint8_t *proof, size_t prooflen, const uint8_t *root, const uint8_t *objdigest)
Verify membership proof.
Definition registry.c:752
Merkle proof node structure.
Definition registry.h:124
uint8_t hash[UDIF_CRYPTO_HASH_SIZE]
Definition registry.h:125
bool isleft
Definition registry.h:126
UDIF object container.
Definition object.h:147
Signed canonical registry root commitment.
Definition registry.h:111
uint8_t ownerser[UDIF_SERIAL_NUMBER_SIZE]
Definition registry.h:113
uint64_t timestamp
Definition registry.h:116
uint8_t signature[UDIF_SIGNED_HASH_SIZE]
Definition registry.h:112
uint64_t epoch
Definition registry.h:115
uint8_t regroot[UDIF_CRYPTO_HASH_SIZE]
Definition registry.h:114
Canonical UDIF registry leaf.
Definition registry.h:152
uint8_t objserial[UDIF_OBJECT_SERIAL_SIZE]
Definition registry.h:155
uint64_t timestamp
Definition registry.h:156
uint8_t objdigest[UDIF_CRYPTO_HASH_SIZE]
Definition registry.h:153
uint32_t flags
Definition registry.h:157
uint8_t ownerdigest[UDIF_CRYPTO_HASH_SIZE]
Definition registry.h:154
User Agent object registry.
Definition registry.h:169
uint8_t ownerser[UDIF_SERIAL_NUMBER_SIZE]
Definition registry.h:170
qsc_keccak_state mstate
Definition registry.h:172
size_t objcount
Definition registry.h:174
uint8_t ownerdigest[UDIF_CRYPTO_HASH_SIZE]
Definition registry.h:171
size_t capacity
Definition registry.h:175
udif_registry_leaf * leaves
Definition registry.h:173
bool initialized
Definition registry.h:176
Object transfer record.
Definition object.h:166
UDIF Common Definitions and Protocol Configuration.
#define UDIF_SERIAL_NUMBER_SIZE
The certificate serial number field length.
Definition udif.h:546
#define UDIF_SIGNED_HASH_SIZE
The combined size of a signature and hash.
Definition udif.h:568
#define UDIF_OBJECT_SERIAL_SIZE
The object serial number field length in bytes.
Definition udif.h:525
#define UDIF_CRYPTO_HASH_SIZE
The size of the certificate hash in bytes.
Definition udif.h:439
udif_errors
UDIF error codes.
Definition udif.h:1210
#define UDIF_EXPORT_API
The api export prefix.
Definition udifcommon.h:101