UDIF: Universal Digital Identification Framework 1.0.0.0a (A1)
A quantum-secure cryptographic identification
registry.h
Go to the documentation of this file.
1/* 2025-2026 Quantum Resistant Cryptographic Solutions Corporation
2 * All Rights Reserved.
3 *
4 * UDIF Implementation (Universal Digital Identification Framework)
5 * Based on UDIF Specification Revision 1a, September 05, 2025
6 *
7 * Written by: John G. Underhill
8 * Contact: contact@qrcscorp.ca
9 */
10
11#ifndef UDIFREGISTRY_H
12#define UDIFREGISTRY_H
13
14#include "udif.h"
15#include "object.h"
16
17#include "udif.h"
18#include "object.h"
19
40
45#define UDIF_REGISTRY_DEFAULT_CAPACITY 1024U
46
51#define UDIF_REGISTRY_MAX_CAPACITY 1048576U
52
62
80
81
93
104
113
125
134
146UDIF_EXPORT_API bool udif_registry_find_object(const udif_registry_state* reg, const uint8_t* serial, size_t* index);
147
160UDIF_EXPORT_API udif_errors udif_registry_generate_proof(uint8_t* proof, size_t* prooflen, const udif_registry_state* reg, const uint8_t* serial);
161
172
184UDIF_EXPORT_API udif_errors udif_registry_get_digest_at(uint8_t* digest, const udif_registry_state* reg, size_t index);
185
197UDIF_EXPORT_API udif_errors udif_registry_initialize(udif_registry_state* reg, const uint8_t* ownerser, size_t capacity);
198
209
221
233
245
258UDIF_EXPORT_API bool udif_registry_verify_proof(const uint8_t* proof, size_t prooflen, const uint8_t* root, const uint8_t* objdigest);
259
260#endif
UDIF object operations.
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:362
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:528
UDIF_EXPORT_API void udif_registry_clear(udif_registry_state *reg)
Clear registry.
Definition registry.c:67
UDIF_EXPORT_API udif_errors udif_registry_resize(udif_registry_state *reg, size_t newcapacity)
Resize registry.
Definition registry.c:471
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:427
UDIF_EXPORT_API udif_errors udif_registry_compute_root(uint8_t *root, const udif_registry_state *reg)
Compute registry Merkle root.
Definition registry.c:77
UDIF_EXPORT_API bool udif_registry_is_full(const udif_registry_state *reg)
Check if registry is full.
Definition registry.c:411
UDIF_EXPORT_API size_t udif_registry_get_count(const udif_registry_state *reg)
Get object count.
Definition registry.c:328
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:182
UDIF_EXPORT_API void udif_registry_dispose(udif_registry_state *reg)
Dispose registry.
Definition registry.c:157
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:211
UDIF_EXPORT_API size_t udif_registry_get_capacity(const udif_registry_state *reg)
Get registry capacity.
Definition registry.c:312
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:22
UDIF_EXPORT_API udif_errors udif_registry_get_digest_at(uint8_t *digest, const udif_registry_state *reg, size_t index)
Get object digest at index.
Definition registry.c:344
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:564
Merkle proof node structure.
Definition registry.h:58
uint8_t hash[UDIF_CRYPTO_HASH_SIZE]
Definition registry.h:59
bool isleft
Definition registry.h:60
UDIF object container.
Definition object.h:148
User Agent object registry.
Definition registry.h:71
uint8_t * objdigests
Definition registry.h:74
uint8_t ownerser[UDIF_SERIAL_NUMBER_SIZE]
Definition registry.h:72
qsc_keccak_state mstate
Definition registry.h:73
size_t objcount
Definition registry.h:76
uint8_t * objserials
Definition registry.h:75
size_t capacity
Definition registry.h:77
bool initialized
Definition registry.h:78
UDIF Common Definitions and Protocol Configuration.
#define UDIF_SERIAL_NUMBER_SIZE
The serial number field length.
Definition udif.h:519
#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:628
#define UDIF_EXPORT_API
The api export prefix.
Definition udifcommon.h:103