84#define UDIF_QUERY_ID_SIZE 16U
90#define UDIF_QUERY_MAX_PREDICATE_SIZE 1024U
96#define UDIF_QUERY_MAX_PROOF_SIZE 8192U
102#define UDIF_QUERY_PREDICATE_SIZE sizeof(size_t)
108#define UDIF_QUERY_PROOF_SIZE sizeof(size_t)
114#define UDIF_QUERY_TYPE_SIZE 1U
120#define UDIF_QUERY_VERDICT_SIZE 1U
126#define UDIF_QUERY_STRUCTURE_SIZE (UDIF_CRYPTO_HASH_SIZE + \
127 UDIF_QUERY_ID_SIZE + \
128 UDIF_SERIAL_NUMBER_SIZE + \
129 UDIF_VALID_TIME_SIZE + \
130 UDIF_QUERY_PREDICATE_SIZE + \
131 UDIF_QUERY_TYPE_SIZE)
137#define UDIF_QUERY_RESPONSE_STRUCTURE_SIZE (UDIF_SIGNED_HASH_SIZE + \
138 UDIF_QUERY_ID_SIZE + \
139 UDIF_SERIAL_NUMBER_SIZE + \
140 UDIF_QUERY_VERDICT_SIZE + \
141 UDIF_VALID_TIME_SIZE + \
142 UDIF_QUERY_PROOF_SIZE)
238 const uint8_t* serial, uint64_t attrmin, uint64_t attrmax, uint64_t timeanchor,
const uint8_t* capability);
255 const uint8_t* serial, uint64_t timeanchor,
const uint8_t* capability);
272 const uint8_t* serial, uint64_t timeanchor,
const uint8_t* capability);
290 const uint8_t* serial,
const uint8_t* ownerser, uint64_t time_anchor,
const uint8_t* capability);
310 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:103
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:235
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:187
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:619
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:145
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:564
UDIF_EXPORT_API void udif_query_response_clear(udif_query_response *response)
Clear a query response.
Definition query.c:605
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:505
udif_query_types
Query predicate types.
Definition query.h:149
@ udif_query_attr_bucket
Definition query.h:152
@ udif_query_owner_binding
Definition query.h:151
@ udif_query_membership_proof
Definition query.h:153
@ udif_query_exist
Definition query.h:150
UDIF_EXPORT_API void udif_query_compute_digest(uint8_t *digest, const udif_query *query)
Compute query digest.
Definition query.c:22
UDIF_EXPORT_API void udif_query_response_compute_digest(uint8_t *digest, const udif_query_response *response, const uint8_t *queryid)
Compute response digest.
Definition query.c:473
UDIF_EXPORT_API bool udif_query_is_fresh(const udif_query *query, uint64_t ctime)
Check if query is fresh.
Definition query.c:443
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:54
UDIF_EXPORT_API void udif_query_clear(udif_query *query)
Clear a query.
Definition query.c:8
UDIF_EXPORT_API udif_errors udif_query_deserialize(udif_query *query, const uint8_t *input, size_t inplen)
Deserialize a query.
Definition query.c:334
udif_query_verdicts
Query response verdicts.
Definition query.h:161
@ udif_verdict_no
Definition query.h:162
@ udif_verdict_yes
Definition query.h:163
@ udif_verdict_deny
Definition query.h:164
#define UDIF_QUERY_ID_SIZE
The query id size.
Definition query.h:84
UDIF_EXPORT_API udif_errors udif_query_serialize(uint8_t *output, size_t *outlen, const udif_query *query)
Serialize a query.
Definition query.c:402
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:655
Capability token.
Definition capability.h:108
Query response.
Definition query.h:192
uint8_t verdict
Definition query.h:196
uint64_t timestamp
Definition query.h:197
uint8_t queryid[UDIF_QUERY_ID_SIZE]
Definition query.h:194
uint8_t signature[UDIF_SIGNED_HASH_SIZE]
Definition query.h:193
uint8_t respser[UDIF_SERIAL_NUMBER_SIZE]
Definition query.h:195
uint8_t * proof
Definition query.h:199
size_t prooflen
Definition query.h:198
Query request.
Definition query.h:175
uint8_t targser[UDIF_SERIAL_NUMBER_SIZE]
Definition query.h:178
uint8_t querytype
Definition query.h:181
uint8_t queryid[UDIF_QUERY_ID_SIZE]
Definition query.h:177
size_t predlen
Definition query.h:180
uint8_t * predicate
Definition query.h:182
uint8_t capabilityref[UDIF_CRYPTO_HASH_SIZE]
Definition query.h:176
uint64_t timeanchor
Definition query.h:179
UDIF Common Definitions and Protocol Configuration.
#define UDIF_SERIAL_NUMBER_SIZE
The serial number field length.
Definition udif.h:519
#define UDIF_SIGNED_HASH_SIZE
The combined size of a signature and hash.
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:628
#define UDIF_EXPORT_API
The api export prefix.
Definition udifcommon.h:103