xref: /freebsd/sys/crypto/des/sk.h (revision 71625ec9ad2a9bc8c09784fbd23b759830e0ee5f)
188ff5695SSUZUKI Shinsuke /*	$KAME: sk.h,v 1.4 2001/09/10 04:03:58 itojun Exp $	*/
2686cdd19SJun-ichiro itojun Hagino 
36a800098SYoshinobu Inoue /* crypto/des/sk.h */
46a800098SYoshinobu Inoue /* Copyright (C) 1995-1996 Eric Young (eay@mincom.oz.au)
56a800098SYoshinobu Inoue  * All rights reserved.
66a800098SYoshinobu Inoue  *
76a800098SYoshinobu Inoue  * This file is part of an SSL implementation written
86a800098SYoshinobu Inoue  * by Eric Young (eay@mincom.oz.au).
96a800098SYoshinobu Inoue  * The implementation was written so as to conform with Netscapes SSL
106a800098SYoshinobu Inoue  * specification.  This library and applications are
116a800098SYoshinobu Inoue  * FREE FOR COMMERCIAL AND NON-COMMERCIAL USE
126a800098SYoshinobu Inoue  * as long as the following conditions are aheared to.
136a800098SYoshinobu Inoue  *
146a800098SYoshinobu Inoue  * Copyright remains Eric Young's, and as such any Copyright notices in
156a800098SYoshinobu Inoue  * the code are not to be removed.  If this code is used in a product,
166a800098SYoshinobu Inoue  * Eric Young should be given attribution as the author of the parts used.
176a800098SYoshinobu Inoue  * This can be in the form of a textual message at program startup or
186a800098SYoshinobu Inoue  * in documentation (online or textual) provided with the package.
196a800098SYoshinobu Inoue  *
206a800098SYoshinobu Inoue  * Redistribution and use in source and binary forms, with or without
216a800098SYoshinobu Inoue  * modification, are permitted provided that the following conditions
226a800098SYoshinobu Inoue  * are met:
236a800098SYoshinobu Inoue  * 1. Redistributions of source code must retain the copyright
246a800098SYoshinobu Inoue  *    notice, this list of conditions and the following disclaimer.
256a800098SYoshinobu Inoue  * 2. Redistributions in binary form must reproduce the above copyright
266a800098SYoshinobu Inoue  *    notice, this list of conditions and the following disclaimer in the
276a800098SYoshinobu Inoue  *    documentation and/or other materials provided with the distribution.
286a800098SYoshinobu Inoue  * 3. All advertising materials mentioning features or use of this software
296a800098SYoshinobu Inoue  *    must display the following acknowledgement:
306a800098SYoshinobu Inoue  *    This product includes software developed by Eric Young (eay@mincom.oz.au)
316a800098SYoshinobu Inoue  *
326a800098SYoshinobu Inoue  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
336a800098SYoshinobu Inoue  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
346a800098SYoshinobu Inoue  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
356a800098SYoshinobu Inoue  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
366a800098SYoshinobu Inoue  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
376a800098SYoshinobu Inoue  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
386a800098SYoshinobu Inoue  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
396a800098SYoshinobu Inoue  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
406a800098SYoshinobu Inoue  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
416a800098SYoshinobu Inoue  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
426a800098SYoshinobu Inoue  * SUCH DAMAGE.
436a800098SYoshinobu Inoue  *
446a800098SYoshinobu Inoue  * The licence and distribution terms for any publically available version or
456a800098SYoshinobu Inoue  * derivative of this code cannot be changed.  i.e. this code cannot simply be
466a800098SYoshinobu Inoue  * copied and put under another distribution licence
476a800098SYoshinobu Inoue  * [including the GNU Public Licence.]
486a800098SYoshinobu Inoue  */
496a800098SYoshinobu Inoue 
506a800098SYoshinobu Inoue static const DES_LONG des_skb[8][64]={
516a800098SYoshinobu Inoue {
526a800098SYoshinobu Inoue /* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
536a800098SYoshinobu Inoue 0x00000000L,0x00000010L,0x20000000L,0x20000010L,
546a800098SYoshinobu Inoue 0x00010000L,0x00010010L,0x20010000L,0x20010010L,
556a800098SYoshinobu Inoue 0x00000800L,0x00000810L,0x20000800L,0x20000810L,
566a800098SYoshinobu Inoue 0x00010800L,0x00010810L,0x20010800L,0x20010810L,
576a800098SYoshinobu Inoue 0x00000020L,0x00000030L,0x20000020L,0x20000030L,
586a800098SYoshinobu Inoue 0x00010020L,0x00010030L,0x20010020L,0x20010030L,
596a800098SYoshinobu Inoue 0x00000820L,0x00000830L,0x20000820L,0x20000830L,
606a800098SYoshinobu Inoue 0x00010820L,0x00010830L,0x20010820L,0x20010830L,
616a800098SYoshinobu Inoue 0x00080000L,0x00080010L,0x20080000L,0x20080010L,
626a800098SYoshinobu Inoue 0x00090000L,0x00090010L,0x20090000L,0x20090010L,
636a800098SYoshinobu Inoue 0x00080800L,0x00080810L,0x20080800L,0x20080810L,
646a800098SYoshinobu Inoue 0x00090800L,0x00090810L,0x20090800L,0x20090810L,
656a800098SYoshinobu Inoue 0x00080020L,0x00080030L,0x20080020L,0x20080030L,
666a800098SYoshinobu Inoue 0x00090020L,0x00090030L,0x20090020L,0x20090030L,
676a800098SYoshinobu Inoue 0x00080820L,0x00080830L,0x20080820L,0x20080830L,
686a800098SYoshinobu Inoue 0x00090820L,0x00090830L,0x20090820L,0x20090830L,
696a800098SYoshinobu Inoue },{
706a800098SYoshinobu Inoue /* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 */
716a800098SYoshinobu Inoue 0x00000000L,0x02000000L,0x00002000L,0x02002000L,
726a800098SYoshinobu Inoue 0x00200000L,0x02200000L,0x00202000L,0x02202000L,
736a800098SYoshinobu Inoue 0x00000004L,0x02000004L,0x00002004L,0x02002004L,
746a800098SYoshinobu Inoue 0x00200004L,0x02200004L,0x00202004L,0x02202004L,
756a800098SYoshinobu Inoue 0x00000400L,0x02000400L,0x00002400L,0x02002400L,
766a800098SYoshinobu Inoue 0x00200400L,0x02200400L,0x00202400L,0x02202400L,
776a800098SYoshinobu Inoue 0x00000404L,0x02000404L,0x00002404L,0x02002404L,
786a800098SYoshinobu Inoue 0x00200404L,0x02200404L,0x00202404L,0x02202404L,
796a800098SYoshinobu Inoue 0x10000000L,0x12000000L,0x10002000L,0x12002000L,
806a800098SYoshinobu Inoue 0x10200000L,0x12200000L,0x10202000L,0x12202000L,
816a800098SYoshinobu Inoue 0x10000004L,0x12000004L,0x10002004L,0x12002004L,
826a800098SYoshinobu Inoue 0x10200004L,0x12200004L,0x10202004L,0x12202004L,
836a800098SYoshinobu Inoue 0x10000400L,0x12000400L,0x10002400L,0x12002400L,
846a800098SYoshinobu Inoue 0x10200400L,0x12200400L,0x10202400L,0x12202400L,
856a800098SYoshinobu Inoue 0x10000404L,0x12000404L,0x10002404L,0x12002404L,
866a800098SYoshinobu Inoue 0x10200404L,0x12200404L,0x10202404L,0x12202404L,
876a800098SYoshinobu Inoue },{
886a800098SYoshinobu Inoue /* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 */
896a800098SYoshinobu Inoue 0x00000000L,0x00000001L,0x00040000L,0x00040001L,
906a800098SYoshinobu Inoue 0x01000000L,0x01000001L,0x01040000L,0x01040001L,
916a800098SYoshinobu Inoue 0x00000002L,0x00000003L,0x00040002L,0x00040003L,
926a800098SYoshinobu Inoue 0x01000002L,0x01000003L,0x01040002L,0x01040003L,
936a800098SYoshinobu Inoue 0x00000200L,0x00000201L,0x00040200L,0x00040201L,
946a800098SYoshinobu Inoue 0x01000200L,0x01000201L,0x01040200L,0x01040201L,
956a800098SYoshinobu Inoue 0x00000202L,0x00000203L,0x00040202L,0x00040203L,
966a800098SYoshinobu Inoue 0x01000202L,0x01000203L,0x01040202L,0x01040203L,
976a800098SYoshinobu Inoue 0x08000000L,0x08000001L,0x08040000L,0x08040001L,
986a800098SYoshinobu Inoue 0x09000000L,0x09000001L,0x09040000L,0x09040001L,
996a800098SYoshinobu Inoue 0x08000002L,0x08000003L,0x08040002L,0x08040003L,
1006a800098SYoshinobu Inoue 0x09000002L,0x09000003L,0x09040002L,0x09040003L,
1016a800098SYoshinobu Inoue 0x08000200L,0x08000201L,0x08040200L,0x08040201L,
1026a800098SYoshinobu Inoue 0x09000200L,0x09000201L,0x09040200L,0x09040201L,
1036a800098SYoshinobu Inoue 0x08000202L,0x08000203L,0x08040202L,0x08040203L,
1046a800098SYoshinobu Inoue 0x09000202L,0x09000203L,0x09040202L,0x09040203L,
1056a800098SYoshinobu Inoue },{
1066a800098SYoshinobu Inoue /* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 */
1076a800098SYoshinobu Inoue 0x00000000L,0x00100000L,0x00000100L,0x00100100L,
1086a800098SYoshinobu Inoue 0x00000008L,0x00100008L,0x00000108L,0x00100108L,
1096a800098SYoshinobu Inoue 0x00001000L,0x00101000L,0x00001100L,0x00101100L,
1106a800098SYoshinobu Inoue 0x00001008L,0x00101008L,0x00001108L,0x00101108L,
1116a800098SYoshinobu Inoue 0x04000000L,0x04100000L,0x04000100L,0x04100100L,
1126a800098SYoshinobu Inoue 0x04000008L,0x04100008L,0x04000108L,0x04100108L,
1136a800098SYoshinobu Inoue 0x04001000L,0x04101000L,0x04001100L,0x04101100L,
1146a800098SYoshinobu Inoue 0x04001008L,0x04101008L,0x04001108L,0x04101108L,
1156a800098SYoshinobu Inoue 0x00020000L,0x00120000L,0x00020100L,0x00120100L,
1166a800098SYoshinobu Inoue 0x00020008L,0x00120008L,0x00020108L,0x00120108L,
1176a800098SYoshinobu Inoue 0x00021000L,0x00121000L,0x00021100L,0x00121100L,
1186a800098SYoshinobu Inoue 0x00021008L,0x00121008L,0x00021108L,0x00121108L,
1196a800098SYoshinobu Inoue 0x04020000L,0x04120000L,0x04020100L,0x04120100L,
1206a800098SYoshinobu Inoue 0x04020008L,0x04120008L,0x04020108L,0x04120108L,
1216a800098SYoshinobu Inoue 0x04021000L,0x04121000L,0x04021100L,0x04121100L,
1226a800098SYoshinobu Inoue 0x04021008L,0x04121008L,0x04021108L,0x04121108L,
1236a800098SYoshinobu Inoue },{
1246a800098SYoshinobu Inoue /* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
1256a800098SYoshinobu Inoue 0x00000000L,0x10000000L,0x00010000L,0x10010000L,
1266a800098SYoshinobu Inoue 0x00000004L,0x10000004L,0x00010004L,0x10010004L,
1276a800098SYoshinobu Inoue 0x20000000L,0x30000000L,0x20010000L,0x30010000L,
1286a800098SYoshinobu Inoue 0x20000004L,0x30000004L,0x20010004L,0x30010004L,
1296a800098SYoshinobu Inoue 0x00100000L,0x10100000L,0x00110000L,0x10110000L,
1306a800098SYoshinobu Inoue 0x00100004L,0x10100004L,0x00110004L,0x10110004L,
1316a800098SYoshinobu Inoue 0x20100000L,0x30100000L,0x20110000L,0x30110000L,
1326a800098SYoshinobu Inoue 0x20100004L,0x30100004L,0x20110004L,0x30110004L,
1336a800098SYoshinobu Inoue 0x00001000L,0x10001000L,0x00011000L,0x10011000L,
1346a800098SYoshinobu Inoue 0x00001004L,0x10001004L,0x00011004L,0x10011004L,
1356a800098SYoshinobu Inoue 0x20001000L,0x30001000L,0x20011000L,0x30011000L,
1366a800098SYoshinobu Inoue 0x20001004L,0x30001004L,0x20011004L,0x30011004L,
1376a800098SYoshinobu Inoue 0x00101000L,0x10101000L,0x00111000L,0x10111000L,
1386a800098SYoshinobu Inoue 0x00101004L,0x10101004L,0x00111004L,0x10111004L,
1396a800098SYoshinobu Inoue 0x20101000L,0x30101000L,0x20111000L,0x30111000L,
1406a800098SYoshinobu Inoue 0x20101004L,0x30101004L,0x20111004L,0x30111004L,
1416a800098SYoshinobu Inoue },{
1426a800098SYoshinobu Inoue /* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 */
1436a800098SYoshinobu Inoue 0x00000000L,0x08000000L,0x00000008L,0x08000008L,
1446a800098SYoshinobu Inoue 0x00000400L,0x08000400L,0x00000408L,0x08000408L,
1456a800098SYoshinobu Inoue 0x00020000L,0x08020000L,0x00020008L,0x08020008L,
1466a800098SYoshinobu Inoue 0x00020400L,0x08020400L,0x00020408L,0x08020408L,
1476a800098SYoshinobu Inoue 0x00000001L,0x08000001L,0x00000009L,0x08000009L,
1486a800098SYoshinobu Inoue 0x00000401L,0x08000401L,0x00000409L,0x08000409L,
1496a800098SYoshinobu Inoue 0x00020001L,0x08020001L,0x00020009L,0x08020009L,
1506a800098SYoshinobu Inoue 0x00020401L,0x08020401L,0x00020409L,0x08020409L,
1516a800098SYoshinobu Inoue 0x02000000L,0x0A000000L,0x02000008L,0x0A000008L,
1526a800098SYoshinobu Inoue 0x02000400L,0x0A000400L,0x02000408L,0x0A000408L,
1536a800098SYoshinobu Inoue 0x02020000L,0x0A020000L,0x02020008L,0x0A020008L,
1546a800098SYoshinobu Inoue 0x02020400L,0x0A020400L,0x02020408L,0x0A020408L,
1556a800098SYoshinobu Inoue 0x02000001L,0x0A000001L,0x02000009L,0x0A000009L,
1566a800098SYoshinobu Inoue 0x02000401L,0x0A000401L,0x02000409L,0x0A000409L,
1576a800098SYoshinobu Inoue 0x02020001L,0x0A020001L,0x02020009L,0x0A020009L,
1586a800098SYoshinobu Inoue 0x02020401L,0x0A020401L,0x02020409L,0x0A020409L,
1596a800098SYoshinobu Inoue },{
1606a800098SYoshinobu Inoue /* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 */
1616a800098SYoshinobu Inoue 0x00000000L,0x00000100L,0x00080000L,0x00080100L,
1626a800098SYoshinobu Inoue 0x01000000L,0x01000100L,0x01080000L,0x01080100L,
1636a800098SYoshinobu Inoue 0x00000010L,0x00000110L,0x00080010L,0x00080110L,
1646a800098SYoshinobu Inoue 0x01000010L,0x01000110L,0x01080010L,0x01080110L,
1656a800098SYoshinobu Inoue 0x00200000L,0x00200100L,0x00280000L,0x00280100L,
1666a800098SYoshinobu Inoue 0x01200000L,0x01200100L,0x01280000L,0x01280100L,
1676a800098SYoshinobu Inoue 0x00200010L,0x00200110L,0x00280010L,0x00280110L,
1686a800098SYoshinobu Inoue 0x01200010L,0x01200110L,0x01280010L,0x01280110L,
1696a800098SYoshinobu Inoue 0x00000200L,0x00000300L,0x00080200L,0x00080300L,
1706a800098SYoshinobu Inoue 0x01000200L,0x01000300L,0x01080200L,0x01080300L,
1716a800098SYoshinobu Inoue 0x00000210L,0x00000310L,0x00080210L,0x00080310L,
1726a800098SYoshinobu Inoue 0x01000210L,0x01000310L,0x01080210L,0x01080310L,
1736a800098SYoshinobu Inoue 0x00200200L,0x00200300L,0x00280200L,0x00280300L,
1746a800098SYoshinobu Inoue 0x01200200L,0x01200300L,0x01280200L,0x01280300L,
1756a800098SYoshinobu Inoue 0x00200210L,0x00200310L,0x00280210L,0x00280310L,
1766a800098SYoshinobu Inoue 0x01200210L,0x01200310L,0x01280210L,0x01280310L,
1776a800098SYoshinobu Inoue },{
1786a800098SYoshinobu Inoue /* for D bits (numbered as per FIPS 46) 22 23 24 25 27 28 */
1796a800098SYoshinobu Inoue 0x00000000L,0x04000000L,0x00040000L,0x04040000L,
1806a800098SYoshinobu Inoue 0x00000002L,0x04000002L,0x00040002L,0x04040002L,
1816a800098SYoshinobu Inoue 0x00002000L,0x04002000L,0x00042000L,0x04042000L,
1826a800098SYoshinobu Inoue 0x00002002L,0x04002002L,0x00042002L,0x04042002L,
1836a800098SYoshinobu Inoue 0x00000020L,0x04000020L,0x00040020L,0x04040020L,
1846a800098SYoshinobu Inoue 0x00000022L,0x04000022L,0x00040022L,0x04040022L,
1856a800098SYoshinobu Inoue 0x00002020L,0x04002020L,0x00042020L,0x04042020L,
1866a800098SYoshinobu Inoue 0x00002022L,0x04002022L,0x00042022L,0x04042022L,
1876a800098SYoshinobu Inoue 0x00000800L,0x04000800L,0x00040800L,0x04040800L,
1886a800098SYoshinobu Inoue 0x00000802L,0x04000802L,0x00040802L,0x04040802L,
1896a800098SYoshinobu Inoue 0x00002800L,0x04002800L,0x00042800L,0x04042800L,
1906a800098SYoshinobu Inoue 0x00002802L,0x04002802L,0x00042802L,0x04042802L,
1916a800098SYoshinobu Inoue 0x00000820L,0x04000820L,0x00040820L,0x04040820L,
1926a800098SYoshinobu Inoue 0x00000822L,0x04000822L,0x00040822L,0x04040822L,
1936a800098SYoshinobu Inoue 0x00002820L,0x04002820L,0x00042820L,0x04042820L,
1946a800098SYoshinobu Inoue 0x00002822L,0x04002822L,0x00042822L,0x04042822L,
1956a800098SYoshinobu Inoue }};
196