16#ifndef _KeccakSponge_h_
17#define _KeccakSponge_h_
42#ifdef DontReallyInclude_DocumentationOnly
67int Prefix_Sponge(
unsigned int rate,
unsigned int capacity,
const unsigned char *input,
size_t inputByteLen,
unsigned char suffix,
unsigned char *output,
size_t outputByteLen);
79int Prefix_SpongeInitialize(Prefix_SpongeInstance *spongeInstance,
unsigned int rate,
unsigned int capacity);
91int Prefix_SpongeAbsorb(Prefix_SpongeInstance *spongeInstance,
const unsigned char *
data,
size_t dataByteLen);
115int Prefix_SpongeAbsorbLastFewBits(Prefix_SpongeInstance *spongeInstance,
unsigned char delimitedData);
127int Prefix_SpongeSqueeze(Prefix_SpongeInstance *spongeInstance,
unsigned char *
data,
size_t dataByteLen);
133#define KCP_DeclareSpongeStructure(prefix, size, alignment) \
134 ALIGN(alignment) typedef struct prefix##_SpongeInstanceStruct { \
135 unsigned char state[size]; \
137 unsigned int byteIOIndex; \
139 } prefix##_SpongeInstance;
141#define KCP_DeclareSpongeFunctions(prefix) \
142 int prefix##_Sponge(unsigned int rate, unsigned int capacity, const unsigned char *input, size_t inputByteLen, unsigned char suffix, unsigned char *output, size_t outputByteLen); \
143 int prefix##_SpongeInitialize(prefix##_SpongeInstance *spongeInstance, unsigned int rate, unsigned int capacity); \
144 int prefix##_SpongeAbsorb(prefix##_SpongeInstance *spongeInstance, const unsigned char *data, size_t dataByteLen); \
145 int prefix##_SpongeAbsorbLastFewBits(prefix##_SpongeInstance *spongeInstance, unsigned char delimitedData); \
146 int prefix##_SpongeSqueeze(prefix##_SpongeInstance *spongeInstance, unsigned char *data, size_t dataByteLen);
148#ifndef KeccakP200_excluded
149 #include "KeccakP-200-SnP.h"
154#ifndef KeccakP400_excluded
155 #include "KeccakP-400-SnP.h"
160#ifndef KeccakP800_excluded
161 #include "KeccakP-800-SnP.h"
166#ifndef KeccakP1600_excluded
172#ifndef KeccakP1600_excluded
#define KeccakP1600_stateSizeInBytes
#define KeccakP1600_stateAlignment
KeccakP400_stateAlignment KeccakP800_stateSizeInBytes
#define KCP_DeclareSpongeFunctions(prefix)
#define KCP_DeclareSpongeStructure(prefix, size, alignment)
KeccakP400_stateSizeInBytes