diff options
author | Linus Nordberg <linus@nordberg.se> | 2021-04-01 12:54:48 +0200 |
---|---|---|
committer | Linus Nordberg <linus@nordberg.se> | 2021-04-01 12:54:48 +0200 |
commit | f3134997ccbb525cd09a8144ed6daeeb3245326a (patch) | |
tree | 8f0b1ac3b7749fe9369b6f6e553b3da1ba65328c /trunnel/stfe.h | |
parent | d4337d27e4c4d1bf58bde6a2e34f860d70f0ca5f (diff) |
trunnel description take two
Diffstat (limited to 'trunnel/stfe.h')
-rw-r--r-- | trunnel/stfe.h | 930 |
1 files changed, 590 insertions, 340 deletions
diff --git a/trunnel/stfe.h b/trunnel/stfe.h index c92d1e4..26ffb09 100644 --- a/trunnel/stfe.h +++ b/trunnel/stfe.h @@ -8,22 +8,21 @@ #include <stdint.h> #include "trunnel.h" +#define MAGIC_V1 6004501466958485041 #define T_GET_ENTRIES_V1 1 #define T_GET_PROOF_BY_HASH_V1 2 #define T_GET_CONSISTENCY_PROOF_V1 3 -#define T_INCLUSION_PROOF_V1 4 -#define T_CONSISTENCY_PROOF_V1 5 -#define T_SIGNED_TREE_HEAD_V1 6 -#define T_SIGNED_CHECKSUM32_ED25519_V1 7 -#define T_ED25519_V1 8 -#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_ED25519_V1) -struct ed25519_v1_st { - uint64_t format; - uint8_t pubkey[32]; +#define T_ENTRIES_V1 4 +#define T_INCLUSION_PROOF_V1 5 +#define T_CONSISTENCY_PROOF_V1 6 +#define T_SIGNED_TREE_HEAD_V1 7 +#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_HASH) +struct hash_st { + uint8_t hash[32]; uint8_t trunnel_error_code_; }; #endif -typedef struct ed25519_v1_st ed25519_v1_t; +typedef struct hash_st hash_t; #if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_REQ_GET_CONSISTENCY_PROOF_V1) struct req_get_consistency_proof_v1_st { uint64_t old_size; @@ -48,44 +47,64 @@ struct req_get_proof_by_hash_v1_st { }; #endif typedef struct req_get_proof_by_hash_v1_st req_get_proof_by_hash_v1_t; -#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_SIGNED_TREE_HEAD_V1) -struct signed_tree_head_v1_st { - uint64_t format; - uint64_t timestamp; - uint64_t tree_size; - uint8_t root_hash[32]; +#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_SIGIDENT_ED25519) +struct sigident_ed25519_st { + uint8_t signature[64]; + uint8_t identifier[32]; + uint8_t trunnel_error_code_; +}; +#endif +typedef struct sigident_ed25519_st sigident_ed25519_t; +#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_SIGNED_CHECKSUM32_ED25519) +struct signed_checksum32_ed25519_st { + uint8_t checksum[32]; uint64_t length; - TRUNNEL_DYNARRAY_HEAD(, uint8_t) sigident; + TRUNNEL_DYNARRAY_HEAD(, uint8_t) identifier; + uint8_t signature[64]; + uint8_t namespace[32]; uint8_t trunnel_error_code_; }; #endif -typedef struct signed_tree_head_v1_st signed_tree_head_v1_t; +typedef struct signed_checksum32_ed25519_st signed_checksum32_ed25519_t; #if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_CONSISTENCY_PROOF_V1) struct consistency_proof_v1_st { + uint64_t magic; uint64_t format; - struct ed25519_v1_st *identifier; + uint8_t identifier[32]; uint64_t old_size; uint64_t new_size; - uint64_t length; - TRUNNEL_DYNARRAY_HEAD(, uint8_t) hashes; + uint64_t n_items; + TRUNNEL_DYNARRAY_HEAD(, struct hash_st *) hashes; uint8_t trunnel_error_code_; }; #endif typedef struct consistency_proof_v1_st consistency_proof_v1_t; +#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_ENTRIES_V1) +struct entries_v1_st { + uint64_t magic; + uint64_t format; + uint64_t n_items; + TRUNNEL_DYNARRAY_HEAD(, struct signed_checksum32_ed25519_st *) checksums; + uint8_t trunnel_error_code_; +}; +#endif +typedef struct entries_v1_st entries_v1_t; #if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_INCLUSION_PROOF_V1) struct inclusion_proof_v1_st { + uint64_t magic; uint64_t format; - struct ed25519_v1_st *identifier; + uint8_t identifier[32]; uint64_t tree_size; uint64_t leaf_index; - uint64_t length; - TRUNNEL_DYNARRAY_HEAD(, uint8_t) hashes; + uint64_t n_items; + TRUNNEL_DYNARRAY_HEAD(, struct hash_st *) hashes; uint8_t trunnel_error_code_; }; #endif typedef struct inclusion_proof_v1_st inclusion_proof_v1_t; #if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_REQUEST_V1) struct request_v1_st { + uint64_t magic; uint64_t format; struct req_get_entries_v1_st *request_get_entries; struct req_get_proof_by_hash_v1_st *request_get_proof_by_hash; @@ -94,82 +113,74 @@ struct request_v1_st { }; #endif typedef struct request_v1_st request_v1_t; -#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_SIGNED_CHECKSUM32_ED25519_V1) -struct signed_checksum32_ed25519_v1_st { +#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_SIGNED_TREE_HEAD_V1) +struct signed_tree_head_v1_st { + uint64_t magic; uint64_t format; - uint8_t checksum[32]; - uint64_t length; - TRUNNEL_DYNARRAY_HEAD(, uint8_t) identifier; - uint8_t signature[64]; - struct ed25519_v1_st *namespace; + uint64_t timestamp; + uint64_t tree_size; + uint8_t root_hash[32]; + uint64_t n_items; + TRUNNEL_DYNARRAY_HEAD(, struct sigident_ed25519_st *) signatures; uint8_t trunnel_error_code_; }; #endif -typedef struct signed_checksum32_ed25519_v1_st signed_checksum32_ed25519_v1_t; -/** Return a newly allocated ed25519_v1 with all elements set to zero. +typedef struct signed_tree_head_v1_st signed_tree_head_v1_t; +/** Return a newly allocated hash with all elements set to zero. */ -ed25519_v1_t *ed25519_v1_new(void); -/** Release all storage held by the ed25519_v1 in 'victim'. (Do - * nothing if 'victim' is NULL.) +hash_t *hash_new(void); +/** Release all storage held by the hash in 'victim'. (Do nothing if + * 'victim' is NULL.) */ -void ed25519_v1_free(ed25519_v1_t *victim); -/** Try to parse a ed25519_v1 from the buffer in 'input', using up to +void hash_free(hash_t *victim); +/** Try to parse a hash from the buffer in 'input', using up to * 'len_in' bytes from the input buffer. On success, return the number - * of bytes consumed and set *output to the newly allocated - * ed25519_v1_t. On failure, return -2 if the input appears truncated, - * and -1 if the input is otherwise invalid. - */ -ssize_t ed25519_v1_parse(ed25519_v1_t **output, const uint8_t *input, const size_t len_in); -/** Return the number of bytes we expect to need to encode the - * ed25519_v1 in 'obj'. On failure, return a negative value. Note that - * this value may be an overestimate, and can even be an underestimate - * for certain unencodeable objects. - */ -ssize_t ed25519_v1_encoded_len(const ed25519_v1_t *obj); -/** Try to encode the ed25519_v1 from 'input' into the buffer at - * 'output', using up to 'avail' bytes of the output buffer. On - * success, return the number of bytes used. On failure, return -2 if - * the buffer was not long enough, and -1 if the input was invalid. - */ -ssize_t ed25519_v1_encode(uint8_t *output, size_t avail, const ed25519_v1_t *input); -/** Check whether the internal state of the ed25519_v1 in 'obj' is + * of bytes consumed and set *output to the newly allocated hash_t. On + * failure, return -2 if the input appears truncated, and -1 if the + * input is otherwise invalid. + */ +ssize_t hash_parse(hash_t **output, const uint8_t *input, const size_t len_in); +/** Return the number of bytes we expect to need to encode the hash in + * 'obj'. On failure, return a negative value. Note that this value + * may be an overestimate, and can even be an underestimate for + * certain unencodeable objects. + */ +ssize_t hash_encoded_len(const hash_t *obj); +/** Try to encode the hash from 'input' into the buffer at 'output', + * using up to 'avail' bytes of the output buffer. On success, return + * the number of bytes used. On failure, return -2 if the buffer was + * not long enough, and -1 if the input was invalid. + */ +ssize_t hash_encode(uint8_t *output, size_t avail, const hash_t *input); +/** Check whether the internal state of the hash in 'obj' is * consistent. Return NULL if it is, and a short message if it is not. */ -const char *ed25519_v1_check(const ed25519_v1_t *obj); +const char *hash_check(const hash_t *obj); /** Clear any errors that were set on the object 'obj' by its setter * functions. Return true iff errors were cleared. */ -int ed25519_v1_clear_errors(ed25519_v1_t *obj); -/** Return the value of the format field of the ed25519_v1_t in 'inp' +int hash_clear_errors(hash_t *obj); +/** Return the (constant) length of the array holding the hash field + * of the hash_t in 'inp'. */ -uint64_t ed25519_v1_get_format(const ed25519_v1_t *inp); -/** Set the value of the format field of the ed25519_v1_t in 'inp' to - * 'val'. Return 0 on success; return -1 and set the error code on - * 'inp' on failure. +size_t hash_getlen_hash(const hash_t *inp); +/** Return the element at position 'idx' of the fixed array field hash + * of the hash_t in 'inp'. */ -int ed25519_v1_set_format(ed25519_v1_t *inp, uint64_t val); -/** Return the (constant) length of the array holding the pubkey field - * of the ed25519_v1_t in 'inp'. +uint8_t hash_get_hash(hash_t *inp, size_t idx); +/** As hash_get_hash, but take and return a const pointer */ -size_t ed25519_v1_getlen_pubkey(const ed25519_v1_t *inp); -/** Return the element at position 'idx' of the fixed array field - * pubkey of the ed25519_v1_t in 'inp'. +uint8_t hash_getconst_hash(const hash_t *inp, size_t idx); +/** Change the element at position 'idx' of the fixed array field hash + * of the hash_t in 'inp', so that it will hold the value 'elt'. */ -uint8_t ed25519_v1_get_pubkey(ed25519_v1_t *inp, size_t idx); -/** As ed25519_v1_get_pubkey, but take and return a const pointer +int hash_set_hash(hash_t *inp, size_t idx, uint8_t elt); +/** Return a pointer to the 32-element array field hash of 'inp'. */ -uint8_t ed25519_v1_getconst_pubkey(const ed25519_v1_t *inp, size_t idx); -/** Change the element at position 'idx' of the fixed array field - * pubkey of the ed25519_v1_t in 'inp', so that it will hold the value - * 'elt'. - */ -int ed25519_v1_set_pubkey(ed25519_v1_t *inp, size_t idx, uint8_t elt); -/** Return a pointer to the 32-element array field pubkey of 'inp'. - */ -uint8_t * ed25519_v1_getarray_pubkey(ed25519_v1_t *inp); -/** As ed25519_v1_get_pubkey, but take and return a const pointer +uint8_t * hash_getarray_hash(hash_t *inp); +/** As hash_get_hash, but take and return a const pointer */ -const uint8_t * ed25519_v1_getconstarray_pubkey(const ed25519_v1_t *inp); +const uint8_t * hash_getconstarray_hash(const hash_t *inp); /** Return a newly allocated req_get_consistency_proof_v1 with all * elements set to zero. */ @@ -350,136 +361,243 @@ uint8_t * req_get_proof_by_hash_v1_getarray_leaf_hash(req_get_proof_by_hash_v1_t * const pointer */ const uint8_t * req_get_proof_by_hash_v1_getconstarray_leaf_hash(const req_get_proof_by_hash_v1_t *inp); -/** Return a newly allocated signed_tree_head_v1 with all elements set - * to zero. +/** Return a newly allocated sigident_ed25519 with all elements set to + * zero. */ -signed_tree_head_v1_t *signed_tree_head_v1_new(void); -/** Release all storage held by the signed_tree_head_v1 in 'victim'. - * (Do nothing if 'victim' is NULL.) +sigident_ed25519_t *sigident_ed25519_new(void); +/** Release all storage held by the sigident_ed25519 in 'victim'. (Do + * nothing if 'victim' is NULL.) */ -void signed_tree_head_v1_free(signed_tree_head_v1_t *victim); -/** Try to parse a signed_tree_head_v1 from the buffer in 'input', - * using up to 'len_in' bytes from the input buffer. On success, - * return the number of bytes consumed and set *output to the newly - * allocated signed_tree_head_v1_t. On failure, return -2 if the input - * appears truncated, and -1 if the input is otherwise invalid. +void sigident_ed25519_free(sigident_ed25519_t *victim); +/** Try to parse a sigident_ed25519 from the buffer in 'input', using + * up to 'len_in' bytes from the input buffer. On success, return the + * number of bytes consumed and set *output to the newly allocated + * sigident_ed25519_t. On failure, return -2 if the input appears + * truncated, and -1 if the input is otherwise invalid. */ -ssize_t signed_tree_head_v1_parse(signed_tree_head_v1_t **output, const uint8_t *input, const size_t len_in); +ssize_t sigident_ed25519_parse(sigident_ed25519_t **output, const uint8_t *input, const size_t len_in); /** Return the number of bytes we expect to need to encode the - * signed_tree_head_v1 in 'obj'. On failure, return a negative value. + * sigident_ed25519 in 'obj'. On failure, return a negative value. * Note that this value may be an overestimate, and can even be an * underestimate for certain unencodeable objects. */ -ssize_t signed_tree_head_v1_encoded_len(const signed_tree_head_v1_t *obj); -/** Try to encode the signed_tree_head_v1 from 'input' into the buffer - * at 'output', using up to 'avail' bytes of the output buffer. On +ssize_t sigident_ed25519_encoded_len(const sigident_ed25519_t *obj); +/** Try to encode the sigident_ed25519 from 'input' into the buffer at + * 'output', using up to 'avail' bytes of the output buffer. On * success, return the number of bytes used. On failure, return -2 if * the buffer was not long enough, and -1 if the input was invalid. */ -ssize_t signed_tree_head_v1_encode(uint8_t *output, size_t avail, const signed_tree_head_v1_t *input); -/** Check whether the internal state of the signed_tree_head_v1 in - * 'obj' is consistent. Return NULL if it is, and a short message if - * it is not. +ssize_t sigident_ed25519_encode(uint8_t *output, size_t avail, const sigident_ed25519_t *input); +/** Check whether the internal state of the sigident_ed25519 in 'obj' + * is consistent. Return NULL if it is, and a short message if it is + * not. */ -const char *signed_tree_head_v1_check(const signed_tree_head_v1_t *obj); +const char *sigident_ed25519_check(const sigident_ed25519_t *obj); /** Clear any errors that were set on the object 'obj' by its setter * functions. Return true iff errors were cleared. */ -int signed_tree_head_v1_clear_errors(signed_tree_head_v1_t *obj); -/** Return the value of the format field of the signed_tree_head_v1_t - * in 'inp' +int sigident_ed25519_clear_errors(sigident_ed25519_t *obj); +/** Return the (constant) length of the array holding the signature + * field of the sigident_ed25519_t in 'inp'. */ -uint64_t signed_tree_head_v1_get_format(const signed_tree_head_v1_t *inp); -/** Set the value of the format field of the signed_tree_head_v1_t in - * 'inp' to 'val'. Return 0 on success; return -1 and set the error - * code on 'inp' on failure. +size_t sigident_ed25519_getlen_signature(const sigident_ed25519_t *inp); +/** Return the element at position 'idx' of the fixed array field + * signature of the sigident_ed25519_t in 'inp'. */ -int signed_tree_head_v1_set_format(signed_tree_head_v1_t *inp, uint64_t val); -/** Return the value of the timestamp field of the - * signed_tree_head_v1_t in 'inp' +uint8_t sigident_ed25519_get_signature(sigident_ed25519_t *inp, size_t idx); +/** As sigident_ed25519_get_signature, but take and return a const + * pointer */ -uint64_t signed_tree_head_v1_get_timestamp(const signed_tree_head_v1_t *inp); -/** Set the value of the timestamp field of the signed_tree_head_v1_t - * in 'inp' to 'val'. Return 0 on success; return -1 and set the error - * code on 'inp' on failure. +uint8_t sigident_ed25519_getconst_signature(const sigident_ed25519_t *inp, size_t idx); +/** Change the element at position 'idx' of the fixed array field + * signature of the sigident_ed25519_t in 'inp', so that it will hold + * the value 'elt'. */ -int signed_tree_head_v1_set_timestamp(signed_tree_head_v1_t *inp, uint64_t val); -/** Return the value of the tree_size field of the - * signed_tree_head_v1_t in 'inp' +int sigident_ed25519_set_signature(sigident_ed25519_t *inp, size_t idx, uint8_t elt); +/** Return a pointer to the 64-element array field signature of 'inp'. */ -uint64_t signed_tree_head_v1_get_tree_size(const signed_tree_head_v1_t *inp); -/** Set the value of the tree_size field of the signed_tree_head_v1_t - * in 'inp' to 'val'. Return 0 on success; return -1 and set the error - * code on 'inp' on failure. +uint8_t * sigident_ed25519_getarray_signature(sigident_ed25519_t *inp); +/** As sigident_ed25519_get_signature, but take and return a const + * pointer */ -int signed_tree_head_v1_set_tree_size(signed_tree_head_v1_t *inp, uint64_t val); -/** Return the (constant) length of the array holding the root_hash - * field of the signed_tree_head_v1_t in 'inp'. +const uint8_t * sigident_ed25519_getconstarray_signature(const sigident_ed25519_t *inp); +/** Return the (constant) length of the array holding the identifier + * field of the sigident_ed25519_t in 'inp'. */ -size_t signed_tree_head_v1_getlen_root_hash(const signed_tree_head_v1_t *inp); +size_t sigident_ed25519_getlen_identifier(const sigident_ed25519_t *inp); /** Return the element at position 'idx' of the fixed array field - * root_hash of the signed_tree_head_v1_t in 'inp'. + * identifier of the sigident_ed25519_t in 'inp'. */ -uint8_t signed_tree_head_v1_get_root_hash(signed_tree_head_v1_t *inp, size_t idx); -/** As signed_tree_head_v1_get_root_hash, but take and return a const +uint8_t sigident_ed25519_get_identifier(sigident_ed25519_t *inp, size_t idx); +/** As sigident_ed25519_get_identifier, but take and return a const * pointer */ -uint8_t signed_tree_head_v1_getconst_root_hash(const signed_tree_head_v1_t *inp, size_t idx); +uint8_t sigident_ed25519_getconst_identifier(const sigident_ed25519_t *inp, size_t idx); /** Change the element at position 'idx' of the fixed array field - * root_hash of the signed_tree_head_v1_t in 'inp', so that it will - * hold the value 'elt'. + * identifier of the sigident_ed25519_t in 'inp', so that it will hold + * the value 'elt'. */ -int signed_tree_head_v1_set_root_hash(signed_tree_head_v1_t *inp, size_t idx, uint8_t elt); -/** Return a pointer to the 32-element array field root_hash of 'inp'. +int sigident_ed25519_set_identifier(sigident_ed25519_t *inp, size_t idx, uint8_t elt); +/** Return a pointer to the 32-element array field identifier of + * 'inp'. */ -uint8_t * signed_tree_head_v1_getarray_root_hash(signed_tree_head_v1_t *inp); -/** As signed_tree_head_v1_get_root_hash, but take and return a const +uint8_t * sigident_ed25519_getarray_identifier(sigident_ed25519_t *inp); +/** As sigident_ed25519_get_identifier, but take and return a const * pointer */ -const uint8_t * signed_tree_head_v1_getconstarray_root_hash(const signed_tree_head_v1_t *inp); -/** Return the value of the length field of the signed_tree_head_v1_t - * in 'inp' +const uint8_t * sigident_ed25519_getconstarray_identifier(const sigident_ed25519_t *inp); +/** Return a newly allocated signed_checksum32_ed25519 with all + * elements set to zero. */ -uint64_t signed_tree_head_v1_get_length(const signed_tree_head_v1_t *inp); -/** Set the value of the length field of the signed_tree_head_v1_t in - * 'inp' to 'val'. Return 0 on success; return -1 and set the error - * code on 'inp' on failure. +signed_checksum32_ed25519_t *signed_checksum32_ed25519_new(void); +/** Release all storage held by the signed_checksum32_ed25519 in + * 'victim'. (Do nothing if 'victim' is NULL.) */ -int signed_tree_head_v1_set_length(signed_tree_head_v1_t *inp, uint64_t val); -/** Return the length of the dynamic array holding the sigident field - * of the signed_tree_head_v1_t in 'inp'. +void signed_checksum32_ed25519_free(signed_checksum32_ed25519_t *victim); +/** Try to parse a signed_checksum32_ed25519 from the buffer in + * 'input', using up to 'len_in' bytes from the input buffer. On + * success, return the number of bytes consumed and set *output to the + * newly allocated signed_checksum32_ed25519_t. On failure, return -2 + * if the input appears truncated, and -1 if the input is otherwise + * invalid. + */ +ssize_t signed_checksum32_ed25519_parse(signed_checksum32_ed25519_t **output, const uint8_t *input, const size_t len_in); +/** Return the number of bytes we expect to need to encode the + * signed_checksum32_ed25519 in 'obj'. On failure, return a negative + * value. Note that this value may be an overestimate, and can even be + * an underestimate for certain unencodeable objects. + */ +ssize_t signed_checksum32_ed25519_encoded_len(const signed_checksum32_ed25519_t *obj); +/** Try to encode the signed_checksum32_ed25519 from 'input' into the + * buffer at 'output', using up to 'avail' bytes of the output buffer. + * On success, return the number of bytes used. On failure, return -2 + * if the buffer was not long enough, and -1 if the input was invalid. + */ +ssize_t signed_checksum32_ed25519_encode(uint8_t *output, size_t avail, const signed_checksum32_ed25519_t *input); +/** Check whether the internal state of the signed_checksum32_ed25519 + * in 'obj' is consistent. Return NULL if it is, and a short message + * if it is not. + */ +const char *signed_checksum32_ed25519_check(const signed_checksum32_ed25519_t *obj); +/** Clear any errors that were set on the object 'obj' by its setter + * functions. Return true iff errors were cleared. + */ +int signed_checksum32_ed25519_clear_errors(signed_checksum32_ed25519_t *obj); +/** Return the (constant) length of the array holding the checksum + * field of the signed_checksum32_ed25519_t in 'inp'. + */ +size_t signed_checksum32_ed25519_getlen_checksum(const signed_checksum32_ed25519_t *inp); +/** Return the element at position 'idx' of the fixed array field + * checksum of the signed_checksum32_ed25519_t in 'inp'. */ -size_t signed_tree_head_v1_getlen_sigident(const signed_tree_head_v1_t *inp); +uint8_t signed_checksum32_ed25519_get_checksum(signed_checksum32_ed25519_t *inp, size_t idx); +/** As signed_checksum32_ed25519_get_checksum, but take and return a + * const pointer + */ +uint8_t signed_checksum32_ed25519_getconst_checksum(const signed_checksum32_ed25519_t *inp, size_t idx); +/** Change the element at position 'idx' of the fixed array field + * checksum of the signed_checksum32_ed25519_t in 'inp', so that it + * will hold the value 'elt'. + */ +int signed_checksum32_ed25519_set_checksum(signed_checksum32_ed25519_t *inp, size_t idx, uint8_t elt); +/** Return a pointer to the 32-element array field checksum of 'inp'. + */ +uint8_t * signed_checksum32_ed25519_getarray_checksum(signed_checksum32_ed25519_t *inp); +/** As signed_checksum32_ed25519_get_checksum, but take and return a + * const pointer + */ +const uint8_t * signed_checksum32_ed25519_getconstarray_checksum(const signed_checksum32_ed25519_t *inp); +/** Return the value of the length field of the + * signed_checksum32_ed25519_t in 'inp' + */ +uint64_t signed_checksum32_ed25519_get_length(const signed_checksum32_ed25519_t *inp); +/** Set the value of the length field of the + * signed_checksum32_ed25519_t in 'inp' to 'val'. Return 0 on success; + * return -1 and set the error code on 'inp' on failure. + */ +int signed_checksum32_ed25519_set_length(signed_checksum32_ed25519_t *inp, uint64_t val); +/** Return the length of the dynamic array holding the identifier + * field of the signed_checksum32_ed25519_t in 'inp'. + */ +size_t signed_checksum32_ed25519_getlen_identifier(const signed_checksum32_ed25519_t *inp); /** Return the element at position 'idx' of the dynamic array field - * sigident of the signed_tree_head_v1_t in 'inp'. + * identifier of the signed_checksum32_ed25519_t in 'inp'. */ -uint8_t signed_tree_head_v1_get_sigident(signed_tree_head_v1_t *inp, size_t idx); -/** As signed_tree_head_v1_get_sigident, but take and return a const - * pointer +uint8_t signed_checksum32_ed25519_get_identifier(signed_checksum32_ed25519_t *inp, size_t idx); +/** As signed_checksum32_ed25519_get_identifier, but take and return a + * const pointer */ -uint8_t signed_tree_head_v1_getconst_sigident(const signed_tree_head_v1_t *inp, size_t idx); +uint8_t signed_checksum32_ed25519_getconst_identifier(const signed_checksum32_ed25519_t *inp, size_t idx); /** Change the element at position 'idx' of the dynamic array field - * sigident of the signed_tree_head_v1_t in 'inp', so that it will - * hold the value 'elt'. + * identifier of the signed_checksum32_ed25519_t in 'inp', so that it + * will hold the value 'elt'. */ -int signed_tree_head_v1_set_sigident(signed_tree_head_v1_t *inp, size_t idx, uint8_t elt); -/** Append a new element 'elt' to the dynamic array field sigident of - * the signed_tree_head_v1_t in 'inp'. +int signed_checksum32_ed25519_set_identifier(signed_checksum32_ed25519_t *inp, size_t idx, uint8_t elt); +/** Append a new element 'elt' to the dynamic array field identifier + * of the signed_checksum32_ed25519_t in 'inp'. */ -int signed_tree_head_v1_add_sigident(signed_tree_head_v1_t *inp, uint8_t elt); -/** Return a pointer to the variable-length array field sigident of +int signed_checksum32_ed25519_add_identifier(signed_checksum32_ed25519_t *inp, uint8_t elt); +/** Return a pointer to the variable-length array field identifier of * 'inp'. */ -uint8_t * signed_tree_head_v1_getarray_sigident(signed_tree_head_v1_t *inp); -/** As signed_tree_head_v1_get_sigident, but take and return a const - * pointer +uint8_t * signed_checksum32_ed25519_getarray_identifier(signed_checksum32_ed25519_t *inp); +/** As signed_checksum32_ed25519_get_identifier, but take and return a + * const pointer */ -const uint8_t * signed_tree_head_v1_getconstarray_sigident(const signed_tree_head_v1_t *inp); -/** Change the length of the variable-length array field sigident of +const uint8_t * signed_checksum32_ed25519_getconstarray_identifier(const signed_checksum32_ed25519_t *inp); +/** Change the length of the variable-length array field identifier of * 'inp' to 'newlen'.Fill extra elements with 0. Return 0 on success; * return -1 and set the error code on 'inp' on failure. */ -int signed_tree_head_v1_setlen_sigident(signed_tree_head_v1_t *inp, size_t newlen); +int signed_checksum32_ed25519_setlen_identifier(signed_checksum32_ed25519_t *inp, size_t newlen); +/** Return the (constant) length of the array holding the signature + * field of the signed_checksum32_ed25519_t in 'inp'. + */ +size_t signed_checksum32_ed25519_getlen_signature(const signed_checksum32_ed25519_t *inp); +/** Return the element at position 'idx' of the fixed array field + * signature of the signed_checksum32_ed25519_t in 'inp'. + */ +uint8_t signed_checksum32_ed25519_get_signature(signed_checksum32_ed25519_t *inp, size_t idx); +/** As signed_checksum32_ed25519_get_signature, but take and return a + * const pointer + */ +uint8_t signed_checksum32_ed25519_getconst_signature(const signed_checksum32_ed25519_t *inp, size_t idx); +/** Change the element at position 'idx' of the fixed array field + * signature of the signed_checksum32_ed25519_t in 'inp', so that it + * will hold the value 'elt'. + */ +int signed_checksum32_ed25519_set_signature(signed_checksum32_ed25519_t *inp, size_t idx, uint8_t elt); +/** Return a pointer to the 64-element array field signature of 'inp'. + */ +uint8_t * signed_checksum32_ed25519_getarray_signature(signed_checksum32_ed25519_t *inp); +/** As signed_checksum32_ed25519_get_signature, but take and return a + * const pointer + */ +const uint8_t * signed_checksum32_ed25519_getconstarray_signature(const signed_checksum32_ed25519_t *inp); +/** Return the (constant) length of the array holding the namespace + * field of the signed_checksum32_ed25519_t in 'inp'. + */ +size_t signed_checksum32_ed25519_getlen_namespace(const signed_checksum32_ed25519_t *inp); +/** Return the element at position 'idx' of the fixed array field + * namespace of the signed_checksum32_ed25519_t in 'inp'. + */ +uint8_t signed_checksum32_ed25519_get_namespace(signed_checksum32_ed25519_t *inp, size_t idx); +/** As signed_checksum32_ed25519_get_namespace, but take and return a + * const pointer + */ +uint8_t signed_checksum32_ed25519_getconst_namespace(const signed_checksum32_ed25519_t *inp, size_t idx); +/** Change the element at position 'idx' of the fixed array field + * namespace of the signed_checksum32_ed25519_t in 'inp', so that it + * will hold the value 'elt'. + */ +int signed_checksum32_ed25519_set_namespace(signed_checksum32_ed25519_t *inp, size_t idx, uint8_t elt); +/** Return a pointer to the 32-element array field namespace of 'inp'. + */ +uint8_t * signed_checksum32_ed25519_getarray_namespace(signed_checksum32_ed25519_t *inp); +/** As signed_checksum32_ed25519_get_namespace, but take and return a + * const pointer + */ +const uint8_t * signed_checksum32_ed25519_getconstarray_namespace(const signed_checksum32_ed25519_t *inp); /** Return a newly allocated consistency_proof_v1 with all elements * set to zero. */ @@ -516,6 +634,15 @@ const char *consistency_proof_v1_check(const consistency_proof_v1_t *obj); * functions. Return true iff errors were cleared. */ int consistency_proof_v1_clear_errors(consistency_proof_v1_t *obj); +/** Return the value of the magic field of the consistency_proof_v1_t + * in 'inp' + */ +uint64_t consistency_proof_v1_get_magic(const consistency_proof_v1_t *inp); +/** Set the value of the magic field of the consistency_proof_v1_t in + * 'inp' to 'val'. Return 0 on success; return -1 and set the error + * code on 'inp' on failure. + */ +int consistency_proof_v1_set_magic(consistency_proof_v1_t *inp, uint64_t val); /** Return the value of the format field of the consistency_proof_v1_t * in 'inp' */ @@ -525,24 +652,31 @@ uint64_t consistency_proof_v1_get_format(const consistency_proof_v1_t *inp); * code on 'inp' on failure. */ int consistency_proof_v1_set_format(consistency_proof_v1_t *inp, uint64_t val); -/** Return the value of the identifier field of the - * consistency_proof_v1_t in 'inp' +/** Return the (constant) length of the array holding the identifier + * field of the consistency_proof_v1_t in 'inp'. */ -struct ed25519_v1_st * consistency_proof_v1_get_identifier(consistency_proof_v1_t *inp); +size_t consistency_proof_v1_getlen_identifier(const consistency_proof_v1_t *inp); +/** Return the element at position 'idx' of the fixed array field + * identifier of the consistency_proof_v1_t in 'inp'. + */ +uint8_t consistency_proof_v1_get_identifier(consistency_proof_v1_t *inp, size_t idx); /** As consistency_proof_v1_get_identifier, but take and return a * const pointer */ -const struct ed25519_v1_st * consistency_proof_v1_getconst_identifier(const consistency_proof_v1_t *inp); -/** Set the value of the identifier field of the - * consistency_proof_v1_t in 'inp' to 'val'. Free the old value if - * any. Steals the referenceto 'val'.Return 0 on success; return -1 - * and set the error code on 'inp' on failure. +uint8_t consistency_proof_v1_getconst_identifier(const consistency_proof_v1_t *inp, size_t idx); +/** Change the element at position 'idx' of the fixed array field + * identifier of the consistency_proof_v1_t in 'inp', so that it will + * hold the value 'elt'. */ -int consistency_proof_v1_set_identifier(consistency_proof_v1_t *inp, struct ed25519_v1_st *val); -/** As consistency_proof_v1_set_identifier, but does not free the - * previous value. +int consistency_proof_v1_set_identifier(consistency_proof_v1_t *inp, size_t idx, uint8_t elt); +/** Return a pointer to the 32-element array field identifier of + * 'inp'. */ -int consistency_proof_v1_set0_identifier(consistency_proof_v1_t *inp, struct ed25519_v1_st *val); +uint8_t * consistency_proof_v1_getarray_identifier(consistency_proof_v1_t *inp); +/** As consistency_proof_v1_get_identifier, but take and return a + * const pointer + */ +const uint8_t * consistency_proof_v1_getconstarray_identifier(const consistency_proof_v1_t *inp); /** Return the value of the old_size field of the * consistency_proof_v1_t in 'inp' */ @@ -561,15 +695,15 @@ uint64_t consistency_proof_v1_get_new_size(const consistency_proof_v1_t *inp); * code on 'inp' on failure. */ int consistency_proof_v1_set_new_size(consistency_proof_v1_t *inp, uint64_t val); -/** Return the value of the length field of the consistency_proof_v1_t - * in 'inp' +/** Return the value of the n_items field of the + * consistency_proof_v1_t in 'inp' */ -uint64_t consistency_proof_v1_get_length(const consistency_proof_v1_t *inp); -/** Set the value of the length field of the consistency_proof_v1_t in - * 'inp' to 'val'. Return 0 on success; return -1 and set the error +uint64_t consistency_proof_v1_get_n_items(const consistency_proof_v1_t *inp); +/** Set the value of the n_items field of the consistency_proof_v1_t + * in 'inp' to 'val'. Return 0 on success; return -1 and set the error * code on 'inp' on failure. */ -int consistency_proof_v1_set_length(consistency_proof_v1_t *inp, uint64_t val); +int consistency_proof_v1_set_n_items(consistency_proof_v1_t *inp, uint64_t val); /** Return the length of the dynamic array holding the hashes field of * the consistency_proof_v1_t in 'inp'. */ @@ -577,33 +711,132 @@ size_t consistency_proof_v1_getlen_hashes(const consistency_proof_v1_t *inp); /** Return the element at position 'idx' of the dynamic array field * hashes of the consistency_proof_v1_t in 'inp'. */ -uint8_t consistency_proof_v1_get_hashes(consistency_proof_v1_t *inp, size_t idx); +struct hash_st * consistency_proof_v1_get_hashes(consistency_proof_v1_t *inp, size_t idx); /** As consistency_proof_v1_get_hashes, but take and return a const * pointer */ -uint8_t consistency_proof_v1_getconst_hashes(const consistency_proof_v1_t *inp, size_t idx); + const struct hash_st * consistency_proof_v1_getconst_hashes(const consistency_proof_v1_t *inp, size_t idx); /** Change the element at position 'idx' of the dynamic array field * hashes of the consistency_proof_v1_t in 'inp', so that it will hold - * the value 'elt'. + * the value 'elt'. Free the previous value, if any. + */ +int consistency_proof_v1_set_hashes(consistency_proof_v1_t *inp, size_t idx, struct hash_st * elt); +/** As consistency_proof_v1_set_hashes, but does not free the previous + * value. */ -int consistency_proof_v1_set_hashes(consistency_proof_v1_t *inp, size_t idx, uint8_t elt); +int consistency_proof_v1_set0_hashes(consistency_proof_v1_t *inp, size_t idx, struct hash_st * elt); /** Append a new element 'elt' to the dynamic array field hashes of * the consistency_proof_v1_t in 'inp'. */ -int consistency_proof_v1_add_hashes(consistency_proof_v1_t *inp, uint8_t elt); +int consistency_proof_v1_add_hashes(consistency_proof_v1_t *inp, struct hash_st * elt); /** Return a pointer to the variable-length array field hashes of * 'inp'. */ -uint8_t * consistency_proof_v1_getarray_hashes(consistency_proof_v1_t *inp); +struct hash_st * * consistency_proof_v1_getarray_hashes(consistency_proof_v1_t *inp); /** As consistency_proof_v1_get_hashes, but take and return a const * pointer */ -const uint8_t * consistency_proof_v1_getconstarray_hashes(const consistency_proof_v1_t *inp); +const struct hash_st * const * consistency_proof_v1_getconstarray_hashes(const consistency_proof_v1_t *inp); /** Change the length of the variable-length array field hashes of - * 'inp' to 'newlen'.Fill extra elements with 0. Return 0 on success; - * return -1 and set the error code on 'inp' on failure. + * 'inp' to 'newlen'.Fill extra elements with NULL; free removed + * elements. Return 0 on success; return -1 and set the error code on + * 'inp' on failure. */ int consistency_proof_v1_setlen_hashes(consistency_proof_v1_t *inp, size_t newlen); +/** Return a newly allocated entries_v1 with all elements set to zero. + */ +entries_v1_t *entries_v1_new(void); +/** Release all storage held by the entries_v1 in 'victim'. (Do + * nothing if 'victim' is NULL.) + */ +void entries_v1_free(entries_v1_t *victim); +/** Try to parse a entries_v1 from the buffer in 'input', using up to + * 'len_in' bytes from the input buffer. On success, return the number + * of bytes consumed and set *output to the newly allocated + * entries_v1_t. On failure, return -2 if the input appears truncated, + * and -1 if the input is otherwise invalid. + */ +ssize_t entries_v1_parse(entries_v1_t **output, const uint8_t *input, const size_t len_in); +/** Return the number of bytes we expect to need to encode the + * entries_v1 in 'obj'. On failure, return a negative value. Note that + * this value may be an overestimate, and can even be an underestimate + * for certain unencodeable objects. + */ +ssize_t entries_v1_encoded_len(const entries_v1_t *obj); +/** Try to encode the entries_v1 from 'input' into the buffer at + * 'output', using up to 'avail' bytes of the output buffer. On + * success, return the number of bytes used. On failure, return -2 if + * the buffer was not long enough, and -1 if the input was invalid. + */ +ssize_t entries_v1_encode(uint8_t *output, size_t avail, const entries_v1_t *input); +/** Check whether the internal state of the entries_v1 in 'obj' is + * consistent. Return NULL if it is, and a short message if it is not. + */ +const char *entries_v1_check(const entries_v1_t *obj); +/** Clear any errors that were set on the object 'obj' by its setter + * functions. Return true iff errors were cleared. + */ +int entries_v1_clear_errors(entries_v1_t *obj); +/** Return the value of the magic field of the entries_v1_t in 'inp' + */ +uint64_t entries_v1_get_magic(const entries_v1_t *inp); +/** Set the value of the magic field of the entries_v1_t in 'inp' to + * 'val'. Return 0 on success; return -1 and set the error code on + * 'inp' on failure. + */ +int entries_v1_set_magic(entries_v1_t *inp, uint64_t val); +/** Return the value of the format field of the entries_v1_t in 'inp' + */ +uint64_t entries_v1_get_format(const entries_v1_t *inp); +/** Set the value of the format field of the entries_v1_t in 'inp' to + * 'val'. Return 0 on success; return -1 and set the error code on + * 'inp' on failure. + */ +int entries_v1_set_format(entries_v1_t *inp, uint64_t val); +/** Return the value of the n_items field of the entries_v1_t in 'inp' + */ +uint64_t entries_v1_get_n_items(const entries_v1_t *inp); +/** Set the value of the n_items field of the entries_v1_t in 'inp' to + * 'val'. Return 0 on success; return -1 and set the error code on + * 'inp' on failure. + */ +int entries_v1_set_n_items(entries_v1_t *inp, uint64_t val); +/** Return the length of the dynamic array holding the checksums field + * of the entries_v1_t in 'inp'. + */ +size_t entries_v1_getlen_checksums(const entries_v1_t *inp); +/** Return the element at position 'idx' of the dynamic array field + * checksums of the entries_v1_t in 'inp'. + */ +struct signed_checksum32_ed25519_st * entries_v1_get_checksums(entries_v1_t *inp, size_t idx); +/** As entries_v1_get_checksums, but take and return a const pointer + */ + const struct signed_checksum32_ed25519_st * entries_v1_getconst_checksums(const entries_v1_t *inp, size_t idx); +/** Change the element at position 'idx' of the dynamic array field + * checksums of the entries_v1_t in 'inp', so that it will hold the + * value 'elt'. Free the previous value, if any. + */ +int entries_v1_set_checksums(entries_v1_t *inp, size_t idx, struct signed_checksum32_ed25519_st * elt); +/** As entries_v1_set_checksums, but does not free the previous value. + */ +int entries_v1_set0_checksums(entries_v1_t *inp, size_t idx, struct signed_checksum32_ed25519_st * elt); +/** Append a new element 'elt' to the dynamic array field checksums of + * the entries_v1_t in 'inp'. + */ +int entries_v1_add_checksums(entries_v1_t *inp, struct signed_checksum32_ed25519_st * elt); +/** Return a pointer to the variable-length array field checksums of + * 'inp'. + */ +struct signed_checksum32_ed25519_st * * entries_v1_getarray_checksums(entries_v1_t *inp); +/** As entries_v1_get_checksums, but take and return a const pointer + */ +const struct signed_checksum32_ed25519_st * const * entries_v1_getconstarray_checksums(const entries_v1_t *inp); +/** Change the length of the variable-length array field checksums of + * 'inp' to 'newlen'.Fill extra elements with NULL; free removed + * elements. Return 0 on success; return -1 and set the error code on + * 'inp' on failure. + */ +int entries_v1_setlen_checksums(entries_v1_t *inp, size_t newlen); /** Return a newly allocated inclusion_proof_v1 with all elements set * to zero. */ @@ -640,6 +873,15 @@ const char *inclusion_proof_v1_check(const inclusion_proof_v1_t *obj); * functions. Return true iff errors were cleared. */ int inclusion_proof_v1_clear_errors(inclusion_proof_v1_t *obj); +/** Return the value of the magic field of the inclusion_proof_v1_t in + * 'inp' + */ +uint64_t inclusion_proof_v1_get_magic(const inclusion_proof_v1_t *inp); +/** Set the value of the magic field of the inclusion_proof_v1_t in + * 'inp' to 'val'. Return 0 on success; return -1 and set the error + * code on 'inp' on failure. + */ +int inclusion_proof_v1_set_magic(inclusion_proof_v1_t *inp, uint64_t val); /** Return the value of the format field of the inclusion_proof_v1_t * in 'inp' */ @@ -649,24 +891,31 @@ uint64_t inclusion_proof_v1_get_format(const inclusion_proof_v1_t *inp); * code on 'inp' on failure. */ int inclusion_proof_v1_set_format(inclusion_proof_v1_t *inp, uint64_t val); -/** Return the value of the identifier field of the - * inclusion_proof_v1_t in 'inp' +/** Return the (constant) length of the array holding the identifier + * field of the inclusion_proof_v1_t in 'inp'. */ -struct ed25519_v1_st * inclusion_proof_v1_get_identifier(inclusion_proof_v1_t *inp); +size_t inclusion_proof_v1_getlen_identifier(const inclusion_proof_v1_t *inp); +/** Return the element at position 'idx' of the fixed array field + * identifier of the inclusion_proof_v1_t in 'inp'. + */ +uint8_t inclusion_proof_v1_get_identifier(inclusion_proof_v1_t *inp, size_t idx); /** As inclusion_proof_v1_get_identifier, but take and return a const * pointer */ -const struct ed25519_v1_st * inclusion_proof_v1_getconst_identifier(const inclusion_proof_v1_t *inp); -/** Set the value of the identifier field of the inclusion_proof_v1_t - * in 'inp' to 'val'. Free the old value if any. Steals the - * referenceto 'val'.Return 0 on success; return -1 and set the error - * code on 'inp' on failure. +uint8_t inclusion_proof_v1_getconst_identifier(const inclusion_proof_v1_t *inp, size_t idx); +/** Change the element at position 'idx' of the fixed array field + * identifier of the inclusion_proof_v1_t in 'inp', so that it will + * hold the value 'elt'. */ -int inclusion_proof_v1_set_identifier(inclusion_proof_v1_t *inp, struct ed25519_v1_st *val); -/** As inclusion_proof_v1_set_identifier, but does not free the - * previous value. +int inclusion_proof_v1_set_identifier(inclusion_proof_v1_t *inp, size_t idx, uint8_t elt); +/** Return a pointer to the 32-element array field identifier of + * 'inp'. */ -int inclusion_proof_v1_set0_identifier(inclusion_proof_v1_t *inp, struct ed25519_v1_st *val); +uint8_t * inclusion_proof_v1_getarray_identifier(inclusion_proof_v1_t *inp); +/** As inclusion_proof_v1_get_identifier, but take and return a const + * pointer + */ +const uint8_t * inclusion_proof_v1_getconstarray_identifier(const inclusion_proof_v1_t *inp); /** Return the value of the tree_size field of the * inclusion_proof_v1_t in 'inp' */ @@ -685,15 +934,15 @@ uint64_t inclusion_proof_v1_get_leaf_index(const inclusion_proof_v1_t *inp); * code on 'inp' on failure. */ int inclusion_proof_v1_set_leaf_index(inclusion_proof_v1_t *inp, uint64_t val); -/** Return the value of the length field of the inclusion_proof_v1_t +/** Return the value of the n_items field of the inclusion_proof_v1_t * in 'inp' */ -uint64_t inclusion_proof_v1_get_length(const inclusion_proof_v1_t *inp); -/** Set the value of the length field of the inclusion_proof_v1_t in +uint64_t inclusion_proof_v1_get_n_items(const inclusion_proof_v1_t *inp); +/** Set the value of the n_items field of the inclusion_proof_v1_t in * 'inp' to 'val'. Return 0 on success; return -1 and set the error * code on 'inp' on failure. */ -int inclusion_proof_v1_set_length(inclusion_proof_v1_t *inp, uint64_t val); +int inclusion_proof_v1_set_n_items(inclusion_proof_v1_t *inp, uint64_t val); /** Return the length of the dynamic array holding the hashes field of * the inclusion_proof_v1_t in 'inp'. */ @@ -701,31 +950,36 @@ size_t inclusion_proof_v1_getlen_hashes(const inclusion_proof_v1_t *inp); /** Return the element at position 'idx' of the dynamic array field * hashes of the inclusion_proof_v1_t in 'inp'. */ -uint8_t inclusion_proof_v1_get_hashes(inclusion_proof_v1_t *inp, size_t idx); +struct hash_st * inclusion_proof_v1_get_hashes(inclusion_proof_v1_t *inp, size_t idx); /** As inclusion_proof_v1_get_hashes, but take and return a const * pointer */ -uint8_t inclusion_proof_v1_getconst_hashes(const inclusion_proof_v1_t *inp, size_t idx); + const struct hash_st * inclusion_proof_v1_getconst_hashes(const inclusion_proof_v1_t *inp, size_t idx); /** Change the element at position 'idx' of the dynamic array field * hashes of the inclusion_proof_v1_t in 'inp', so that it will hold - * the value 'elt'. + * the value 'elt'. Free the previous value, if any. */ -int inclusion_proof_v1_set_hashes(inclusion_proof_v1_t *inp, size_t idx, uint8_t elt); +int inclusion_proof_v1_set_hashes(inclusion_proof_v1_t *inp, size_t idx, struct hash_st * elt); +/** As inclusion_proof_v1_set_hashes, but does not free the previous + * value. + */ +int inclusion_proof_v1_set0_hashes(inclusion_proof_v1_t *inp, size_t idx, struct hash_st * elt); /** Append a new element 'elt' to the dynamic array field hashes of * the inclusion_proof_v1_t in 'inp'. */ -int inclusion_proof_v1_add_hashes(inclusion_proof_v1_t *inp, uint8_t elt); +int inclusion_proof_v1_add_hashes(inclusion_proof_v1_t *inp, struct hash_st * elt); /** Return a pointer to the variable-length array field hashes of * 'inp'. */ -uint8_t * inclusion_proof_v1_getarray_hashes(inclusion_proof_v1_t *inp); +struct hash_st * * inclusion_proof_v1_getarray_hashes(inclusion_proof_v1_t *inp); /** As inclusion_proof_v1_get_hashes, but take and return a const * pointer */ -const uint8_t * inclusion_proof_v1_getconstarray_hashes(const inclusion_proof_v1_t *inp); +const struct hash_st * const * inclusion_proof_v1_getconstarray_hashes(const inclusion_proof_v1_t *inp); /** Change the length of the variable-length array field hashes of - * 'inp' to 'newlen'.Fill extra elements with 0. Return 0 on success; - * return -1 and set the error code on 'inp' on failure. + * 'inp' to 'newlen'.Fill extra elements with NULL; free removed + * elements. Return 0 on success; return -1 and set the error code on + * 'inp' on failure. */ int inclusion_proof_v1_setlen_hashes(inclusion_proof_v1_t *inp, size_t newlen); /** Return a newly allocated request_v1 with all elements set to zero. @@ -762,6 +1016,14 @@ const char *request_v1_check(const request_v1_t *obj); * functions. Return true iff errors were cleared. */ int request_v1_clear_errors(request_v1_t *obj); +/** Return the value of the magic field of the request_v1_t in 'inp' + */ +uint64_t request_v1_get_magic(const request_v1_t *inp); +/** Set the value of the magic field of the request_v1_t in 'inp' to + * 'val'. Return 0 on success; return -1 and set the error code on + * 'inp' on failure. + */ +int request_v1_set_magic(request_v1_t *inp, uint64_t val); /** Return the value of the format field of the request_v1_t in 'inp' */ uint64_t request_v1_get_format(const request_v1_t *inp); @@ -824,162 +1086,150 @@ int request_v1_set_request_get_consistency_proof(request_v1_t *inp, struct req_g * the previous value. */ int request_v1_set0_request_get_consistency_proof(request_v1_t *inp, struct req_get_consistency_proof_v1_st *val); -/** Return a newly allocated signed_checksum32_ed25519_v1 with all - * elements set to zero. +/** Return a newly allocated signed_tree_head_v1 with all elements set + * to zero. */ -signed_checksum32_ed25519_v1_t *signed_checksum32_ed25519_v1_new(void); -/** Release all storage held by the signed_checksum32_ed25519_v1 in - * 'victim'. (Do nothing if 'victim' is NULL.) +signed_tree_head_v1_t *signed_tree_head_v1_new(void); +/** Release all storage held by the signed_tree_head_v1 in 'victim'. + * (Do nothing if 'victim' is NULL.) */ -void signed_checksum32_ed25519_v1_free(signed_checksum32_ed25519_v1_t *victim); -/** Try to parse a signed_checksum32_ed25519_v1 from the buffer in - * 'input', using up to 'len_in' bytes from the input buffer. On - * success, return the number of bytes consumed and set *output to the - * newly allocated signed_checksum32_ed25519_v1_t. On failure, return - * -2 if the input appears truncated, and -1 if the input is otherwise - * invalid. +void signed_tree_head_v1_free(signed_tree_head_v1_t *victim); +/** Try to parse a signed_tree_head_v1 from the buffer in 'input', + * using up to 'len_in' bytes from the input buffer. On success, + * return the number of bytes consumed and set *output to the newly + * allocated signed_tree_head_v1_t. On failure, return -2 if the input + * appears truncated, and -1 if the input is otherwise invalid. */ -ssize_t signed_checksum32_ed25519_v1_parse(signed_checksum32_ed25519_v1_t **output, const uint8_t *input, const size_t len_in); +ssize_t signed_tree_head_v1_parse(signed_tree_head_v1_t **output, const uint8_t *input, const size_t len_in); /** Return the number of bytes we expect to need to encode the - * signed_checksum32_ed25519_v1 in 'obj'. On failure, return a - * negative value. Note that this value may be an overestimate, and - * can even be an underestimate for certain unencodeable objects. + * signed_tree_head_v1 in 'obj'. On failure, return a negative value. + * Note that this value may be an overestimate, and can even be an + * underestimate for certain unencodeable objects. */ -ssize_t signed_checksum32_ed25519_v1_encoded_len(const signed_checksum32_ed25519_v1_t *obj); -/** Try to encode the signed_checksum32_ed25519_v1 from 'input' into - * the buffer at 'output', using up to 'avail' bytes of the output - * buffer. On success, return the number of bytes used. On failure, - * return -2 if the buffer was not long enough, and -1 if the input - * was invalid. +ssize_t signed_tree_head_v1_encoded_len(const signed_tree_head_v1_t *obj); +/** Try to encode the signed_tree_head_v1 from 'input' into the buffer + * at 'output', using up to 'avail' bytes of the output buffer. On + * success, return the number of bytes used. On failure, return -2 if + * the buffer was not long enough, and -1 if the input was invalid. */ -ssize_t signed_checksum32_ed25519_v1_encode(uint8_t *output, size_t avail, const signed_checksum32_ed25519_v1_t *input); -/** Check whether the internal state of the - * signed_checksum32_ed25519_v1 in 'obj' is consistent. Return NULL if - * it is, and a short message if it is not. +ssize_t signed_tree_head_v1_encode(uint8_t *output, size_t avail, const signed_tree_head_v1_t *input); +/** Check whether the internal state of the signed_tree_head_v1 in + * 'obj' is consistent. Return NULL if it is, and a short message if + * it is not. */ -const char *signed_checksum32_ed25519_v1_check(const signed_checksum32_ed25519_v1_t *obj); +const char *signed_tree_head_v1_check(const signed_tree_head_v1_t *obj); /** Clear any errors that were set on the object 'obj' by its setter * functions. Return true iff errors were cleared. */ -int signed_checksum32_ed25519_v1_clear_errors(signed_checksum32_ed25519_v1_t *obj); -/** Return the value of the format field of the - * signed_checksum32_ed25519_v1_t in 'inp' - */ -uint64_t signed_checksum32_ed25519_v1_get_format(const signed_checksum32_ed25519_v1_t *inp); -/** Set the value of the format field of the - * signed_checksum32_ed25519_v1_t in 'inp' to 'val'. Return 0 on - * success; return -1 and set the error code on 'inp' on failure. - */ -int signed_checksum32_ed25519_v1_set_format(signed_checksum32_ed25519_v1_t *inp, uint64_t val); -/** Return the (constant) length of the array holding the checksum - * field of the signed_checksum32_ed25519_v1_t in 'inp'. - */ -size_t signed_checksum32_ed25519_v1_getlen_checksum(const signed_checksum32_ed25519_v1_t *inp); -/** Return the element at position 'idx' of the fixed array field - * checksum of the signed_checksum32_ed25519_v1_t in 'inp'. +int signed_tree_head_v1_clear_errors(signed_tree_head_v1_t *obj); +/** Return the value of the magic field of the signed_tree_head_v1_t + * in 'inp' */ -uint8_t signed_checksum32_ed25519_v1_get_checksum(signed_checksum32_ed25519_v1_t *inp, size_t idx); -/** As signed_checksum32_ed25519_v1_get_checksum, but take and return - * a const pointer +uint64_t signed_tree_head_v1_get_magic(const signed_tree_head_v1_t *inp); +/** Set the value of the magic field of the signed_tree_head_v1_t in + * 'inp' to 'val'. Return 0 on success; return -1 and set the error + * code on 'inp' on failure. */ -uint8_t signed_checksum32_ed25519_v1_getconst_checksum(const signed_checksum32_ed25519_v1_t *inp, size_t idx); -/** Change the element at position 'idx' of the fixed array field - * checksum of the signed_checksum32_ed25519_v1_t in 'inp', so that it - * will hold the value 'elt'. +int signed_tree_head_v1_set_magic(signed_tree_head_v1_t *inp, uint64_t val); +/** Return the value of the format field of the signed_tree_head_v1_t + * in 'inp' */ -int signed_checksum32_ed25519_v1_set_checksum(signed_checksum32_ed25519_v1_t *inp, size_t idx, uint8_t elt); -/** Return a pointer to the 32-element array field checksum of 'inp'. +uint64_t signed_tree_head_v1_get_format(const signed_tree_head_v1_t *inp); +/** Set the value of the format field of the signed_tree_head_v1_t in + * 'inp' to 'val'. Return 0 on success; return -1 and set the error + * code on 'inp' on failure. */ -uint8_t * signed_checksum32_ed25519_v1_getarray_checksum(signed_checksum32_ed25519_v1_t *inp); -/** As signed_checksum32_ed25519_v1_get_checksum, but take and return - * a const pointer +int signed_tree_head_v1_set_format(signed_tree_head_v1_t *inp, uint64_t val); +/** Return the value of the timestamp field of the + * signed_tree_head_v1_t in 'inp' */ -const uint8_t * signed_checksum32_ed25519_v1_getconstarray_checksum(const signed_checksum32_ed25519_v1_t *inp); -/** Return the value of the length field of the - * signed_checksum32_ed25519_v1_t in 'inp' +uint64_t signed_tree_head_v1_get_timestamp(const signed_tree_head_v1_t *inp); +/** Set the value of the timestamp field of the signed_tree_head_v1_t + * in 'inp' to 'val'. Return 0 on success; return -1 and set the error + * code on 'inp' on failure. */ -uint64_t signed_checksum32_ed25519_v1_get_length(const signed_checksum32_ed25519_v1_t *inp); -/** Set the value of the length field of the - * signed_checksum32_ed25519_v1_t in 'inp' to 'val'. Return 0 on - * success; return -1 and set the error code on 'inp' on failure. +int signed_tree_head_v1_set_timestamp(signed_tree_head_v1_t *inp, uint64_t val); +/** Return the value of the tree_size field of the + * signed_tree_head_v1_t in 'inp' */ -int signed_checksum32_ed25519_v1_set_length(signed_checksum32_ed25519_v1_t *inp, uint64_t val); -/** Return the length of the dynamic array holding the identifier - * field of the signed_checksum32_ed25519_v1_t in 'inp'. +uint64_t signed_tree_head_v1_get_tree_size(const signed_tree_head_v1_t *inp); +/** Set the value of the tree_size field of the signed_tree_head_v1_t + * in 'inp' to 'val'. Return 0 on success; return -1 and set the error + * code on 'inp' on failure. */ -size_t signed_checksum32_ed25519_v1_getlen_identifier(const signed_checksum32_ed25519_v1_t *inp); -/** Return the element at position 'idx' of the dynamic array field - * identifier of the signed_checksum32_ed25519_v1_t in 'inp'. +int signed_tree_head_v1_set_tree_size(signed_tree_head_v1_t *inp, uint64_t val); +/** Return the (constant) length of the array holding the root_hash + * field of the signed_tree_head_v1_t in 'inp'. */ -uint8_t signed_checksum32_ed25519_v1_get_identifier(signed_checksum32_ed25519_v1_t *inp, size_t idx); -/** As signed_checksum32_ed25519_v1_get_identifier, but take and - * return a const pointer +size_t signed_tree_head_v1_getlen_root_hash(const signed_tree_head_v1_t *inp); +/** Return the element at position 'idx' of the fixed array field + * root_hash of the signed_tree_head_v1_t in 'inp'. */ -uint8_t signed_checksum32_ed25519_v1_getconst_identifier(const signed_checksum32_ed25519_v1_t *inp, size_t idx); -/** Change the element at position 'idx' of the dynamic array field - * identifier of the signed_checksum32_ed25519_v1_t in 'inp', so that - * it will hold the value 'elt'. +uint8_t signed_tree_head_v1_get_root_hash(signed_tree_head_v1_t *inp, size_t idx); +/** As signed_tree_head_v1_get_root_hash, but take and return a const + * pointer */ -int signed_checksum32_ed25519_v1_set_identifier(signed_checksum32_ed25519_v1_t *inp, size_t idx, uint8_t elt); -/** Append a new element 'elt' to the dynamic array field identifier - * of the signed_checksum32_ed25519_v1_t in 'inp'. +uint8_t signed_tree_head_v1_getconst_root_hash(const signed_tree_head_v1_t *inp, size_t idx); +/** Change the element at position 'idx' of the fixed array field + * root_hash of the signed_tree_head_v1_t in 'inp', so that it will + * hold the value 'elt'. */ -int signed_checksum32_ed25519_v1_add_identifier(signed_checksum32_ed25519_v1_t *inp, uint8_t elt); -/** Return a pointer to the variable-length array field identifier of - * 'inp'. +int signed_tree_head_v1_set_root_hash(signed_tree_head_v1_t *inp, size_t idx, uint8_t elt); +/** Return a pointer to the 32-element array field root_hash of 'inp'. */ -uint8_t * signed_checksum32_ed25519_v1_getarray_identifier(signed_checksum32_ed25519_v1_t *inp); -/** As signed_checksum32_ed25519_v1_get_identifier, but take and - * return a const pointer +uint8_t * signed_tree_head_v1_getarray_root_hash(signed_tree_head_v1_t *inp); +/** As signed_tree_head_v1_get_root_hash, but take and return a const + * pointer */ -const uint8_t * signed_checksum32_ed25519_v1_getconstarray_identifier(const signed_checksum32_ed25519_v1_t *inp); -/** Change the length of the variable-length array field identifier of - * 'inp' to 'newlen'.Fill extra elements with 0. Return 0 on success; - * return -1 and set the error code on 'inp' on failure. +const uint8_t * signed_tree_head_v1_getconstarray_root_hash(const signed_tree_head_v1_t *inp); +/** Return the value of the n_items field of the signed_tree_head_v1_t + * in 'inp' */ -int signed_checksum32_ed25519_v1_setlen_identifier(signed_checksum32_ed25519_v1_t *inp, size_t newlen); -/** Return the (constant) length of the array holding the signature - * field of the signed_checksum32_ed25519_v1_t in 'inp'. +uint64_t signed_tree_head_v1_get_n_items(const signed_tree_head_v1_t *inp); +/** Set the value of the n_items field of the signed_tree_head_v1_t in + * 'inp' to 'val'. Return 0 on success; return -1 and set the error + * code on 'inp' on failure. */ -size_t signed_checksum32_ed25519_v1_getlen_signature(const signed_checksum32_ed25519_v1_t *inp); -/** Return the element at position 'idx' of the fixed array field - * signature of the signed_checksum32_ed25519_v1_t in 'inp'. +int signed_tree_head_v1_set_n_items(signed_tree_head_v1_t *inp, uint64_t val); +/** Return the length of the dynamic array holding the signatures + * field of the signed_tree_head_v1_t in 'inp'. */ -uint8_t signed_checksum32_ed25519_v1_get_signature(signed_checksum32_ed25519_v1_t *inp, size_t idx); -/** As signed_checksum32_ed25519_v1_get_signature, but take and return - * a const pointer +size_t signed_tree_head_v1_getlen_signatures(const signed_tree_head_v1_t *inp); +/** Return the element at position 'idx' of the dynamic array field + * signatures of the signed_tree_head_v1_t in 'inp'. */ -uint8_t signed_checksum32_ed25519_v1_getconst_signature(const signed_checksum32_ed25519_v1_t *inp, size_t idx); -/** Change the element at position 'idx' of the fixed array field - * signature of the signed_checksum32_ed25519_v1_t in 'inp', so that - * it will hold the value 'elt'. +struct sigident_ed25519_st * signed_tree_head_v1_get_signatures(signed_tree_head_v1_t *inp, size_t idx); +/** As signed_tree_head_v1_get_signatures, but take and return a const + * pointer */ -int signed_checksum32_ed25519_v1_set_signature(signed_checksum32_ed25519_v1_t *inp, size_t idx, uint8_t elt); -/** Return a pointer to the 64-element array field signature of 'inp'. + const struct sigident_ed25519_st * signed_tree_head_v1_getconst_signatures(const signed_tree_head_v1_t *inp, size_t idx); +/** Change the element at position 'idx' of the dynamic array field + * signatures of the signed_tree_head_v1_t in 'inp', so that it will + * hold the value 'elt'. Free the previous value, if any. */ -uint8_t * signed_checksum32_ed25519_v1_getarray_signature(signed_checksum32_ed25519_v1_t *inp); -/** As signed_checksum32_ed25519_v1_get_signature, but take and return - * a const pointer +int signed_tree_head_v1_set_signatures(signed_tree_head_v1_t *inp, size_t idx, struct sigident_ed25519_st * elt); +/** As signed_tree_head_v1_set_signatures, but does not free the + * previous value. */ -const uint8_t * signed_checksum32_ed25519_v1_getconstarray_signature(const signed_checksum32_ed25519_v1_t *inp); -/** Return the value of the namespace field of the - * signed_checksum32_ed25519_v1_t in 'inp' +int signed_tree_head_v1_set0_signatures(signed_tree_head_v1_t *inp, size_t idx, struct sigident_ed25519_st * elt); +/** Append a new element 'elt' to the dynamic array field signatures + * of the signed_tree_head_v1_t in 'inp'. */ -struct ed25519_v1_st * signed_checksum32_ed25519_v1_get_namespace(signed_checksum32_ed25519_v1_t *inp); -/** As signed_checksum32_ed25519_v1_get_namespace, but take and return - * a const pointer +int signed_tree_head_v1_add_signatures(signed_tree_head_v1_t *inp, struct sigident_ed25519_st * elt); +/** Return a pointer to the variable-length array field signatures of + * 'inp'. */ -const struct ed25519_v1_st * signed_checksum32_ed25519_v1_getconst_namespace(const signed_checksum32_ed25519_v1_t *inp); -/** Set the value of the namespace field of the - * signed_checksum32_ed25519_v1_t in 'inp' to 'val'. Free the old - * value if any. Steals the referenceto 'val'.Return 0 on success; - * return -1 and set the error code on 'inp' on failure. +struct sigident_ed25519_st * * signed_tree_head_v1_getarray_signatures(signed_tree_head_v1_t *inp); +/** As signed_tree_head_v1_get_signatures, but take and return a const + * pointer */ -int signed_checksum32_ed25519_v1_set_namespace(signed_checksum32_ed25519_v1_t *inp, struct ed25519_v1_st *val); -/** As signed_checksum32_ed25519_v1_set_namespace, but does not free - * the previous value. +const struct sigident_ed25519_st * const * signed_tree_head_v1_getconstarray_signatures(const signed_tree_head_v1_t *inp); +/** Change the length of the variable-length array field signatures of + * 'inp' to 'newlen'.Fill extra elements with NULL; free removed + * elements. Return 0 on success; return -1 and set the error code on + * 'inp' on failure. */ -int signed_checksum32_ed25519_v1_set0_namespace(signed_checksum32_ed25519_v1_t *inp, struct ed25519_v1_st *val); +int signed_tree_head_v1_setlen_signatures(signed_tree_head_v1_t *inp, size_t newlen); #endif |