Raven Core
3.0.0
P2P Digital Currency
src
crypto
aes_helper.c
Go to the documentation of this file.
1
/* $Id: aes_helper.c 220 2010-06-09 09:21:50Z tp $ */
2
/*
3
* AES tables. This file is not meant to be compiled by itself; it
4
* is included by some hash function implementations. It contains
5
* the precomputed tables and helper macros for evaluating an AES
6
* round, optionally with a final XOR with a subkey.
7
*
8
* By default, this file defines the tables and macros for little-endian
9
* processing (i.e. it is assumed that the input bytes have been read
10
* from memory and assembled with the little-endian convention). If
11
* the 'AES_BIG_ENDIAN' macro is defined (to a non-zero integer value)
12
* when this file is included, then the tables and macros for big-endian
13
* processing are defined instead. The big-endian tables and macros have
14
* names distinct from the little-endian tables and macros, hence it is
15
* possible to have both simultaneously, by including this file twice
16
* (with and without the AES_BIG_ENDIAN macro).
17
*
18
* ==========================(LICENSE BEGIN)============================
19
*
20
* Copyright (c) 2007-2010 Projet RNRT SAPHIR
21
*
22
* Permission is hereby granted, free of charge, to any person obtaining
23
* a copy of this software and associated documentation files (the
24
* "Software"), to deal in the Software without restriction, including
25
* without limitation the rights to use, copy, modify, merge, publish,
26
* distribute, sublicense, and/or sell copies of the Software, and to
27
* permit persons to whom the Software is furnished to do so, subject to
28
* the following conditions:
29
*
30
* The above copyright notice and this permission notice shall be
31
* included in all copies or substantial portions of the Software.
32
*
33
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
34
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
35
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
36
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
37
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
38
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
39
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
40
*
41
* ===========================(LICENSE END)=============================
42
*
43
* @author Thomas Pornin <thomas.pornin@cryptolog.com>
44
*/
45
46
#include "
sph_types.h
"
47
#ifdef __cplusplus
48
extern
"C"
{
49
#endif
50
#if AES_BIG_ENDIAN
51
52
#define AESx(x) ( ((SPH_C32(x) >> 24) & SPH_C32(0x000000FF)) \
53
| ((SPH_C32(x) >> 8) & SPH_C32(0x0000FF00)) \
54
| ((SPH_C32(x) << 8) & SPH_C32(0x00FF0000)) \
55
| ((SPH_C32(x) << 24) & SPH_C32(0xFF000000)))
56
57
#define AES0 AES0_BE
58
#define AES1 AES1_BE
59
#define AES2 AES2_BE
60
#define AES3 AES3_BE
61
62
#define AES_ROUND_BE(X0, X1, X2, X3, K0, K1, K2, K3, Y0, Y1, Y2, Y3) do { \
63
(Y0) = AES0[((X0) >> 24) & 0xFF] \
64
^ AES1[((X1) >> 16) & 0xFF] \
65
^ AES2[((X2) >> 8) & 0xFF] \
66
^ AES3[(X3) & 0xFF] ^ (K0); \
67
(Y1) = AES0[((X1) >> 24) & 0xFF] \
68
^ AES1[((X2) >> 16) & 0xFF] \
69
^ AES2[((X3) >> 8) & 0xFF] \
70
^ AES3[(X0) & 0xFF] ^ (K1); \
71
(Y2) = AES0[((X2) >> 24) & 0xFF] \
72
^ AES1[((X3) >> 16) & 0xFF] \
73
^ AES2[((X0) >> 8) & 0xFF] \
74
^ AES3[(X1) & 0xFF] ^ (K2); \
75
(Y3) = AES0[((X3) >> 24) & 0xFF] \
76
^ AES1[((X0) >> 16) & 0xFF] \
77
^ AES2[((X1) >> 8) & 0xFF] \
78
^ AES3[(X2) & 0xFF] ^ (K3); \
79
} while (0)
80
81
#define AES_ROUND_NOKEY_BE(X0, X1, X2, X3, Y0, Y1, Y2, Y3) \
82
AES_ROUND_BE(X0, X1, X2, X3, 0, 0, 0, 0, Y0, Y1, Y2, Y3)
83
84
#else
85
86
#define AESx(x) SPH_C32(x)
87
#define AES0 AES0_LE
88
#define AES1 AES1_LE
89
#define AES2 AES2_LE
90
#define AES3 AES3_LE
91
92
#define AES_ROUND_LE(X0, X1, X2, X3, K0, K1, K2, K3, Y0, Y1, Y2, Y3) do { \
93
(Y0) = AES0[(X0) & 0xFF] \
94
^ AES1[((X1) >> 8) & 0xFF] \
95
^ AES2[((X2) >> 16) & 0xFF] \
96
^ AES3[((X3) >> 24) & 0xFF] ^ (K0); \
97
(Y1) = AES0[(X1) & 0xFF] \
98
^ AES1[((X2) >> 8) & 0xFF] \
99
^ AES2[((X3) >> 16) & 0xFF] \
100
^ AES3[((X0) >> 24) & 0xFF] ^ (K1); \
101
(Y2) = AES0[(X2) & 0xFF] \
102
^ AES1[((X3) >> 8) & 0xFF] \
103
^ AES2[((X0) >> 16) & 0xFF] \
104
^ AES3[((X1) >> 24) & 0xFF] ^ (K2); \
105
(Y3) = AES0[(X3) & 0xFF] \
106
^ AES1[((X0) >> 8) & 0xFF] \
107
^ AES2[((X1) >> 16) & 0xFF] \
108
^ AES3[((X2) >> 24) & 0xFF] ^ (K3); \
109
} while (0)
110
111
#define AES_ROUND_NOKEY_LE(X0, X1, X2, X3, Y0, Y1, Y2, Y3) \
112
AES_ROUND_LE(X0, X1, X2, X3, 0, 0, 0, 0, Y0, Y1, Y2, Y3)
113
114
#endif
115
116
/*
117
* The AES*[] tables allow us to perform a fast evaluation of an AES
118
* round; table AESi[] combines SubBytes for a byte at row i, and
119
* MixColumns for the column where that byte goes after ShiftRows.
120
*/
121
122
static
const
sph_u32
AES0
[256] = {
123
AESx
(0xA56363C6),
AESx
(0x847C7CF8),
AESx
(0x997777EE),
AESx
(0x8D7B7BF6),
124
AESx
(0x0DF2F2FF),
AESx
(0xBD6B6BD6),
AESx
(0xB16F6FDE),
AESx
(0x54C5C591),
125
AESx
(0x50303060),
AESx
(0x03010102),
AESx
(0xA96767CE),
AESx
(0x7D2B2B56),
126
AESx
(0x19FEFEE7),
AESx
(0x62D7D7B5),
AESx
(0xE6ABAB4D),
AESx
(0x9A7676EC),
127
AESx
(0x45CACA8F),
AESx
(0x9D82821F),
AESx
(0x40C9C989),
AESx
(0x877D7DFA),
128
AESx
(0x15FAFAEF),
AESx
(0xEB5959B2),
AESx
(0xC947478E),
AESx
(0x0BF0F0FB),
129
AESx
(0xECADAD41),
AESx
(0x67D4D4B3),
AESx
(0xFDA2A25F),
AESx
(0xEAAFAF45),
130
AESx
(0xBF9C9C23),
AESx
(0xF7A4A453),
AESx
(0x967272E4),
AESx
(0x5BC0C09B),
131
AESx
(0xC2B7B775),
AESx
(0x1CFDFDE1),
AESx
(0xAE93933D),
AESx
(0x6A26264C),
132
AESx
(0x5A36366C),
AESx
(0x413F3F7E),
AESx
(0x02F7F7F5),
AESx
(0x4FCCCC83),
133
AESx
(0x5C343468),
AESx
(0xF4A5A551),
AESx
(0x34E5E5D1),
AESx
(0x08F1F1F9),
134
AESx
(0x937171E2),
AESx
(0x73D8D8AB),
AESx
(0x53313162),
AESx
(0x3F15152A),
135
AESx
(0x0C040408),
AESx
(0x52C7C795),
AESx
(0x65232346),
AESx
(0x5EC3C39D),
136
AESx
(0x28181830),
AESx
(0xA1969637),
AESx
(0x0F05050A),
AESx
(0xB59A9A2F),
137
AESx
(0x0907070E),
AESx
(0x36121224),
AESx
(0x9B80801B),
AESx
(0x3DE2E2DF),
138
AESx
(0x26EBEBCD),
AESx
(0x6927274E),
AESx
(0xCDB2B27F),
AESx
(0x9F7575EA),
139
AESx
(0x1B090912),
AESx
(0x9E83831D),
AESx
(0x742C2C58),
AESx
(0x2E1A1A34),
140
AESx
(0x2D1B1B36),
AESx
(0xB26E6EDC),
AESx
(0xEE5A5AB4),
AESx
(0xFBA0A05B),
141
AESx
(0xF65252A4),
AESx
(0x4D3B3B76),
AESx
(0x61D6D6B7),
AESx
(0xCEB3B37D),
142
AESx
(0x7B292952),
AESx
(0x3EE3E3DD),
AESx
(0x712F2F5E),
AESx
(0x97848413),
143
AESx
(0xF55353A6),
AESx
(0x68D1D1B9),
AESx
(0x00000000),
AESx
(0x2CEDEDC1),
144
AESx
(0x60202040),
AESx
(0x1FFCFCE3),
AESx
(0xC8B1B179),
AESx
(0xED5B5BB6),
145
AESx
(0xBE6A6AD4),
AESx
(0x46CBCB8D),
AESx
(0xD9BEBE67),
AESx
(0x4B393972),
146
AESx
(0xDE4A4A94),
AESx
(0xD44C4C98),
AESx
(0xE85858B0),
AESx
(0x4ACFCF85),
147
AESx
(0x6BD0D0BB),
AESx
(0x2AEFEFC5),
AESx
(0xE5AAAA4F),
AESx
(0x16FBFBED),
148
AESx
(0xC5434386),
AESx
(0xD74D4D9A),
AESx
(0x55333366),
AESx
(0x94858511),
149
AESx
(0xCF45458A),
AESx
(0x10F9F9E9),
AESx
(0x06020204),
AESx
(0x817F7FFE),
150
AESx
(0xF05050A0),
AESx
(0x443C3C78),
AESx
(0xBA9F9F25),
AESx
(0xE3A8A84B),
151
AESx
(0xF35151A2),
AESx
(0xFEA3A35D),
AESx
(0xC0404080),
AESx
(0x8A8F8F05),
152
AESx
(0xAD92923F),
AESx
(0xBC9D9D21),
AESx
(0x48383870),
AESx
(0x04F5F5F1),
153
AESx
(0xDFBCBC63),
AESx
(0xC1B6B677),
AESx
(0x75DADAAF),
AESx
(0x63212142),
154
AESx
(0x30101020),
AESx
(0x1AFFFFE5),
AESx
(0x0EF3F3FD),
AESx
(0x6DD2D2BF),
155
AESx
(0x4CCDCD81),
AESx
(0x140C0C18),
AESx
(0x35131326),
AESx
(0x2FECECC3),
156
AESx
(0xE15F5FBE),
AESx
(0xA2979735),
AESx
(0xCC444488),
AESx
(0x3917172E),
157
AESx
(0x57C4C493),
AESx
(0xF2A7A755),
AESx
(0x827E7EFC),
AESx
(0x473D3D7A),
158
AESx
(0xAC6464C8),
AESx
(0xE75D5DBA),
AESx
(0x2B191932),
AESx
(0x957373E6),
159
AESx
(0xA06060C0),
AESx
(0x98818119),
AESx
(0xD14F4F9E),
AESx
(0x7FDCDCA3),
160
AESx
(0x66222244),
AESx
(0x7E2A2A54),
AESx
(0xAB90903B),
AESx
(0x8388880B),
161
AESx
(0xCA46468C),
AESx
(0x29EEEEC7),
AESx
(0xD3B8B86B),
AESx
(0x3C141428),
162
AESx
(0x79DEDEA7),
AESx
(0xE25E5EBC),
AESx
(0x1D0B0B16),
AESx
(0x76DBDBAD),
163
AESx
(0x3BE0E0DB),
AESx
(0x56323264),
AESx
(0x4E3A3A74),
AESx
(0x1E0A0A14),
164
AESx
(0xDB494992),
AESx
(0x0A06060C),
AESx
(0x6C242448),
AESx
(0xE45C5CB8),
165
AESx
(0x5DC2C29F),
AESx
(0x6ED3D3BD),
AESx
(0xEFACAC43),
AESx
(0xA66262C4),
166
AESx
(0xA8919139),
AESx
(0xA4959531),
AESx
(0x37E4E4D3),
AESx
(0x8B7979F2),
167
AESx
(0x32E7E7D5),
AESx
(0x43C8C88B),
AESx
(0x5937376E),
AESx
(0xB76D6DDA),
168
AESx
(0x8C8D8D01),
AESx
(0x64D5D5B1),
AESx
(0xD24E4E9C),
AESx
(0xE0A9A949),
169
AESx
(0xB46C6CD8),
AESx
(0xFA5656AC),
AESx
(0x07F4F4F3),
AESx
(0x25EAEACF),
170
AESx
(0xAF6565CA),
AESx
(0x8E7A7AF4),
AESx
(0xE9AEAE47),
AESx
(0x18080810),
171
AESx
(0xD5BABA6F),
AESx
(0x887878F0),
AESx
(0x6F25254A),
AESx
(0x722E2E5C),
172
AESx
(0x241C1C38),
AESx
(0xF1A6A657),
AESx
(0xC7B4B473),
AESx
(0x51C6C697),
173
AESx
(0x23E8E8CB),
AESx
(0x7CDDDDA1),
AESx
(0x9C7474E8),
AESx
(0x211F1F3E),
174
AESx
(0xDD4B4B96),
AESx
(0xDCBDBD61),
AESx
(0x868B8B0D),
AESx
(0x858A8A0F),
175
AESx
(0x907070E0),
AESx
(0x423E3E7C),
AESx
(0xC4B5B571),
AESx
(0xAA6666CC),
176
AESx
(0xD8484890),
AESx
(0x05030306),
AESx
(0x01F6F6F7),
AESx
(0x120E0E1C),
177
AESx
(0xA36161C2),
AESx
(0x5F35356A),
AESx
(0xF95757AE),
AESx
(0xD0B9B969),
178
AESx
(0x91868617),
AESx
(0x58C1C199),
AESx
(0x271D1D3A),
AESx
(0xB99E9E27),
179
AESx
(0x38E1E1D9),
AESx
(0x13F8F8EB),
AESx
(0xB398982B),
AESx
(0x33111122),
180
AESx
(0xBB6969D2),
AESx
(0x70D9D9A9),
AESx
(0x898E8E07),
AESx
(0xA7949433),
181
AESx
(0xB69B9B2D),
AESx
(0x221E1E3C),
AESx
(0x92878715),
AESx
(0x20E9E9C9),
182
AESx
(0x49CECE87),
AESx
(0xFF5555AA),
AESx
(0x78282850),
AESx
(0x7ADFDFA5),
183
AESx
(0x8F8C8C03),
AESx
(0xF8A1A159),
AESx
(0x80898909),
AESx
(0x170D0D1A),
184
AESx
(0xDABFBF65),
AESx
(0x31E6E6D7),
AESx
(0xC6424284),
AESx
(0xB86868D0),
185
AESx
(0xC3414182),
AESx
(0xB0999929),
AESx
(0x772D2D5A),
AESx
(0x110F0F1E),
186
AESx
(0xCBB0B07B),
AESx
(0xFC5454A8),
AESx
(0xD6BBBB6D),
AESx
(0x3A16162C)
187
};
188
189
static
const
sph_u32
AES1
[256] = {
190
AESx
(0x6363C6A5),
AESx
(0x7C7CF884),
AESx
(0x7777EE99),
AESx
(0x7B7BF68D),
191
AESx
(0xF2F2FF0D),
AESx
(0x6B6BD6BD),
AESx
(0x6F6FDEB1),
AESx
(0xC5C59154),
192
AESx
(0x30306050),
AESx
(0x01010203),
AESx
(0x6767CEA9),
AESx
(0x2B2B567D),
193
AESx
(0xFEFEE719),
AESx
(0xD7D7B562),
AESx
(0xABAB4DE6),
AESx
(0x7676EC9A),
194
AESx
(0xCACA8F45),
AESx
(0x82821F9D),
AESx
(0xC9C98940),
AESx
(0x7D7DFA87),
195
AESx
(0xFAFAEF15),
AESx
(0x5959B2EB),
AESx
(0x47478EC9),
AESx
(0xF0F0FB0B),
196
AESx
(0xADAD41EC),
AESx
(0xD4D4B367),
AESx
(0xA2A25FFD),
AESx
(0xAFAF45EA),
197
AESx
(0x9C9C23BF),
AESx
(0xA4A453F7),
AESx
(0x7272E496),
AESx
(0xC0C09B5B),
198
AESx
(0xB7B775C2),
AESx
(0xFDFDE11C),
AESx
(0x93933DAE),
AESx
(0x26264C6A),
199
AESx
(0x36366C5A),
AESx
(0x3F3F7E41),
AESx
(0xF7F7F502),
AESx
(0xCCCC834F),
200
AESx
(0x3434685C),
AESx
(0xA5A551F4),
AESx
(0xE5E5D134),
AESx
(0xF1F1F908),
201
AESx
(0x7171E293),
AESx
(0xD8D8AB73),
AESx
(0x31316253),
AESx
(0x15152A3F),
202
AESx
(0x0404080C),
AESx
(0xC7C79552),
AESx
(0x23234665),
AESx
(0xC3C39D5E),
203
AESx
(0x18183028),
AESx
(0x969637A1),
AESx
(0x05050A0F),
AESx
(0x9A9A2FB5),
204
AESx
(0x07070E09),
AESx
(0x12122436),
AESx
(0x80801B9B),
AESx
(0xE2E2DF3D),
205
AESx
(0xEBEBCD26),
AESx
(0x27274E69),
AESx
(0xB2B27FCD),
AESx
(0x7575EA9F),
206
AESx
(0x0909121B),
AESx
(0x83831D9E),
AESx
(0x2C2C5874),
AESx
(0x1A1A342E),
207
AESx
(0x1B1B362D),
AESx
(0x6E6EDCB2),
AESx
(0x5A5AB4EE),
AESx
(0xA0A05BFB),
208
AESx
(0x5252A4F6),
AESx
(0x3B3B764D),
AESx
(0xD6D6B761),
AESx
(0xB3B37DCE),
209
AESx
(0x2929527B),
AESx
(0xE3E3DD3E),
AESx
(0x2F2F5E71),
AESx
(0x84841397),
210
AESx
(0x5353A6F5),
AESx
(0xD1D1B968),
AESx
(0x00000000),
AESx
(0xEDEDC12C),
211
AESx
(0x20204060),
AESx
(0xFCFCE31F),
AESx
(0xB1B179C8),
AESx
(0x5B5BB6ED),
212
AESx
(0x6A6AD4BE),
AESx
(0xCBCB8D46),
AESx
(0xBEBE67D9),
AESx
(0x3939724B),
213
AESx
(0x4A4A94DE),
AESx
(0x4C4C98D4),
AESx
(0x5858B0E8),
AESx
(0xCFCF854A),
214
AESx
(0xD0D0BB6B),
AESx
(0xEFEFC52A),
AESx
(0xAAAA4FE5),
AESx
(0xFBFBED16),
215
AESx
(0x434386C5),
AESx
(0x4D4D9AD7),
AESx
(0x33336655),
AESx
(0x85851194),
216
AESx
(0x45458ACF),
AESx
(0xF9F9E910),
AESx
(0x02020406),
AESx
(0x7F7FFE81),
217
AESx
(0x5050A0F0),
AESx
(0x3C3C7844),
AESx
(0x9F9F25BA),
AESx
(0xA8A84BE3),
218
AESx
(0x5151A2F3),
AESx
(0xA3A35DFE),
AESx
(0x404080C0),
AESx
(0x8F8F058A),
219
AESx
(0x92923FAD),
AESx
(0x9D9D21BC),
AESx
(0x38387048),
AESx
(0xF5F5F104),
220
AESx
(0xBCBC63DF),
AESx
(0xB6B677C1),
AESx
(0xDADAAF75),
AESx
(0x21214263),
221
AESx
(0x10102030),
AESx
(0xFFFFE51A),
AESx
(0xF3F3FD0E),
AESx
(0xD2D2BF6D),
222
AESx
(0xCDCD814C),
AESx
(0x0C0C1814),
AESx
(0x13132635),
AESx
(0xECECC32F),
223
AESx
(0x5F5FBEE1),
AESx
(0x979735A2),
AESx
(0x444488CC),
AESx
(0x17172E39),
224
AESx
(0xC4C49357),
AESx
(0xA7A755F2),
AESx
(0x7E7EFC82),
AESx
(0x3D3D7A47),
225
AESx
(0x6464C8AC),
AESx
(0x5D5DBAE7),
AESx
(0x1919322B),
AESx
(0x7373E695),
226
AESx
(0x6060C0A0),
AESx
(0x81811998),
AESx
(0x4F4F9ED1),
AESx
(0xDCDCA37F),
227
AESx
(0x22224466),
AESx
(0x2A2A547E),
AESx
(0x90903BAB),
AESx
(0x88880B83),
228
AESx
(0x46468CCA),
AESx
(0xEEEEC729),
AESx
(0xB8B86BD3),
AESx
(0x1414283C),
229
AESx
(0xDEDEA779),
AESx
(0x5E5EBCE2),
AESx
(0x0B0B161D),
AESx
(0xDBDBAD76),
230
AESx
(0xE0E0DB3B),
AESx
(0x32326456),
AESx
(0x3A3A744E),
AESx
(0x0A0A141E),
231
AESx
(0x494992DB),
AESx
(0x06060C0A),
AESx
(0x2424486C),
AESx
(0x5C5CB8E4),
232
AESx
(0xC2C29F5D),
AESx
(0xD3D3BD6E),
AESx
(0xACAC43EF),
AESx
(0x6262C4A6),
233
AESx
(0x919139A8),
AESx
(0x959531A4),
AESx
(0xE4E4D337),
AESx
(0x7979F28B),
234
AESx
(0xE7E7D532),
AESx
(0xC8C88B43),
AESx
(0x37376E59),
AESx
(0x6D6DDAB7),
235
AESx
(0x8D8D018C),
AESx
(0xD5D5B164),
AESx
(0x4E4E9CD2),
AESx
(0xA9A949E0),
236
AESx
(0x6C6CD8B4),
AESx
(0x5656ACFA),
AESx
(0xF4F4F307),
AESx
(0xEAEACF25),
237
AESx
(0x6565CAAF),
AESx
(0x7A7AF48E),
AESx
(0xAEAE47E9),
AESx
(0x08081018),
238
AESx
(0xBABA6FD5),
AESx
(0x7878F088),
AESx
(0x25254A6F),
AESx
(0x2E2E5C72),
239
AESx
(0x1C1C3824),
AESx
(0xA6A657F1),
AESx
(0xB4B473C7),
AESx
(0xC6C69751),
240
AESx
(0xE8E8CB23),
AESx
(0xDDDDA17C),
AESx
(0x7474E89C),
AESx
(0x1F1F3E21),
241
AESx
(0x4B4B96DD),
AESx
(0xBDBD61DC),
AESx
(0x8B8B0D86),
AESx
(0x8A8A0F85),
242
AESx
(0x7070E090),
AESx
(0x3E3E7C42),
AESx
(0xB5B571C4),
AESx
(0x6666CCAA),
243
AESx
(0x484890D8),
AESx
(0x03030605),
AESx
(0xF6F6F701),
AESx
(0x0E0E1C12),
244
AESx
(0x6161C2A3),
AESx
(0x35356A5F),
AESx
(0x5757AEF9),
AESx
(0xB9B969D0),
245
AESx
(0x86861791),
AESx
(0xC1C19958),
AESx
(0x1D1D3A27),
AESx
(0x9E9E27B9),
246
AESx
(0xE1E1D938),
AESx
(0xF8F8EB13),
AESx
(0x98982BB3),
AESx
(0x11112233),
247
AESx
(0x6969D2BB),
AESx
(0xD9D9A970),
AESx
(0x8E8E0789),
AESx
(0x949433A7),
248
AESx
(0x9B9B2DB6),
AESx
(0x1E1E3C22),
AESx
(0x87871592),
AESx
(0xE9E9C920),
249
AESx
(0xCECE8749),
AESx
(0x5555AAFF),
AESx
(0x28285078),
AESx
(0xDFDFA57A),
250
AESx
(0x8C8C038F),
AESx
(0xA1A159F8),
AESx
(0x89890980),
AESx
(0x0D0D1A17),
251
AESx
(0xBFBF65DA),
AESx
(0xE6E6D731),
AESx
(0x424284C6),
AESx
(0x6868D0B8),
252
AESx
(0x414182C3),
AESx
(0x999929B0),
AESx
(0x2D2D5A77),
AESx
(0x0F0F1E11),
253
AESx
(0xB0B07BCB),
AESx
(0x5454A8FC),
AESx
(0xBBBB6DD6),
AESx
(0x16162C3A)
254
};
255
256
static
const
sph_u32
AES2
[256] = {
257
AESx
(0x63C6A563),
AESx
(0x7CF8847C),
AESx
(0x77EE9977),
AESx
(0x7BF68D7B),
258
AESx
(0xF2FF0DF2),
AESx
(0x6BD6BD6B),
AESx
(0x6FDEB16F),
AESx
(0xC59154C5),
259
AESx
(0x30605030),
AESx
(0x01020301),
AESx
(0x67CEA967),
AESx
(0x2B567D2B),
260
AESx
(0xFEE719FE),
AESx
(0xD7B562D7),
AESx
(0xAB4DE6AB),
AESx
(0x76EC9A76),
261
AESx
(0xCA8F45CA),
AESx
(0x821F9D82),
AESx
(0xC98940C9),
AESx
(0x7DFA877D),
262
AESx
(0xFAEF15FA),
AESx
(0x59B2EB59),
AESx
(0x478EC947),
AESx
(0xF0FB0BF0),
263
AESx
(0xAD41ECAD),
AESx
(0xD4B367D4),
AESx
(0xA25FFDA2),
AESx
(0xAF45EAAF),
264
AESx
(0x9C23BF9C),
AESx
(0xA453F7A4),
AESx
(0x72E49672),
AESx
(0xC09B5BC0),
265
AESx
(0xB775C2B7),
AESx
(0xFDE11CFD),
AESx
(0x933DAE93),
AESx
(0x264C6A26),
266
AESx
(0x366C5A36),
AESx
(0x3F7E413F),
AESx
(0xF7F502F7),
AESx
(0xCC834FCC),
267
AESx
(0x34685C34),
AESx
(0xA551F4A5),
AESx
(0xE5D134E5),
AESx
(0xF1F908F1),
268
AESx
(0x71E29371),
AESx
(0xD8AB73D8),
AESx
(0x31625331),
AESx
(0x152A3F15),
269
AESx
(0x04080C04),
AESx
(0xC79552C7),
AESx
(0x23466523),
AESx
(0xC39D5EC3),
270
AESx
(0x18302818),
AESx
(0x9637A196),
AESx
(0x050A0F05),
AESx
(0x9A2FB59A),
271
AESx
(0x070E0907),
AESx
(0x12243612),
AESx
(0x801B9B80),
AESx
(0xE2DF3DE2),
272
AESx
(0xEBCD26EB),
AESx
(0x274E6927),
AESx
(0xB27FCDB2),
AESx
(0x75EA9F75),
273
AESx
(0x09121B09),
AESx
(0x831D9E83),
AESx
(0x2C58742C),
AESx
(0x1A342E1A),
274
AESx
(0x1B362D1B),
AESx
(0x6EDCB26E),
AESx
(0x5AB4EE5A),
AESx
(0xA05BFBA0),
275
AESx
(0x52A4F652),
AESx
(0x3B764D3B),
AESx
(0xD6B761D6),
AESx
(0xB37DCEB3),
276
AESx
(0x29527B29),
AESx
(0xE3DD3EE3),
AESx
(0x2F5E712F),
AESx
(0x84139784),
277
AESx
(0x53A6F553),
AESx
(0xD1B968D1),
AESx
(0x00000000),
AESx
(0xEDC12CED),
278
AESx
(0x20406020),
AESx
(0xFCE31FFC),
AESx
(0xB179C8B1),
AESx
(0x5BB6ED5B),
279
AESx
(0x6AD4BE6A),
AESx
(0xCB8D46CB),
AESx
(0xBE67D9BE),
AESx
(0x39724B39),
280
AESx
(0x4A94DE4A),
AESx
(0x4C98D44C),
AESx
(0x58B0E858),
AESx
(0xCF854ACF),
281
AESx
(0xD0BB6BD0),
AESx
(0xEFC52AEF),
AESx
(0xAA4FE5AA),
AESx
(0xFBED16FB),
282
AESx
(0x4386C543),
AESx
(0x4D9AD74D),
AESx
(0x33665533),
AESx
(0x85119485),
283
AESx
(0x458ACF45),
AESx
(0xF9E910F9),
AESx
(0x02040602),
AESx
(0x7FFE817F),
284
AESx
(0x50A0F050),
AESx
(0x3C78443C),
AESx
(0x9F25BA9F),
AESx
(0xA84BE3A8),
285
AESx
(0x51A2F351),
AESx
(0xA35DFEA3),
AESx
(0x4080C040),
AESx
(0x8F058A8F),
286
AESx
(0x923FAD92),
AESx
(0x9D21BC9D),
AESx
(0x38704838),
AESx
(0xF5F104F5),
287
AESx
(0xBC63DFBC),
AESx
(0xB677C1B6),
AESx
(0xDAAF75DA),
AESx
(0x21426321),
288
AESx
(0x10203010),
AESx
(0xFFE51AFF),
AESx
(0xF3FD0EF3),
AESx
(0xD2BF6DD2),
289
AESx
(0xCD814CCD),
AESx
(0x0C18140C),
AESx
(0x13263513),
AESx
(0xECC32FEC),
290
AESx
(0x5FBEE15F),
AESx
(0x9735A297),
AESx
(0x4488CC44),
AESx
(0x172E3917),
291
AESx
(0xC49357C4),
AESx
(0xA755F2A7),
AESx
(0x7EFC827E),
AESx
(0x3D7A473D),
292
AESx
(0x64C8AC64),
AESx
(0x5DBAE75D),
AESx
(0x19322B19),
AESx
(0x73E69573),
293
AESx
(0x60C0A060),
AESx
(0x81199881),
AESx
(0x4F9ED14F),
AESx
(0xDCA37FDC),
294
AESx
(0x22446622),
AESx
(0x2A547E2A),
AESx
(0x903BAB90),
AESx
(0x880B8388),
295
AESx
(0x468CCA46),
AESx
(0xEEC729EE),
AESx
(0xB86BD3B8),
AESx
(0x14283C14),
296
AESx
(0xDEA779DE),
AESx
(0x5EBCE25E),
AESx
(0x0B161D0B),
AESx
(0xDBAD76DB),
297
AESx
(0xE0DB3BE0),
AESx
(0x32645632),
AESx
(0x3A744E3A),
AESx
(0x0A141E0A),
298
AESx
(0x4992DB49),
AESx
(0x060C0A06),
AESx
(0x24486C24),
AESx
(0x5CB8E45C),
299
AESx
(0xC29F5DC2),
AESx
(0xD3BD6ED3),
AESx
(0xAC43EFAC),
AESx
(0x62C4A662),
300
AESx
(0x9139A891),
AESx
(0x9531A495),
AESx
(0xE4D337E4),
AESx
(0x79F28B79),
301
AESx
(0xE7D532E7),
AESx
(0xC88B43C8),
AESx
(0x376E5937),
AESx
(0x6DDAB76D),
302
AESx
(0x8D018C8D),
AESx
(0xD5B164D5),
AESx
(0x4E9CD24E),
AESx
(0xA949E0A9),
303
AESx
(0x6CD8B46C),
AESx
(0x56ACFA56),
AESx
(0xF4F307F4),
AESx
(0xEACF25EA),
304
AESx
(0x65CAAF65),
AESx
(0x7AF48E7A),
AESx
(0xAE47E9AE),
AESx
(0x08101808),
305
AESx
(0xBA6FD5BA),
AESx
(0x78F08878),
AESx
(0x254A6F25),
AESx
(0x2E5C722E),
306
AESx
(0x1C38241C),
AESx
(0xA657F1A6),
AESx
(0xB473C7B4),
AESx
(0xC69751C6),
307
AESx
(0xE8CB23E8),
AESx
(0xDDA17CDD),
AESx
(0x74E89C74),
AESx
(0x1F3E211F),
308
AESx
(0x4B96DD4B),
AESx
(0xBD61DCBD),
AESx
(0x8B0D868B),
AESx
(0x8A0F858A),
309
AESx
(0x70E09070),
AESx
(0x3E7C423E),
AESx
(0xB571C4B5),
AESx
(0x66CCAA66),
310
AESx
(0x4890D848),
AESx
(0x03060503),
AESx
(0xF6F701F6),
AESx
(0x0E1C120E),
311
AESx
(0x61C2A361),
AESx
(0x356A5F35),
AESx
(0x57AEF957),
AESx
(0xB969D0B9),
312
AESx
(0x86179186),
AESx
(0xC19958C1),
AESx
(0x1D3A271D),
AESx
(0x9E27B99E),
313
AESx
(0xE1D938E1),
AESx
(0xF8EB13F8),
AESx
(0x982BB398),
AESx
(0x11223311),
314
AESx
(0x69D2BB69),
AESx
(0xD9A970D9),
AESx
(0x8E07898E),
AESx
(0x9433A794),
315
AESx
(0x9B2DB69B),
AESx
(0x1E3C221E),
AESx
(0x87159287),
AESx
(0xE9C920E9),
316
AESx
(0xCE8749CE),
AESx
(0x55AAFF55),
AESx
(0x28507828),
AESx
(0xDFA57ADF),
317
AESx
(0x8C038F8C),
AESx
(0xA159F8A1),
AESx
(0x89098089),
AESx
(0x0D1A170D),
318
AESx
(0xBF65DABF),
AESx
(0xE6D731E6),
AESx
(0x4284C642),
AESx
(0x68D0B868),
319
AESx
(0x4182C341),
AESx
(0x9929B099),
AESx
(0x2D5A772D),
AESx
(0x0F1E110F),
320
AESx
(0xB07BCBB0),
AESx
(0x54A8FC54),
AESx
(0xBB6DD6BB),
AESx
(0x162C3A16)
321
};
322
323
static
const
sph_u32
AES3
[256] = {
324
AESx
(0xC6A56363),
AESx
(0xF8847C7C),
AESx
(0xEE997777),
AESx
(0xF68D7B7B),
325
AESx
(0xFF0DF2F2),
AESx
(0xD6BD6B6B),
AESx
(0xDEB16F6F),
AESx
(0x9154C5C5),
326
AESx
(0x60503030),
AESx
(0x02030101),
AESx
(0xCEA96767),
AESx
(0x567D2B2B),
327
AESx
(0xE719FEFE),
AESx
(0xB562D7D7),
AESx
(0x4DE6ABAB),
AESx
(0xEC9A7676),
328
AESx
(0x8F45CACA),
AESx
(0x1F9D8282),
AESx
(0x8940C9C9),
AESx
(0xFA877D7D),
329
AESx
(0xEF15FAFA),
AESx
(0xB2EB5959),
AESx
(0x8EC94747),
AESx
(0xFB0BF0F0),
330
AESx
(0x41ECADAD),
AESx
(0xB367D4D4),
AESx
(0x5FFDA2A2),
AESx
(0x45EAAFAF),
331
AESx
(0x23BF9C9C),
AESx
(0x53F7A4A4),
AESx
(0xE4967272),
AESx
(0x9B5BC0C0),
332
AESx
(0x75C2B7B7),
AESx
(0xE11CFDFD),
AESx
(0x3DAE9393),
AESx
(0x4C6A2626),
333
AESx
(0x6C5A3636),
AESx
(0x7E413F3F),
AESx
(0xF502F7F7),
AESx
(0x834FCCCC),
334
AESx
(0x685C3434),
AESx
(0x51F4A5A5),
AESx
(0xD134E5E5),
AESx
(0xF908F1F1),
335
AESx
(0xE2937171),
AESx
(0xAB73D8D8),
AESx
(0x62533131),
AESx
(0x2A3F1515),
336
AESx
(0x080C0404),
AESx
(0x9552C7C7),
AESx
(0x46652323),
AESx
(0x9D5EC3C3),
337
AESx
(0x30281818),
AESx
(0x37A19696),
AESx
(0x0A0F0505),
AESx
(0x2FB59A9A),
338
AESx
(0x0E090707),
AESx
(0x24361212),
AESx
(0x1B9B8080),
AESx
(0xDF3DE2E2),
339
AESx
(0xCD26EBEB),
AESx
(0x4E692727),
AESx
(0x7FCDB2B2),
AESx
(0xEA9F7575),
340
AESx
(0x121B0909),
AESx
(0x1D9E8383),
AESx
(0x58742C2C),
AESx
(0x342E1A1A),
341
AESx
(0x362D1B1B),
AESx
(0xDCB26E6E),
AESx
(0xB4EE5A5A),
AESx
(0x5BFBA0A0),
342
AESx
(0xA4F65252),
AESx
(0x764D3B3B),
AESx
(0xB761D6D6),
AESx
(0x7DCEB3B3),
343
AESx
(0x527B2929),
AESx
(0xDD3EE3E3),
AESx
(0x5E712F2F),
AESx
(0x13978484),
344
AESx
(0xA6F55353),
AESx
(0xB968D1D1),
AESx
(0x00000000),
AESx
(0xC12CEDED),
345
AESx
(0x40602020),
AESx
(0xE31FFCFC),
AESx
(0x79C8B1B1),
AESx
(0xB6ED5B5B),
346
AESx
(0xD4BE6A6A),
AESx
(0x8D46CBCB),
AESx
(0x67D9BEBE),
AESx
(0x724B3939),
347
AESx
(0x94DE4A4A),
AESx
(0x98D44C4C),
AESx
(0xB0E85858),
AESx
(0x854ACFCF),
348
AESx
(0xBB6BD0D0),
AESx
(0xC52AEFEF),
AESx
(0x4FE5AAAA),
AESx
(0xED16FBFB),
349
AESx
(0x86C54343),
AESx
(0x9AD74D4D),
AESx
(0x66553333),
AESx
(0x11948585),
350
AESx
(0x8ACF4545),
AESx
(0xE910F9F9),
AESx
(0x04060202),
AESx
(0xFE817F7F),
351
AESx
(0xA0F05050),
AESx
(0x78443C3C),
AESx
(0x25BA9F9F),
AESx
(0x4BE3A8A8),
352
AESx
(0xA2F35151),
AESx
(0x5DFEA3A3),
AESx
(0x80C04040),
AESx
(0x058A8F8F),
353
AESx
(0x3FAD9292),
AESx
(0x21BC9D9D),
AESx
(0x70483838),
AESx
(0xF104F5F5),
354
AESx
(0x63DFBCBC),
AESx
(0x77C1B6B6),
AESx
(0xAF75DADA),
AESx
(0x42632121),
355
AESx
(0x20301010),
AESx
(0xE51AFFFF),
AESx
(0xFD0EF3F3),
AESx
(0xBF6DD2D2),
356
AESx
(0x814CCDCD),
AESx
(0x18140C0C),
AESx
(0x26351313),
AESx
(0xC32FECEC),
357
AESx
(0xBEE15F5F),
AESx
(0x35A29797),
AESx
(0x88CC4444),
AESx
(0x2E391717),
358
AESx
(0x9357C4C4),
AESx
(0x55F2A7A7),
AESx
(0xFC827E7E),
AESx
(0x7A473D3D),
359
AESx
(0xC8AC6464),
AESx
(0xBAE75D5D),
AESx
(0x322B1919),
AESx
(0xE6957373),
360
AESx
(0xC0A06060),
AESx
(0x19988181),
AESx
(0x9ED14F4F),
AESx
(0xA37FDCDC),
361
AESx
(0x44662222),
AESx
(0x547E2A2A),
AESx
(0x3BAB9090),
AESx
(0x0B838888),
362
AESx
(0x8CCA4646),
AESx
(0xC729EEEE),
AESx
(0x6BD3B8B8),
AESx
(0x283C1414),
363
AESx
(0xA779DEDE),
AESx
(0xBCE25E5E),
AESx
(0x161D0B0B),
AESx
(0xAD76DBDB),
364
AESx
(0xDB3BE0E0),
AESx
(0x64563232),
AESx
(0x744E3A3A),
AESx
(0x141E0A0A),
365
AESx
(0x92DB4949),
AESx
(0x0C0A0606),
AESx
(0x486C2424),
AESx
(0xB8E45C5C),
366
AESx
(0x9F5DC2C2),
AESx
(0xBD6ED3D3),
AESx
(0x43EFACAC),
AESx
(0xC4A66262),
367
AESx
(0x39A89191),
AESx
(0x31A49595),
AESx
(0xD337E4E4),
AESx
(0xF28B7979),
368
AESx
(0xD532E7E7),
AESx
(0x8B43C8C8),
AESx
(0x6E593737),
AESx
(0xDAB76D6D),
369
AESx
(0x018C8D8D),
AESx
(0xB164D5D5),
AESx
(0x9CD24E4E),
AESx
(0x49E0A9A9),
370
AESx
(0xD8B46C6C),
AESx
(0xACFA5656),
AESx
(0xF307F4F4),
AESx
(0xCF25EAEA),
371
AESx
(0xCAAF6565),
AESx
(0xF48E7A7A),
AESx
(0x47E9AEAE),
AESx
(0x10180808),
372
AESx
(0x6FD5BABA),
AESx
(0xF0887878),
AESx
(0x4A6F2525),
AESx
(0x5C722E2E),
373
AESx
(0x38241C1C),
AESx
(0x57F1A6A6),
AESx
(0x73C7B4B4),
AESx
(0x9751C6C6),
374
AESx
(0xCB23E8E8),
AESx
(0xA17CDDDD),
AESx
(0xE89C7474),
AESx
(0x3E211F1F),
375
AESx
(0x96DD4B4B),
AESx
(0x61DCBDBD),
AESx
(0x0D868B8B),
AESx
(0x0F858A8A),
376
AESx
(0xE0907070),
AESx
(0x7C423E3E),
AESx
(0x71C4B5B5),
AESx
(0xCCAA6666),
377
AESx
(0x90D84848),
AESx
(0x06050303),
AESx
(0xF701F6F6),
AESx
(0x1C120E0E),
378
AESx
(0xC2A36161),
AESx
(0x6A5F3535),
AESx
(0xAEF95757),
AESx
(0x69D0B9B9),
379
AESx
(0x17918686),
AESx
(0x9958C1C1),
AESx
(0x3A271D1D),
AESx
(0x27B99E9E),
380
AESx
(0xD938E1E1),
AESx
(0xEB13F8F8),
AESx
(0x2BB39898),
AESx
(0x22331111),
381
AESx
(0xD2BB6969),
AESx
(0xA970D9D9),
AESx
(0x07898E8E),
AESx
(0x33A79494),
382
AESx
(0x2DB69B9B),
AESx
(0x3C221E1E),
AESx
(0x15928787),
AESx
(0xC920E9E9),
383
AESx
(0x8749CECE),
AESx
(0xAAFF5555),
AESx
(0x50782828),
AESx
(0xA57ADFDF),
384
AESx
(0x038F8C8C),
AESx
(0x59F8A1A1),
AESx
(0x09808989),
AESx
(0x1A170D0D),
385
AESx
(0x65DABFBF),
AESx
(0xD731E6E6),
AESx
(0x84C64242),
AESx
(0xD0B86868),
386
AESx
(0x82C34141),
AESx
(0x29B09999),
AESx
(0x5A772D2D),
AESx
(0x1E110F0F),
387
AESx
(0x7BCBB0B0),
AESx
(0xA8FC5454),
AESx
(0x6DD6BBBB),
AESx
(0x2C3A1616)
388
};
389
390
#ifdef __cplusplus
391
}
392
#endif
sph_types.h
Basic type definitions.
AESx
#define AESx(x)
Definition:
aes_helper.c:86
AES0
#define AES0
Definition:
aes_helper.c:87
AES2
#define AES2
Definition:
aes_helper.c:89
AES3
#define AES3
Definition:
aes_helper.c:90
AES1
#define AES1
Definition:
aes_helper.c:88
sph_u32
unsigned long sph_u32
Definition:
sph_types.h:870
Generated on Mon Jul 29 2019 02:32:17 for Raven Core by
1.8.13