xref: /openbsd-src/sys/crypto/spr.h (revision 3607555641cb68a26450256c984e636111bb2495)
1*36075556Smiod /*	$OpenBSD: spr.h,v 1.2 2002/10/27 13:24:26 miod Exp $	*/
221f2d90fSderaadt 
321f2d90fSderaadt /* lib/des/spr.h */
421f2d90fSderaadt /* Copyright (C) 1995 Eric Young (eay@mincom.oz.au)
521f2d90fSderaadt  * All rights reserved.
621f2d90fSderaadt  *
721f2d90fSderaadt  * This file is part of an SSL implementation written
821f2d90fSderaadt  * by Eric Young (eay@mincom.oz.au).
921f2d90fSderaadt  * The implementation was written so as to conform with Netscapes SSL
1021f2d90fSderaadt  * specification.  This library and applications are
1121f2d90fSderaadt  * FREE FOR COMMERCIAL AND NON-COMMERCIAL USE
1221f2d90fSderaadt  * as long as the following conditions are aheared to.
1321f2d90fSderaadt  *
1421f2d90fSderaadt  * Copyright remains Eric Young's, and as such any Copyright notices in
1521f2d90fSderaadt  * the code are not to be removed.  If this code is used in a product,
1621f2d90fSderaadt  * Eric Young should be given attribution as the author of the parts used.
1721f2d90fSderaadt  * This can be in the form of a textual message at program startup or
1821f2d90fSderaadt  * in documentation (online or textual) provided with the package.
1921f2d90fSderaadt  *
2021f2d90fSderaadt  * Redistribution and use in source and binary forms, with or without
2121f2d90fSderaadt  * modification, are permitted provided that the following conditions
2221f2d90fSderaadt  * are met:
2321f2d90fSderaadt  * 1. Redistributions of source code must retain the copyright
2421f2d90fSderaadt  *    notice, this list of conditions and the following disclaimer.
2521f2d90fSderaadt  * 2. Redistributions in binary form must reproduce the above copyright
2621f2d90fSderaadt  *    notice, this list of conditions and the following disclaimer in the
2721f2d90fSderaadt  *    documentation and/or other materials provided with the distribution.
2821f2d90fSderaadt  * 3. All advertising materials mentioning features or use of this software
2921f2d90fSderaadt  *    must display the following acknowledgement:
3021f2d90fSderaadt  *    This product includes software developed by Eric Young (eay@mincom.oz.au)
3121f2d90fSderaadt  *
3221f2d90fSderaadt  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
3321f2d90fSderaadt  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
3421f2d90fSderaadt  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
3521f2d90fSderaadt  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
3621f2d90fSderaadt  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
3721f2d90fSderaadt  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
3821f2d90fSderaadt  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
3921f2d90fSderaadt  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
4021f2d90fSderaadt  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
4121f2d90fSderaadt  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
4221f2d90fSderaadt  * SUCH DAMAGE.
4321f2d90fSderaadt  *
4421f2d90fSderaadt  * The licence and distribution terms for any publically available version or
4521f2d90fSderaadt  * derivative of this code cannot be changed.  i.e. this code cannot simply be
4621f2d90fSderaadt  * copied and put under another distribution licence
4721f2d90fSderaadt  * [including the GNU Public Licence.]
4821f2d90fSderaadt  */
4921f2d90fSderaadt 
50*36075556Smiod static const u_int32_t des_SPtrans[8][64]={
5121f2d90fSderaadt {
5221f2d90fSderaadt /* nibble 0 */
5321f2d90fSderaadt 0x00820200L, 0x00020000L, 0x80800000L, 0x80820200L,
5421f2d90fSderaadt 0x00800000L, 0x80020200L, 0x80020000L, 0x80800000L,
5521f2d90fSderaadt 0x80020200L, 0x00820200L, 0x00820000L, 0x80000200L,
5621f2d90fSderaadt 0x80800200L, 0x00800000L, 0x00000000L, 0x80020000L,
5721f2d90fSderaadt 0x00020000L, 0x80000000L, 0x00800200L, 0x00020200L,
5821f2d90fSderaadt 0x80820200L, 0x00820000L, 0x80000200L, 0x00800200L,
5921f2d90fSderaadt 0x80000000L, 0x00000200L, 0x00020200L, 0x80820000L,
6021f2d90fSderaadt 0x00000200L, 0x80800200L, 0x80820000L, 0x00000000L,
6121f2d90fSderaadt 0x00000000L, 0x80820200L, 0x00800200L, 0x80020000L,
6221f2d90fSderaadt 0x00820200L, 0x00020000L, 0x80000200L, 0x00800200L,
6321f2d90fSderaadt 0x80820000L, 0x00000200L, 0x00020200L, 0x80800000L,
6421f2d90fSderaadt 0x80020200L, 0x80000000L, 0x80800000L, 0x00820000L,
6521f2d90fSderaadt 0x80820200L, 0x00020200L, 0x00820000L, 0x80800200L,
6621f2d90fSderaadt 0x00800000L, 0x80000200L, 0x80020000L, 0x00000000L,
6721f2d90fSderaadt 0x00020000L, 0x00800000L, 0x80800200L, 0x00820200L,
6821f2d90fSderaadt 0x80000000L, 0x80820000L, 0x00000200L, 0x80020200L,
6921f2d90fSderaadt },{
7021f2d90fSderaadt /* nibble 1 */
7121f2d90fSderaadt 0x10042004L, 0x00000000L, 0x00042000L, 0x10040000L,
7221f2d90fSderaadt 0x10000004L, 0x00002004L, 0x10002000L, 0x00042000L,
7321f2d90fSderaadt 0x00002000L, 0x10040004L, 0x00000004L, 0x10002000L,
7421f2d90fSderaadt 0x00040004L, 0x10042000L, 0x10040000L, 0x00000004L,
7521f2d90fSderaadt 0x00040000L, 0x10002004L, 0x10040004L, 0x00002000L,
7621f2d90fSderaadt 0x00042004L, 0x10000000L, 0x00000000L, 0x00040004L,
7721f2d90fSderaadt 0x10002004L, 0x00042004L, 0x10042000L, 0x10000004L,
7821f2d90fSderaadt 0x10000000L, 0x00040000L, 0x00002004L, 0x10042004L,
7921f2d90fSderaadt 0x00040004L, 0x10042000L, 0x10002000L, 0x00042004L,
8021f2d90fSderaadt 0x10042004L, 0x00040004L, 0x10000004L, 0x00000000L,
8121f2d90fSderaadt 0x10000000L, 0x00002004L, 0x00040000L, 0x10040004L,
8221f2d90fSderaadt 0x00002000L, 0x10000000L, 0x00042004L, 0x10002004L,
8321f2d90fSderaadt 0x10042000L, 0x00002000L, 0x00000000L, 0x10000004L,
8421f2d90fSderaadt 0x00000004L, 0x10042004L, 0x00042000L, 0x10040000L,
8521f2d90fSderaadt 0x10040004L, 0x00040000L, 0x00002004L, 0x10002000L,
8621f2d90fSderaadt 0x10002004L, 0x00000004L, 0x10040000L, 0x00042000L,
8721f2d90fSderaadt },{
8821f2d90fSderaadt /* nibble 2 */
8921f2d90fSderaadt 0x41000000L, 0x01010040L, 0x00000040L, 0x41000040L,
9021f2d90fSderaadt 0x40010000L, 0x01000000L, 0x41000040L, 0x00010040L,
9121f2d90fSderaadt 0x01000040L, 0x00010000L, 0x01010000L, 0x40000000L,
9221f2d90fSderaadt 0x41010040L, 0x40000040L, 0x40000000L, 0x41010000L,
9321f2d90fSderaadt 0x00000000L, 0x40010000L, 0x01010040L, 0x00000040L,
9421f2d90fSderaadt 0x40000040L, 0x41010040L, 0x00010000L, 0x41000000L,
9521f2d90fSderaadt 0x41010000L, 0x01000040L, 0x40010040L, 0x01010000L,
9621f2d90fSderaadt 0x00010040L, 0x00000000L, 0x01000000L, 0x40010040L,
9721f2d90fSderaadt 0x01010040L, 0x00000040L, 0x40000000L, 0x00010000L,
9821f2d90fSderaadt 0x40000040L, 0x40010000L, 0x01010000L, 0x41000040L,
9921f2d90fSderaadt 0x00000000L, 0x01010040L, 0x00010040L, 0x41010000L,
10021f2d90fSderaadt 0x40010000L, 0x01000000L, 0x41010040L, 0x40000000L,
10121f2d90fSderaadt 0x40010040L, 0x41000000L, 0x01000000L, 0x41010040L,
10221f2d90fSderaadt 0x00010000L, 0x01000040L, 0x41000040L, 0x00010040L,
10321f2d90fSderaadt 0x01000040L, 0x00000000L, 0x41010000L, 0x40000040L,
10421f2d90fSderaadt 0x41000000L, 0x40010040L, 0x00000040L, 0x01010000L,
10521f2d90fSderaadt },{
10621f2d90fSderaadt /* nibble 3 */
10721f2d90fSderaadt 0x00100402L, 0x04000400L, 0x00000002L, 0x04100402L,
10821f2d90fSderaadt 0x00000000L, 0x04100000L, 0x04000402L, 0x00100002L,
10921f2d90fSderaadt 0x04100400L, 0x04000002L, 0x04000000L, 0x00000402L,
11021f2d90fSderaadt 0x04000002L, 0x00100402L, 0x00100000L, 0x04000000L,
11121f2d90fSderaadt 0x04100002L, 0x00100400L, 0x00000400L, 0x00000002L,
11221f2d90fSderaadt 0x00100400L, 0x04000402L, 0x04100000L, 0x00000400L,
11321f2d90fSderaadt 0x00000402L, 0x00000000L, 0x00100002L, 0x04100400L,
11421f2d90fSderaadt 0x04000400L, 0x04100002L, 0x04100402L, 0x00100000L,
11521f2d90fSderaadt 0x04100002L, 0x00000402L, 0x00100000L, 0x04000002L,
11621f2d90fSderaadt 0x00100400L, 0x04000400L, 0x00000002L, 0x04100000L,
11721f2d90fSderaadt 0x04000402L, 0x00000000L, 0x00000400L, 0x00100002L,
11821f2d90fSderaadt 0x00000000L, 0x04100002L, 0x04100400L, 0x00000400L,
11921f2d90fSderaadt 0x04000000L, 0x04100402L, 0x00100402L, 0x00100000L,
12021f2d90fSderaadt 0x04100402L, 0x00000002L, 0x04000400L, 0x00100402L,
12121f2d90fSderaadt 0x00100002L, 0x00100400L, 0x04100000L, 0x04000402L,
12221f2d90fSderaadt 0x00000402L, 0x04000000L, 0x04000002L, 0x04100400L,
12321f2d90fSderaadt },{
12421f2d90fSderaadt /* nibble 4 */
12521f2d90fSderaadt 0x02000000L, 0x00004000L, 0x00000100L, 0x02004108L,
12621f2d90fSderaadt 0x02004008L, 0x02000100L, 0x00004108L, 0x02004000L,
12721f2d90fSderaadt 0x00004000L, 0x00000008L, 0x02000008L, 0x00004100L,
12821f2d90fSderaadt 0x02000108L, 0x02004008L, 0x02004100L, 0x00000000L,
12921f2d90fSderaadt 0x00004100L, 0x02000000L, 0x00004008L, 0x00000108L,
13021f2d90fSderaadt 0x02000100L, 0x00004108L, 0x00000000L, 0x02000008L,
13121f2d90fSderaadt 0x00000008L, 0x02000108L, 0x02004108L, 0x00004008L,
13221f2d90fSderaadt 0x02004000L, 0x00000100L, 0x00000108L, 0x02004100L,
13321f2d90fSderaadt 0x02004100L, 0x02000108L, 0x00004008L, 0x02004000L,
13421f2d90fSderaadt 0x00004000L, 0x00000008L, 0x02000008L, 0x02000100L,
13521f2d90fSderaadt 0x02000000L, 0x00004100L, 0x02004108L, 0x00000000L,
13621f2d90fSderaadt 0x00004108L, 0x02000000L, 0x00000100L, 0x00004008L,
13721f2d90fSderaadt 0x02000108L, 0x00000100L, 0x00000000L, 0x02004108L,
13821f2d90fSderaadt 0x02004008L, 0x02004100L, 0x00000108L, 0x00004000L,
13921f2d90fSderaadt 0x00004100L, 0x02004008L, 0x02000100L, 0x00000108L,
14021f2d90fSderaadt 0x00000008L, 0x00004108L, 0x02004000L, 0x02000008L,
14121f2d90fSderaadt },{
14221f2d90fSderaadt /* nibble 5 */
14321f2d90fSderaadt 0x20000010L, 0x00080010L, 0x00000000L, 0x20080800L,
14421f2d90fSderaadt 0x00080010L, 0x00000800L, 0x20000810L, 0x00080000L,
14521f2d90fSderaadt 0x00000810L, 0x20080810L, 0x00080800L, 0x20000000L,
14621f2d90fSderaadt 0x20000800L, 0x20000010L, 0x20080000L, 0x00080810L,
14721f2d90fSderaadt 0x00080000L, 0x20000810L, 0x20080010L, 0x00000000L,
14821f2d90fSderaadt 0x00000800L, 0x00000010L, 0x20080800L, 0x20080010L,
14921f2d90fSderaadt 0x20080810L, 0x20080000L, 0x20000000L, 0x00000810L,
15021f2d90fSderaadt 0x00000010L, 0x00080800L, 0x00080810L, 0x20000800L,
15121f2d90fSderaadt 0x00000810L, 0x20000000L, 0x20000800L, 0x00080810L,
15221f2d90fSderaadt 0x20080800L, 0x00080010L, 0x00000000L, 0x20000800L,
15321f2d90fSderaadt 0x20000000L, 0x00000800L, 0x20080010L, 0x00080000L,
15421f2d90fSderaadt 0x00080010L, 0x20080810L, 0x00080800L, 0x00000010L,
15521f2d90fSderaadt 0x20080810L, 0x00080800L, 0x00080000L, 0x20000810L,
15621f2d90fSderaadt 0x20000010L, 0x20080000L, 0x00080810L, 0x00000000L,
15721f2d90fSderaadt 0x00000800L, 0x20000010L, 0x20000810L, 0x20080800L,
15821f2d90fSderaadt 0x20080000L, 0x00000810L, 0x00000010L, 0x20080010L,
15921f2d90fSderaadt },{
16021f2d90fSderaadt /* nibble 6 */
16121f2d90fSderaadt 0x00001000L, 0x00000080L, 0x00400080L, 0x00400001L,
16221f2d90fSderaadt 0x00401081L, 0x00001001L, 0x00001080L, 0x00000000L,
16321f2d90fSderaadt 0x00400000L, 0x00400081L, 0x00000081L, 0x00401000L,
16421f2d90fSderaadt 0x00000001L, 0x00401080L, 0x00401000L, 0x00000081L,
16521f2d90fSderaadt 0x00400081L, 0x00001000L, 0x00001001L, 0x00401081L,
16621f2d90fSderaadt 0x00000000L, 0x00400080L, 0x00400001L, 0x00001080L,
16721f2d90fSderaadt 0x00401001L, 0x00001081L, 0x00401080L, 0x00000001L,
16821f2d90fSderaadt 0x00001081L, 0x00401001L, 0x00000080L, 0x00400000L,
16921f2d90fSderaadt 0x00001081L, 0x00401000L, 0x00401001L, 0x00000081L,
17021f2d90fSderaadt 0x00001000L, 0x00000080L, 0x00400000L, 0x00401001L,
17121f2d90fSderaadt 0x00400081L, 0x00001081L, 0x00001080L, 0x00000000L,
17221f2d90fSderaadt 0x00000080L, 0x00400001L, 0x00000001L, 0x00400080L,
17321f2d90fSderaadt 0x00000000L, 0x00400081L, 0x00400080L, 0x00001080L,
17421f2d90fSderaadt 0x00000081L, 0x00001000L, 0x00401081L, 0x00400000L,
17521f2d90fSderaadt 0x00401080L, 0x00000001L, 0x00001001L, 0x00401081L,
17621f2d90fSderaadt 0x00400001L, 0x00401080L, 0x00401000L, 0x00001001L,
17721f2d90fSderaadt },{
17821f2d90fSderaadt /* nibble 7 */
17921f2d90fSderaadt 0x08200020L, 0x08208000L, 0x00008020L, 0x00000000L,
18021f2d90fSderaadt 0x08008000L, 0x00200020L, 0x08200000L, 0x08208020L,
18121f2d90fSderaadt 0x00000020L, 0x08000000L, 0x00208000L, 0x00008020L,
18221f2d90fSderaadt 0x00208020L, 0x08008020L, 0x08000020L, 0x08200000L,
18321f2d90fSderaadt 0x00008000L, 0x00208020L, 0x00200020L, 0x08008000L,
18421f2d90fSderaadt 0x08208020L, 0x08000020L, 0x00000000L, 0x00208000L,
18521f2d90fSderaadt 0x08000000L, 0x00200000L, 0x08008020L, 0x08200020L,
18621f2d90fSderaadt 0x00200000L, 0x00008000L, 0x08208000L, 0x00000020L,
18721f2d90fSderaadt 0x00200000L, 0x00008000L, 0x08000020L, 0x08208020L,
18821f2d90fSderaadt 0x00008020L, 0x08000000L, 0x00000000L, 0x00208000L,
18921f2d90fSderaadt 0x08200020L, 0x08008020L, 0x08008000L, 0x00200020L,
19021f2d90fSderaadt 0x08208000L, 0x00000020L, 0x00200020L, 0x08008000L,
19121f2d90fSderaadt 0x08208020L, 0x00200000L, 0x08200000L, 0x08000020L,
19221f2d90fSderaadt 0x00208000L, 0x00008020L, 0x08008020L, 0x08200000L,
19321f2d90fSderaadt 0x00000020L, 0x08208000L, 0x00208020L, 0x00000000L,
19421f2d90fSderaadt 0x08000000L, 0x08200020L, 0x00008000L, 0x00208020L,
19521f2d90fSderaadt }};
196