Let us walk on the 3-isogeny graph
Loading...
Searching...
No Matches
fips202.h
Go to the documentation of this file.
1#ifndef FIPS202_H
2#define FIPS202_H
3
4#include <stddef.h>
5#include <stdint.h>
6
7#define SHAKE128_RATE 168
8#define SHAKE256_RATE 136
9#define SHA3_256_RATE 136
10#define SHA3_384_RATE 104
11#define SHA3_512_RATE 72
12
13
14// Context for incremental API
15typedef struct {
16 uint64_t ctx[26];
18
19// Context for non-incremental API
20typedef struct {
21 uint64_t ctx[25];
23
24// Context for incremental API
25typedef struct {
26 uint64_t ctx[26];
28
29// Context for non-incremental API
30typedef struct {
31 uint64_t ctx[25];
33
34// Context for incremental API
35typedef struct {
36 uint64_t ctx[26];
38
39// Context for incremental API
40typedef struct {
41 uint64_t ctx[26];
43
44// Context for incremental API
45typedef struct {
46 uint64_t ctx[26];
48
49/* Initialize the state and absorb the provided input.
50 *
51 * This function does not support being called multiple times
52 * with the same state.
53 */
54void shake128_absorb(shake128ctx *state, const uint8_t *input, size_t inlen);
55/* Squeeze output out of the sponge.
56 *
57 * Supports being called multiple times
58 */
59void shake128_squeezeblocks(uint8_t *output, size_t nblocks, shake128ctx *state);
60/* Free the state */
62/* Copy the state. */
63void shake128_ctx_clone(shake128ctx *dest, const shake128ctx *src);
64
65void cshake128_simple_absorb(shake128ctx *state, uint16_t cstm, const uint8_t *input, size_t inlen);
66void cshake128_simple_squeezeblocks(uint8_t *output, size_t nblocks, shake128ctx *state);
67void cshake128_simple(uint8_t *output, size_t outlen, uint16_t cstm, const uint8_t *input, size_t inlen);
68
69/* Initialize incremental hashing API */
71/* Absorb more information into the XOF.
72 *
73 * Can be called multiple times.
74 */
75void shake128_inc_absorb(shake128incctx *state, const uint8_t *input, size_t inlen);
76/* Finalize the XOF for squeezing */
78/* Squeeze output out of the sponge.
79 *
80 * Supports being called multiple times
81 */
82void shake128_inc_squeeze(uint8_t *output, size_t outlen, shake128incctx *state);
83/* Copy the context of the SHAKE128 XOF */
85/* Free the context of the SHAKE128 XOF */
87
88/* Initialize the state and absorb the provided input.
89 *
90 * This function does not support being called multiple times
91 * with the same state.
92 */
93void shake256_absorb(shake256ctx *state, const uint8_t *input, size_t inlen);
94/* Squeeze output out of the sponge.
95 *
96 * Supports being called multiple times
97 */
98void shake256_squeezeblocks(uint8_t *output, size_t nblocks, shake256ctx *state);
99/* Free the context held by this XOF */
101/* Copy the context held by this XOF */
102void shake256_ctx_clone(shake256ctx *dest, const shake256ctx *src);
103
104void cshake256_simple_absorb(shake256ctx *state, uint16_t cstm, const uint8_t *input, size_t inlen);
105void cshake256_simple_squeezeblocks(uint8_t *output, size_t nblocks, shake256ctx *state);
106void cshake256_simple(uint8_t *output, size_t outlen, uint16_t cstm, const uint8_t *input, size_t inlen);
107
108/* Initialize incremental hashing API */
110void shake256_inc_absorb(shake256incctx *state, const uint8_t *input, size_t inlen);
111/* Prepares for squeeze phase */
113
114
115
116/* Squeeze output out of the sponge.
117 *
118 * Supports being called multiple times
119 */
120void shake256_inc_squeeze(uint8_t *output, size_t outlen, shake256incctx *state);
121/* Copy the state */
123/* Free the state */
125
126/* One-stop SHAKE128 call */
127void shake128(uint8_t *output, size_t outlen,
128 const uint8_t *input, size_t inlen);
129
130/* One-stop SHAKE256 call */
131void shake256(uint8_t *output, size_t outlen,
132 const uint8_t *input, size_t inlen);
133
134/* Initialize the incremental hashing state */
136/* Absorb blocks into SHA3 */
137void sha3_256_inc_absorb(sha3_256incctx *state, const uint8_t *input, size_t inlen);
138/* Obtain the output of the function and free `state` */
139void sha3_256_inc_finalize(uint8_t *output, sha3_256incctx *state);
140/* Copy the context */
142/* Release the state, don't use if `_finalize` has been used */
144
145void sha3_256(uint8_t *output, const uint8_t *input, size_t inlen);
146
147/* Initialize the incremental hashing state */
149/* Absorb blocks into SHA3 */
150void sha3_384_inc_absorb(sha3_384incctx *state, const uint8_t *input, size_t inlen);
151/* Obtain the output of the function and free `state` */
152void sha3_384_inc_finalize(uint8_t *output, sha3_384incctx *state);
153/* Copy the context */
155/* Release the state, don't use if `_finalize` has been used */
157
158/* One-stop SHA3-384 shop */
159void sha3_384(uint8_t *output, const uint8_t *input, size_t inlen);
160
161/* Initialize the incremental hashing state */
163/* Absorb blocks into SHA3 */
164void sha3_512_inc_absorb(sha3_512incctx *state, const uint8_t *input, size_t inlen);
165/* Obtain the output of the function and free `state` */
166void sha3_512_inc_finalize(uint8_t *output, sha3_512incctx *state);
167/* Copy the context */
169/* Release the state, don't use if `_finalize` has been used */
171
172/* One-stop SHA3-512 shop */
173void sha3_512(uint8_t *output, const uint8_t *input, size_t inlen);
174#endif
void cshake128_simple(uint8_t *output, size_t outlen, uint16_t cstm, const uint8_t *input, size_t inlen)
Definition fips202.c:370
void sha3_256_inc_ctx_clone(sha3_256incctx *dest, const sha3_256incctx *src)
Definition fips202.c:622
void shake256(uint8_t *output, size_t outlen, const uint8_t *input, size_t inlen)
Definition fips202.c:523
void shake256_ctx_release(shake256ctx *state)
Definition fips202.c:545
void shake256_inc_finalize(shake256incctx *state)
Definition fips202.c:288
void sha3_384_inc_ctx_release(sha3_384incctx *state)
Definition fips202.c:674
void shake128_inc_init(shake128incctx *state)
Definition fips202.c:214
void shake128_inc_absorb(shake128incctx *state, const uint8_t *input, size_t inlen)
Definition fips202.c:225
void shake128_inc_squeeze(uint8_t *output, size_t outlen, shake128incctx *state)
Definition fips202.c:247
void sha3_512_inc_init(sha3_512incctx *state)
Definition fips202.c:733
void sha3_256_inc_absorb(sha3_256incctx *state, const uint8_t *input, size_t inlen)
Definition fips202.c:593
void sha3_384(uint8_t *output, const uint8_t *input, size_t inlen)
Definition fips202.c:687
void sha3_512_inc_absorb(sha3_512incctx *state, const uint8_t *input, size_t inlen)
Definition fips202.c:744
void shake128_inc_ctx_clone(shake128incctx *dest, const shake128incctx *src)
Definition fips202.c:258
void sha3_512_inc_ctx_clone(sha3_512incctx *dest, const sha3_512incctx *src)
Definition fips202.c:773
void shake128_ctx_clone(shake128ctx *dest, const shake128ctx *src)
Definition fips202.c:480
void shake128_inc_ctx_release(shake128incctx *state)
Definition fips202.c:262
void shake128_inc_finalize(shake128incctx *state)
Definition fips202.c:236
void shake256_squeezeblocks(uint8_t *output, size_t nblocks, shake256ctx *state)
Definition fips202.c:501
void sha3_256_inc_finalize(uint8_t *output, sha3_256incctx *state)
Definition fips202.c:604
void shake256_ctx_clone(shake256ctx *dest, const shake256ctx *src)
Definition fips202.c:549
void cshake256_simple_absorb(shake256ctx *state, uint16_t cstm, const uint8_t *input, size_t inlen)
Definition fips202.c:783
void shake128_absorb(shake128ctx *state, const uint8_t *input, size_t inlen)
Definition fips202.c:417
void shake256_inc_ctx_clone(shake256incctx *dest, const shake256incctx *src)
Definition fips202.c:310
void sha3_384_inc_ctx_clone(sha3_384incctx *dest, const sha3_384incctx *src)
Definition fips202.c:670
void sha3_384_inc_init(sha3_384incctx *state)
Definition fips202.c:630
void shake128_squeezeblocks(uint8_t *output, size_t nblocks, shake128ctx *state)
Definition fips202.c:444
void sha3_512_inc_finalize(uint8_t *output, sha3_512incctx *state)
Definition fips202.c:755
void sha3_384_inc_finalize(uint8_t *output, sha3_384incctx *state)
Definition fips202.c:652
void cshake256_simple_squeezeblocks(uint8_t *output, size_t nblocks, shake256ctx *state)
Definition fips202.c:816
void shake256_inc_ctx_release(shake256incctx *state)
Definition fips202.c:314
void shake128(uint8_t *output, size_t outlen, const uint8_t *input, size_t inlen)
Definition fips202.c:456
void shake256_inc_squeeze(uint8_t *output, size_t outlen, shake256incctx *state)
Definition fips202.c:299
void sha3_256_inc_init(sha3_256incctx *state)
Definition fips202.c:582
void sha3_512(uint8_t *output, const uint8_t *input, size_t inlen)
Definition fips202.c:714
void sha3_512_inc_ctx_release(sha3_512incctx *state)
Definition fips202.c:777
void sha3_384_inc_absorb(sha3_384incctx *state, const uint8_t *input, size_t inlen)
Definition fips202.c:641
void shake256_inc_init(shake256incctx *state)
Definition fips202.c:266
void cshake128_simple_absorb(shake128ctx *state, uint16_t cstm, const uint8_t *input, size_t inlen)
Definition fips202.c:320
void shake128_ctx_release(shake128ctx *state)
Definition fips202.c:477
void shake256_inc_absorb(shake256incctx *state, const uint8_t *input, size_t inlen)
Definition fips202.c:277
void sha3_256(uint8_t *output, const uint8_t *input, size_t inlen)
Definition fips202.c:563
void cshake256_simple(uint8_t *output, size_t outlen, uint16_t cstm, const uint8_t *input, size_t inlen)
Definition fips202.c:829
void cshake128_simple_squeezeblocks(uint8_t *output, size_t nblocks, shake128ctx *state)
Definition fips202.c:357
void sha3_256_inc_ctx_release(sha3_256incctx *state)
Definition fips202.c:626
void shake256_absorb(shake256ctx *state, const uint8_t *input, size_t inlen)
Definition fips202.c:484
uint64_t ctx[26]
Definition fips202.h:36
uint64_t ctx[26]
Definition fips202.h:41
uint64_t ctx[26]
Definition fips202.h:46
uint64_t ctx[25]
Definition fips202.h:21
uint64_t ctx[26]
Definition fips202.h:16
uint64_t ctx[25]
Definition fips202.h:31
uint64_t ctx[26]
Definition fips202.h:26