20#ifndef PROTOCORE_SHA3_H
21#define PROTOCORE_SHA3_H
25#if PROTOCORE_ENABLE_SHA3
30#define KECCAK_RATE_SHA3_256 136
31#define KECCAK_RATE_SHA3_512 72
32#define KECCAK_RATE_SHAKE128 168
33#define KECCAK_RATE_SHAKE256 136
73} Sha3Shake128AbsorbArgs;
120 Sha3AbsorbArgs absorb_args;
121 Sha3SqueezeArgs squeeze_args;
122 Sha3DigestArgs digest_args;
123 Sha3XofArgs xof_args;
124 Sha3Shake128AbsorbArgs shake128_absorb_args;
129extern Sha3Vars Sha3V;
134 void (*
const absorb)(uint8_t *work);
135 void (*
const squeeze)(uint8_t *work);
136 void (*
const sha3_256)(uint8_t *work);
137 void (*
const sha3_512)(uint8_t *work);
138 void (*
const shake128)(uint8_t *work);
139 void (*
const shake256)(uint8_t *work);
140 void (*
const shake128_absorb)(uint8_t *work);
145void protocore_sha3_absorb(uint8_t *work);
146void protocore_sha3_squeeze(uint8_t *work);
147void protocore_sha3_sha3_256(uint8_t *work);
148void protocore_sha3_sha3_512(uint8_t *work);
149void protocore_sha3_shake128(uint8_t *work);
150void protocore_sha3_shake256(uint8_t *work);
151void protocore_sha3_shake128_absorb(uint8_t *work);
157static const Sha3Ns Sha3 __attribute__((unused)) = {
158 .absorb = protocore_sha3_absorb,
159 .squeeze = protocore_sha3_squeeze,
160 .sha3_256 = protocore_sha3_sha3_256,
161 .sha3_512 = protocore_sha3_sha3_512,
162 .shake128 = protocore_sha3_shake128,
163 .shake256 = protocore_sha3_shake256,
164 .shake128_absorb = protocore_sha3_shake128_absorb,
#define PROTOCORE_BEGIN_DECLS
Give a header's declarations C linkage, so their symbol names carry no parameter types.
_Bool proto_bool
The truth value.
#define PROTOCORE_END_DECLS