From e23ca862bbe2d97675277dde443fbef498db771f Mon Sep 17 00:00:00 2001 From: Paul Duncan Date: Fri, 1 Sep 2023 23:15:00 -0400 Subject: ./sha3.h: add shake{128,256}_xof_*() --- sha3.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'sha3.h') diff --git a/sha3.h b/sha3.h index 6e49a40..4fbf0e1 100644 --- a/sha3.h +++ b/sha3.h @@ -7,6 +7,17 @@ extern "C" { #include +typedef union { + uint8_t u8[200]; + uint64_t u64[25]; +} sha3_state_t; + +typedef struct { + size_t num_bytes; + sha3_state_t a; + _Bool squeezing; +} sha3_xof_t; + void sha3_224(const uint8_t *m, size_t m_len, uint8_t dst[static 28]); void sha3_256(const uint8_t *m, size_t m_len, uint8_t dst[static 32]); void sha3_384(const uint8_t *m, size_t m_len, uint8_t dst[static 48]); @@ -15,6 +26,16 @@ void sha3_512(const uint8_t *m, size_t m_len, uint8_t dst[static 64]); void shake128(const uint8_t *m, size_t m_len, uint8_t dst[static 16]); void shake256(const uint8_t *m, size_t m_len, uint8_t dst[static 32]); +void shake128_xof_init(sha3_xof_t * const xof); +_Bool shake128_xof_absorb(sha3_xof_t * const xof, const uint8_t * const m, const size_t len); +_Bool shake128_xof_absorb_done(sha3_xof_t * const xof); +_Bool shake128_xof_squeeze(sha3_xof_t * const xof, uint8_t * const dst, const size_t dst_len); + +void shake256_xof_init(sha3_xof_t * const xof); +_Bool shake256_xof_absorb(sha3_xof_t * const xof, const uint8_t * const m, const size_t len); +_Bool shake256_xof_absorb_done(sha3_xof_t * const xof); +_Bool shake256_xof_squeeze(sha3_xof_t * const xof, uint8_t * const dst, const size_t dst_len); + #ifdef __cplusplus } #endif /* __cplusplus */ -- cgit v1.2.3