sha3 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.md +8 -5
  4. data/certs/johanns.pem +23 -22
  5. data/ext/sha3/config.h +26 -0
  6. data/ext/sha3/digest.c +6 -6
  7. data/ext/sha3/extconf.rb +40 -10
  8. data/ext/sha3/lib/common/align.h +33 -0
  9. data/ext/sha3/{brg_endian.h → lib/common/brg_endian.h} +8 -7
  10. data/ext/sha3/{KeccakHash.c → lib/high/Keccak/FIPS202/KeccakHash.c} +26 -25
  11. data/ext/sha3/{KeccakHash.h → lib/high/Keccak/FIPS202/KeccakHash.h} +34 -19
  12. data/ext/sha3/lib/high/Keccak/KeccakSponge.c +111 -0
  13. data/ext/sha3/lib/high/Keccak/KeccakSponge.h +76 -0
  14. data/ext/sha3/lib/high/Keccak/KeccakSponge.inc +316 -0
  15. data/ext/sha3/lib/low/KeccakP-1600/common/KeccakP-1600-64.macros +748 -0
  16. data/ext/sha3/lib/low/KeccakP-1600/common/KeccakP-1600-unrolling.macros +305 -0
  17. data/ext/sha3/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-SnP.h +44 -0
  18. data/ext/sha3/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference.h +23 -0
  19. data/ext/sha3/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference32BI.c +625 -0
  20. data/ext/sha3/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-SnP.h +44 -0
  21. data/ext/sha3/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.c +444 -0
  22. data/ext/sha3/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.h +23 -0
  23. data/lib/sha3/version.rb +1 -1
  24. data/sha3.gemspec +6 -5
  25. data/tests.sh +8 -7
  26. data.tar.gz.sig +0 -0
  27. metadata +50 -66
  28. metadata.gz.sig +0 -0
  29. data/ext/sha3/KeccakF-1600-interface.h +0 -40
  30. data/ext/sha3/KeccakSponge.c +0 -192
  31. data/ext/sha3/KeccakSponge.h +0 -113
  32. data/ext/sha3/Optimized64/KeccakF-1600-64.macros +0 -2199
  33. data/ext/sha3/Optimized64/KeccakF-1600-opt64-settings.h +0 -3
  34. data/ext/sha3/Optimized64/KeccakF-1600-opt64.c +0 -508
  35. data/ext/sha3/Optimized64/KeccakF-1600-unrolling.macros +0 -126
  36. data/ext/sha3/Optimized64/SnP-interface.h +0 -47
  37. data/ext/sha3/Reference/KeccakF-1600-reference.c +0 -311
  38. data/ext/sha3/Reference/KeccakF-reference.h +0 -26
  39. data/ext/sha3/Reference/SnP-FBWL-default.c +0 -96
  40. data/ext/sha3/Reference/SnP-FBWL-default.h +0 -26
  41. data/ext/sha3/Reference/SnP-interface.h +0 -42
  42. data/ext/sha3/Reference/displayIntermediateValues.c +0 -158
  43. data/ext/sha3/Reference/displayIntermediateValues.h +0 -34
  44. data/ext/sha3/SnP-Relaned.h +0 -249
@@ -1,249 +0,0 @@
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 _SnP_Relaned_h_
17
- #define _SnP_Relaned_h_
18
-
19
- /** Function to XOR data given as bytes into the state.
20
- * The bits to modify are restricted to be consecutive and to be in the same lane.
21
- * The bit positions that are affected by this function are
22
- * from @a lanePosition*(lane size in bits) + @a offset*8
23
- * to @a lanePosition*(lane size in bits) + @a offset*8 + @a length*8.
24
- * (The bit positions, the x,y,z coordinates and their link are defined in the "Keccak reference".)
25
- * @param state Pointer to the state.
26
- * @param lanePosition Index of the lane to be modified (x+5*y,
27
- * or bit position divided by the lane size).
28
- * @param data Pointer to the input data.
29
- * @param offset Offset in bytes within the lane.
30
- * @param length Number of bytes.
31
- * @pre 0 ≤ @a lanePosition < 25
32
- * @pre 0 ≤ @a offset < (lane size in bytes)
33
- * @pre 0 ≤ @a offset + @a length ≤ (lane size in bytes)
34
- */
35
- void SnP_XORBytesInLane(void *state, unsigned int lanePosition, const unsigned char *data, unsigned int offset, unsigned int length);
36
-
37
- /** Function to XOR data given as bytes into the state.
38
- * The bits to modify are restricted to start from the bit position 0 and
39
- * to span a whole number of lanes.
40
- * @param state Pointer to the state.
41
- * @param data Pointer to the input data.
42
- * @param laneCount The number of lanes, i.e., the length of the data
43
- * divided by the lane size.
44
- * @pre 0 ≤ @a laneCount ≤ 25
45
- */
46
- void SnP_XORLanes(void *state, const unsigned char *data, unsigned int laneCount);
47
-
48
- /** Function to overwrite data given as bytes into the state.
49
- * The bits to modify are restricted to be consecutive and to be in the same lane.
50
- * The bit positions that are affected by this function are
51
- * from @a lanePosition*(lane size in bits) + @a offset*8
52
- * to @a lanePosition*(lane size in bits) + @a offset*8 + @a length*8.
53
- * (The bit positions, the x,y,z coordinates and their link are defined in the "Keccak reference".)
54
- * @param state Pointer to the state.
55
- * @param lanePosition Index of the lane to be modified (x+5*y,
56
- * or bit position divided by the lane size).
57
- * @param data Pointer to the input data.
58
- * @param offset Offset in bytes within the lane.
59
- * @param length Number of bytes.
60
- * @pre 0 ≤ @a lanePosition < 25
61
- * @pre 0 ≤ @a offset < (lane size in bytes)
62
- * @pre 0 ≤ @a offset + @a length ≤ (lane size in bytes)
63
- */
64
- void SnP_OverwriteBytesInLane(void *state, unsigned int lanePosition, const unsigned char *data, unsigned int offset, unsigned int length);
65
-
66
- /** Function to overwrite data given as bytes into the state.
67
- * The bits to modify are restricted to start from the bit position 0 and
68
- * to span a whole number of lanes.
69
- * @param state Pointer to the state.
70
- * @param data Pointer to the input data.
71
- * @param laneCount The number of lanes, i.e., the length of the data
72
- * divided by the lane size.
73
- * @pre 0 ≤ @a laneCount ≤ 25
74
- */
75
- void SnP_OverwriteLanes(void *state, const unsigned char *data, unsigned int laneCount);
76
-
77
- /** Function to retrieve data from the state into bytes.
78
- * The bits to output are restricted to be consecutive and to be in the same lane.
79
- * The bit positions that are retrieved by this function are
80
- * from @a lanePosition*(lane size in bits) + @a offset*8
81
- * to @a lanePosition*(lane size in bits) + @a offset*8 + @a length*8.
82
- * (The bit positions, the x,y,z coordinates and their link are defined in the "Keccak reference".)
83
- * @param state Pointer to the state.
84
- * @param lanePosition Index of the lane to be read (x+5*y,
85
- * or bit position divided by the lane size).
86
- * @param data Pointer to the area where to store output data.
87
- * @param offset Offset in byte within the lane.
88
- * @param length Number of bytes.
89
- * @pre 0 ≤ @a lanePosition < 25
90
- * @pre 0 ≤ @a offset < (lane size in bytes)
91
- * @pre 0 ≤ @a offset + @a length ≤ (lane size in bytes)
92
- */
93
- void SnP_ExtractBytesInLane(const void *state, unsigned int lanePosition, unsigned char *data, unsigned int offset, unsigned int length);
94
-
95
- /** Function to retrieve data from the state into bytes.
96
- * The bits to output are restricted to start from the bit position 0 and
97
- * to span a whole number of lanes.
98
- * @param state Pointer to the state.
99
- * @param data Pointer to the area where to store output data.
100
- * @param laneCount The number of lanes, i.e., the length of the data
101
- * divided by the lane size.
102
- * @pre 0 ≤ @a laneCount ≤ 25
103
- */
104
- void SnP_ExtractLanes(const void *state, unsigned char *data, unsigned int laneCount);
105
-
106
- /** Function to retrieve data from the state into bytes and
107
- * to XOR them into the output buffer.
108
- * The bits to output are restricted to be consecutive and to be in the same lane.
109
- * The bit positions that are retrieved by this function are
110
- * from @a lanePosition*(lane size in bits) + @a offset*8
111
- * to @a lanePosition*(lane size in bits) + @a offset*8 + @a length*8.
112
- * (The bit positions, the x,y,z coordinates and their link are defined in the "Keccak reference".)
113
- * @param state Pointer to the state.
114
- * @param lanePosition Index of the lane to be read (x+5*y,
115
- * or bit position divided by the lane size).
116
- * @param data Pointer to the area where to XOR output data.
117
- * @param offset Offset in byte within the lane.
118
- * @param length Number of bytes.
119
- * @pre 0 ≤ @a lanePosition < 25
120
- * @pre 0 ≤ @a offset < (lane size in bytes)
121
- * @pre 0 ≤ @a offset + @a length ≤ (lane size in bytes)
122
- */
123
- void SnP_ExtractAndXORBytesInLane(const void *state, unsigned int lanePosition, unsigned char *data, unsigned int offset, unsigned int length);
124
-
125
- /** Function to retrieve data from the state into bytes and
126
- * to XOR them into the output buffer.
127
- * The bits to output are restricted to start from the bit position 0 and
128
- * to span a whole number of lanes.
129
- * @param state Pointer to the state.
130
- * @param data Pointer to the area where to XOR output data.
131
- * @param laneCount The number of lanes, i.e., the length of the data
132
- * divided by the lane size.
133
- * @pre 0 ≤ @a laneCount ≤ 25
134
- */
135
- void SnP_ExtractAndXORLanes(const void *state, unsigned char *data, unsigned int laneCount);
136
-
137
- #define SnP_XORBytes(state, data, offset, length) \
138
- { \
139
- if ((offset) == 0) { \
140
- SnP_XORLanes(state, data, (length)/SnP_laneLengthInBytes); \
141
- SnP_XORBytesInLane(state, \
142
- (length)/SnP_laneLengthInBytes, \
143
- (data)+((length)/SnP_laneLengthInBytes)*SnP_laneLengthInBytes, \
144
- 0, \
145
- (length)%SnP_laneLengthInBytes); \
146
- } \
147
- else { \
148
- unsigned int _sizeLeft = (length); \
149
- unsigned int _lanePosition = (offset)/SnP_laneLengthInBytes; \
150
- unsigned int _offsetInLane = (offset)%SnP_laneLengthInBytes; \
151
- const unsigned char *_curData = (data); \
152
- while(_sizeLeft > 0) { \
153
- unsigned int _bytesInLane = SnP_laneLengthInBytes - _offsetInLane; \
154
- if (_bytesInLane > _sizeLeft) \
155
- _bytesInLane = _sizeLeft; \
156
- SnP_XORBytesInLane(state, _lanePosition, _curData, _offsetInLane, _bytesInLane); \
157
- _sizeLeft -= _bytesInLane; \
158
- _lanePosition++; \
159
- _offsetInLane = 0; \
160
- _curData += _bytesInLane; \
161
- } \
162
- } \
163
- }
164
-
165
- #define SnP_OverwriteBytes(state, data, offset, length) \
166
- { \
167
- if ((offset) == 0) { \
168
- SnP_OverwriteLanes(state, data, (length)/SnP_laneLengthInBytes); \
169
- SnP_OverwriteBytesInLane(state, \
170
- (length)/SnP_laneLengthInBytes, \
171
- (data)+((length)/SnP_laneLengthInBytes)*SnP_laneLengthInBytes, \
172
- 0, \
173
- (length)%SnP_laneLengthInBytes); \
174
- } \
175
- else { \
176
- unsigned int _sizeLeft = (length); \
177
- unsigned int _lanePosition = (offset)/SnP_laneLengthInBytes; \
178
- unsigned int _offsetInLane = (offset)%SnP_laneLengthInBytes; \
179
- const unsigned char *_curData = (data); \
180
- while(_sizeLeft > 0) { \
181
- unsigned int _bytesInLane = SnP_laneLengthInBytes - _offsetInLane; \
182
- if (_bytesInLane > _sizeLeft) \
183
- _bytesInLane = _sizeLeft; \
184
- SnP_OverwriteBytesInLane(state, _lanePosition, _curData, _offsetInLane, _bytesInLane); \
185
- _sizeLeft -= _bytesInLane; \
186
- _lanePosition++; \
187
- _offsetInLane = 0; \
188
- _curData += _bytesInLane; \
189
- } \
190
- } \
191
- }
192
-
193
- #define SnP_ExtractBytes(state, data, offset, length) \
194
- { \
195
- if ((offset) == 0) { \
196
- SnP_ExtractLanes(state, data, (length)/SnP_laneLengthInBytes); \
197
- SnP_ExtractBytesInLane(state, \
198
- (length)/SnP_laneLengthInBytes, \
199
- (data)+((length)/SnP_laneLengthInBytes)*SnP_laneLengthInBytes, \
200
- 0, \
201
- (length)%SnP_laneLengthInBytes); \
202
- } \
203
- else { \
204
- unsigned int _sizeLeft = (length); \
205
- unsigned int _lanePosition = (offset)/SnP_laneLengthInBytes; \
206
- unsigned int _offsetInLane = (offset)%SnP_laneLengthInBytes; \
207
- unsigned char *_curData = (data); \
208
- while(_sizeLeft > 0) { \
209
- unsigned int _bytesInLane = SnP_laneLengthInBytes - _offsetInLane; \
210
- if (_bytesInLane > _sizeLeft) \
211
- _bytesInLane = _sizeLeft; \
212
- SnP_ExtractBytesInLane(state, _lanePosition, _curData, _offsetInLane, _bytesInLane); \
213
- _sizeLeft -= _bytesInLane; \
214
- _lanePosition++; \
215
- _offsetInLane = 0; \
216
- _curData += _bytesInLane; \
217
- } \
218
- } \
219
- }
220
-
221
- #define SnP_ExtractAndXORBytes(state, data, offset, length) \
222
- { \
223
- if ((offset) == 0) { \
224
- SnP_ExtractAndXORLanes(state, data, (length)/SnP_laneLengthInBytes); \
225
- SnP_ExtractAndXORBytesInLane(state, \
226
- (length)/SnP_laneLengthInBytes, \
227
- (data)+((length)/SnP_laneLengthInBytes)*SnP_laneLengthInBytes, \
228
- 0, \
229
- (length)%SnP_laneLengthInBytes); \
230
- } \
231
- else { \
232
- unsigned int _sizeLeft = (length); \
233
- unsigned int _lanePosition = (offset)/SnP_laneLengthInBytes; \
234
- unsigned int _offsetInLane = (offset)%SnP_laneLengthInBytes; \
235
- unsigned char *_curData = (data); \
236
- while(_sizeLeft > 0) { \
237
- unsigned int _bytesInLane = SnP_laneLengthInBytes - _offsetInLane; \
238
- if (_bytesInLane > _sizeLeft) \
239
- _bytesInLane = _sizeLeft; \
240
- SnP_ExtractAndXORBytesInLane(state, _lanePosition, _curData, _offsetInLane, _bytesInLane); \
241
- _sizeLeft -= _bytesInLane; \
242
- _lanePosition++; \
243
- _offsetInLane = 0; \
244
- _curData += _bytesInLane; \
245
- } \
246
- } \
247
- }
248
-
249
- #endif