Home | History | Annotate | Download | only in kcp
      1 /*
      2 Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni,
      3 Joan Daemen, Michal 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_12rounds(void *state);
     44 void KeccakP1600_Permute_24rounds(void *state);
     45 void KeccakP1600_ExtractBytes(const void *state, unsigned char *data, unsigned int offset, unsigned int length);
     46 void KeccakP1600_ExtractAndAddBytes(const void *state, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length);
     47 size_t KeccakF1600_FastLoop_Absorb(void *state, unsigned int laneCount, const unsigned char *data, size_t dataByteLen);
     48 
     49 #endif
     50