1 | /* |
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. |
3 | * |
4 | * Licensed under the Apache License 2.0 (the "License"). You may not use |
5 | * this file except in compliance with the License. You can obtain a copy |
6 | * in the file LICENSE in the source distribution or at |
7 | * https://www.openssl.org/source/license.html |
8 | */ |
9 | |
10 | const DES_LONG DES_SPtrans[8][64] = { |
11 | { |
12 | /* nibble 0 */ |
13 | 0x02080800L, 0x00080000L, 0x02000002L, 0x02080802L, |
14 | 0x02000000L, 0x00080802L, 0x00080002L, 0x02000002L, |
15 | 0x00080802L, 0x02080800L, 0x02080000L, 0x00000802L, |
16 | 0x02000802L, 0x02000000L, 0x00000000L, 0x00080002L, |
17 | 0x00080000L, 0x00000002L, 0x02000800L, 0x00080800L, |
18 | 0x02080802L, 0x02080000L, 0x00000802L, 0x02000800L, |
19 | 0x00000002L, 0x00000800L, 0x00080800L, 0x02080002L, |
20 | 0x00000800L, 0x02000802L, 0x02080002L, 0x00000000L, |
21 | 0x00000000L, 0x02080802L, 0x02000800L, 0x00080002L, |
22 | 0x02080800L, 0x00080000L, 0x00000802L, 0x02000800L, |
23 | 0x02080002L, 0x00000800L, 0x00080800L, 0x02000002L, |
24 | 0x00080802L, 0x00000002L, 0x02000002L, 0x02080000L, |
25 | 0x02080802L, 0x00080800L, 0x02080000L, 0x02000802L, |
26 | 0x02000000L, 0x00000802L, 0x00080002L, 0x00000000L, |
27 | 0x00080000L, 0x02000000L, 0x02000802L, 0x02080800L, |
28 | 0x00000002L, 0x02080002L, 0x00000800L, 0x00080802L, |
29 | }, |
30 | { |
31 | /* nibble 1 */ |
32 | 0x40108010L, 0x00000000L, 0x00108000L, 0x40100000L, |
33 | 0x40000010L, 0x00008010L, 0x40008000L, 0x00108000L, |
34 | 0x00008000L, 0x40100010L, 0x00000010L, 0x40008000L, |
35 | 0x00100010L, 0x40108000L, 0x40100000L, 0x00000010L, |
36 | 0x00100000L, 0x40008010L, 0x40100010L, 0x00008000L, |
37 | 0x00108010L, 0x40000000L, 0x00000000L, 0x00100010L, |
38 | 0x40008010L, 0x00108010L, 0x40108000L, 0x40000010L, |
39 | 0x40000000L, 0x00100000L, 0x00008010L, 0x40108010L, |
40 | 0x00100010L, 0x40108000L, 0x40008000L, 0x00108010L, |
41 | 0x40108010L, 0x00100010L, 0x40000010L, 0x00000000L, |
42 | 0x40000000L, 0x00008010L, 0x00100000L, 0x40100010L, |
43 | 0x00008000L, 0x40000000L, 0x00108010L, 0x40008010L, |
44 | 0x40108000L, 0x00008000L, 0x00000000L, 0x40000010L, |
45 | 0x00000010L, 0x40108010L, 0x00108000L, 0x40100000L, |
46 | 0x40100010L, 0x00100000L, 0x00008010L, 0x40008000L, |
47 | 0x40008010L, 0x00000010L, 0x40100000L, 0x00108000L, |
48 | }, |
49 | { |
50 | /* nibble 2 */ |
51 | 0x04000001L, 0x04040100L, 0x00000100L, 0x04000101L, |
52 | 0x00040001L, 0x04000000L, 0x04000101L, 0x00040100L, |
53 | 0x04000100L, 0x00040000L, 0x04040000L, 0x00000001L, |
54 | 0x04040101L, 0x00000101L, 0x00000001L, 0x04040001L, |
55 | 0x00000000L, 0x00040001L, 0x04040100L, 0x00000100L, |
56 | 0x00000101L, 0x04040101L, 0x00040000L, 0x04000001L, |
57 | 0x04040001L, 0x04000100L, 0x00040101L, 0x04040000L, |
58 | 0x00040100L, 0x00000000L, 0x04000000L, 0x00040101L, |
59 | 0x04040100L, 0x00000100L, 0x00000001L, 0x00040000L, |
60 | 0x00000101L, 0x00040001L, 0x04040000L, 0x04000101L, |
61 | 0x00000000L, 0x04040100L, 0x00040100L, 0x04040001L, |
62 | 0x00040001L, 0x04000000L, 0x04040101L, 0x00000001L, |
63 | 0x00040101L, 0x04000001L, 0x04000000L, 0x04040101L, |
64 | 0x00040000L, 0x04000100L, 0x04000101L, 0x00040100L, |
65 | 0x04000100L, 0x00000000L, 0x04040001L, 0x00000101L, |
66 | 0x04000001L, 0x00040101L, 0x00000100L, 0x04040000L, |
67 | }, |
68 | { |
69 | /* nibble 3 */ |
70 | 0x00401008L, 0x10001000L, 0x00000008L, 0x10401008L, |
71 | 0x00000000L, 0x10400000L, 0x10001008L, 0x00400008L, |
72 | 0x10401000L, 0x10000008L, 0x10000000L, 0x00001008L, |
73 | 0x10000008L, 0x00401008L, 0x00400000L, 0x10000000L, |
74 | 0x10400008L, 0x00401000L, 0x00001000L, 0x00000008L, |
75 | 0x00401000L, 0x10001008L, 0x10400000L, 0x00001000L, |
76 | 0x00001008L, 0x00000000L, 0x00400008L, 0x10401000L, |
77 | 0x10001000L, 0x10400008L, 0x10401008L, 0x00400000L, |
78 | 0x10400008L, 0x00001008L, 0x00400000L, 0x10000008L, |
79 | 0x00401000L, 0x10001000L, 0x00000008L, 0x10400000L, |
80 | 0x10001008L, 0x00000000L, 0x00001000L, 0x00400008L, |
81 | 0x00000000L, 0x10400008L, 0x10401000L, 0x00001000L, |
82 | 0x10000000L, 0x10401008L, 0x00401008L, 0x00400000L, |
83 | 0x10401008L, 0x00000008L, 0x10001000L, 0x00401008L, |
84 | 0x00400008L, 0x00401000L, 0x10400000L, 0x10001008L, |
85 | 0x00001008L, 0x10000000L, 0x10000008L, 0x10401000L, |
86 | }, |
87 | { |
88 | /* nibble 4 */ |
89 | 0x08000000L, 0x00010000L, 0x00000400L, 0x08010420L, |
90 | 0x08010020L, 0x08000400L, 0x00010420L, 0x08010000L, |
91 | 0x00010000L, 0x00000020L, 0x08000020L, 0x00010400L, |
92 | 0x08000420L, 0x08010020L, 0x08010400L, 0x00000000L, |
93 | 0x00010400L, 0x08000000L, 0x00010020L, 0x00000420L, |
94 | 0x08000400L, 0x00010420L, 0x00000000L, 0x08000020L, |
95 | 0x00000020L, 0x08000420L, 0x08010420L, 0x00010020L, |
96 | 0x08010000L, 0x00000400L, 0x00000420L, 0x08010400L, |
97 | 0x08010400L, 0x08000420L, 0x00010020L, 0x08010000L, |
98 | 0x00010000L, 0x00000020L, 0x08000020L, 0x08000400L, |
99 | 0x08000000L, 0x00010400L, 0x08010420L, 0x00000000L, |
100 | 0x00010420L, 0x08000000L, 0x00000400L, 0x00010020L, |
101 | 0x08000420L, 0x00000400L, 0x00000000L, 0x08010420L, |
102 | 0x08010020L, 0x08010400L, 0x00000420L, 0x00010000L, |
103 | 0x00010400L, 0x08010020L, 0x08000400L, 0x00000420L, |
104 | 0x00000020L, 0x00010420L, 0x08010000L, 0x08000020L, |
105 | }, |
106 | { |
107 | /* nibble 5 */ |
108 | 0x80000040L, 0x00200040L, 0x00000000L, 0x80202000L, |
109 | 0x00200040L, 0x00002000L, 0x80002040L, 0x00200000L, |
110 | 0x00002040L, 0x80202040L, 0x00202000L, 0x80000000L, |
111 | 0x80002000L, 0x80000040L, 0x80200000L, 0x00202040L, |
112 | 0x00200000L, 0x80002040L, 0x80200040L, 0x00000000L, |
113 | 0x00002000L, 0x00000040L, 0x80202000L, 0x80200040L, |
114 | 0x80202040L, 0x80200000L, 0x80000000L, 0x00002040L, |
115 | 0x00000040L, 0x00202000L, 0x00202040L, 0x80002000L, |
116 | 0x00002040L, 0x80000000L, 0x80002000L, 0x00202040L, |
117 | 0x80202000L, 0x00200040L, 0x00000000L, 0x80002000L, |
118 | 0x80000000L, 0x00002000L, 0x80200040L, 0x00200000L, |
119 | 0x00200040L, 0x80202040L, 0x00202000L, 0x00000040L, |
120 | 0x80202040L, 0x00202000L, 0x00200000L, 0x80002040L, |
121 | 0x80000040L, 0x80200000L, 0x00202040L, 0x00000000L, |
122 | 0x00002000L, 0x80000040L, 0x80002040L, 0x80202000L, |
123 | 0x80200000L, 0x00002040L, 0x00000040L, 0x80200040L, |
124 | }, |
125 | { |
126 | /* nibble 6 */ |
127 | 0x00004000L, 0x00000200L, 0x01000200L, 0x01000004L, |
128 | 0x01004204L, 0x00004004L, 0x00004200L, 0x00000000L, |
129 | 0x01000000L, 0x01000204L, 0x00000204L, 0x01004000L, |
130 | 0x00000004L, 0x01004200L, 0x01004000L, 0x00000204L, |
131 | 0x01000204L, 0x00004000L, 0x00004004L, 0x01004204L, |
132 | 0x00000000L, 0x01000200L, 0x01000004L, 0x00004200L, |
133 | 0x01004004L, 0x00004204L, 0x01004200L, 0x00000004L, |
134 | 0x00004204L, 0x01004004L, 0x00000200L, 0x01000000L, |
135 | 0x00004204L, 0x01004000L, 0x01004004L, 0x00000204L, |
136 | 0x00004000L, 0x00000200L, 0x01000000L, 0x01004004L, |
137 | 0x01000204L, 0x00004204L, 0x00004200L, 0x00000000L, |
138 | 0x00000200L, 0x01000004L, 0x00000004L, 0x01000200L, |
139 | 0x00000000L, 0x01000204L, 0x01000200L, 0x00004200L, |
140 | 0x00000204L, 0x00004000L, 0x01004204L, 0x01000000L, |
141 | 0x01004200L, 0x00000004L, 0x00004004L, 0x01004204L, |
142 | 0x01000004L, 0x01004200L, 0x01004000L, 0x00004004L, |
143 | }, |
144 | { |
145 | /* nibble 7 */ |
146 | 0x20800080L, 0x20820000L, 0x00020080L, 0x00000000L, |
147 | 0x20020000L, 0x00800080L, 0x20800000L, 0x20820080L, |
148 | 0x00000080L, 0x20000000L, 0x00820000L, 0x00020080L, |
149 | 0x00820080L, 0x20020080L, 0x20000080L, 0x20800000L, |
150 | 0x00020000L, 0x00820080L, 0x00800080L, 0x20020000L, |
151 | 0x20820080L, 0x20000080L, 0x00000000L, 0x00820000L, |
152 | 0x20000000L, 0x00800000L, 0x20020080L, 0x20800080L, |
153 | 0x00800000L, 0x00020000L, 0x20820000L, 0x00000080L, |
154 | 0x00800000L, 0x00020000L, 0x20000080L, 0x20820080L, |
155 | 0x00020080L, 0x20000000L, 0x00000000L, 0x00820000L, |
156 | 0x20800080L, 0x20020080L, 0x20020000L, 0x00800080L, |
157 | 0x20820000L, 0x00000080L, 0x00800080L, 0x20020000L, |
158 | 0x20820080L, 0x00800000L, 0x20800000L, 0x20000080L, |
159 | 0x00820000L, 0x00020080L, 0x20020080L, 0x20800000L, |
160 | 0x00000080L, 0x20820000L, 0x00820080L, 0x00000000L, |
161 | 0x20000000L, 0x20800080L, 0x00020000L, 0x00820080L, |
162 | } |
163 | }; |
164 | |