85#define UDIF_QUERY_MAX_PREDICATE_SIZE 1024U
91#define UDIF_QUERY_MAX_PROOF_SIZE 8192U
97#define UDIF_QUERY_PREDICATE_SIZE sizeof(size_t)
103#define UDIF_QUERY_PROOF_SIZE sizeof(size_t)
109#define UDIF_QUERY_TYPE_SIZE 1U
115#define UDIF_QUERY_VERDICT_SIZE 1U
121#define UDIF_QUERY_STRUCTURE_SIZE (UDIF_CRYPTO_HASH_SIZE + \
122 UDIF_QUERY_ID_SIZE + \
123 UDIF_SERIAL_NUMBER_SIZE + \
124 UDIF_VALID_TIME_SIZE + \
125 UDIF_QUERY_PREDICATE_SIZE + \
126 UDIF_QUERY_TYPE_SIZE)
132#define UDIF_QUERY_RESPONSE_STRUCTURE_SIZE (UDIF_SIGNED_HASH_SIZE + \
133 UDIF_QUERY_ID_SIZE + \
134 UDIF_CRYPTO_HASH_SIZE + \
135 UDIF_SERIAL_NUMBER_SIZE + \
136 UDIF_QUERY_VERDICT_SIZE + \
137 UDIF_VALID_TIME_SIZE + \
138 UDIF_QUERY_PROOF_SIZE)
235 const uint8_t* serial, uint64_t attrmin, uint64_t attrmax, uint64_t timeanchor,
const uint8_t* capability);
252 const uint8_t* serial, uint64_t timeanchor,
const uint8_t* capability);
269 const uint8_t* serial, uint64_t timeanchor,
const uint8_t* capability);
287 const uint8_t* serial,
const uint8_t* ownerser, uint64_t time_anchor,
const uint8_t* capability);
307 size_t prooflen,
const uint8_t* respser,
const uint8_t* respsigkey, uint64_t ctime,
bool (*rng_generate)(uint8_t*,
size_t));
UDIF capability token management.
UDIF_EXPORT_API udif_errors udif_query_create_existence(udif_query *query, const uint8_t *queryid, const uint8_t *targetser, const uint8_t *serial, uint64_t timeanchor, const uint8_t *capability)
Create an existence query.
Definition query.c:118
UDIF_EXPORT_API udif_errors udif_query_create_response(udif_query_response *response, const udif_query *query, uint8_t verdict, const uint8_t *proofdata, size_t prooflen, const uint8_t *respser, const uint8_t *respsigkey, uint64_t ctime, bool(*rng_generate)(uint8_t *, size_t))
Create a query response.
Definition query.c:247
UDIF_EXPORT_API udif_errors udif_query_create_owner_binding(udif_query *query, const uint8_t *queryid, const uint8_t *targetser, const uint8_t *serial, const uint8_t *ownerser, uint64_t time_anchor, const uint8_t *capability)
Create an owner binding query.
Definition query.c:200
UDIF_EXPORT_API bool udif_query_validate_authorization(const udif_query *query, const udif_capability *capability, const uint8_t *targser)
Validate query authorization.
Definition query.c:831
UDIF_EXPORT_API udif_errors udif_query_create_membership_proof(udif_query *query, const uint8_t *queryid, const uint8_t *targetser, const uint8_t *serial, uint64_t timeanchor, const uint8_t *capability)
Create a membership proof query.
Definition query.c:159
UDIF_EXPORT_API udif_errors udif_query_response_serialize(uint8_t *output, size_t *outlen, const udif_query_response *response)
Serialize a query response.
Definition query.c:599
UDIF_EXPORT_API void udif_query_response_clear(udif_query_response *response)
Clear a query response.
Definition query.c:651
UDIF_EXPORT_API udif_errors udif_query_response_deserialize(udif_query_response *response, const uint8_t *input, size_t inplen)
Deserialize a query response.
Definition query.c:533
udif_query_types
Query predicate types.
Definition query.h:145
@ udif_query_attr_bucket
Definition query.h:148
@ udif_query_owner_binding
Definition query.h:147
@ udif_query_membership_proof
Definition query.h:149
@ udif_query_exist
Definition query.h:146
UDIF_EXPORT_API void udif_query_compute_digest(uint8_t *digest, const udif_query *query)
Compute query digest.
Definition query.c:37
UDIF_EXPORT_API bool udif_query_verify_response_signature(const udif_query_response *response, const uint8_t *respverkey)
Verify a query response signature over the embedded query digest.
Definition query.c:869
UDIF_EXPORT_API void udif_query_response_compute_digest(uint8_t *digest, const udif_query_response *response, const udif_query *query)
Compute response digest.
Definition query.c:500
UDIF_EXPORT_API bool udif_query_is_fresh(const udif_query *query, uint64_t ctime)
Check if query is fresh.
Definition query.c:470
UDIF_EXPORT_API udif_errors udif_query_create_attr_bucket(udif_query *query, const uint8_t *queryid, const uint8_t *targetser, const uint8_t *serial, uint64_t attrmin, uint64_t attrmax, uint64_t timeanchor, const uint8_t *capability)
Create an attribute bucket query.
Definition query.c:69
UDIF_EXPORT_API void udif_query_clear(udif_query *query)
Clear a query.
Definition query.c:23
UDIF_EXPORT_API udif_errors udif_query_deserialize(udif_query *query, const uint8_t *input, size_t inplen)
Deserialize a query.
Definition query.c:349
UDIF_EXPORT_API udif_errors udif_query_evaluate_registry(uint8_t *verdict, uint8_t *proof, size_t *prooflen, const udif_query *query, const udif_registry_state *registry, const udif_capability *capability, const uint8_t *subjectser, uint64_t ctime)
Evaluate a query against a UA registry.
Definition query.c:708
udif_query_verdicts
Query response verdicts.
Definition query.h:157
@ udif_verdict_no
Definition query.h:158
@ udif_verdict_yes
Definition query.h:159
@ udif_verdict_deny
Definition query.h:160
UDIF_EXPORT_API udif_errors udif_query_serialize(uint8_t *output, size_t *outlen, const udif_query *query)
Serialize a query.
Definition query.c:420
UDIF_EXPORT_API bool udif_query_verify_response(const udif_query_response *response, const udif_query *query, const uint8_t *respverkey)
Verify a query response.
Definition query.c:902
UDIF_EXPORT_API bool udif_query_predicate_is_canonical(const udif_query *query)
Validate the canonical predicate size for a query type.
Definition query.c:668
UDIF object registry management.
Capability token.
Definition capability.h:574
Query response.
Definition query.h:188
uint8_t verdict
Definition query.h:193
uint64_t timestamp
Definition query.h:194
uint8_t queryid[UDIF_QUERY_ID_SIZE]
Definition query.h:190
uint8_t signature[UDIF_SIGNED_HASH_SIZE]
Definition query.h:189
uint8_t respser[UDIF_SERIAL_NUMBER_SIZE]
Definition query.h:192
uint8_t * proof
Definition query.h:196
uint8_t querydigest[UDIF_CRYPTO_HASH_SIZE]
Definition query.h:191
size_t prooflen
Definition query.h:195
Query request.
Definition query.h:171
uint8_t targser[UDIF_SERIAL_NUMBER_SIZE]
Definition query.h:174
uint8_t querytype
Definition query.h:177
uint8_t queryid[UDIF_QUERY_ID_SIZE]
Definition query.h:173
size_t predlen
Definition query.h:176
uint8_t * predicate
Definition query.h:178
uint8_t capabilityref[UDIF_CRYPTO_HASH_SIZE]
Definition query.h:172
uint64_t timeanchor
Definition query.h:175
User Agent object registry.
Definition registry.h:169
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_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_QUERY_ID_SIZE
The query identifier field length in bytes.
Definition udif.h:531
#define UDIF_EXPORT_API
The api export prefix.
Definition udifcommon.h:101