1/*
2Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni,
3Joan Daemen, Michaƫl Peeters, Gilles Van Assche and Ronny Van Keer, hereby
4denoted as "the implementer".
5
6For more information, feedback or questions, please refer to our websites:
7http://keccak.noekeon.org/
8http://keyak.noekeon.org/
9http://ketje.noekeon.org/
10
11To the extent possible under law, the implementer has waived all copyright
12and related or neighboring rights to the source code in this file.
13http://creativecommons.org/publicdomain/zero/1.0/
14*/
15
16#include "KeccakSponge.h"
17
18#ifdef KeccakReference
19 #include "displayIntermediateValues.h"
20#endif
21
22#ifndef KeccakP200_excluded
23 #include "KeccakP-200-SnP.h"
24
25 #define prefix KeccakWidth200
26 #define SnP KeccakP200
27 #define SnP_width 200
28 #define SnP_Permute KeccakP200_Permute_18rounds
29 #if defined(KeccakF200_FastLoop_supported)
30 #define SnP_FastLoop_Absorb KeccakF200_FastLoop_Absorb
31 #endif
32 #include "KeccakSponge.inc"
33 #undef prefix
34 #undef SnP
35 #undef SnP_width
36 #undef SnP_Permute
37 #undef SnP_FastLoop_Absorb
38#endif
39
40#ifndef KeccakP400_excluded
41 #include "KeccakP-400-SnP.h"
42
43 #define prefix KeccakWidth400
44 #define SnP KeccakP400
45 #define SnP_width 400
46 #define SnP_Permute KeccakP400_Permute_20rounds
47 #if defined(KeccakF400_FastLoop_supported)
48 #define SnP_FastLoop_Absorb KeccakF400_FastLoop_Absorb
49 #endif
50 #include "KeccakSponge.inc"
51 #undef prefix
52 #undef SnP
53 #undef SnP_width
54 #undef SnP_Permute
55 #undef SnP_FastLoop_Absorb
56#endif
57
58#ifndef KeccakP800_excluded
59 #include "KeccakP-800-SnP.h"
60
61 #define prefix KeccakWidth800
62 #define SnP KeccakP800
63 #define SnP_width 800
64 #define SnP_Permute KeccakP800_Permute_22rounds
65 #if defined(KeccakF800_FastLoop_supported)
66 #define SnP_FastLoop_Absorb KeccakF800_FastLoop_Absorb
67 #endif
68 #include "KeccakSponge.inc"
69 #undef prefix
70 #undef SnP
71 #undef SnP_width
72 #undef SnP_Permute
73 #undef SnP_FastLoop_Absorb
74#endif
75
76#ifndef KeccakP1600_excluded
77 #include "KeccakP-1600-SnP.h"
78
79 #define prefix KeccakWidth1600
80 #define SnP KeccakP1600
81 #define SnP_width 1600
82 #define SnP_Permute KeccakP1600_Permute_24rounds
83 #if defined(KeccakF1600_FastLoop_supported)
84 #define SnP_FastLoop_Absorb KeccakF1600_FastLoop_Absorb
85 #endif
86 #include "KeccakSponge.inc"
87 #undef prefix
88 #undef SnP
89 #undef SnP_width
90 #undef SnP_Permute
91 #undef SnP_FastLoop_Absorb
92#endif
93