84#define UDIF_OBJECT_FLAG_DESTROYED 0x01U
89#define UDIF_OBJECT_FLAG_SIZE 4U
94#define UDIF_OBJECT_TYPE_SIZE 4U
99#define UDIF_OBJECT_ENCODED_SIZE (UDIF_SIGNED_HASH_SIZE + \
100 UDIF_SERIAL_NUMBER_SIZE + \
101 UDIF_CRYPTO_HASH_SIZE + \
102 UDIF_SERIAL_NUMBER_SIZE + \
103 UDIF_SERIAL_NUMBER_SIZE + \
104 UDIF_VALID_TIME_STRUCTURE_SIZE + \
105 UDIF_OBJECT_FLAG_SIZE + \
106 UDIF_OBJECT_TYPE_SIZE)
111#define UDIF_OBJECT_SIGNING_SIZE (UDIF_SERIAL_NUMBER_SIZE + \
112 UDIF_CRYPTO_HASH_SIZE + \
113 UDIF_SERIAL_NUMBER_SIZE + \
114 UDIF_SERIAL_NUMBER_SIZE + \
115 UDIF_VALID_TIME_STRUCTURE_SIZE + \
116 UDIF_OBJECT_FLAG_SIZE + \
117 UDIF_OBJECT_TYPE_SIZE)
122#define UDIF_OBJECT_TRANSFER_SIZE (UDIF_SERIAL_NUMBER_SIZE + \
123 UDIF_SERIAL_NUMBER_SIZE + \
124 UDIF_SERIAL_NUMBER_SIZE + \
125 UDIF_VALID_TIME_SIZE)
130#define UDIF_TRANSFER_RECORD_ENCODED_SIZE (UDIF_SIGNED_HASH_SIZE + \
131 UDIF_SIGNED_HASH_SIZE + \
132 UDIF_CRYPTO_HASH_SIZE + \
133 UDIF_SERIAL_NUMBER_SIZE + \
134 UDIF_SERIAL_NUMBER_SIZE + \
135 UDIF_SERIAL_NUMBER_SIZE + \
136 UDIF_VALID_TIME_SIZE)
257 const uint8_t* owner,
const uint8_t* sigkey, uint64_t ctime,
bool (*rng_generate)(uint8_t*,
size_t));
327 const uint8_t* recvsigkey, uint64_t ctime,
bool (*rng_generate)(uint8_t*,
size_t));
343 bool (*rng_generate)(uint8_t*,
size_t));
UDIF_EXPORT_API udif_errors udif_object_deserialize(udif_object *obj, const uint8_t *input, size_t inplen)
Deserialize an object.
Definition object.c:179
UDIF_EXPORT_API bool udif_object_compare(const udif_object *a, const udif_object *b)
Compare two objects.
Definition object.c:14
UDIF_EXPORT_API void udif_object_clear(udif_object *obj)
Clear an object.
Definition object.c:6
UDIF_EXPORT_API void udif_transfer_clear(udif_transfer_record *transfer)
Clear a transfer record.
Definition object.c:519
UDIF_EXPORT_API bool udif_object_is_destroyed(const udif_object *obj)
Check if object is destroyed.
Definition object.c:262
UDIF_EXPORT_API bool udif_transfer_verify(const udif_transfer_record *transfer, const uint8_t *senderverkey, const uint8_t *recvverkey)
Verify transfer record.
Definition object.c:594
UDIF_EXPORT_API udif_errors udif_object_compute_transfer_digest(uint8_t *digest, const uint8_t *objserial, const uint8_t *txid, const uint8_t *toowner, uint64_t timestamp)
Compute transfer object digest.
Definition object.c:104
UDIF_EXPORT_API udif_errors udif_transfer_serialize(uint8_t *output, size_t outlen, const udif_transfer_record *transfer)
Serialize a transfer record.
Definition object.c:560
UDIF_EXPORT_API udif_errors udif_object_destroy(udif_object *obj, const uint8_t *ownersigkey, uint64_t ctime, bool(*rng_generate)(uint8_t *, size_t))
Mark object as destroyed.
Definition object.c:217
UDIF_EXPORT_API bool udif_object_verify(const udif_object *obj, const uint8_t *ownerverkey)
Verify object signature.
Definition object.c:485
UDIF_EXPORT_API udif_errors udif_object_compute_signature(udif_object *obj, const uint8_t *sigkey, bool(*rng_generate)(uint8_t *, size_t))
Compute object digest and signature.
Definition object.c:70
UDIF_EXPORT_API udif_errors udif_object_serialize(uint8_t *output, size_t outlen, const udif_object *obj)
Serialize an object.
Definition object.c:278
UDIF_EXPORT_API udif_errors udif_object_compute_digest(uint8_t *digest, const udif_object *obj)
Compute object digest.
Definition object.c:31
UDIF_EXPORT_API udif_errors udif_object_transfer(udif_object *obj, udif_transfer_record *transfer, const uint8_t *newowner, const uint8_t *sendsigkey, const uint8_t *recvsigkey, uint64_t ctime, bool(*rng_generate)(uint8_t *, size_t))
Transfer object ownership.
Definition object.c:316
UDIF_EXPORT_API udif_errors udif_object_create(udif_object *obj, const uint8_t *serial, uint32_t type, const uint8_t *creator, const uint8_t *attrroot, const uint8_t *owner, const uint8_t *sigkey, uint64_t ctime, bool(*rng_generate)(uint8_t *, size_t))
Create a new object.
Definition object.c:142
UDIF_EXPORT_API udif_errors udif_object_update_attributes(udif_object *obj, const uint8_t *newattrroot, const uint8_t *ownersigkey, uint64_t ctime, bool(*rng_generate)(uint8_t *, size_t))
Update object attributes.
Definition object.c:431
UDIF_EXPORT_API udif_errors udif_transfer_deserialize(udif_transfer_record *transfer, const uint8_t *input, size_t inplen)
Deserialize a transfer record.
Definition object.c:527
UDIF object container.
Definition object.h:148
uint8_t attrroot[UDIF_CRYPTO_HASH_SIZE]
Definition object.h:150
uint64_t created
Definition object.h:154
uint32_t flags
Definition object.h:156
uint8_t signature[UDIF_SIGNED_HASH_SIZE]
Definition object.h:149
uint64_t updated
Definition object.h:155
uint8_t creator[UDIF_SERIAL_NUMBER_SIZE]
Definition object.h:152
uint8_t owner[UDIF_SERIAL_NUMBER_SIZE]
Definition object.h:153
uint32_t type
Definition object.h:157
uint8_t serial[UDIF_SERIAL_NUMBER_SIZE]
Definition object.h:151
Object transfer record.
Definition object.h:167
uint8_t receiver[UDIF_SIGNED_HASH_SIZE]
Definition object.h:169
uint8_t sender[UDIF_SIGNED_HASH_SIZE]
Definition object.h:168
uint8_t txid[UDIF_CRYPTO_HASH_SIZE]
Definition object.h:170
uint64_t timestamp
Definition object.h:174
uint8_t owner[UDIF_SERIAL_NUMBER_SIZE]
Definition object.h:173
uint8_t serial[UDIF_SERIAL_NUMBER_SIZE]
Definition object.h:171
uint8_t originator[UDIF_SERIAL_NUMBER_SIZE]
Definition object.h:172
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