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 | };
|
---|