186d7f5d3SJohn Marino /* $FreeBSD: src/sys/crypto/des/sk.h,v 1.4 2002/04/19 04:46:21 suz Exp $ */ 286d7f5d3SJohn Marino /* $KAME: sk.h,v 1.4 2001/09/10 04:03:58 itojun Exp $ */ 386d7f5d3SJohn Marino 486d7f5d3SJohn Marino /* crypto/des/sk.h */ 586d7f5d3SJohn Marino /* Copyright (C) 1995-1996 Eric Young (eay@mincom.oz.au) 686d7f5d3SJohn Marino * All rights reserved. 786d7f5d3SJohn Marino * 886d7f5d3SJohn Marino * This file is part of an SSL implementation written 986d7f5d3SJohn Marino * by Eric Young (eay@mincom.oz.au). 1086d7f5d3SJohn Marino * The implementation was written so as to conform with Netscapes SSL 1186d7f5d3SJohn Marino * specification. This library and applications are 1286d7f5d3SJohn Marino * FREE FOR COMMERCIAL AND NON-COMMERCIAL USE 1386d7f5d3SJohn Marino * as long as the following conditions are aheared to. 1486d7f5d3SJohn Marino * 1586d7f5d3SJohn Marino * Copyright remains Eric Young's, and as such any Copyright notices in 1686d7f5d3SJohn Marino * the code are not to be removed. If this code is used in a product, 1786d7f5d3SJohn Marino * Eric Young should be given attribution as the author of the parts used. 1886d7f5d3SJohn Marino * This can be in the form of a textual message at program startup or 1986d7f5d3SJohn Marino * in documentation (online or textual) provided with the package. 2086d7f5d3SJohn Marino * 2186d7f5d3SJohn Marino * Redistribution and use in source and binary forms, with or without 2286d7f5d3SJohn Marino * modification, are permitted provided that the following conditions 2386d7f5d3SJohn Marino * are met: 2486d7f5d3SJohn Marino * 1. Redistributions of source code must retain the copyright 2586d7f5d3SJohn Marino * notice, this list of conditions and the following disclaimer. 2686d7f5d3SJohn Marino * 2. Redistributions in binary form must reproduce the above copyright 2786d7f5d3SJohn Marino * notice, this list of conditions and the following disclaimer in the 2886d7f5d3SJohn Marino * documentation and/or other materials provided with the distribution. 2986d7f5d3SJohn Marino * 3. All advertising materials mentioning features or use of this software 3086d7f5d3SJohn Marino * must display the following acknowledgement: 3186d7f5d3SJohn Marino * This product includes software developed by Eric Young (eay@mincom.oz.au) 3286d7f5d3SJohn Marino * 3386d7f5d3SJohn Marino * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 3486d7f5d3SJohn Marino * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 3586d7f5d3SJohn Marino * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 3686d7f5d3SJohn Marino * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 3786d7f5d3SJohn Marino * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 3886d7f5d3SJohn Marino * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 3986d7f5d3SJohn Marino * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 4086d7f5d3SJohn Marino * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 4186d7f5d3SJohn Marino * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 4286d7f5d3SJohn Marino * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 4386d7f5d3SJohn Marino * SUCH DAMAGE. 4486d7f5d3SJohn Marino * 4586d7f5d3SJohn Marino * The licence and distribution terms for any publically available version or 4686d7f5d3SJohn Marino * derivative of this code cannot be changed. i.e. this code cannot simply be 4786d7f5d3SJohn Marino * copied and put under another distribution licence 4886d7f5d3SJohn Marino * [including the GNU Public Licence.] 4986d7f5d3SJohn Marino */ 5086d7f5d3SJohn Marino 5186d7f5d3SJohn Marino static const DES_LONG des_skb[8][64]={ 5286d7f5d3SJohn Marino { 5386d7f5d3SJohn Marino /* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */ 5486d7f5d3SJohn Marino 0x00000000L,0x00000010L,0x20000000L,0x20000010L, 5586d7f5d3SJohn Marino 0x00010000L,0x00010010L,0x20010000L,0x20010010L, 5686d7f5d3SJohn Marino 0x00000800L,0x00000810L,0x20000800L,0x20000810L, 5786d7f5d3SJohn Marino 0x00010800L,0x00010810L,0x20010800L,0x20010810L, 5886d7f5d3SJohn Marino 0x00000020L,0x00000030L,0x20000020L,0x20000030L, 5986d7f5d3SJohn Marino 0x00010020L,0x00010030L,0x20010020L,0x20010030L, 6086d7f5d3SJohn Marino 0x00000820L,0x00000830L,0x20000820L,0x20000830L, 6186d7f5d3SJohn Marino 0x00010820L,0x00010830L,0x20010820L,0x20010830L, 6286d7f5d3SJohn Marino 0x00080000L,0x00080010L,0x20080000L,0x20080010L, 6386d7f5d3SJohn Marino 0x00090000L,0x00090010L,0x20090000L,0x20090010L, 6486d7f5d3SJohn Marino 0x00080800L,0x00080810L,0x20080800L,0x20080810L, 6586d7f5d3SJohn Marino 0x00090800L,0x00090810L,0x20090800L,0x20090810L, 6686d7f5d3SJohn Marino 0x00080020L,0x00080030L,0x20080020L,0x20080030L, 6786d7f5d3SJohn Marino 0x00090020L,0x00090030L,0x20090020L,0x20090030L, 6886d7f5d3SJohn Marino 0x00080820L,0x00080830L,0x20080820L,0x20080830L, 6986d7f5d3SJohn Marino 0x00090820L,0x00090830L,0x20090820L,0x20090830L, 7086d7f5d3SJohn Marino },{ 7186d7f5d3SJohn Marino /* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 */ 7286d7f5d3SJohn Marino 0x00000000L,0x02000000L,0x00002000L,0x02002000L, 7386d7f5d3SJohn Marino 0x00200000L,0x02200000L,0x00202000L,0x02202000L, 7486d7f5d3SJohn Marino 0x00000004L,0x02000004L,0x00002004L,0x02002004L, 7586d7f5d3SJohn Marino 0x00200004L,0x02200004L,0x00202004L,0x02202004L, 7686d7f5d3SJohn Marino 0x00000400L,0x02000400L,0x00002400L,0x02002400L, 7786d7f5d3SJohn Marino 0x00200400L,0x02200400L,0x00202400L,0x02202400L, 7886d7f5d3SJohn Marino 0x00000404L,0x02000404L,0x00002404L,0x02002404L, 7986d7f5d3SJohn Marino 0x00200404L,0x02200404L,0x00202404L,0x02202404L, 8086d7f5d3SJohn Marino 0x10000000L,0x12000000L,0x10002000L,0x12002000L, 8186d7f5d3SJohn Marino 0x10200000L,0x12200000L,0x10202000L,0x12202000L, 8286d7f5d3SJohn Marino 0x10000004L,0x12000004L,0x10002004L,0x12002004L, 8386d7f5d3SJohn Marino 0x10200004L,0x12200004L,0x10202004L,0x12202004L, 8486d7f5d3SJohn Marino 0x10000400L,0x12000400L,0x10002400L,0x12002400L, 8586d7f5d3SJohn Marino 0x10200400L,0x12200400L,0x10202400L,0x12202400L, 8686d7f5d3SJohn Marino 0x10000404L,0x12000404L,0x10002404L,0x12002404L, 8786d7f5d3SJohn Marino 0x10200404L,0x12200404L,0x10202404L,0x12202404L, 8886d7f5d3SJohn Marino },{ 8986d7f5d3SJohn Marino /* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 */ 9086d7f5d3SJohn Marino 0x00000000L,0x00000001L,0x00040000L,0x00040001L, 9186d7f5d3SJohn Marino 0x01000000L,0x01000001L,0x01040000L,0x01040001L, 9286d7f5d3SJohn Marino 0x00000002L,0x00000003L,0x00040002L,0x00040003L, 9386d7f5d3SJohn Marino 0x01000002L,0x01000003L,0x01040002L,0x01040003L, 9486d7f5d3SJohn Marino 0x00000200L,0x00000201L,0x00040200L,0x00040201L, 9586d7f5d3SJohn Marino 0x01000200L,0x01000201L,0x01040200L,0x01040201L, 9686d7f5d3SJohn Marino 0x00000202L,0x00000203L,0x00040202L,0x00040203L, 9786d7f5d3SJohn Marino 0x01000202L,0x01000203L,0x01040202L,0x01040203L, 9886d7f5d3SJohn Marino 0x08000000L,0x08000001L,0x08040000L,0x08040001L, 9986d7f5d3SJohn Marino 0x09000000L,0x09000001L,0x09040000L,0x09040001L, 10086d7f5d3SJohn Marino 0x08000002L,0x08000003L,0x08040002L,0x08040003L, 10186d7f5d3SJohn Marino 0x09000002L,0x09000003L,0x09040002L,0x09040003L, 10286d7f5d3SJohn Marino 0x08000200L,0x08000201L,0x08040200L,0x08040201L, 10386d7f5d3SJohn Marino 0x09000200L,0x09000201L,0x09040200L,0x09040201L, 10486d7f5d3SJohn Marino 0x08000202L,0x08000203L,0x08040202L,0x08040203L, 10586d7f5d3SJohn Marino 0x09000202L,0x09000203L,0x09040202L,0x09040203L, 10686d7f5d3SJohn Marino },{ 10786d7f5d3SJohn Marino /* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 */ 10886d7f5d3SJohn Marino 0x00000000L,0x00100000L,0x00000100L,0x00100100L, 10986d7f5d3SJohn Marino 0x00000008L,0x00100008L,0x00000108L,0x00100108L, 11086d7f5d3SJohn Marino 0x00001000L,0x00101000L,0x00001100L,0x00101100L, 11186d7f5d3SJohn Marino 0x00001008L,0x00101008L,0x00001108L,0x00101108L, 11286d7f5d3SJohn Marino 0x04000000L,0x04100000L,0x04000100L,0x04100100L, 11386d7f5d3SJohn Marino 0x04000008L,0x04100008L,0x04000108L,0x04100108L, 11486d7f5d3SJohn Marino 0x04001000L,0x04101000L,0x04001100L,0x04101100L, 11586d7f5d3SJohn Marino 0x04001008L,0x04101008L,0x04001108L,0x04101108L, 11686d7f5d3SJohn Marino 0x00020000L,0x00120000L,0x00020100L,0x00120100L, 11786d7f5d3SJohn Marino 0x00020008L,0x00120008L,0x00020108L,0x00120108L, 11886d7f5d3SJohn Marino 0x00021000L,0x00121000L,0x00021100L,0x00121100L, 11986d7f5d3SJohn Marino 0x00021008L,0x00121008L,0x00021108L,0x00121108L, 12086d7f5d3SJohn Marino 0x04020000L,0x04120000L,0x04020100L,0x04120100L, 12186d7f5d3SJohn Marino 0x04020008L,0x04120008L,0x04020108L,0x04120108L, 12286d7f5d3SJohn Marino 0x04021000L,0x04121000L,0x04021100L,0x04121100L, 12386d7f5d3SJohn Marino 0x04021008L,0x04121008L,0x04021108L,0x04121108L, 12486d7f5d3SJohn Marino },{ 12586d7f5d3SJohn Marino /* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 */ 12686d7f5d3SJohn Marino 0x00000000L,0x10000000L,0x00010000L,0x10010000L, 12786d7f5d3SJohn Marino 0x00000004L,0x10000004L,0x00010004L,0x10010004L, 12886d7f5d3SJohn Marino 0x20000000L,0x30000000L,0x20010000L,0x30010000L, 12986d7f5d3SJohn Marino 0x20000004L,0x30000004L,0x20010004L,0x30010004L, 13086d7f5d3SJohn Marino 0x00100000L,0x10100000L,0x00110000L,0x10110000L, 13186d7f5d3SJohn Marino 0x00100004L,0x10100004L,0x00110004L,0x10110004L, 13286d7f5d3SJohn Marino 0x20100000L,0x30100000L,0x20110000L,0x30110000L, 13386d7f5d3SJohn Marino 0x20100004L,0x30100004L,0x20110004L,0x30110004L, 13486d7f5d3SJohn Marino 0x00001000L,0x10001000L,0x00011000L,0x10011000L, 13586d7f5d3SJohn Marino 0x00001004L,0x10001004L,0x00011004L,0x10011004L, 13686d7f5d3SJohn Marino 0x20001000L,0x30001000L,0x20011000L,0x30011000L, 13786d7f5d3SJohn Marino 0x20001004L,0x30001004L,0x20011004L,0x30011004L, 13886d7f5d3SJohn Marino 0x00101000L,0x10101000L,0x00111000L,0x10111000L, 13986d7f5d3SJohn Marino 0x00101004L,0x10101004L,0x00111004L,0x10111004L, 14086d7f5d3SJohn Marino 0x20101000L,0x30101000L,0x20111000L,0x30111000L, 14186d7f5d3SJohn Marino 0x20101004L,0x30101004L,0x20111004L,0x30111004L, 14286d7f5d3SJohn Marino },{ 14386d7f5d3SJohn Marino /* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 */ 14486d7f5d3SJohn Marino 0x00000000L,0x08000000L,0x00000008L,0x08000008L, 14586d7f5d3SJohn Marino 0x00000400L,0x08000400L,0x00000408L,0x08000408L, 14686d7f5d3SJohn Marino 0x00020000L,0x08020000L,0x00020008L,0x08020008L, 14786d7f5d3SJohn Marino 0x00020400L,0x08020400L,0x00020408L,0x08020408L, 14886d7f5d3SJohn Marino 0x00000001L,0x08000001L,0x00000009L,0x08000009L, 14986d7f5d3SJohn Marino 0x00000401L,0x08000401L,0x00000409L,0x08000409L, 15086d7f5d3SJohn Marino 0x00020001L,0x08020001L,0x00020009L,0x08020009L, 15186d7f5d3SJohn Marino 0x00020401L,0x08020401L,0x00020409L,0x08020409L, 15286d7f5d3SJohn Marino 0x02000000L,0x0A000000L,0x02000008L,0x0A000008L, 15386d7f5d3SJohn Marino 0x02000400L,0x0A000400L,0x02000408L,0x0A000408L, 15486d7f5d3SJohn Marino 0x02020000L,0x0A020000L,0x02020008L,0x0A020008L, 15586d7f5d3SJohn Marino 0x02020400L,0x0A020400L,0x02020408L,0x0A020408L, 15686d7f5d3SJohn Marino 0x02000001L,0x0A000001L,0x02000009L,0x0A000009L, 15786d7f5d3SJohn Marino 0x02000401L,0x0A000401L,0x02000409L,0x0A000409L, 15886d7f5d3SJohn Marino 0x02020001L,0x0A020001L,0x02020009L,0x0A020009L, 15986d7f5d3SJohn Marino 0x02020401L,0x0A020401L,0x02020409L,0x0A020409L, 16086d7f5d3SJohn Marino },{ 16186d7f5d3SJohn Marino /* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 */ 16286d7f5d3SJohn Marino 0x00000000L,0x00000100L,0x00080000L,0x00080100L, 16386d7f5d3SJohn Marino 0x01000000L,0x01000100L,0x01080000L,0x01080100L, 16486d7f5d3SJohn Marino 0x00000010L,0x00000110L,0x00080010L,0x00080110L, 16586d7f5d3SJohn Marino 0x01000010L,0x01000110L,0x01080010L,0x01080110L, 16686d7f5d3SJohn Marino 0x00200000L,0x00200100L,0x00280000L,0x00280100L, 16786d7f5d3SJohn Marino 0x01200000L,0x01200100L,0x01280000L,0x01280100L, 16886d7f5d3SJohn Marino 0x00200010L,0x00200110L,0x00280010L,0x00280110L, 16986d7f5d3SJohn Marino 0x01200010L,0x01200110L,0x01280010L,0x01280110L, 17086d7f5d3SJohn Marino 0x00000200L,0x00000300L,0x00080200L,0x00080300L, 17186d7f5d3SJohn Marino 0x01000200L,0x01000300L,0x01080200L,0x01080300L, 17286d7f5d3SJohn Marino 0x00000210L,0x00000310L,0x00080210L,0x00080310L, 17386d7f5d3SJohn Marino 0x01000210L,0x01000310L,0x01080210L,0x01080310L, 17486d7f5d3SJohn Marino 0x00200200L,0x00200300L,0x00280200L,0x00280300L, 17586d7f5d3SJohn Marino 0x01200200L,0x01200300L,0x01280200L,0x01280300L, 17686d7f5d3SJohn Marino 0x00200210L,0x00200310L,0x00280210L,0x00280310L, 17786d7f5d3SJohn Marino 0x01200210L,0x01200310L,0x01280210L,0x01280310L, 17886d7f5d3SJohn Marino },{ 17986d7f5d3SJohn Marino /* for D bits (numbered as per FIPS 46) 22 23 24 25 27 28 */ 18086d7f5d3SJohn Marino 0x00000000L,0x04000000L,0x00040000L,0x04040000L, 18186d7f5d3SJohn Marino 0x00000002L,0x04000002L,0x00040002L,0x04040002L, 18286d7f5d3SJohn Marino 0x00002000L,0x04002000L,0x00042000L,0x04042000L, 18386d7f5d3SJohn Marino 0x00002002L,0x04002002L,0x00042002L,0x04042002L, 18486d7f5d3SJohn Marino 0x00000020L,0x04000020L,0x00040020L,0x04040020L, 18586d7f5d3SJohn Marino 0x00000022L,0x04000022L,0x00040022L,0x04040022L, 18686d7f5d3SJohn Marino 0x00002020L,0x04002020L,0x00042020L,0x04042020L, 18786d7f5d3SJohn Marino 0x00002022L,0x04002022L,0x00042022L,0x04042022L, 18886d7f5d3SJohn Marino 0x00000800L,0x04000800L,0x00040800L,0x04040800L, 18986d7f5d3SJohn Marino 0x00000802L,0x04000802L,0x00040802L,0x04040802L, 19086d7f5d3SJohn Marino 0x00002800L,0x04002800L,0x00042800L,0x04042800L, 19186d7f5d3SJohn Marino 0x00002802L,0x04002802L,0x00042802L,0x04042802L, 19286d7f5d3SJohn Marino 0x00000820L,0x04000820L,0x00040820L,0x04040820L, 19386d7f5d3SJohn Marino 0x00000822L,0x04000822L,0x00040822L,0x04040822L, 19486d7f5d3SJohn Marino 0x00002820L,0x04002820L,0x00042820L,0x04042820L, 19586d7f5d3SJohn Marino 0x00002822L,0x04002822L,0x00042822L,0x04042822L, 19686d7f5d3SJohn Marino }}; 197