Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wine-mirror
GitHub Repository: wine-mirror/wine
Path: blob/master/libs/symcrypt/lib/DesTables.c
15010 views
1
//
2
// DesTables.c static lookup tables for DES
3
//
4
// Copyright (c) Microsoft Corporation. Licensed under the MIT license.
5
//
6
//
7
// These tables were copies
8
// from the RSA32 DES implementation. See 3des.c for details.
9
//
10
11
#include "precomp.h"
12
13
//
14
// Alignments are chosen to reduce side-channel attacks through the TLB cache.
15
// We align each table to a multiple of the size within which we do data-dependent
16
// lookups. For example, the table below is aligned to 256. It is not a secret
17
// that the 8 sub-tables are accessed, but which value inside each sub-table is a secret.
18
// Aligning to 256 still leaves the data cache line leakage, but avoids any TLB-related leakage.
19
//
20
SYMCRYPT_ALIGN_AT( 256 ) const UINT32 SymCryptDesSpbox[8][64] = {
21
0x02080800,0x00080000,0x02000002,0x02080802,
22
0x02000000,0x00080802,0x00080002,0x02000002,
23
0x00080802,0x02080800,0x02080000,0x00000802,
24
0x02000802,0x02000000,0x00000000,0x00080002,
25
0x00080000,0x00000002,0x02000800,0x00080800,
26
0x02080802,0x02080000,0x00000802,0x02000800,
27
0x00000002,0x00000800,0x00080800,0x02080002,
28
0x00000800,0x02000802,0x02080002,0x00000000,
29
0x00000000,0x02080802,0x02000800,0x00080002,
30
0x02080800,0x00080000,0x00000802,0x02000800,
31
0x02080002,0x00000800,0x00080800,0x02000002,
32
0x00080802,0x00000002,0x02000002,0x02080000,
33
0x02080802,0x00080800,0x02080000,0x02000802,
34
0x02000000,0x00000802,0x00080002,0x00000000,
35
0x00080000,0x02000000,0x02000802,0x02080800,
36
0x00000002,0x02080002,0x00000800,0x00080802,
37
0x40108010,0x00000000,0x00108000,0x40100000,
38
0x40000010,0x00008010,0x40008000,0x00108000,
39
0x00008000,0x40100010,0x00000010,0x40008000,
40
0x00100010,0x40108000,0x40100000,0x00000010,
41
0x00100000,0x40008010,0x40100010,0x00008000,
42
0x00108010,0x40000000,0x00000000,0x00100010,
43
0x40008010,0x00108010,0x40108000,0x40000010,
44
0x40000000,0x00100000,0x00008010,0x40108010,
45
0x00100010,0x40108000,0x40008000,0x00108010,
46
0x40108010,0x00100010,0x40000010,0x00000000,
47
0x40000000,0x00008010,0x00100000,0x40100010,
48
0x00008000,0x40000000,0x00108010,0x40008010,
49
0x40108000,0x00008000,0x00000000,0x40000010,
50
0x00000010,0x40108010,0x00108000,0x40100000,
51
0x40100010,0x00100000,0x00008010,0x40008000,
52
0x40008010,0x00000010,0x40100000,0x00108000,
53
0x04000001,0x04040100,0x00000100,0x04000101,
54
0x00040001,0x04000000,0x04000101,0x00040100,
55
0x04000100,0x00040000,0x04040000,0x00000001,
56
0x04040101,0x00000101,0x00000001,0x04040001,
57
0x00000000,0x00040001,0x04040100,0x00000100,
58
0x00000101,0x04040101,0x00040000,0x04000001,
59
0x04040001,0x04000100,0x00040101,0x04040000,
60
0x00040100,0x00000000,0x04000000,0x00040101,
61
0x04040100,0x00000100,0x00000001,0x00040000,
62
0x00000101,0x00040001,0x04040000,0x04000101,
63
0x00000000,0x04040100,0x00040100,0x04040001,
64
0x00040001,0x04000000,0x04040101,0x00000001,
65
0x00040101,0x04000001,0x04000000,0x04040101,
66
0x00040000,0x04000100,0x04000101,0x00040100,
67
0x04000100,0x00000000,0x04040001,0x00000101,
68
0x04000001,0x00040101,0x00000100,0x04040000,
69
0x00401008,0x10001000,0x00000008,0x10401008,
70
0x00000000,0x10400000,0x10001008,0x00400008,
71
0x10401000,0x10000008,0x10000000,0x00001008,
72
0x10000008,0x00401008,0x00400000,0x10000000,
73
0x10400008,0x00401000,0x00001000,0x00000008,
74
0x00401000,0x10001008,0x10400000,0x00001000,
75
0x00001008,0x00000000,0x00400008,0x10401000,
76
0x10001000,0x10400008,0x10401008,0x00400000,
77
0x10400008,0x00001008,0x00400000,0x10000008,
78
0x00401000,0x10001000,0x00000008,0x10400000,
79
0x10001008,0x00000000,0x00001000,0x00400008,
80
0x00000000,0x10400008,0x10401000,0x00001000,
81
0x10000000,0x10401008,0x00401008,0x00400000,
82
0x10401008,0x00000008,0x10001000,0x00401008,
83
0x00400008,0x00401000,0x10400000,0x10001008,
84
0x00001008,0x10000000,0x10000008,0x10401000,
85
0x08000000,0x00010000,0x00000400,0x08010420,
86
0x08010020,0x08000400,0x00010420,0x08010000,
87
0x00010000,0x00000020,0x08000020,0x00010400,
88
0x08000420,0x08010020,0x08010400,0x00000000,
89
0x00010400,0x08000000,0x00010020,0x00000420,
90
0x08000400,0x00010420,0x00000000,0x08000020,
91
0x00000020,0x08000420,0x08010420,0x00010020,
92
0x08010000,0x00000400,0x00000420,0x08010400,
93
0x08010400,0x08000420,0x00010020,0x08010000,
94
0x00010000,0x00000020,0x08000020,0x08000400,
95
0x08000000,0x00010400,0x08010420,0x00000000,
96
0x00010420,0x08000000,0x00000400,0x00010020,
97
0x08000420,0x00000400,0x00000000,0x08010420,
98
0x08010020,0x08010400,0x00000420,0x00010000,
99
0x00010400,0x08010020,0x08000400,0x00000420,
100
0x00000020,0x00010420,0x08010000,0x08000020,
101
0x80000040,0x00200040,0x00000000,0x80202000,
102
0x00200040,0x00002000,0x80002040,0x00200000,
103
0x00002040,0x80202040,0x00202000,0x80000000,
104
0x80002000,0x80000040,0x80200000,0x00202040,
105
0x00200000,0x80002040,0x80200040,0x00000000,
106
0x00002000,0x00000040,0x80202000,0x80200040,
107
0x80202040,0x80200000,0x80000000,0x00002040,
108
0x00000040,0x00202000,0x00202040,0x80002000,
109
0x00002040,0x80000000,0x80002000,0x00202040,
110
0x80202000,0x00200040,0x00000000,0x80002000,
111
0x80000000,0x00002000,0x80200040,0x00200000,
112
0x00200040,0x80202040,0x00202000,0x00000040,
113
0x80202040,0x00202000,0x00200000,0x80002040,
114
0x80000040,0x80200000,0x00202040,0x00000000,
115
0x00002000,0x80000040,0x80002040,0x80202000,
116
0x80200000,0x00002040,0x00000040,0x80200040,
117
0x00004000,0x00000200,0x01000200,0x01000004,
118
0x01004204,0x00004004,0x00004200,0x00000000,
119
0x01000000,0x01000204,0x00000204,0x01004000,
120
0x00000004,0x01004200,0x01004000,0x00000204,
121
0x01000204,0x00004000,0x00004004,0x01004204,
122
0x00000000,0x01000200,0x01000004,0x00004200,
123
0x01004004,0x00004204,0x01004200,0x00000004,
124
0x00004204,0x01004004,0x00000200,0x01000000,
125
0x00004204,0x01004000,0x01004004,0x00000204,
126
0x00004000,0x00000200,0x01000000,0x01004004,
127
0x01000204,0x00004204,0x00004200,0x00000000,
128
0x00000200,0x01000004,0x00000004,0x01000200,
129
0x00000000,0x01000204,0x01000200,0x00004200,
130
0x00000204,0x00004000,0x01004204,0x01000000,
131
0x01004200,0x00000004,0x00004004,0x01004204,
132
0x01000004,0x01004200,0x01004000,0x00004004,
133
0x20800080,0x20820000,0x00020080,0x00000000,
134
0x20020000,0x00800080,0x20800000,0x20820080,
135
0x00000080,0x20000000,0x00820000,0x00020080,
136
0x00820080,0x20020080,0x20000080,0x20800000,
137
0x00020000,0x00820080,0x00800080,0x20020000,
138
0x20820080,0x20000080,0x00000000,0x00820000,
139
0x20000000,0x00800000,0x20020080,0x20800080,
140
0x00800000,0x00020000,0x20820000,0x00000080,
141
0x00800000,0x00020000,0x20000080,0x20820080,
142
0x00020080,0x20000000,0x00000000,0x00820000,
143
0x20800080,0x20020080,0x20020000,0x00800080,
144
0x20820000,0x00000080,0x00800080,0x20020000,
145
0x20820080,0x00800000,0x20800000,0x20000080,
146
0x00820000,0x00020080,0x20020080,0x20800000,
147
0x00000080,0x20820000,0x00820080,0x00000000,
148
0x20000000,0x20800080,0x00020000,0x00820080,
149
};
150
151
SYMCRYPT_ALIGN_AT(256) const UINT32 SymCryptDesKeySelect[8][64]={
152
0x00000000,0x00000010,0x20000000,0x20000010,
153
0x00010000,0x00010010,0x20010000,0x20010010,
154
0x00000800,0x00000810,0x20000800,0x20000810,
155
0x00010800,0x00010810,0x20010800,0x20010810,
156
0x00000020,0x00000030,0x20000020,0x20000030,
157
0x00010020,0x00010030,0x20010020,0x20010030,
158
0x00000820,0x00000830,0x20000820,0x20000830,
159
0x00010820,0x00010830,0x20010820,0x20010830,
160
0x00080000,0x00080010,0x20080000,0x20080010,
161
0x00090000,0x00090010,0x20090000,0x20090010,
162
0x00080800,0x00080810,0x20080800,0x20080810,
163
0x00090800,0x00090810,0x20090800,0x20090810,
164
0x00080020,0x00080030,0x20080020,0x20080030,
165
0x00090020,0x00090030,0x20090020,0x20090030,
166
0x00080820,0x00080830,0x20080820,0x20080830,
167
0x00090820,0x00090830,0x20090820,0x20090830,
168
0x00000000,0x02000000,0x00002000,0x02002000,
169
0x00200000,0x02200000,0x00202000,0x02202000,
170
0x00000004,0x02000004,0x00002004,0x02002004,
171
0x00200004,0x02200004,0x00202004,0x02202004,
172
0x00000400,0x02000400,0x00002400,0x02002400,
173
0x00200400,0x02200400,0x00202400,0x02202400,
174
0x00000404,0x02000404,0x00002404,0x02002404,
175
0x00200404,0x02200404,0x00202404,0x02202404,
176
0x10000000,0x12000000,0x10002000,0x12002000,
177
0x10200000,0x12200000,0x10202000,0x12202000,
178
0x10000004,0x12000004,0x10002004,0x12002004,
179
0x10200004,0x12200004,0x10202004,0x12202004,
180
0x10000400,0x12000400,0x10002400,0x12002400,
181
0x10200400,0x12200400,0x10202400,0x12202400,
182
0x10000404,0x12000404,0x10002404,0x12002404,
183
0x10200404,0x12200404,0x10202404,0x12202404,
184
0x00000000,0x00000001,0x00040000,0x00040001,
185
0x01000000,0x01000001,0x01040000,0x01040001,
186
0x00000002,0x00000003,0x00040002,0x00040003,
187
0x01000002,0x01000003,0x01040002,0x01040003,
188
0x00000200,0x00000201,0x00040200,0x00040201,
189
0x01000200,0x01000201,0x01040200,0x01040201,
190
0x00000202,0x00000203,0x00040202,0x00040203,
191
0x01000202,0x01000203,0x01040202,0x01040203,
192
0x08000000,0x08000001,0x08040000,0x08040001,
193
0x09000000,0x09000001,0x09040000,0x09040001,
194
0x08000002,0x08000003,0x08040002,0x08040003,
195
0x09000002,0x09000003,0x09040002,0x09040003,
196
0x08000200,0x08000201,0x08040200,0x08040201,
197
0x09000200,0x09000201,0x09040200,0x09040201,
198
0x08000202,0x08000203,0x08040202,0x08040203,
199
0x09000202,0x09000203,0x09040202,0x09040203,
200
0x00000000,0x00100000,0x00000100,0x00100100,
201
0x00000008,0x00100008,0x00000108,0x00100108,
202
0x00001000,0x00101000,0x00001100,0x00101100,
203
0x00001008,0x00101008,0x00001108,0x00101108,
204
0x04000000,0x04100000,0x04000100,0x04100100,
205
0x04000008,0x04100008,0x04000108,0x04100108,
206
0x04001000,0x04101000,0x04001100,0x04101100,
207
0x04001008,0x04101008,0x04001108,0x04101108,
208
0x00020000,0x00120000,0x00020100,0x00120100,
209
0x00020008,0x00120008,0x00020108,0x00120108,
210
0x00021000,0x00121000,0x00021100,0x00121100,
211
0x00021008,0x00121008,0x00021108,0x00121108,
212
0x04020000,0x04120000,0x04020100,0x04120100,
213
0x04020008,0x04120008,0x04020108,0x04120108,
214
0x04021000,0x04121000,0x04021100,0x04121100,
215
0x04021008,0x04121008,0x04021108,0x04121108,
216
0x00000000,0x10000000,0x00010000,0x10010000,
217
0x00000004,0x10000004,0x00010004,0x10010004,
218
0x20000000,0x30000000,0x20010000,0x30010000,
219
0x20000004,0x30000004,0x20010004,0x30010004,
220
0x00100000,0x10100000,0x00110000,0x10110000,
221
0x00100004,0x10100004,0x00110004,0x10110004,
222
0x20100000,0x30100000,0x20110000,0x30110000,
223
0x20100004,0x30100004,0x20110004,0x30110004,
224
0x00001000,0x10001000,0x00011000,0x10011000,
225
0x00001004,0x10001004,0x00011004,0x10011004,
226
0x20001000,0x30001000,0x20011000,0x30011000,
227
0x20001004,0x30001004,0x20011004,0x30011004,
228
0x00101000,0x10101000,0x00111000,0x10111000,
229
0x00101004,0x10101004,0x00111004,0x10111004,
230
0x20101000,0x30101000,0x20111000,0x30111000,
231
0x20101004,0x30101004,0x20111004,0x30111004,
232
0x00000000,0x08000000,0x00000008,0x08000008,
233
0x00000400,0x08000400,0x00000408,0x08000408,
234
0x00020000,0x08020000,0x00020008,0x08020008,
235
0x00020400,0x08020400,0x00020408,0x08020408,
236
0x00000001,0x08000001,0x00000009,0x08000009,
237
0x00000401,0x08000401,0x00000409,0x08000409,
238
0x00020001,0x08020001,0x00020009,0x08020009,
239
0x00020401,0x08020401,0x00020409,0x08020409,
240
0x02000000,0x0A000000,0x02000008,0x0A000008,
241
0x02000400,0x0A000400,0x02000408,0x0A000408,
242
0x02020000,0x0A020000,0x02020008,0x0A020008,
243
0x02020400,0x0A020400,0x02020408,0x0A020408,
244
0x02000001,0x0A000001,0x02000009,0x0A000009,
245
0x02000401,0x0A000401,0x02000409,0x0A000409,
246
0x02020001,0x0A020001,0x02020009,0x0A020009,
247
0x02020401,0x0A020401,0x02020409,0x0A020409,
248
0x00000000,0x00000100,0x00080000,0x00080100,
249
0x01000000,0x01000100,0x01080000,0x01080100,
250
0x00000010,0x00000110,0x00080010,0x00080110,
251
0x01000010,0x01000110,0x01080010,0x01080110,
252
0x00200000,0x00200100,0x00280000,0x00280100,
253
0x01200000,0x01200100,0x01280000,0x01280100,
254
0x00200010,0x00200110,0x00280010,0x00280110,
255
0x01200010,0x01200110,0x01280010,0x01280110,
256
0x00000200,0x00000300,0x00080200,0x00080300,
257
0x01000200,0x01000300,0x01080200,0x01080300,
258
0x00000210,0x00000310,0x00080210,0x00080310,
259
0x01000210,0x01000310,0x01080210,0x01080310,
260
0x00200200,0x00200300,0x00280200,0x00280300,
261
0x01200200,0x01200300,0x01280200,0x01280300,
262
0x00200210,0x00200310,0x00280210,0x00280310,
263
0x01200210,0x01200310,0x01280210,0x01280310,
264
0x00000000,0x04000000,0x00040000,0x04040000,
265
0x00000002,0x04000002,0x00040002,0x04040002,
266
0x00002000,0x04002000,0x00042000,0x04042000,
267
0x00002002,0x04002002,0x00042002,0x04042002,
268
0x00000020,0x04000020,0x00040020,0x04040020,
269
0x00000022,0x04000022,0x00040022,0x04040022,
270
0x00002020,0x04002020,0x00042020,0x04042020,
271
0x00002022,0x04002022,0x00042022,0x04042022,
272
0x00000800,0x04000800,0x00040800,0x04040800,
273
0x00000802,0x04000802,0x00040802,0x04040802,
274
0x00002800,0x04002800,0x00042800,0x04042800,
275
0x00002802,0x04002802,0x00042802,0x04042802,
276
0x00000820,0x04000820,0x00040820,0x04040820,
277
0x00000822,0x04000822,0x00040822,0x04040822,
278
0x00002820,0x04002820,0x00042820,0x04042820,
279
0x00002822,0x04002822,0x00042822,0x04042822,
280
};
281
282