Run util/openssl-format-source -v -c .
[openssl.git] / crypto / des / spr.h
1 /* crypto/des/spr.h */
2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3  * All rights reserved.
4  *
5  * This package is an SSL implementation written
6  * by Eric Young (eay@cryptsoft.com).
7  * The implementation was written so as to conform with Netscapes SSL.
8  *
9  * This library is free for commercial and non-commercial use as long as
10  * the following conditions are aheared to.  The following conditions
11  * apply to all code found in this distribution, be it the RC4, RSA,
12  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13  * included with this distribution is covered by the same copyright terms
14  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15  *
16  * Copyright remains Eric Young's, and as such any Copyright notices in
17  * the code are not to be removed.
18  * If this package is used in a product, Eric Young should be given attribution
19  * as the author of the parts of the library used.
20  * This can be in the form of a textual message at program startup or
21  * in documentation (online or textual) provided with the package.
22  *
23  * Redistribution and use in source and binary forms, with or without
24  * modification, are permitted provided that the following conditions
25  * are met:
26  * 1. Redistributions of source code must retain the copyright
27  *    notice, this list of conditions and the following disclaimer.
28  * 2. Redistributions in binary form must reproduce the above copyright
29  *    notice, this list of conditions and the following disclaimer in the
30  *    documentation and/or other materials provided with the distribution.
31  * 3. All advertising materials mentioning features or use of this software
32  *    must display the following acknowledgement:
33  *    "This product includes cryptographic software written by
34  *     Eric Young (eay@cryptsoft.com)"
35  *    The word 'cryptographic' can be left out if the rouines from the library
36  *    being used are not cryptographic related :-).
37  * 4. If you include any Windows specific code (or a derivative thereof) from
38  *    the apps directory (application code) you must include an acknowledgement:
39  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40  *
41  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51  * SUCH DAMAGE.
52  *
53  * The licence and distribution terms for any publically available version or
54  * derivative of this code cannot be changed.  i.e. this code cannot simply be
55  * copied and put under another distribution licence
56  * [including the GNU Public Licence.]
57  */
58
59 OPENSSL_GLOBAL const DES_LONG DES_SPtrans[8][64] = {
60     {
61 /* nibble 0 */
62      0x02080800L, 0x00080000L, 0x02000002L, 0x02080802L,
63      0x02000000L, 0x00080802L, 0x00080002L, 0x02000002L,
64      0x00080802L, 0x02080800L, 0x02080000L, 0x00000802L,
65      0x02000802L, 0x02000000L, 0x00000000L, 0x00080002L,
66      0x00080000L, 0x00000002L, 0x02000800L, 0x00080800L,
67      0x02080802L, 0x02080000L, 0x00000802L, 0x02000800L,
68      0x00000002L, 0x00000800L, 0x00080800L, 0x02080002L,
69      0x00000800L, 0x02000802L, 0x02080002L, 0x00000000L,
70      0x00000000L, 0x02080802L, 0x02000800L, 0x00080002L,
71      0x02080800L, 0x00080000L, 0x00000802L, 0x02000800L,
72      0x02080002L, 0x00000800L, 0x00080800L, 0x02000002L,
73      0x00080802L, 0x00000002L, 0x02000002L, 0x02080000L,
74      0x02080802L, 0x00080800L, 0x02080000L, 0x02000802L,
75      0x02000000L, 0x00000802L, 0x00080002L, 0x00000000L,
76      0x00080000L, 0x02000000L, 0x02000802L, 0x02080800L,
77      0x00000002L, 0x02080002L, 0x00000800L, 0x00080802L,
78      }, {
79 /* nibble 1 */
80          0x40108010L, 0x00000000L, 0x00108000L, 0x40100000L,
81          0x40000010L, 0x00008010L, 0x40008000L, 0x00108000L,
82          0x00008000L, 0x40100010L, 0x00000010L, 0x40008000L,
83          0x00100010L, 0x40108000L, 0x40100000L, 0x00000010L,
84          0x00100000L, 0x40008010L, 0x40100010L, 0x00008000L,
85          0x00108010L, 0x40000000L, 0x00000000L, 0x00100010L,
86          0x40008010L, 0x00108010L, 0x40108000L, 0x40000010L,
87          0x40000000L, 0x00100000L, 0x00008010L, 0x40108010L,
88          0x00100010L, 0x40108000L, 0x40008000L, 0x00108010L,
89          0x40108010L, 0x00100010L, 0x40000010L, 0x00000000L,
90          0x40000000L, 0x00008010L, 0x00100000L, 0x40100010L,
91          0x00008000L, 0x40000000L, 0x00108010L, 0x40008010L,
92          0x40108000L, 0x00008000L, 0x00000000L, 0x40000010L,
93          0x00000010L, 0x40108010L, 0x00108000L, 0x40100000L,
94          0x40100010L, 0x00100000L, 0x00008010L, 0x40008000L,
95          0x40008010L, 0x00000010L, 0x40100000L, 0x00108000L,
96          }, {
97 /* nibble 2 */
98              0x04000001L, 0x04040100L, 0x00000100L, 0x04000101L,
99              0x00040001L, 0x04000000L, 0x04000101L, 0x00040100L,
100              0x04000100L, 0x00040000L, 0x04040000L, 0x00000001L,
101              0x04040101L, 0x00000101L, 0x00000001L, 0x04040001L,
102              0x00000000L, 0x00040001L, 0x04040100L, 0x00000100L,
103              0x00000101L, 0x04040101L, 0x00040000L, 0x04000001L,
104              0x04040001L, 0x04000100L, 0x00040101L, 0x04040000L,
105              0x00040100L, 0x00000000L, 0x04000000L, 0x00040101L,
106              0x04040100L, 0x00000100L, 0x00000001L, 0x00040000L,
107              0x00000101L, 0x00040001L, 0x04040000L, 0x04000101L,
108              0x00000000L, 0x04040100L, 0x00040100L, 0x04040001L,
109              0x00040001L, 0x04000000L, 0x04040101L, 0x00000001L,
110              0x00040101L, 0x04000001L, 0x04000000L, 0x04040101L,
111              0x00040000L, 0x04000100L, 0x04000101L, 0x00040100L,
112              0x04000100L, 0x00000000L, 0x04040001L, 0x00000101L,
113              0x04000001L, 0x00040101L, 0x00000100L, 0x04040000L,
114              }, {
115 /* nibble 3 */
116                  0x00401008L, 0x10001000L, 0x00000008L, 0x10401008L,
117                  0x00000000L, 0x10400000L, 0x10001008L, 0x00400008L,
118                  0x10401000L, 0x10000008L, 0x10000000L, 0x00001008L,
119                  0x10000008L, 0x00401008L, 0x00400000L, 0x10000000L,
120                  0x10400008L, 0x00401000L, 0x00001000L, 0x00000008L,
121                  0x00401000L, 0x10001008L, 0x10400000L, 0x00001000L,
122                  0x00001008L, 0x00000000L, 0x00400008L, 0x10401000L,
123                  0x10001000L, 0x10400008L, 0x10401008L, 0x00400000L,
124                  0x10400008L, 0x00001008L, 0x00400000L, 0x10000008L,
125                  0x00401000L, 0x10001000L, 0x00000008L, 0x10400000L,
126                  0x10001008L, 0x00000000L, 0x00001000L, 0x00400008L,
127                  0x00000000L, 0x10400008L, 0x10401000L, 0x00001000L,
128                  0x10000000L, 0x10401008L, 0x00401008L, 0x00400000L,
129                  0x10401008L, 0x00000008L, 0x10001000L, 0x00401008L,
130                  0x00400008L, 0x00401000L, 0x10400000L, 0x10001008L,
131                  0x00001008L, 0x10000000L, 0x10000008L, 0x10401000L,
132                  }, {
133 /* nibble 4 */
134                      0x08000000L, 0x00010000L, 0x00000400L, 0x08010420L,
135                      0x08010020L, 0x08000400L, 0x00010420L, 0x08010000L,
136                      0x00010000L, 0x00000020L, 0x08000020L, 0x00010400L,
137                      0x08000420L, 0x08010020L, 0x08010400L, 0x00000000L,
138                      0x00010400L, 0x08000000L, 0x00010020L, 0x00000420L,
139                      0x08000400L, 0x00010420L, 0x00000000L, 0x08000020L,
140                      0x00000020L, 0x08000420L, 0x08010420L, 0x00010020L,
141                      0x08010000L, 0x00000400L, 0x00000420L, 0x08010400L,
142                      0x08010400L, 0x08000420L, 0x00010020L, 0x08010000L,
143                      0x00010000L, 0x00000020L, 0x08000020L, 0x08000400L,
144                      0x08000000L, 0x00010400L, 0x08010420L, 0x00000000L,
145                      0x00010420L, 0x08000000L, 0x00000400L, 0x00010020L,
146                      0x08000420L, 0x00000400L, 0x00000000L, 0x08010420L,
147                      0x08010020L, 0x08010400L, 0x00000420L, 0x00010000L,
148                      0x00010400L, 0x08010020L, 0x08000400L, 0x00000420L,
149                      0x00000020L, 0x00010420L, 0x08010000L, 0x08000020L,
150                      }, {
151 /* nibble 5 */
152                          0x80000040L, 0x00200040L, 0x00000000L, 0x80202000L,
153                          0x00200040L, 0x00002000L, 0x80002040L, 0x00200000L,
154                          0x00002040L, 0x80202040L, 0x00202000L, 0x80000000L,
155                          0x80002000L, 0x80000040L, 0x80200000L, 0x00202040L,
156                          0x00200000L, 0x80002040L, 0x80200040L, 0x00000000L,
157                          0x00002000L, 0x00000040L, 0x80202000L, 0x80200040L,
158                          0x80202040L, 0x80200000L, 0x80000000L, 0x00002040L,
159                          0x00000040L, 0x00202000L, 0x00202040L, 0x80002000L,
160                          0x00002040L, 0x80000000L, 0x80002000L, 0x00202040L,
161                          0x80202000L, 0x00200040L, 0x00000000L, 0x80002000L,
162                          0x80000000L, 0x00002000L, 0x80200040L, 0x00200000L,
163                          0x00200040L, 0x80202040L, 0x00202000L, 0x00000040L,
164                          0x80202040L, 0x00202000L, 0x00200000L, 0x80002040L,
165                          0x80000040L, 0x80200000L, 0x00202040L, 0x00000000L,
166                          0x00002000L, 0x80000040L, 0x80002040L, 0x80202000L,
167                          0x80200000L, 0x00002040L, 0x00000040L, 0x80200040L,
168                          }, {
169 /* nibble 6 */
170                              0x00004000L, 0x00000200L, 0x01000200L,
171                              0x01000004L,
172                              0x01004204L, 0x00004004L, 0x00004200L,
173                              0x00000000L,
174                              0x01000000L, 0x01000204L, 0x00000204L,
175                              0x01004000L,
176                              0x00000004L, 0x01004200L, 0x01004000L,
177                              0x00000204L,
178                              0x01000204L, 0x00004000L, 0x00004004L,
179                              0x01004204L,
180                              0x00000000L, 0x01000200L, 0x01000004L,
181                              0x00004200L,
182                              0x01004004L, 0x00004204L, 0x01004200L,
183                              0x00000004L,
184                              0x00004204L, 0x01004004L, 0x00000200L,
185                              0x01000000L,
186                              0x00004204L, 0x01004000L, 0x01004004L,
187                              0x00000204L,
188                              0x00004000L, 0x00000200L, 0x01000000L,
189                              0x01004004L,
190                              0x01000204L, 0x00004204L, 0x00004200L,
191                              0x00000000L,
192                              0x00000200L, 0x01000004L, 0x00000004L,
193                              0x01000200L,
194                              0x00000000L, 0x01000204L, 0x01000200L,
195                              0x00004200L,
196                              0x00000204L, 0x00004000L, 0x01004204L,
197                              0x01000000L,
198                              0x01004200L, 0x00000004L, 0x00004004L,
199                              0x01004204L,
200                              0x01000004L, 0x01004200L, 0x01004000L,
201                              0x00004004L,
202                              }, {
203 /* nibble 7 */
204                                  0x20800080L, 0x20820000L, 0x00020080L,
205                                  0x00000000L,
206                                  0x20020000L, 0x00800080L, 0x20800000L,
207                                  0x20820080L,
208                                  0x00000080L, 0x20000000L, 0x00820000L,
209                                  0x00020080L,
210                                  0x00820080L, 0x20020080L, 0x20000080L,
211                                  0x20800000L,
212                                  0x00020000L, 0x00820080L, 0x00800080L,
213                                  0x20020000L,
214                                  0x20820080L, 0x20000080L, 0x00000000L,
215                                  0x00820000L,
216                                  0x20000000L, 0x00800000L, 0x20020080L,
217                                  0x20800080L,
218                                  0x00800000L, 0x00020000L, 0x20820000L,
219                                  0x00000080L,
220                                  0x00800000L, 0x00020000L, 0x20000080L,
221                                  0x20820080L,
222                                  0x00020080L, 0x20000000L, 0x00000000L,
223                                  0x00820000L,
224                                  0x20800080L, 0x20020080L, 0x20020000L,
225                                  0x00800080L,
226                                  0x20820000L, 0x00000080L, 0x00800080L,
227                                  0x20020000L,
228                                  0x20820080L, 0x00800000L, 0x20800000L,
229                                  0x20000080L,
230                                  0x00820000L, 0x00020080L, 0x20020080L,
231                                  0x20800000L,
232                                  0x00000080L, 0x20820000L, 0x00820080L,
233                                  0x00000000L,
234                                  0x20000000L, 0x20800080L, 0x00020000L,
235                                  0x00820080L,
236                                  }
237 };