124#define HKDS_KECCAK_CSHAKE_DOMAIN_ID 0x04
130#define HKDS_KECCAK_KMAC_DOMAIN_ID 0x04
136#define HKDS_KECCAK_KPA_DOMAIN_ID 0x41
142#if defined(HKDS_KECCAK_HALF_ROUNDS)
143# define HKDS_KECCAK_PERMUTATION_ROUNDS 12
144#elif defined(HKDS_KECCAK_DOUBLE_ROUNDS)
145# define HKDS_KECCAK_PERMUTATION_ROUNDS 48
147# define HKDS_KECCAK_PERMUTATION_ROUNDS 24
154#define HKDS_KECCAK_PERMUTATION_MAX_ROUNDS 48
160#define HKDS_KECCAK_PERMUTATION_MIN_ROUNDS 12
166#define HKDS_KECCAK_SHA3_DOMAIN_ID 0x06
172#define HKDS_KECCAK_SHAKE_DOMAIN_ID 0x1F
178#define HKDS_KECCAK_STATE_BYTE_SIZE 200
184#define HKDS_KECCAK_128_RATE 168
190#define HKDS_KECCAK_256_RATE 136
196#define HKDS_KECCAK_512_RATE 72
202#define HKDS_KECCAK_STATE_SIZE 25
208#define HKDS_KECCAK_STATE_BYTE_SIZE 200
214#define HKDS_KMAC_256_KEY_SIZE 32
220#define HKDS_KMAC_512_KEY_SIZE 64
226#define HKDS_KECCAK_SCBKDF_DOMAIN_ID 0x42
232#define HKDS_SHA3_128_HASH_SIZE 16
238#define HKDS_SHA3_256_HASH_SIZE 32
244#define HKDS_SHA3_512_HASH_SIZE 64
250#define HKDS_SHAKE_256_KEY_SIZE 32
256#define HKDS_SHAKE512_KEY_SIZE 64
447HKDS_EXPORT_API
void hkds_shake128_compute(uint8_t* output,
size_t outlen,
const uint8_t* key,
size_t keylen);
460HKDS_EXPORT_API
void hkds_shake256_compute(uint8_t* output,
size_t outlen,
const uint8_t* key,
size_t keylen);
473HKDS_EXPORT_API
void hkds_shake512_compute(uint8_t* output,
size_t outlen,
const uint8_t* key,
size_t keylen);
518HKDS_EXPORT_API
void hkds_kmac128_compute(uint8_t* output,
size_t outlen,
const uint8_t* message,
size_t msglen,
const uint8_t* key,
size_t keylen,
const uint8_t* custom,
size_t custlen);
534HKDS_EXPORT_API
void hkds_kmac256_compute(uint8_t* output,
size_t outlen,
const uint8_t* message,
size_t msglen,
const uint8_t* key,
size_t keylen,
const uint8_t* custom,
size_t custlen);
550HKDS_EXPORT_API
void hkds_kmac512_compute(uint8_t* output,
size_t outlen,
const uint8_t* message,
size_t msglen,
const uint8_t* key,
size_t keylen,
const uint8_t* custom,
size_t custlen);
595#if defined(SYSTEM_HAS_AVX2)
613 const uint8_t* inp0,
const uint8_t* inp1,
const uint8_t* inp2,
const uint8_t* inp3,
size_t inplen, uint8_t domain);
630 uint8_t* out0, uint8_t* out1, uint8_t* out2, uint8_t* out3,
size_t nblocks);
636#if defined(SYSTEM_HAS_AVX512)
658 const uint8_t* inp0,
const uint8_t* inp1,
const uint8_t* inp2,
const uint8_t* inp3,
659 const uint8_t* inp4,
const uint8_t* inp5,
const uint8_t* inp6,
const uint8_t* inp7,
size_t inplen, uint8_t domain);
676 uint8_t* out0, uint8_t* out1, uint8_t* out2, uint8_t* out3, uint8_t* out4,
677 uint8_t* out5, uint8_t* out6, uint8_t* out7,
size_t nblocks);
700HKDS_EXPORT_API
void hkds_shake_128x4(uint8_t* out0, uint8_t* out1, uint8_t* out2, uint8_t* out3,
size_t outlen,
701 const uint8_t* inp0,
const uint8_t* inp1,
const uint8_t* inp2,
const uint8_t* inp3,
size_t inplen);
720HKDS_EXPORT_API
void hkds_shake_256x4(uint8_t* out0, uint8_t* out1, uint8_t* out2, uint8_t* out3,
size_t outlen,
721 const uint8_t* inp0,
const uint8_t* inp1,
const uint8_t* inp2,
const uint8_t* inp3,
size_t inplen);
740HKDS_EXPORT_API
void hkds_shake_512x4(uint8_t* out0, uint8_t* out1, uint8_t* out2, uint8_t* out3,
size_t outlen,
741 const uint8_t* inp0,
const uint8_t* inp1,
const uint8_t* inp2,
const uint8_t* inp3,
size_t inplen);
770HKDS_EXPORT_API
void hkds_shake_128x8(uint8_t* out0, uint8_t* out1, uint8_t* out2, uint8_t* out3,
771 uint8_t* out4, uint8_t* out5, uint8_t* out6, uint8_t* out7,
size_t outlen,
772 const uint8_t* inp0,
const uint8_t* inp1,
const uint8_t* inp2,
const uint8_t* inp3,
773 const uint8_t* inp4,
const uint8_t* inp5,
const uint8_t* inp6,
const uint8_t* inp7,
size_t inplen);
800HKDS_EXPORT_API
void hkds_shake_256x8(uint8_t* out0, uint8_t* out1, uint8_t* out2, uint8_t* out3,
801 uint8_t* out4, uint8_t* out5, uint8_t* out6, uint8_t* out7,
size_t outlen,
802 const uint8_t* inp0,
const uint8_t* inp1,
const uint8_t* inp2,
const uint8_t* inp3,
803 const uint8_t* inp4,
const uint8_t* inp5,
const uint8_t* inp6,
const uint8_t* inp7,
size_t inplen);
830HKDS_EXPORT_API
void hkds_shake_512x8(uint8_t* out0, uint8_t* out1, uint8_t* out2, uint8_t* out3,
831 uint8_t* out4, uint8_t* out5, uint8_t* out6, uint8_t* out7,
size_t outlen,
832 const uint8_t* inp0,
const uint8_t* inp1,
const uint8_t* inp2,
const uint8_t* inp3,
833 const uint8_t* inp4,
const uint8_t* inp5,
const uint8_t* inp6,
const uint8_t* inp7,
size_t inplen);
864HKDS_EXPORT_API
void hkds_kmac_128x4(uint8_t* out0, uint8_t* out1, uint8_t* out2, uint8_t* out3,
size_t outlen,
865 const uint8_t* key0,
const uint8_t* key1,
const uint8_t* key2,
const uint8_t* key3,
size_t keylen,
866 const uint8_t* cst0,
const uint8_t* cst1,
const uint8_t* cst2,
const uint8_t* cst3,
size_t cstlen,
867 const uint8_t* msg0,
const uint8_t* msg1,
const uint8_t* msg2,
const uint8_t* msg3,
size_t msglen);
896HKDS_EXPORT_API
void hkds_kmac_256x4(uint8_t* out0, uint8_t* out1, uint8_t* out2, uint8_t* out3,
size_t outlen,
897 const uint8_t* key0,
const uint8_t* key1,
const uint8_t* key2,
const uint8_t* key3,
size_t keylen,
898 const uint8_t* cst0,
const uint8_t* cst1,
const uint8_t* cst2,
const uint8_t* cst3,
size_t cstlen,
899 const uint8_t* msg0,
const uint8_t* msg1,
const uint8_t* msg2,
const uint8_t* msg3,
size_t msglen);
928HKDS_EXPORT_API
void hkds_kmac_512x4(uint8_t* out0, uint8_t* out1, uint8_t* out2, uint8_t* out3,
size_t outlen,
929 const uint8_t* key0,
const uint8_t* key1,
const uint8_t* key2,
const uint8_t* key3,
size_t keylen,
930 const uint8_t* cst0,
const uint8_t* cst1,
const uint8_t* cst2,
const uint8_t* cst3,
size_t cstlen,
931 const uint8_t* msg0,
const uint8_t* msg1,
const uint8_t* msg2,
const uint8_t* msg3,
size_t msglen);
978HKDS_EXPORT_API
void hkds_kmac_128x8(uint8_t* out0, uint8_t* out1, uint8_t* out2, uint8_t* out3,
979 uint8_t* out4, uint8_t* out5, uint8_t* out6, uint8_t* out7,
size_t outlen,
980 const uint8_t* key0,
const uint8_t* key1,
const uint8_t* key2,
const uint8_t* key3,
981 const uint8_t* key4,
const uint8_t* key5,
const uint8_t* key6,
const uint8_t* key7,
size_t keylen,
982 const uint8_t* cst0,
const uint8_t* cst1,
const uint8_t* cst2,
const uint8_t* cst3,
983 const uint8_t* cst4,
const uint8_t* cst5,
const uint8_t* cst6,
const uint8_t* cst7,
size_t cstlen,
984 const uint8_t* msg0,
const uint8_t* msg1,
const uint8_t* msg2,
const uint8_t* msg3,
985 const uint8_t* msg4,
const uint8_t* msg5,
const uint8_t* msg6,
const uint8_t* msg7,
size_t msglen);
1030HKDS_EXPORT_API
void hkds_kmac_256x8(uint8_t* out0, uint8_t* out1, uint8_t* out2, uint8_t* out3,
1031 uint8_t* out4, uint8_t* out5, uint8_t* out6, uint8_t* out7,
size_t outlen,
1032 const uint8_t* key0,
const uint8_t* key1,
const uint8_t* key2,
const uint8_t* key3,
1033 const uint8_t* key4,
const uint8_t* key5,
const uint8_t* key6,
const uint8_t* key7,
size_t keylen,
1034 const uint8_t* cst0,
const uint8_t* cst1,
const uint8_t* cst2,
const uint8_t* cst3,
1035 const uint8_t* cst4,
const uint8_t* cst5,
const uint8_t* cst6,
const uint8_t* cst7,
size_t cstlen,
1036 const uint8_t* msg0,
const uint8_t* msg1,
const uint8_t* msg2,
const uint8_t* msg3,
1037 const uint8_t* msg4,
const uint8_t* msg5,
const uint8_t* msg6,
const uint8_t* msg7,
size_t msglen);
1082HKDS_EXPORT_API
void hkds_kmac_512x8(uint8_t* out0, uint8_t* out1, uint8_t* out2, uint8_t* out3,
1083 uint8_t* out4, uint8_t* out5, uint8_t* out6, uint8_t* out7,
size_t outlen,
1084 const uint8_t* key0,
const uint8_t* key1,
const uint8_t* key2,
const uint8_t* key3,
1085 const uint8_t* key4,
const uint8_t* key5,
const uint8_t* key6,
const uint8_t* key7,
size_t keylen,
1086 const uint8_t* cst0,
const uint8_t* cst1,
const uint8_t* cst2,
const uint8_t* cst3,
1087 const uint8_t* cst4,
const uint8_t* cst5,
const uint8_t* cst6,
const uint8_t* cst7,
size_t cstlen,
1088 const uint8_t* msg0,
const uint8_t* msg1,
const uint8_t* msg2,
const uint8_t* msg3,
1089 const uint8_t* msg4,
const uint8_t* msg5,
const uint8_t* msg6,
const uint8_t* msg7,
size_t msglen);
HKDS configuration definitions.
HKDS_EXPORT_API void hkds_keccak_initialize_state(hkds_keccak_state *ctx)
Initializes a Keccak state structure, must be called before message processing. Long form api: must b...
Definition keccak.c:4043
hkds_keccak_rate
The Keccak rate; determines which security strength is used by the function, 128, 256,...
Definition keccak.h:276
@ hkds_keccak_rate_256
Definition keccak.h:279
@ hkds_keccak_rate_none
Definition keccak.h:277
@ hkds_keccak_rate_128
Definition keccak.h:278
@ hkds_keccak_rate_512
Definition keccak.h:280
HKDS_EXPORT_API void hkds_shake_512x8(uint8_t *out0, uint8_t *out1, uint8_t *out2, uint8_t *out3, uint8_t *out4, uint8_t *out5, uint8_t *out6, uint8_t *out7, size_t outlen, const uint8_t *inp0, const uint8_t *inp1, const uint8_t *inp2, const uint8_t *inp3, const uint8_t *inp4, const uint8_t *inp5, const uint8_t *inp6, const uint8_t *inp7, size_t inplen)
Process 8 SHAKE-512 instances simultaneously using SIMD instructions.
Definition keccak.c:4865
HKDS_EXPORT_API void hkds_kmac_512x4(uint8_t *out0, uint8_t *out1, uint8_t *out2, uint8_t *out3, size_t outlen, const uint8_t *key0, const uint8_t *key1, const uint8_t *key2, const uint8_t *key3, size_t keylen, const uint8_t *cst0, const uint8_t *cst1, const uint8_t *cst2, const uint8_t *cst3, size_t cstlen, const uint8_t *msg0, const uint8_t *msg1, const uint8_t *msg2, const uint8_t *msg3, size_t msglen)
Process 4 KMAC-512 instances simultaneously using SIMD instructions.
Definition keccak.c:5210
HKDS_EXPORT_API void hkds_keccak_permute_p1600u(uint64_t *state)
The unrolled Keccak permute function. Internal function: Permutes the state array,...
Definition keccak.c:1811
HKDS_EXPORT_API void hkds_shake256_compute(uint8_t *output, size_t outlen, const uint8_t *key, size_t keylen)
Key a SHAKE-256 instance, and generate an array of pseudo-random bytes. Short form api: processes the...
Definition keccak.c:4121
HKDS_EXPORT_API void hkds_kmac512_compute(uint8_t *output, size_t outlen, const uint8_t *message, size_t msglen, const uint8_t *key, size_t keylen, const uint8_t *custom, size_t custlen)
Key a KMAC-512 instance and generate a MAC code. Short form api: processes the key and custom inputs ...
Definition keccak.c:4212
HKDS_EXPORT_API void hkds_kmac_update(hkds_keccak_state *ctx, hkds_keccak_rate rate, const uint8_t *message, size_t msglen)
The KMAC message update function. Long form api: must be used in conjunction with the initialize and ...
Definition keccak.c:4240
#define HKDS_KECCAK_STATE_SIZE
The Keccak SHA3 uint64 state array size.
Definition keccak.h:202
HKDS_EXPORT_API void hkds_keccak_incremental_squeeze(hkds_keccak_state *ctx, size_t rate, uint8_t *output, size_t outlen)
Extract an array of bytes from the Keccak state.
Definition keccak.c:1408
HKDS_EXPORT_API void hkds_shake_128x4(uint8_t *out0, uint8_t *out1, uint8_t *out2, uint8_t *out3, size_t outlen, const uint8_t *inp0, const uint8_t *inp1, const uint8_t *inp2, const uint8_t *inp3, size_t inplen)
Process 4 SHAKE-128 instances simultaneously using SIMD instructions.
Definition keccak.c:4528
HKDS_EXPORT_API void hkds_kmac256_compute(uint8_t *output, size_t outlen, const uint8_t *message, size_t msglen, const uint8_t *key, size_t keylen, const uint8_t *custom, size_t custlen)
Key a KMAC-256 instance and generate a MAC code. Short form api: processes the key and custom inputs ...
Definition keccak.c:4199
HKDS_EXPORT_API void hkds_shake128_compute(uint8_t *output, size_t outlen, const uint8_t *key, size_t keylen)
Key a SHAKE-128 instance, and generate an array of pseudo-random bytes. Short form api: processes the...
Definition keccak.c:4098
HKDS_EXPORT_API void hkds_keccak_permute(hkds_keccak_state *ctx, size_t rounds)
The Keccak permute function. Internal function: Permutes the state array, can be used in external con...
Definition keccak.c:1483
HKDS_EXPORT_API void hkds_keccak_absorb(hkds_keccak_state *ctx, hkds_keccak_rate rate, const uint8_t *message, size_t msglen, uint8_t domain, size_t rounds)
Absorb an input message into the Keccak state.
Definition keccak.c:1097
HKDS_EXPORT_API void hkds_kmac_128x4(uint8_t *out0, uint8_t *out1, uint8_t *out2, uint8_t *out3, size_t outlen, const uint8_t *key0, const uint8_t *key1, const uint8_t *key2, const uint8_t *key3, size_t keylen, const uint8_t *cst0, const uint8_t *cst1, const uint8_t *cst2, const uint8_t *cst3, size_t cstlen, const uint8_t *msg0, const uint8_t *msg1, const uint8_t *msg2, const uint8_t *msg3, size_t msglen)
Process 4 KMAC-128 instances simultaneously using SIMD instructions.
Definition keccak.c:5132
HKDS_EXPORT_API void hkds_shake512_compute(uint8_t *output, size_t outlen, const uint8_t *key, size_t keylen)
Key a SHAKE-512 instance, and generate an array of pseudo-random bytes. Short form api: processes the...
Definition keccak.c:4144
HKDS_EXPORT_API void hkds_keccak_incremental_finalize(hkds_keccak_state *ctx, uint32_t rate, uint8_t domain)
Finalize state added incrementally.
Definition keccak.c:1394
#define HKDS_KECCAK_512_RATE
The 512 bit absorption rate.
Definition keccak.h:196
#define HKDS_KECCAK_256_RATE
The 256-bit absorption rate.
Definition keccak.h:190
HKDS_EXPORT_API void hkds_shake_initialize(hkds_keccak_state *ctx, hkds_keccak_rate rate, const uint8_t *key, size_t keylen)
The SHAKE initialize function. Long form api: must be used in conjunction with the squeezeblocks func...
Definition keccak.c:4167
#define HKDS_KECCAK_128_RATE
The 128-bit absorption rate.
Definition keccak.h:184
HKDS_EXPORT_API void hkds_shake_128x8(uint8_t *out0, uint8_t *out1, uint8_t *out2, uint8_t *out3, uint8_t *out4, uint8_t *out5, uint8_t *out6, uint8_t *out7, size_t outlen, const uint8_t *inp0, const uint8_t *inp1, const uint8_t *inp2, const uint8_t *inp3, const uint8_t *inp4, const uint8_t *inp5, const uint8_t *inp6, const uint8_t *inp7, size_t inplen)
Process 8 SHAKE-128 instances simultaneously using SIMD instructions.
Definition keccak.c:4699
HKDS_EXPORT_API void hkds_keccak_permute_p1600c(uint64_t *state, size_t rounds)
The compact Keccak permute function. Internal function: Permutes the state array, can be used in exte...
Definition keccak.c:1497
HKDS_EXPORT_API void hkds_kmac_finalize(hkds_keccak_state *ctx, hkds_keccak_rate rate, uint8_t *output, size_t outlen)
The KMAC finalize function. Long form api: must be used in conjunction with the initialize and blocku...
Definition keccak.c:4225
HKDS_EXPORT_API void hkds_kmac_initialize(hkds_keccak_state *ctx, hkds_keccak_rate rate, const uint8_t *key, size_t keylen, const uint8_t *custom, size_t custlen)
Initialize a KMAC instance. Long form api: must be used in conjunction with the blockupdate and final...
Definition keccak.c:4230
#define HKDS_KECCAK_STATE_BYTE_SIZE
The Keccak state array byte size.
Definition keccak.h:178
HKDS_EXPORT_API void hkds_keccak_absorb_key_custom(hkds_keccak_state *ctx, hkds_keccak_rate rate, const uint8_t *key, size_t keylen, const uint8_t *custom, size_t custlen, const uint8_t *name, size_t namelen, size_t rounds)
Absorb the custom, name, and key arrays into the Keccak state.
Definition keccak.c:1187
HKDS_EXPORT_API void hkds_kmac_256x8(uint8_t *out0, uint8_t *out1, uint8_t *out2, uint8_t *out3, uint8_t *out4, uint8_t *out5, uint8_t *out6, uint8_t *out7, size_t outlen, const uint8_t *key0, const uint8_t *key1, const uint8_t *key2, const uint8_t *key3, const uint8_t *key4, const uint8_t *key5, const uint8_t *key6, const uint8_t *key7, size_t keylen, const uint8_t *cst0, const uint8_t *cst1, const uint8_t *cst2, const uint8_t *cst3, const uint8_t *cst4, const uint8_t *cst5, const uint8_t *cst6, const uint8_t *cst7, size_t cstlen, const uint8_t *msg0, const uint8_t *msg1, const uint8_t *msg2, const uint8_t *msg3, const uint8_t *msg4, const uint8_t *msg5, const uint8_t *msg6, const uint8_t *msg7, size_t msglen)
Process 8 KMAC-256 instances simultaneously using SIMD instructions.
Definition keccak.c:5545
HKDS_EXPORT_API void hkds_keccak_update(hkds_keccak_state *ctx, hkds_keccak_rate rate, const uint8_t *message, size_t msglen, size_t rounds)
Update Keccak state with message input.
Definition keccak.c:4055
HKDS_EXPORT_API void hkds_kmac128_compute(uint8_t *output, size_t outlen, const uint8_t *message, size_t msglen, const uint8_t *key, size_t keylen, const uint8_t *custom, size_t custlen)
Key a KMAC-128 instance and generate a MAC code. Short form api: processes the key and custom inputs ...
Definition keccak.c:4186
HKDS_EXPORT_API void hkds_keccak_dispose(hkds_keccak_state *ctx)
Dispose of the Keccak state.
Definition keccak.c:1264
HKDS_EXPORT_API void hkds_shake_512x4(uint8_t *out0, uint8_t *out1, uint8_t *out2, uint8_t *out3, size_t outlen, const uint8_t *inp0, const uint8_t *inp1, const uint8_t *inp2, const uint8_t *inp3, size_t inplen)
Process 4 SHAKE-512 instances simultaneously using SIMD instructions.
Definition keccak.c:4641
HKDS_EXPORT_API void hkds_keccak_squeezeblocks(hkds_keccak_state *ctx, uint8_t *output, size_t nblocks, hkds_keccak_rate rate, size_t rounds)
The Keccak squeeze function.
Definition keccak.c:4018
HKDS_EXPORT_API void hkds_kmac_128x8(uint8_t *out0, uint8_t *out1, uint8_t *out2, uint8_t *out3, uint8_t *out4, uint8_t *out5, uint8_t *out6, uint8_t *out7, size_t outlen, const uint8_t *key0, const uint8_t *key1, const uint8_t *key2, const uint8_t *key3, const uint8_t *key4, const uint8_t *key5, const uint8_t *key6, const uint8_t *key7, size_t keylen, const uint8_t *cst0, const uint8_t *cst1, const uint8_t *cst2, const uint8_t *cst3, const uint8_t *cst4, const uint8_t *cst5, const uint8_t *cst6, const uint8_t *cst7, size_t cstlen, const uint8_t *msg0, const uint8_t *msg1, const uint8_t *msg2, const uint8_t *msg3, const uint8_t *msg4, const uint8_t *msg5, const uint8_t *msg6, const uint8_t *msg7, size_t msglen)
Process 8 KMAC-128 instances simultaneously using SIMD instructions.
Definition keccak.c:5477
HKDS_EXPORT_API void hkds_shake_256x8(uint8_t *out0, uint8_t *out1, uint8_t *out2, uint8_t *out3, uint8_t *out4, uint8_t *out5, uint8_t *out6, uint8_t *out7, size_t outlen, const uint8_t *inp0, const uint8_t *inp1, const uint8_t *inp2, const uint8_t *inp3, const uint8_t *inp4, const uint8_t *inp5, const uint8_t *inp6, const uint8_t *inp7, size_t inplen)
Process 8 SHAKE-256 instances simultaneously using SIMD instructions.
Definition keccak.c:4782
HKDS_EXPORT_API void hkds_shake_256x4(uint8_t *out0, uint8_t *out1, uint8_t *out2, uint8_t *out3, size_t outlen, const uint8_t *inp0, const uint8_t *inp1, const uint8_t *inp2, const uint8_t *inp3, size_t inplen)
Process 4 SHAKE-256 instances simultaneously using SIMD instructions.
Definition keccak.c:4585
HKDS_EXPORT_API void hkds_keccak_incremental_absorb(hkds_keccak_state *ctx, uint32_t rate, const uint8_t *message, size_t msglen)
Absorb bytes into state incrementally.
Definition keccak.c:1319
HKDS_EXPORT_API void hkds_keccak_absorb_custom(hkds_keccak_state *ctx, hkds_keccak_rate rate, const uint8_t *custom, size_t custlen, const uint8_t *name, size_t namelen, size_t rounds)
Absorb the custom, and name arrays into the Keccak state.
Definition keccak.c:1137
HKDS_EXPORT_API void hkds_shake_squeezeblocks(hkds_keccak_state *ctx, hkds_keccak_rate rate, uint8_t *output, size_t nblocks)
The SHAKE squeeze function. Long form api: must be used in conjunction with the initialize function....
Definition keccak.c:4176
HKDS_EXPORT_API void hkds_kmac_512x8(uint8_t *out0, uint8_t *out1, uint8_t *out2, uint8_t *out3, uint8_t *out4, uint8_t *out5, uint8_t *out6, uint8_t *out7, size_t outlen, const uint8_t *key0, const uint8_t *key1, const uint8_t *key2, const uint8_t *key3, const uint8_t *key4, const uint8_t *key5, const uint8_t *key6, const uint8_t *key7, size_t keylen, const uint8_t *cst0, const uint8_t *cst1, const uint8_t *cst2, const uint8_t *cst3, const uint8_t *cst4, const uint8_t *cst5, const uint8_t *cst6, const uint8_t *cst7, size_t cstlen, const uint8_t *msg0, const uint8_t *msg1, const uint8_t *msg2, const uint8_t *msg3, const uint8_t *msg4, const uint8_t *msg5, const uint8_t *msg6, const uint8_t *msg7, size_t msglen)
Process 8 KMAC-512 instances simultaneously using SIMD instructions.
Definition keccak.c:5613
HKDS_EXPORT_API void hkds_kmac_256x4(uint8_t *out0, uint8_t *out1, uint8_t *out2, uint8_t *out3, size_t outlen, const uint8_t *key0, const uint8_t *key1, const uint8_t *key2, const uint8_t *key3, size_t keylen, const uint8_t *cst0, const uint8_t *cst1, const uint8_t *cst2, const uint8_t *cst3, size_t cstlen, const uint8_t *msg0, const uint8_t *msg1, const uint8_t *msg2, const uint8_t *msg3, size_t msglen)
Process 4 KMAC-256 instances simultaneously using SIMD instructions.
Definition keccak.c:5171
HKDS_EXPORT_API void hkds_keccak_finalize(hkds_keccak_state *ctx, hkds_keccak_rate rate, uint8_t *output, size_t outlen, uint8_t domain, size_t rounds)
Finalize the Keccak state.
Definition keccak.c:1276
The Keccak state array; state array must be initialized by the caller.
Definition keccak.h:265
uint8_t buffer[HKDS_KECCAK_STATE_BYTE_SIZE]
Definition keccak.h:267
uint64_t state[HKDS_KECCAK_STATE_SIZE]
Definition keccak.h:266
size_t position
Definition keccak.h:268