diff options
author | Mattias Andrée <maandree@kth.se> | 2024-09-12 20:18:55 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2024-09-12 20:18:55 +0200 |
commit | a17e0d582aaf91c6be55a5adbd5d8d38a09db222 (patch) | |
tree | 202a201357907ffd9dc72f586e19a99ac661365c /libhashsum.h | |
parent | m (diff) | |
download | libhashsum-a17e0d582aaf91c6be55a5adbd5d8d38a09db222.tar.gz libhashsum-a17e0d582aaf91c6be55a5adbd5d8d38a09db222.tar.bz2 libhashsum-a17e0d582aaf91c6be55a5adbd5d8d38a09db222.tar.xz |
Add libhashsum_init_keccak_hasher2
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to '')
-rw-r--r-- | libhashsum.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/libhashsum.h b/libhashsum.h index 79c2cb6..b57493e 100644 --- a/libhashsum.h +++ b/libhashsum.h @@ -617,6 +617,61 @@ struct libhashsum_hasher { }; +/** + * Keccak hash function parameters + * for `libhashsum_init_keccak_hasher2` + * + * @since 1.1 + */ +struct libhashsum_keccak_params { + /** + * The bitrate, 0 for automatic + * + * This must be a multiple of 8 + */ + size_t ratebits; + + /** + * The sponge capacity in bits, 0 for automatic + * + * This must be a multiple of 8 + */ + size_t capbits; + + /** + * The hash size in bits, 0 for automatic + */ + size_t hashbits; + + /** + * The state size in bits, 0 for automatic + * + * This must be 0 or `25 * .wordbits`, it must + * also be 0 or `.ratebits + .capbits`, however + * if `.ratebits` or `.capbits` is 0, this value + * must be less than non-zero value (if both + * are 0, only the "0 or `25 * .wordbits`" + * restriction apply) + */ + size_t statebits; + + /** + * The word size in bits, 0 for automatic + * + * This must be a multiple of 8 and a power of 2, + * currently supported value are (apart from 0): + '* 8, 16, 32, and 64 + */ + size_t wordbits; + + /** + * The number of squeezes to performed, + * 0 for automatic (which is 1) + */ + size_t squeezes; +}; + + #if defined(__GNUC__) # pragma GCC diagnostic pop #endif @@ -1018,6 +1073,23 @@ int libhashsum_init_keccak_hasher(struct libhashsum_hasher *this, size_t ratebit size_t capbits, size_t hashbits, size_t squeezes); /** + * Create an initialised state for Keccak + * hashing and return hash functions and details + * + * @param this The output parameter for the functions, details, and state + * @param param Hash function parameters + * @return 0 on success, -1 on failure + * + * @throws EINVAL `*params` is invalid + * @throws ENOSYS Support was excluded at compile time + * @throws ENOMEM Not enough memory available + * + * @since 1.1 + */ +LIBHASHSUM_NONNULL_ +int libhashsum_init_keccak_hasher2(struct libhashsum_hasher *this, const struct libhashsum_keccak_params *params); /* TODO man, test */ + +/** * Create an initialised state for SHA3-224 * hashing and return hash functions and details * |