xref: /openssl/crypto/des/spr.h (revision 2d48d5dd)
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