90#define UDIF_TREATY_SCOPE_ANALYTICS 1U
96#define UDIF_TREATY_SCOPE_INTRA_DOMAIN 2U
102#define UDIF_TREATY_SCOPE_LOCAL 4U
108#define UDIF_TREATY_SCOPE_QUERY 8U
114#define UDIF_TREATY_SCOPE_TRANSFER 16U
120#define UDIF_TREATY_SCOPE_TREATY 32U
126#define UDIF_TREATY_SCOPE_RESERVED1 64U
132#define UDIF_TREATY_SCOPE_RESERVED2 128U
138#define UDIF_TREATY_SCOPE_RESERVED3 256U
144#define UDIF_TREATY_SCOPE_MAX 256U
150#define UDIF_TREATY_SCOPE_QUERY_EXIST UDIF_TREATY_SCOPE_QUERY
156#define UDIF_TREATY_SCOPE_QUERY_OWNER UDIF_TREATY_SCOPE_INTRA_DOMAIN
162#define UDIF_TREATY_SCOPE_QUERY_ATTR UDIF_TREATY_SCOPE_LOCAL
168#define UDIF_TREATY_SCOPE_QUERY_PROOF UDIF_TREATY_SCOPE_TREATY
174#define UDIF_TREATY_POLICY_VERSION_SIZE 4U
180#define UDIF_TREATY_SCOPE_QUERY_SIZE 4U
186#define UDIF_TREATY_DEFAULT_DURATION (365U * 24U * 3600U)
192#define UDIF_TREATY_MAX_DURATION (5U * 365U * 24U * 3600U)
198#define UDIF_TREATY_STRUCTURE_SIZE (UDIF_SIGNED_HASH_SIZE + \
199 UDIF_SIGNED_HASH_SIZE + \
200 UDIF_SERIAL_NUMBER_SIZE + \
201 UDIF_SERIAL_NUMBER_SIZE + \
202 UDIF_SERIAL_NUMBER_SIZE + \
203 UDIF_VALID_TIME_SIZE + \
204 UDIF_VALID_TIME_SIZE + \
205 UDIF_TREATY_POLICY_VERSION_SIZE + \
206 UDIF_TREATY_SCOPE_QUERY_SIZE)
317 uint32_t scopebitmap, uint64_t validfrom, uint64_t validto, uint32_t policy,
const uint8_t* domsigkeya,
bool (*rng_generate)(uint8_t*,
size_t));
Cross-domain treaty.
Definition treaty.h:216
uint8_t domsigb[UDIF_SIGNED_HASH_SIZE]
Definition treaty.h:218
uint8_t treatyid[UDIF_SERIAL_NUMBER_SIZE]
Definition treaty.h:221
uint32_t scopebitmap
Definition treaty.h:225
uint8_t domsera[UDIF_SERIAL_NUMBER_SIZE]
Definition treaty.h:219
uint64_t validfrom
Definition treaty.h:222
uint8_t domserb[UDIF_SERIAL_NUMBER_SIZE]
Definition treaty.h:220
uint32_t policy
Definition treaty.h:224
uint64_t validto
Definition treaty.h:223
uint8_t domsiga[UDIF_SIGNED_HASH_SIZE]
Definition treaty.h:217
UDIF_EXPORT_API bool udif_treaty_is_participant(const udif_treaty *treaty, const uint8_t *entityser)
Check if entity is treaty participant.
Definition treaty.c:381
UDIF_EXPORT_API bool udif_treaty_allows_scope(const udif_treaty *treaty, uint32_t scope)
Check if treaty allows scope.
Definition treaty.c:58
UDIF_EXPORT_API bool udif_treaty_is_expired(const udif_treaty *treaty, uint64_t ctime)
Check if treaty is expired.
Definition treaty.c:365
UDIF_EXPORT_API bool udif_treaty_allows_query(const udif_treaty *treaty, uint8_t querytype)
Check if treaty allows a query predicate family.
Definition treaty.c:75
UDIF_EXPORT_API size_t udif_treaty_encoded_size(const udif_treaty *treaty)
Get treaty encoded size.
Definition treaty.c:308
UDIF_EXPORT_API udif_errors udif_treaty_create_proposal(udif_treaty *treaty, const uint8_t *treatyid, const uint8_t *domsera, const uint8_t *domserb, uint32_t scopebitmap, uint64_t validfrom, uint64_t validto, uint32_t policy, const uint8_t *domsigkeya, bool(*rng_generate)(uint8_t *, size_t))
Create a treaty proposal.
Definition treaty.c:152
UDIF_EXPORT_API bool udif_treaty_is_active(const udif_treaty *treaty, uint64_t ctime)
Check if treaty is active.
Definition treaty.c:341
UDIF_EXPORT_API udif_errors udif_treaty_accept(udif_treaty *treaty, const uint8_t *domsigkeyb, bool(*rng_generate)(uint8_t *, size_t))
Accept a treaty proposal.
Definition treaty.c:7
UDIF_EXPORT_API bool udif_treaty_verify(const udif_treaty *treaty, const uint8_t *domverkeya, const uint8_t *domverkeyb)
Verify a treaty signatures and properties.
Definition treaty.c:535
UDIF_EXPORT_API udif_errors udif_treaty_deserialize(udif_treaty *treaty, const uint8_t *input, size_t inplen)
Deserialize a treaty.
Definition treaty.c:269
UDIF_EXPORT_API udif_errors udif_treaty_validate(const udif_treaty *treaty)
Validate treaty parameters.
Definition treaty.c:464
UDIF_EXPORT_API bool udif_treaty_verify_proposal(const udif_treaty *treaty, const uint8_t *domverkeya)
Verify a treaty.
Definition treaty.c:497
UDIF_EXPORT_API void udif_treaty_clear(udif_treaty *treaty)
Clear a treaty.
Definition treaty.c:125
UDIF_EXPORT_API uint64_t udif_treaty_get_duration(const udif_treaty *treaty)
Get treaty duration.
Definition treaty.c:325
UDIF_EXPORT_API bool udif_treaty_is_pending(const udif_treaty *treaty)
Check if treaty is pending.
Definition treaty.c:408
UDIF_EXPORT_API udif_errors udif_treaty_compute_digest(uint8_t *digest, const udif_treaty *treaty)
Compute treaty digest.
Definition treaty.c:234
UDIF_EXPORT_API udif_errors udif_treaty_serialize(uint8_t *output, size_t outlen, const udif_treaty *treaty)
Serialize a treaty.
Definition treaty.c:425
UDIF_EXPORT_API bool udif_treaty_compare(const udif_treaty *a, const udif_treaty *b)
Compare two treaties.
Definition treaty.c:135
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
udif_errors
UDIF error codes.
Definition udif.h:1210
#define UDIF_EXPORT_API
The api export prefix.
Definition udifcommon.h:101