sha3 1.0.4 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.md +8 -5
- data/certs/johanns.pem +23 -22
- data/ext/sha3/config.h +26 -0
- data/ext/sha3/digest.c +6 -6
- data/ext/sha3/extconf.rb +40 -10
- data/ext/sha3/lib/common/align.h +33 -0
- data/ext/sha3/{brg_endian.h → lib/common/brg_endian.h} +8 -7
- data/ext/sha3/{KeccakHash.c → lib/high/Keccak/FIPS202/KeccakHash.c} +26 -25
- data/ext/sha3/{KeccakHash.h → lib/high/Keccak/FIPS202/KeccakHash.h} +34 -19
- data/ext/sha3/lib/high/Keccak/KeccakSponge.c +111 -0
- data/ext/sha3/lib/high/Keccak/KeccakSponge.h +76 -0
- data/ext/sha3/lib/high/Keccak/KeccakSponge.inc +316 -0
- data/ext/sha3/lib/low/KeccakP-1600/common/KeccakP-1600-64.macros +748 -0
- data/ext/sha3/lib/low/KeccakP-1600/common/KeccakP-1600-unrolling.macros +305 -0
- data/ext/sha3/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-SnP.h +44 -0
- data/ext/sha3/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference.h +23 -0
- data/ext/sha3/lib/low/KeccakP-1600/ref-32bits/KeccakP-1600-reference32BI.c +625 -0
- data/ext/sha3/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-SnP.h +44 -0
- data/ext/sha3/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.c +444 -0
- data/ext/sha3/lib/low/KeccakP-1600/ref-64bits/KeccakP-1600-reference.h +23 -0
- data/lib/sha3/version.rb +1 -1
- data/sha3.gemspec +6 -5
- data/tests.sh +8 -7
- data.tar.gz.sig +0 -0
- metadata +50 -66
- metadata.gz.sig +0 -0
- data/ext/sha3/KeccakF-1600-interface.h +0 -40
- data/ext/sha3/KeccakSponge.c +0 -192
- data/ext/sha3/KeccakSponge.h +0 -113
- data/ext/sha3/Optimized64/KeccakF-1600-64.macros +0 -2199
- data/ext/sha3/Optimized64/KeccakF-1600-opt64-settings.h +0 -3
- data/ext/sha3/Optimized64/KeccakF-1600-opt64.c +0 -508
- data/ext/sha3/Optimized64/KeccakF-1600-unrolling.macros +0 -126
- data/ext/sha3/Optimized64/SnP-interface.h +0 -47
- data/ext/sha3/Reference/KeccakF-1600-reference.c +0 -311
- data/ext/sha3/Reference/KeccakF-reference.h +0 -26
- data/ext/sha3/Reference/SnP-FBWL-default.c +0 -96
- data/ext/sha3/Reference/SnP-FBWL-default.h +0 -26
- data/ext/sha3/Reference/SnP-interface.h +0 -42
- data/ext/sha3/Reference/displayIntermediateValues.c +0 -158
- data/ext/sha3/Reference/displayIntermediateValues.h +0 -34
- data/ext/sha3/SnP-Relaned.h +0 -249
data/ext/sha3/SnP-Relaned.h
DELETED
@@ -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
|