summaryrefslogtreecommitdiff
path: root/sha3.h
diff options
context:
space:
mode:
Diffstat (limited to 'sha3.h')
-rw-r--r--sha3.h21
1 files changed, 21 insertions, 0 deletions
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 <stdint.h>
+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 */