UDIF: Universal Digital Identification Framework 1.0.0.0a (A1)
A quantum-secure cryptographic identification
udif.h
Go to the documentation of this file.
1/* 2025-2026 Quantum Resistant Cryptographic Solutions Corporation
2 * All Rights Reserved.
3 *
4 * NOTICE:
5 * This software and all accompanying materials are the exclusive property of
6 * Quantum Resistant Cryptographic Solutions Corporation (QRCS). The intellectual
7 * and technical concepts contained herein are proprietary to QRCS and are
8 * protected under applicable Canadian, U.S., and international copyright,
9 * patent, and trade secret laws.
10 *
11 * CRYPTOGRAPHIC ALGORITHMS AND IMPLEMENTATIONS:
12 * - This software includes implementations of cryptographic primitives and
13 * algorithms that are standardized or in the public domain, such as AES
14 * and SHA-3, which are not proprietary to QRCS.
15 * - This software also includes cryptographic primitives, constructions, and
16 * algorithms designed by QRCS, including but not limited to RCS, SCB, CSX, QMAC, and
17 * related components, which are proprietary to QRCS.
18 * - All source code, implementations, protocol compositions, optimizations,
19 * parameter selections, and engineering work contained in this software are
20 * original works of QRCS and are protected under this license.
21 *
22 * LICENSE AND USE RESTRICTIONS:
23 * - This software is licensed under the Quantum Resistant Cryptographic Solutions
24 * Public Research and Evaluation License (QRCS-PREL), 2025-2026.
25 * - Permission is granted solely for non-commercial evaluation, academic research,
26 * cryptographic analysis, interoperability testing, and feasibility assessment.
27 * - Commercial use, production deployment, commercial redistribution, or
28 * integration into products or services is strictly prohibited without a
29 * separate written license agreement executed with QRCS.
30 * - Licensing and authorized distribution are solely at the discretion of QRCS.
31 *
32 * EXPERIMENTAL CRYPTOGRAPHY NOTICE:
33 * Portions of this software may include experimental, novel, or evolving
34 * cryptographic designs. Use of this software is entirely at the user's risk.
35 *
36 * DISCLAIMER:
37 * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
38 * IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS
39 * FOR A PARTICULAR PURPOSE, SECURITY, OR NON-INFRINGEMENT. QRCS DISCLAIMS ALL
40 * LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
41 * ARISING FROM THE USE OR MISUSE OF THIS SOFTWARE.
42 *
43 * FULL LICENSE:
44 * This software is subject to the Quantum Resistant Cryptographic Solutions
45 * Public Research and Evaluation License (QRCS-PREL), 2025-2026. The complete license terms
46 * are provided in the accompanying LICENSE file or at https://www.qrcscorp.ca.
47 *
48 * Written by: John G. Underhill
49 * Contact: contact@qrcscorp.ca
50 */
51
52#ifndef UDIF_H
53#define UDIF_H
54
55#include "udifcommon.h"
56#include "sha3.h"
57#include "socketbase.h"
58
59#define UDIF_CONFIG_DILITHIUM_KYBER
60//#define UDIF_CONFIG_SPHINCS_MCELIECE
61
62#if defined(UDIF_CONFIG_DILITHIUM_KYBER)
63# include "dilithium.h"
64# include "kyber.h"
65#elif defined(UDIF_CONFIG_SPHINCS_MCELIECE)
66# include "mceliece.h"
67# include "sphincsplus.h"
68#else
69# error Invalid parameter set!
70#endif
71
117
118 /* Function Mapping Macros */
119
125#define UDIF_USE_RCS_ENCRYPTION
126
127#if defined(UDIF_USE_RCS_ENCRYPTION)
128# include "rcs.h"
129# define udif_cipher_state qsc_rcs_state
130# define udif_cipher_dispose qsc_rcs_dispose
131# define udif_cipher_initialize qsc_rcs_initialize
132# define udif_cipher_keyparams qsc_rcs_keyparams
133# define udif_cipher_set_associated qsc_rcs_set_associated
134# define udif_cipher_transform qsc_rcs_transform
135#else
136# include "aes.h"
137# define udif_cipher_state qsc_aes_gcm256_state
138# define udif_cipher_dispose qsc_aes_gcm256_dispose
139# define udif_cipher_initialize qsc_aes_gcm256_initialize
140# define udif_cipher_keyparams qsc_aes_keyparams
141# define udif_cipher_set_associated qsc_aes_gcm256_set_associated
142# define udif_cipher_transform qsc_aes_gcm256_transform
143#endif
144
153#if defined(UDIF_CONFIG_SPHINCS_MCELIECE)
158# define udif_cipher_generate_keypair qsc_mceliece_generate_keypair
163# define udif_cipher_decapsulate qsc_mceliece_decapsulate
168# define udif_cipher_encapsulate qsc_mceliece_encapsulate
173# define udif_signature_generate_keypair qsc_sphincsplus_generate_keypair
178# define udif_signature_sign qsc_sphincsplus_sign
183# define udif_signature_verify qsc_sphincsplus_verify
184#elif defined(UDIF_CONFIG_DILITHIUM_KYBER)
189# define udif_cipher_generate_keypair qsc_kyber_generate_keypair
194# define udif_cipher_decapsulate qsc_kyber_decapsulate
199# define udif_cipher_encapsulate qsc_kyber_encapsulate
204# define udif_signature_generate_keypair qsc_dilithium_generate_keypair
209# define udif_signature_sign qsc_dilithium_sign
214# define udif_signature_verify qsc_dilithium_verify
215#else
216# error Invalid parameter set!
217#endif
218
219/* ### Modifiable Constants: These constants can be enabled to turn on protocol features ### */
220
225//#define UDIF_NETWORK_PROTOCOL_IPV6
226
227/* ### End of Modifiable Constants ### */
228
229#if defined(UDIF_CONFIG_DILITHIUM_KYBER)
234# define UDIF_ASYMMETRIC_CIPHERTEXT_SIZE (QSC_KYBER_CIPHERTEXT_SIZE)
235
240# define UDIF_ASYMMETRIC_PRIVATE_KEY_SIZE (QSC_KYBER_PRIVATEKEY_SIZE)
241
246# define UDIF_ASYMMETRIC_PUBLIC_KEY_SIZE (QSC_KYBER_PUBLICKEY_SIZE)
247
252# define UDIF_ASYMMETRIC_SIGNATURE_SIZE (QSC_DILITHIUM_SIGNATURE_SIZE)
253
258# define UDIF_ASYMMETRIC_SIGNING_KEY_SIZE (QSC_DILITHIUM_PRIVATEKEY_SIZE)
259
264# define UDIF_ASYMMETRIC_VERIFICATION_KEY_SIZE (QSC_DILITHIUM_PUBLICKEY_SIZE)
265
266# if defined(QSC_DILITHIUM_S1P44) && defined(QSC_KYBER_S1K2P512)
271# define UDIF_PARAMATERS_DILITHIUM_KYBER_D1K1
276# define UDIF_SUITE_ID 1U
277# elif defined(QSC_DILITHIUM_S3P65) && defined(QSC_KYBER_S3K3P768)
282# define UDIF_PARAMATERS_DILITHIUM_KYBER_D3K3
287# define UDIF_SUITE_ID 2U
288# elif defined(QSC_DILITHIUM_S5P87) && defined(QSC_KYBER_S5K4P1024)
293# define UDIF_PARAMATERS_DILITHIUM_KYBER_D5K5
298# define UDIF_SUITE_ID 3U
299# elif defined(QSC_DILITHIUM_S5P87) && defined(QSC_KYBER_S6K5P1280)
304# define UDIF_PARAMATERS_DILITHIUM_KYBER_D5K6
309# define UDIF_SUITE_ID 4U
310# else
311 /* The library signature scheme and asymmetric cipher parameter sets
312 must be synchronized to a common security level; s1, s3, s5, s5+ */
313# error the library parameter sets are mismatched!
314# endif
315
316#elif defined(UDIF_CONFIG_SPHINCS_MCELIECE)
321# define UDIF_ASYMMETRIC_CIPHERTEXT_SIZE (QSC_MCELIECE_CIPHERTEXT_SIZE)
326# define UDIF_ASYMMETRIC_PRIVATE_KEY_SIZE (QSC_MCELIECE_PRIVATEKEY_SIZE)
331# define UDIF_ASYMMETRIC_PUBLIC_KEY_SIZE (QSC_MCELIECE_PUBLICKEY_SIZE)
336# define UDIF_ASYMMETRIC_SIGNATURE_SIZE (QSC_SPHINCSPLUS_SIGNATURE_SIZE)
341# define UDIF_ASYMMETRIC_SIGNING_KEY_SIZE (QSC_SPHINCSPLUS_PRIVATEKEY_SIZE)
346# define UDIF_ASYMMETRIC_VERIFICATION_KEY_SIZE (QSC_SPHINCSPLUS_PUBLICKEY_SIZE)
347
348# if defined(QSC_MCELIECE_S1N3488T64)&& defined(QSC_SPHINCSPLUS_S1S128SHAKERS)
353# define UDIF_PARAMATERS_SPHINCSPLUS_S1S128SHAKERS
358# define UDIF_SUITE_ID 5U
359# elif defined(QSC_MCELIECE_S3N4608T96) && defined(QSC_SPHINCSPLUS_S3S192SHAKERS)
364# define UDIF_PARAMATERS_SPHINCSPLUS_S3S192SHAKERS
369# define UDIF_SUITE_ID 6U
370# elif defined(QSC_MCELIECE_S5N6688T128) && defined(QSC_SPHINCSPLUS_S5S256SHAKERS)
375# define UDIF_PARAMATERS_SPHINCSPLUS_S5S256SHAKERS
380# define UDIF_SUITE_ID 7U
381# elif defined(QSC_MCELIECE_S6N6960T119) && defined(QSC_SPHINCSPLUS_S5S256SHAKERS)
386# define UDIF_PARAMATERS_SPHINCSPLUS_S6S256SHAKERS
391# define UDIF_SUITE_ID 8U
392# elif defined(QSC_MCELIECE_S7N8192T128) && defined(QSC_SPHINCSPLUS_S5S256SHAKERS)
397# define UDIF_PARAMATERS_SPHINCSPLUS_S7S256SHAKERS
402# define UDIF_SUITE_ID 9U
403# else
404 /* The library signature scheme and asymmetric cipher parameter sets
405 must be synchronized to a common security level; s1, s3, s5 or s6.
406 Check the QSC library common.h file for cipher and signature security level alignment. */
407# error Invalid parameter sets, check the QSC library settings
408# endif
409#endif
410
411
415#define UDIF_CAPABILITY_BITMAP_SIZE 8U
416
421#define UDIF_CAPABILITY_MASK_SIZE 8U
422
427#define UDIF_CAPABILITY_TOKEN_MAX_SIZE 2048U
428
433#define UDIF_CLAIM_ANCHOR_SIZE 32U
434
439#define UDIF_CRYPTO_HASH_SIZE 32U
440
445#define UDIF_CRYPTO_KEY_SIZE 32U
446
451#if defined(UDIF_USE_RCS_ENCRYPTION)
452# define UDIF_CRYPTO_MAC_SIZE 32U
453#else
454# define UDIF_CRYPTO_MAC_SIZE 16U
455#endif
456
461#if defined(UDIF_USE_RCS_ENCRYPTION)
462# define UDIF_CRYPTO_NONCE_SIZE 32U
463#else
464# define UDIF_CRYPTO_NONCE_SIZE 16U
465#endif
466
471#define UDIF_IDENTITY_ID_SIZE 32U
472
477#define UDIF_ISSUER_DOMAIN_CODE_SIZE 8U
478
483#define UDIF_NAMESPACE_CODE_SIZE 8U
484
489#define UDIF_PERMISSION_MASK_SIZE 8U
490
495#define UDIF_POLICY_HASH_SIZE 32U
496
501#define UDIF_POLICY_VERB_SIZE 4U
502
507#define UDIF_PROTOCOL_SET_SIZE 41U
508
513#define UDIF_ROLE_SIZE 1U
514
519#define UDIF_SERIAL_NUMBER_SIZE 16U
520
525#define UDIF_SIGNED_HASH_SIZE (UDIF_ASYMMETRIC_SIGNATURE_SIZE + UDIF_CRYPTO_HASH_SIZE)
526
531#define UDIF_SUITEID_SIZE 1U
532
537#define UDIF_TIME_WINDOW_SECONDS 60U
538
543#define UDIF_VALID_TIME_SIZE 8U
544
549#define UDIF_VALID_TIME_STRUCTURE_SIZE 16U
550
551/* UDIF Enumerations */
552
573
591
592#if defined(UDIF_PARAMATERS_DILITHIUM_KYBER_D1K1)
593static const char UDIF_CONFIG_STRING[UDIF_PROTOCOL_SET_SIZE] = "dilithium-s1_kyber-s1_rcs-256_sha3-256";
595#elif defined(UDIF_PARAMATERS_DILITHIUM_KYBER_D3K3)
596static const char UDIF_CONFIG_STRING[UDIF_PROTOCOL_SET_SIZE] = "dilithium-s3_kyber-s3_rcs-256_sha3-256";
598#elif defined(UDIF_PARAMATERS_DILITHIUM_KYBER_D5K5)
599static const char UDIF_CONFIG_STRING[UDIF_PROTOCOL_SET_SIZE] = "dilithium-s5_kyber-s5_rcs-256_sha3-256";
601#elif defined(UDIF_PARAMATERS_DILITHIUM_KYBER_D5K6)
602static const char UDIF_CONFIG_STRING[UDIF_PROTOCOL_SET_SIZE] = "dilithium-s5_kyber-s6_rcs-512_sha3-512";
604#elif defined(UDIF_PARAMATERS_SPHINCSPLUS_S1S128SHAKERS)
605static const char UDIF_CONFIG_STRING[UDIF_PROTOCOL_SET_SIZE] = "sphincs-s1_mceliece-s1_rcs-256_sha3-256";
607#elif defined(UDIF_PARAMATERS_SPHINCSPLUS_S3S192SHAKERS)
608static const char UDIF_CONFIG_STRING[UDIF_PROTOCOL_SET_SIZE] = "sphincs-s3_mceliece-s3_rcs-256_sha3-256";
610#elif defined(UDIF_PARAMATERS_SPHINCSPLUS_S5S256SHAKERS)
611static const char UDIF_CONFIG_STRING[UDIF_PROTOCOL_SET_SIZE] = "sphincs-s5_mceliece-s5_rcs-256_sha3-256";
613#elif defined(UDIF_PARAMATERS_SPHINCSPLUS_S6S256SHAKERS)
614static const char UDIF_CONFIG_STRING[UDIF_PROTOCOL_SET_SIZE] = "sphincs-s5_mceliece-s6_rcs-256_sha3-256";
616#elif defined(UDIF_PARAMATERS_SPHINCSPLUS_S7S256SHAKERS)
617static const char UDIF_CONFIG_STRING[UDIF_PROTOCOL_SET_SIZE] = "sphincs-s5_mceliece-s7_rcs-256_sha3-256";
619#else
620# error Invalid parameter set!
621#endif
622
656
668
682
695
712
724
746
763
775
792
804
816
832
842
852
854
858#define UDIF_VERSION_STRING "UDIF:1.0a"
859
863#define UDIF_SUITE_STRING "UDIF:RCS256-KMAC256-MLKEM5-MLDSA5"
864
865/* Domain Separation Labels */
866
870#define UDIF_LABEL_MAX_SIZE 64U
871
872/* Domain separation label constants */
873#define UDIF_LABEL_OBJ_DIGEST "UDIF:OBJ-DIGEST:V1"
874#define UDIF_LABEL_REGROOT "UDIF:REGROOT:V1"
875#define UDIF_LABEL_TXID "UDIF:TXID:V1"
876#define UDIF_LABEL_ANCHOR "UDIF:ANCHOR:V1"
877#define UDIF_LABEL_CAP_DIGEST "UDIF:CAP-DIGEST:V1"
878#define UDIF_LABEL_SESS_KDF "UDIF:SESS-KDF:V1"
879#define UDIF_LABEL_RATCHET "UDIF:RATCHET:V1"
880#define UDIF_LABEL_CERT_DIGEST "UDIF:CERT-DIGEST:V1"
881#define UDIF_LABEL_ROOT_DIGEST "UDIF:ROOT-DIGEST:V1"
882
884
885/* Role/Designation Strings */
886
888
893#define UDIF_ERROR_STRING_DEPTH 26U
894
899#define UDIF_ERROR_STRING_SIZE 128U
900
901/* Protocol errors*/
902
903static const char UDIF_ERROR_STRINGS[UDIF_ERROR_STRING_DEPTH][UDIF_ERROR_STRING_SIZE] =
904{
905 "No error condition",
906 "Invalid input parameter",
907 "Invalid function state"
908 "Authentication failed",
909 "The certificate expired",
910 "The certificate has been revoked",
911 "The capability has been revoked",
912 "Invalid sequence number",
913 "The time window has been exceeded",
914 "Epoch time mismatch",
915 "Protocol suite mismatch",
916 "Decoding failure",
917 "Encoding failure",
918 "Invalid signature",
919 "Invalid MAC",
920 "Not authorized",
921 "Object not found",
922 "Registry full",
923 "Log operation failed",
924 "Invalid anchor record",
925 "Invalid treaty",
926 "Invalid request",
927 "Internal error",
928 "File creation failed",
929 "File not found",
930 "Invalid parameter",
931 "Unknown error type"
932};
933
934/* Certificate errors */
935static const char UDIF_CERTIFICATE_ERROR_STRINGS[][UDIF_ERROR_STRING_SIZE] =
936{
937 "No error",
938 "Unknown certificate type",
939 "Bad or unknown serial number",
940 "Invalid certificate chain",
941 "Signature invalid",
942 "Certificate expired",
943 "Certificate not yet valid",
944 "Policy hash mismatch",
945 "Certificate revoked"
946};
947
948/* Claims errors */
949static const char UDIF_CLAIMS_ERROR_STRINGS[][UDIF_ERROR_STRING_SIZE] =
950{
951 "No error",
952 "Unknown claim type",
953 "Invalid encoding",
954 "Canonicalization failed",
955 "Anchor mismatch",
956 "Invalid claim value"
957};
958
959/* Encoding errors */
960static const char UDIF_ENCODING_ERROR_STRINGS[][UDIF_ERROR_STRING_SIZE] =
961{
962 "No error",
963 "Buffer overflow",
964 "Buffer underflow",
965 "Bad format/version",
966 "Unsupported encoding"
967};
968
969/* Identity errors */
970static const char UDIF_IDENTITY_ERROR_STRINGS[][UDIF_ERROR_STRING_SIZE] =
971{
972 "No error",
973 "Invalid namespace code",
974 "Invalid issuer domain code",
975 "Invalid subject identifier",
976 "Capability/permission mask invalid",
977 "Claim anchor mismatch",
978 "Signature verification failed",
979 "Identity expired",
980 "Identity not yet valid"
981};
982
983/* Policy errors */
984static const char UDIF_POLICY_ERROR_STRINGS[][UDIF_ERROR_STRING_SIZE] =
985{
986 "No error",
987 "Policy not found",
988 "Policy hash mismatch",
989 "Policy evaluation indeterminate"
990};
991
992#define UDIF_ROLE_STRING_SIZE 32U
993
994static const char UDIF_ROLE_STRINGS[][UDIF_ROLE_STRING_SIZE] =
995{
996 "udif_role_none",
997 "udif_role_udc",
998 "udif_role_uip",
999 "udif_role_uis",
1000 "udif_role_client",
1001 "udif_role_audit",
1002 "udif_role_revoked",
1003 "udif_role_any"
1004};
1005
1007
1008/* UDIF Structures */
1009
1019
1025{
1027 const uint8_t* value;
1028 uint32_t length;
1029} udif_claim;
1030
1037{
1038 uint8_t bytes[UDIF_CLAIM_ANCHOR_SIZE];
1040
1051
1057{
1058 uint8_t* bytes;
1059 uint32_t size;
1060 uint32_t length;
1062
1072
1082
1094
1104
1114
1124
1134
1140{
1141 uint64_t before;
1142 uint64_t after;
1144
1156
1176
1182{
1183 uint64_t from;
1184 uint64_t to;
1186
1209
1217UDIF_EXPORT_API bool udif_suite_is_valid(uint8_t suiteid);
1218
1227
1228#endif
Fixed-size capability bitset (issuer-/role-scoped). Capability bits; bit positions map to udif_capabi...
Definition udif.h:1016
uint8_t bits[UDIF_CAPABILITY_MASK_SIZE]
Definition udif.h:1017
Anchor (e.g., Merkle root) binding a claim set to an identity. Anchor/merkle root over canonical clai...
Definition udif.h:1037
A collection of claims bound to an identity by an anchor.
Definition udif.h:1046
const udif_claim * items
Definition udif.h:1047
uint32_t count
Definition udif.h:1048
udif_claim_anchor anchor
Definition udif.h:1049
A typed claim with deterministic canonical encoding.
Definition udif.h:1025
const uint8_t * value
Definition udif.h:1027
udif_claim_type type
Definition udif.h:1026
uint32_t length
Definition udif.h:1028
Generic encoded object buffer (for decode/encode APIs).
Definition udif.h:1057
uint8_t * bytes
Definition udif.h:1058
uint32_t size
Definition udif.h:1059
uint32_t length
Definition udif.h:1060
Subject identity identifier (opaque, canonicalized). Subject identifier bytes.
Definition udif.h:1069
uint8_t bytes[UDIF_IDENTITY_ID_SIZE]
Definition udif.h:1070
Core identity record bound to a namespace and issuer.
Definition udif.h:1196
udif_policy_hash policy
Definition udif.h:1203
uint8_t chash[UDIF_CRYPTO_HASH_SIZE]
Definition udif.h:1207
udif_permission_mask perms
Definition udif.h:1201
udif_namespace_code nspace
Definition udif.h:1197
udif_issuer_domain_code issuer
Definition udif.h:1198
udif_claim_anchor anchor
Definition udif.h:1204
udif_capability_mask caps
Definition udif.h:1202
udif_time_window validity
Definition udif.h:1200
uint8_t signature[UDIF_ASYMMETRIC_SIGNATURE_SIZE]
Definition udif.h:1205
udif_identity_id subject
Definition udif.h:1199
uint8_t verkey[UDIF_ASYMMETRIC_VERIFICATION_KEY_SIZE]
Definition udif.h:1206
Issuer domain/controller identifier. Issuer domain code (ASCII or compact code)
Definition udif.h:1079
uint8_t bytes[UDIF_ISSUER_DOMAIN_CODE_SIZE]
Definition udif.h:1080
KEM key pair.
Definition udif.h:1090
uint8_t pubkey[UDIF_ASYMMETRIC_PUBLIC_KEY_SIZE]
Definition udif.h:1091
uint8_t prikey[UDIF_ASYMMETRIC_PRIVATE_KEY_SIZE]
Definition udif.h:1092
Namespace partition identifier. Namespace code (ASCII or compact code)
Definition udif.h:1101
uint8_t bytes[UDIF_NAMESPACE_CODE_SIZE]
Definition udif.h:1102
Fixed-size permission bitset (subject-/resource-scoped). Permission bits; bit positions map to udif_p...
Definition udif.h:1111
uint8_t bits[UDIF_PERMISSION_MASK_SIZE]
Definition udif.h:1112
Policy identifier (hash of canonical policy). SHA3/SHAKE hash of policy document.
Definition udif.h:1121
uint8_t bytes[UDIF_POLICY_HASH_SIZE]
Definition udif.h:1122
The UDIF asymmetric signature scheme key container.
Definition udif.h:1130
uint8_t sigkey[UDIF_ASYMMETRIC_SIGNING_KEY_SIZE]
Definition udif.h:1131
uint8_t verkey[UDIF_ASYMMETRIC_VERIFICATION_KEY_SIZE]
Definition udif.h:1132
A validity interval expressed in UTC seconds.
Definition udif.h:1140
uint64_t before
Definition udif.h:1141
uint64_t after
Definition udif.h:1142
Common header for UDIF tokens (capability/attestation/session).
Definition udif.h:1150
udif_namespace_code nspace
Definition udif.h:1152
udif_issuer_domain_code issuer
Definition udif.h:1153
udif_time_window validity
Definition udif.h:1154
udif_token_type ttype
Definition udif.h:1151
Serialized token container with optional envelope protection.
Definition udif.h:1166
uint8_t chash[UDIF_CRYPTO_HASH_SIZE]
Definition udif.h:1169
udif_permission_mask perms
Definition udif.h:1173
uint8_t payload[UDIF_CAPABILITY_TOKEN_MAX_SIZE]
Definition udif.h:1168
uint32_t paylen
Definition udif.h:1174
udif_capability_mask caps
Definition udif.h:1172
uint8_t signature[UDIF_ASYMMETRIC_SIGNATURE_SIZE]
Definition udif.h:1167
udif_identity_id subject
Definition udif.h:1171
udif_token_header head
Definition udif.h:1170
The certificate expiration time structure.
Definition udif.h:1182
uint64_t to
Definition udif.h:1184
uint64_t from
Definition udif.h:1183
udif_roles
UDIF entity roles.
Definition udif.h:781
@ udif_role_root
Definition udif.h:783
@ udif_role_udc
Definition udif.h:784
@ udif_role_none
Definition udif.h:782
@ udif_role_client
Definition udif.h:787
@ udif_role_uis
Definition udif.h:786
@ udif_role_uip
Definition udif.h:785
@ udif_role_audit
Definition udif.h:788
@ udif_role_any
Definition udif.h:790
@ udif_role_revoked
Definition udif.h:789
#define UDIF_ASYMMETRIC_SIGNING_KEY_SIZE
The byte size of the asymmetric signature signing-key array.
Definition udif.h:258
#define UDIF_POLICY_HASH_SIZE
The size of a policy identifier hash in bytes.
Definition udif.h:495
udif_claim_type
Claim type identifiers (deterministic canonicalization required).
Definition udif.h:558
@ udif_claim_unknown
Definition udif.h:559
@ udif_claim_custom
Definition udif.h:571
@ udif_claim_citizenship
Definition udif.h:565
@ udif_claim_age_over
Definition udif.h:564
@ udif_claim_address
Definition udif.h:570
@ udif_claim_contact_email
Definition udif.h:568
@ udif_claim_membership_id
Definition udif.h:567
@ udif_claim_contact_phone
Definition udif.h:569
@ udif_claim_commodity_id
Definition udif.h:560
@ udif_claim_residency
Definition udif.h:566
@ udif_claim_biometric_hash
Definition udif.h:561
@ udif_claim_public_key
Definition udif.h:563
@ udif_claim_institution_id
Definition udif.h:562
#define UDIF_NAMESPACE_CODE_SIZE
The size of a namespace code (short string or numeric).
Definition udif.h:483
udif_error_policy
Policy evaluation/lookup errors.
Definition udif.h:718
@ udif_epol_none
Definition udif.h:719
@ udif_epol_not_found
Definition udif.h:720
@ udif_epol_indeterminate
Definition udif.h:722
@ udif_epol_hash_mismatch
Definition udif.h:721
udif_logging_event_codes
Membership and transaction log event codes.
Definition udif.h:730
@ udif_event_revoke
Definition udif.h:734
@ udif_event_object_create
Definition udif.h:741
@ udif_event_branch_create
Definition udif.h:738
@ udif_event_capability_grant
Definition udif.h:735
@ udif_event_registry_commit
Definition udif.h:737
@ udif_event_suspend
Definition udif.h:732
@ udif_event_resume
Definition udif.h:733
@ udif_event_branch_suspend
Definition udif.h:739
@ udif_event_enroll
Definition udif.h:731
@ udif_event_branch_revoke
Definition udif.h:740
@ udif_event_object_transfer
Definition udif.h:742
@ udif_event_capability_revoke
Definition udif.h:736
@ udif_event_object_update
Definition udif.h:743
@ udif_event_object_destroy
Definition udif.h:744
udif_error_identity
Identity-specific error codes.
Definition udif.h:701
@ udif_eid_mask_invalid
Definition udif.h:706
@ udif_eid_expired
Definition udif.h:709
@ udif_eid_subject_bad
Definition udif.h:705
@ udif_eid_issuer_bad
Definition udif.h:704
@ udif_eid_namespace_bad
Definition udif.h:703
@ udif_eid_future
Definition udif.h:710
@ udif_eid_none
Definition udif.h:702
@ udif_eid_sig_invalid
Definition udif.h:708
@ udif_eid_anchor_mismatch
Definition udif.h:707
#define UDIF_ISSUER_DOMAIN_CODE_SIZE
The size of an issuer domain code (unique identifier).
Definition udif.h:477
#define UDIF_IDENTITY_ID_SIZE
The size of a subject identity identifier in bytes.
Definition udif.h:471
#define UDIF_ASYMMETRIC_PRIVATE_KEY_SIZE
The byte size of the asymmetric cipher private-key array.
Definition udif.h:240
#define UDIF_CLAIM_ANCHOR_SIZE
The size of a claim anchor or merkle root in bytes.
Definition udif.h:433
udif_token_type
Token families issued/validated within UDIF.
Definition udif.h:810
@ udif_token_session
Definition udif.h:814
@ udif_token_attestation
Definition udif.h:813
@ udif_token_none
Definition udif.h:811
@ udif_token_capability
Definition udif.h:812
udif_error_encoding
Encoding/decoding errors for UDIF objects.
Definition udif.h:688
@ udif_eenc_none
Definition udif.h:689
@ udif_eenc_overflow
Definition udif.h:690
@ udif_eenc_format
Definition udif.h:692
@ udif_eenc_underflow
Definition udif.h:691
@ udif_eenc_unsupported
Definition udif.h:693
#define UDIF_PROTOCOL_SET_SIZE
The size of the protocol configuration string.
Definition udif.h:507
#define UDIF_CAPABILITY_MASK_SIZE
The size of a capability mask in hex characters.
Definition udif.h:421
udif_verify_policy
Verification strictness for identity/cert/claim checks.
Definition udif.h:838
@ udif_verify_lenient
Definition udif.h:840
@ udif_verify_strict
Definition udif.h:839
#define UDIF_CAPABILITY_TOKEN_MAX_SIZE
The maximum size of a serialized capability token.
Definition udif.h:427
udif_permission_class
Permission classes whose bits populate the permission mask.
Definition udif.h:752
@ udif_perm_export_identity
Definition udif.h:760
@ udif_perm_write_claims
Definition udif.h:754
@ udif_perm_import_identity
Definition udif.h:761
@ udif_perm_delegate
Definition udif.h:759
@ udif_perm_read_claims
Definition udif.h:753
@ udif_perm_manage_caps
Definition udif.h:758
@ udif_perm_read_certs
Definition udif.h:755
@ udif_perm_write_certs
Definition udif.h:756
@ udif_perm_manage_policy
Definition udif.h:757
udif_time_validation
Results of time/validity-window checks.
Definition udif.h:798
@ udif_time_skew_exceeds
Definition udif.h:802
@ udif_time_valid
Definition udif.h:799
@ udif_time_expired
Definition udif.h:801
@ udif_time_future
Definition udif.h:800
udif_policy_decision
Policy evaluation outcome.
Definition udif.h:769
@ udif_policy_permit
Definition udif.h:770
@ udif_policy_deny
Definition udif.h:771
@ udif_policy_not_applicable
Definition udif.h:773
@ udif_policy_indeterminate
Definition udif.h:772
udif_status
Generic status codes for UDIF operations.
Definition udif.h:822
@ udif_status_internal_error
Definition udif.h:830
@ udif_status_out_of_memory
Definition udif.h:827
@ udif_status_not_found
Definition udif.h:825
@ udif_status_invalid_argument
Definition udif.h:824
@ udif_status_buffer_too_small
Definition udif.h:828
@ udif_status_already_exists
Definition udif.h:826
@ udif_status_not_supported
Definition udif.h:829
@ udif_status_success
Definition udif.h:823
#define UDIF_ASYMMETRIC_SIGNATURE_SIZE
The byte size of the asymmetric signature array.
Definition udif.h:252
#define UDIF_CRYPTO_HASH_SIZE
The size of the certificate hash in bytes.
Definition udif.h:439
#define UDIF_ASYMMETRIC_PUBLIC_KEY_SIZE
The byte size of the asymmetric cipher public-key array.
Definition udif.h:246
udif_configuration_sets
The UDIF algorithm configuration sets.
Definition udif.h:579
@ udif_configuration_set_none
Definition udif.h:580
@ udif_configuration_set_sphincsplus5_mceliece7_rcs256_shake256
Definition udif.h:589
@ udif_configuration_set_sphincsplus5_mceliece6_rcs256_shake256
Definition udif.h:588
@ udif_configuration_set_dilithium1_kyber1_rcs256_shake256
Definition udif.h:581
@ udif_configuration_set_dilithium5_kyber5_rcs256_shake256
Definition udif.h:583
@ udif_configuration_set_dilithium5_kyber6_rcs512_shake256
Definition udif.h:584
@ udif_configuration_set_dilithium3_kyber3_rcs256_shake256
Definition udif.h:582
@ udif_configuration_set_sphincsplus3_mceliece3_rcs256_shake256
Definition udif.h:586
@ udif_configuration_set_sphincsplus1_mceliece1_rcs256_shake256
Definition udif.h:585
@ udif_configuration_set_sphincsplus5_mceliece5_rcs256_shake256
Definition udif.h:587
#define UDIF_ASYMMETRIC_VERIFICATION_KEY_SIZE
The byte size of the asymmetric signature verification-key array.
Definition udif.h:264
UDIF_EXPORT_API bool udif_suite_is_valid(uint8_t suiteid)
Check if the suite id valid.
Definition udif.c:7
udif_errors
UDIF error codes.
Definition udif.h:628
@ udif_error_suite_mismatch
Definition udif.h:639
@ udif_error_auth_failure
Definition udif.h:632
@ udif_error_certificate_expired
Definition udif.h:633
@ udif_error_file_create_failed
Definition udif.h:652
@ udif_error_epoch_mismatch
Definition udif.h:638
@ udif_error_registry_full
Definition udif.h:646
@ udif_error_invalid_input
Definition udif.h:630
@ udif_error_invalid_request
Definition udif.h:650
@ udif_error_encode_failure
Definition udif.h:641
@ udif_error_internal
Definition udif.h:651
@ udif_error_not_authorized
Definition udif.h:644
@ udif_error_anchor_invalid
Definition udif.h:648
@ udif_error_capability_revoked
Definition udif.h:635
@ udif_error_mac_invalid
Definition udif.h:643
@ udif_error_time_window
Definition udif.h:637
@ udif_error_invalid_state
Definition udif.h:631
@ udif_error_treaty_invalid
Definition udif.h:649
@ udif_error_decode_failure
Definition udif.h:640
@ udif_error_invalid_sequence
Definition udif.h:636
@ udif_error_file_not_found
Definition udif.h:653
@ udif_error_signature_invalid
Definition udif.h:642
@ udif_error_certificate_revoked
Definition udif.h:634
@ udif_error_invalid_parameter
Definition udif.h:654
@ udif_error_object_not_found
Definition udif.h:645
@ udif_error_none
Definition udif.h:629
@ udif_error_logging_failure
Definition udif.h:647
#define UDIF_PERMISSION_MASK_SIZE
The size of a permission mask in bytes.
Definition udif.h:489
udif_error_capability
Capability/permission evaluation errors.
Definition udif.h:662
@ udif_ecap_denied
Definition udif.h:664
@ udif_ecap_mask_conflict
Definition udif.h:666
@ udif_ecap_mask_empty
Definition udif.h:665
@ udif_ecap_none
Definition udif.h:663
udif_error_claims
Claim/claim-set error codes.
Definition udif.h:674
@ udif_ecl_value_invalid
Definition udif.h:680
@ udif_ecl_canonical_fail
Definition udif.h:678
@ udif_ecl_anchor_bad
Definition udif.h:679
@ udif_ecl_none
Definition udif.h:675
@ udif_ecl_encoding_bad
Definition udif.h:677
@ udif_ecl_type_unknown
Definition udif.h:676
UDIF_EXPORT_API const char * udif_error_to_string(udif_errors error)
Convert an error to a string.
Definition udif.c:12
udif_version_sets
The UDIF version sets.
Definition udif.h:848
@ udif_version_set_none
Definition udif.h:849
@ udif_version_set_one_zero
Definition udif.h:850
UDIF common definitions and constants.
#define UDIF_EXPORT_API
The api export prefix.
Definition udifcommon.h:103