1 /* 2 Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni, 3 Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer, hereby 4 denoted as "the implementer". 5 6 For more information, feedback or questions, please refer to our websites: 7 http://keccak.noekeon.org/ 8 http://keyak.noekeon.org/ 9 http://ketje.noekeon.org/ 10 11 To the extent possible under law, the implementer has waived all copyright 12 and related or neighboring rights to the source code in this file. 13 http://creativecommons.org/publicdomain/zero/1.0/ 14 */ 15 16 #ifndef _KeccakP_1600_SnP_h_ 17 #define _KeccakP_1600_SnP_h_ 18 19 /** For the documentation, see SnP-documentation.h. 20 */ 21 22 #include "brg_endian.h" 23 #include "KeccakP-1600-opt64-config.h" 24 25 #define KeccakP1600_implementation "generic 64-bit optimized implementation (" KeccakP1600_implementation_config ")" 26 #define KeccakP1600_stateSizeInBytes 200 27 #define KeccakP1600_stateAlignment 8 28 #define KeccakF1600_FastLoop_supported 29 30 #include <stddef.h> 31 32 #define KeccakP1600_StaticInitialize() 33 void KeccakP1600_Initialize(void *state); 34 #if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) 35 #define KeccakP1600_AddByte(state, byte, offset) \ 36 ((unsigned char*)(state))[(offset)] ^= (byte) 37 #else 38 void KeccakP1600_AddByte(void *state, unsigned char data, unsigned int offset); 39 #endif 40 void KeccakP1600_AddBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length); 41 void KeccakP1600_OverwriteBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length); 42 void KeccakP1600_OverwriteWithZeroes(void *state, unsigned int byteCount); 43 void KeccakP1600_Permute_Nrounds(void *state, unsigned int nrounds); 44 void KeccakP1600_Permute_12rounds(void *state); 45 void KeccakP1600_Permute_24rounds(void *state); 46 void KeccakP1600_ExtractBytes(const void *state, unsigned char *data, unsigned int offset, unsigned int length); 47 void KeccakP1600_ExtractAndAddBytes(const void *state, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length); 48 size_t KeccakF1600_FastLoop_Absorb(void *state, unsigned int laneCount, const unsigned char *data, size_t dataByteLen); 49 50 #endif 51