1// Rijndael tables
2
3#include "pch.h"
4
5#ifndef CRYPTOPP_IMPORTS
6
7#include "rijndael.h"
8
9// VC60 workaround: gives a C4786 warning without this function
10// when runtime lib is set to multithread debug DLL
11// even though warning 4786 is disabled!
12void Rijndael_VC60Workaround()
13{
14}
15
16NAMESPACE_BEGIN(CryptoPP)
17
18/*
19Te0[x] = S [x].[02, 01, 01, 03];
20Te1[x] = S [x].[03, 02, 01, 01];
21Te2[x] = S [x].[01, 03, 02, 01];
22Te3[x] = S [x].[01, 01, 03, 02];
23
24Td0[x] = Si[x].[0e, 09, 0d, 0b];
25Td1[x] = Si[x].[0b, 0e, 09, 0d];
26Td2[x] = Si[x].[0d, 0b, 0e, 09];
27Td3[x] = Si[x].[09, 0d, 0b, 0e];
28*/
29
30const byte Rijndael::Base::Se[256] = {
31    0x63, 0x7c, 0x77, 0x7b,
32    0xf2, 0x6b, 0x6f, 0xc5,
33    0x30, 0x01, 0x67, 0x2b,
34    0xfe, 0xd7, 0xab, 0x76,
35    0xca, 0x82, 0xc9, 0x7d,
36    0xfa, 0x59, 0x47, 0xf0,
37    0xad, 0xd4, 0xa2, 0xaf,
38    0x9c, 0xa4, 0x72, 0xc0,
39    0xb7, 0xfd, 0x93, 0x26,
40    0x36, 0x3f, 0xf7, 0xcc,
41    0x34, 0xa5, 0xe5, 0xf1,
42    0x71, 0xd8, 0x31, 0x15,
43    0x04, 0xc7, 0x23, 0xc3,
44    0x18, 0x96, 0x05, 0x9a,
45    0x07, 0x12, 0x80, 0xe2,
46    0xeb, 0x27, 0xb2, 0x75,
47    0x09, 0x83, 0x2c, 0x1a,
48    0x1b, 0x6e, 0x5a, 0xa0,
49    0x52, 0x3b, 0xd6, 0xb3,
50    0x29, 0xe3, 0x2f, 0x84,
51    0x53, 0xd1, 0x00, 0xed,
52    0x20, 0xfc, 0xb1, 0x5b,
53    0x6a, 0xcb, 0xbe, 0x39,
54    0x4a, 0x4c, 0x58, 0xcf,
55    0xd0, 0xef, 0xaa, 0xfb,
56    0x43, 0x4d, 0x33, 0x85,
57    0x45, 0xf9, 0x02, 0x7f,
58    0x50, 0x3c, 0x9f, 0xa8,
59    0x51, 0xa3, 0x40, 0x8f,
60    0x92, 0x9d, 0x38, 0xf5,
61    0xbc, 0xb6, 0xda, 0x21,
62    0x10, 0xff, 0xf3, 0xd2,
63    0xcd, 0x0c, 0x13, 0xec,
64    0x5f, 0x97, 0x44, 0x17,
65    0xc4, 0xa7, 0x7e, 0x3d,
66    0x64, 0x5d, 0x19, 0x73,
67    0x60, 0x81, 0x4f, 0xdc,
68    0x22, 0x2a, 0x90, 0x88,
69    0x46, 0xee, 0xb8, 0x14,
70    0xde, 0x5e, 0x0b, 0xdb,
71    0xe0, 0x32, 0x3a, 0x0a,
72    0x49, 0x06, 0x24, 0x5c,
73    0xc2, 0xd3, 0xac, 0x62,
74    0x91, 0x95, 0xe4, 0x79,
75    0xe7, 0xc8, 0x37, 0x6d,
76    0x8d, 0xd5, 0x4e, 0xa9,
77    0x6c, 0x56, 0xf4, 0xea,
78    0x65, 0x7a, 0xae, 0x08,
79    0xba, 0x78, 0x25, 0x2e,
80    0x1c, 0xa6, 0xb4, 0xc6,
81    0xe8, 0xdd, 0x74, 0x1f,
82    0x4b, 0xbd, 0x8b, 0x8a,
83    0x70, 0x3e, 0xb5, 0x66,
84    0x48, 0x03, 0xf6, 0x0e,
85    0x61, 0x35, 0x57, 0xb9,
86    0x86, 0xc1, 0x1d, 0x9e,
87    0xe1, 0xf8, 0x98, 0x11,
88    0x69, 0xd9, 0x8e, 0x94,
89    0x9b, 0x1e, 0x87, 0xe9,
90    0xce, 0x55, 0x28, 0xdf,
91    0x8c, 0xa1, 0x89, 0x0d,
92    0xbf, 0xe6, 0x42, 0x68,
93    0x41, 0x99, 0x2d, 0x0f,
94    0xb0, 0x54, 0xbb, 0x16,
95};
96
97const byte Rijndael::Base::Sd[256] = {
98    0x52, 0x09, 0x6a, 0xd5,
99    0x30, 0x36, 0xa5, 0x38,
100    0xbf, 0x40, 0xa3, 0x9e,
101    0x81, 0xf3, 0xd7, 0xfb,
102    0x7c, 0xe3, 0x39, 0x82,
103    0x9b, 0x2f, 0xff, 0x87,
104    0x34, 0x8e, 0x43, 0x44,
105    0xc4, 0xde, 0xe9, 0xcb,
106    0x54, 0x7b, 0x94, 0x32,
107    0xa6, 0xc2, 0x23, 0x3d,
108    0xee, 0x4c, 0x95, 0x0b,
109    0x42, 0xfa, 0xc3, 0x4e,
110    0x08, 0x2e, 0xa1, 0x66,
111    0x28, 0xd9, 0x24, 0xb2,
112    0x76, 0x5b, 0xa2, 0x49,
113    0x6d, 0x8b, 0xd1, 0x25,
114    0x72, 0xf8, 0xf6, 0x64,
115    0x86, 0x68, 0x98, 0x16,
116    0xd4, 0xa4, 0x5c, 0xcc,
117    0x5d, 0x65, 0xb6, 0x92,
118    0x6c, 0x70, 0x48, 0x50,
119    0xfd, 0xed, 0xb9, 0xda,
120    0x5e, 0x15, 0x46, 0x57,
121    0xa7, 0x8d, 0x9d, 0x84,
122    0x90, 0xd8, 0xab, 0x00,
123    0x8c, 0xbc, 0xd3, 0x0a,
124    0xf7, 0xe4, 0x58, 0x05,
125    0xb8, 0xb3, 0x45, 0x06,
126    0xd0, 0x2c, 0x1e, 0x8f,
127    0xca, 0x3f, 0x0f, 0x02,
128    0xc1, 0xaf, 0xbd, 0x03,
129    0x01, 0x13, 0x8a, 0x6b,
130    0x3a, 0x91, 0x11, 0x41,
131    0x4f, 0x67, 0xdc, 0xea,
132    0x97, 0xf2, 0xcf, 0xce,
133    0xf0, 0xb4, 0xe6, 0x73,
134    0x96, 0xac, 0x74, 0x22,
135    0xe7, 0xad, 0x35, 0x85,
136    0xe2, 0xf9, 0x37, 0xe8,
137    0x1c, 0x75, 0xdf, 0x6e,
138    0x47, 0xf1, 0x1a, 0x71,
139    0x1d, 0x29, 0xc5, 0x89,
140    0x6f, 0xb7, 0x62, 0x0e,
141    0xaa, 0x18, 0xbe, 0x1b,
142    0xfc, 0x56, 0x3e, 0x4b,
143    0xc6, 0xd2, 0x79, 0x20,
144    0x9a, 0xdb, 0xc0, 0xfe,
145    0x78, 0xcd, 0x5a, 0xf4,
146    0x1f, 0xdd, 0xa8, 0x33,
147    0x88, 0x07, 0xc7, 0x31,
148    0xb1, 0x12, 0x10, 0x59,
149    0x27, 0x80, 0xec, 0x5f,
150    0x60, 0x51, 0x7f, 0xa9,
151    0x19, 0xb5, 0x4a, 0x0d,
152    0x2d, 0xe5, 0x7a, 0x9f,
153    0x93, 0xc9, 0x9c, 0xef,
154    0xa0, 0xe0, 0x3b, 0x4d,
155    0xae, 0x2a, 0xf5, 0xb0,
156    0xc8, 0xeb, 0xbb, 0x3c,
157    0x83, 0x53, 0x99, 0x61,
158    0x17, 0x2b, 0x04, 0x7e,
159    0xba, 0x77, 0xd6, 0x26,
160    0xe1, 0x69, 0x14, 0x63,
161    0x55, 0x21, 0x0c, 0x7d,
162};
163
164const word32 Rijndael::Base::rcon[] = {
165	0x01000000, 0x02000000, 0x04000000, 0x08000000,
166	0x10000000, 0x20000000, 0x40000000, 0x80000000,
167	0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
168};
169
170NAMESPACE_END
171
172#endif
173