xref: /netbsd-src/crypto/external/bsd/heimdal/dist/lib/hcrypto/des-tables.h (revision d3273b5b76f5afaafe308cead5511dbb8df8c5e9)
1*d3273b5bSchristos /*	$NetBSD: des-tables.h,v 1.2 2017/01/28 21:31:47 christos Exp $	*/
2ca1c9b0cSelric 
3ca1c9b0cSelric /* GENERATE FILE from gen-des.pl, do not edit */
4ca1c9b0cSelric 
5ca1c9b0cSelric /* pc1_c_3 bit pattern 5 13 21 */
6ca1c9b0cSelric static int pc1_c_3[8] = {
7ca1c9b0cSelric     0x00000000, 0x00000010, 0x00001000, 0x00001010,
8ca1c9b0cSelric     0x00100000, 0x00100010, 0x00101000, 0x00101010
9ca1c9b0cSelric };
10ca1c9b0cSelric /* pc1_c_4 bit pattern 1 9 17 25 */
11ca1c9b0cSelric static int pc1_c_4[16] = {
12ca1c9b0cSelric     0x00000000, 0x00000001, 0x00000100, 0x00000101,
13ca1c9b0cSelric     0x00010000, 0x00010001, 0x00010100, 0x00010101,
14ca1c9b0cSelric     0x01000000, 0x01000001, 0x01000100, 0x01000101,
15ca1c9b0cSelric     0x01010000, 0x01010001, 0x01010100, 0x01010101
16ca1c9b0cSelric };
17ca1c9b0cSelric /* pc1_d_3 bit pattern 49 41 33 */
18ca1c9b0cSelric static int pc1_d_3[8] = {
19ca1c9b0cSelric     0x00000000, 0x01000000, 0x00010000, 0x01010000,
20ca1c9b0cSelric     0x00000100, 0x01000100, 0x00010100, 0x01010100
21ca1c9b0cSelric };
22ca1c9b0cSelric /* pc1_d_4 bit pattern 57 53 45 37 */
23ca1c9b0cSelric static int pc1_d_4[16] = {
24ca1c9b0cSelric     0x00000000, 0x00100000, 0x00001000, 0x00101000,
25ca1c9b0cSelric     0x00000010, 0x00100010, 0x00001010, 0x00101010,
26ca1c9b0cSelric     0x00000001, 0x00100001, 0x00001001, 0x00101001,
27ca1c9b0cSelric     0x00000011, 0x00100011, 0x00001011, 0x00101011
28ca1c9b0cSelric };
29ca1c9b0cSelric /* pc2_c_1 bit pattern 5 24 7 16 6 10 */
30ca1c9b0cSelric static int pc2_c_1[64] = {
31ca1c9b0cSelric     0x00000000, 0x00004000, 0x00040000, 0x00044000,
32ca1c9b0cSelric     0x00000100, 0x00004100, 0x00040100, 0x00044100,
33ca1c9b0cSelric     0x00020000, 0x00024000, 0x00060000, 0x00064000,
34ca1c9b0cSelric     0x00020100, 0x00024100, 0x00060100, 0x00064100,
35ca1c9b0cSelric     0x00000001, 0x00004001, 0x00040001, 0x00044001,
36ca1c9b0cSelric     0x00000101, 0x00004101, 0x00040101, 0x00044101,
37ca1c9b0cSelric     0x00020001, 0x00024001, 0x00060001, 0x00064001,
38ca1c9b0cSelric     0x00020101, 0x00024101, 0x00060101, 0x00064101,
39ca1c9b0cSelric     0x00080000, 0x00084000, 0x000c0000, 0x000c4000,
40ca1c9b0cSelric     0x00080100, 0x00084100, 0x000c0100, 0x000c4100,
41ca1c9b0cSelric     0x000a0000, 0x000a4000, 0x000e0000, 0x000e4000,
42ca1c9b0cSelric     0x000a0100, 0x000a4100, 0x000e0100, 0x000e4100,
43ca1c9b0cSelric     0x00080001, 0x00084001, 0x000c0001, 0x000c4001,
44ca1c9b0cSelric     0x00080101, 0x00084101, 0x000c0101, 0x000c4101,
45ca1c9b0cSelric     0x000a0001, 0x000a4001, 0x000e0001, 0x000e4001,
46ca1c9b0cSelric     0x000a0101, 0x000a4101, 0x000e0101, 0x000e4101
47ca1c9b0cSelric };
48ca1c9b0cSelric /* pc2_c_2 bit pattern 20 18 12 3 15 23 */
49ca1c9b0cSelric static int pc2_c_2[64] = {
50ca1c9b0cSelric     0x00000000, 0x00000002, 0x00000200, 0x00000202,
51ca1c9b0cSelric     0x00200000, 0x00200002, 0x00200200, 0x00200202,
52ca1c9b0cSelric     0x00001000, 0x00001002, 0x00001200, 0x00001202,
53ca1c9b0cSelric     0x00201000, 0x00201002, 0x00201200, 0x00201202,
54ca1c9b0cSelric     0x00000040, 0x00000042, 0x00000240, 0x00000242,
55ca1c9b0cSelric     0x00200040, 0x00200042, 0x00200240, 0x00200242,
56ca1c9b0cSelric     0x00001040, 0x00001042, 0x00001240, 0x00001242,
57ca1c9b0cSelric     0x00201040, 0x00201042, 0x00201240, 0x00201242,
58ca1c9b0cSelric     0x00000010, 0x00000012, 0x00000210, 0x00000212,
59ca1c9b0cSelric     0x00200010, 0x00200012, 0x00200210, 0x00200212,
60ca1c9b0cSelric     0x00001010, 0x00001012, 0x00001210, 0x00001212,
61ca1c9b0cSelric     0x00201010, 0x00201012, 0x00201210, 0x00201212,
62ca1c9b0cSelric     0x00000050, 0x00000052, 0x00000250, 0x00000252,
63ca1c9b0cSelric     0x00200050, 0x00200052, 0x00200250, 0x00200252,
64ca1c9b0cSelric     0x00001050, 0x00001052, 0x00001250, 0x00001252,
65ca1c9b0cSelric     0x00201050, 0x00201052, 0x00201250, 0x00201252
66ca1c9b0cSelric };
67ca1c9b0cSelric /* pc2_c_3 bit pattern 1 9 19 2 14 22 */
68ca1c9b0cSelric static int pc2_c_3[64] = {
69ca1c9b0cSelric     0x00000000, 0x00000004, 0x00000400, 0x00000404,
70ca1c9b0cSelric     0x00400000, 0x00400004, 0x00400400, 0x00400404,
71ca1c9b0cSelric     0x00000020, 0x00000024, 0x00000420, 0x00000424,
72ca1c9b0cSelric     0x00400020, 0x00400024, 0x00400420, 0x00400424,
73ca1c9b0cSelric     0x00008000, 0x00008004, 0x00008400, 0x00008404,
74ca1c9b0cSelric     0x00408000, 0x00408004, 0x00408400, 0x00408404,
75ca1c9b0cSelric     0x00008020, 0x00008024, 0x00008420, 0x00008424,
76ca1c9b0cSelric     0x00408020, 0x00408024, 0x00408420, 0x00408424,
77ca1c9b0cSelric     0x00800000, 0x00800004, 0x00800400, 0x00800404,
78ca1c9b0cSelric     0x00c00000, 0x00c00004, 0x00c00400, 0x00c00404,
79ca1c9b0cSelric     0x00800020, 0x00800024, 0x00800420, 0x00800424,
80ca1c9b0cSelric     0x00c00020, 0x00c00024, 0x00c00420, 0x00c00424,
81ca1c9b0cSelric     0x00808000, 0x00808004, 0x00808400, 0x00808404,
82ca1c9b0cSelric     0x00c08000, 0x00c08004, 0x00c08400, 0x00c08404,
83ca1c9b0cSelric     0x00808020, 0x00808024, 0x00808420, 0x00808424,
84ca1c9b0cSelric     0x00c08020, 0x00c08024, 0x00c08420, 0x00c08424
85ca1c9b0cSelric };
86ca1c9b0cSelric /* pc2_c_4 bit pattern 11 13 4 17 21 8 */
87ca1c9b0cSelric static int pc2_c_4[64] = {
88ca1c9b0cSelric     0x00000000, 0x00010000, 0x00000008, 0x00010008,
89ca1c9b0cSelric     0x00000080, 0x00010080, 0x00000088, 0x00010088,
90ca1c9b0cSelric     0x00100000, 0x00110000, 0x00100008, 0x00110008,
91ca1c9b0cSelric     0x00100080, 0x00110080, 0x00100088, 0x00110088,
92ca1c9b0cSelric     0x00000800, 0x00010800, 0x00000808, 0x00010808,
93ca1c9b0cSelric     0x00000880, 0x00010880, 0x00000888, 0x00010888,
94ca1c9b0cSelric     0x00100800, 0x00110800, 0x00100808, 0x00110808,
95ca1c9b0cSelric     0x00100880, 0x00110880, 0x00100888, 0x00110888,
96ca1c9b0cSelric     0x00002000, 0x00012000, 0x00002008, 0x00012008,
97ca1c9b0cSelric     0x00002080, 0x00012080, 0x00002088, 0x00012088,
98ca1c9b0cSelric     0x00102000, 0x00112000, 0x00102008, 0x00112008,
99ca1c9b0cSelric     0x00102080, 0x00112080, 0x00102088, 0x00112088,
100ca1c9b0cSelric     0x00002800, 0x00012800, 0x00002808, 0x00012808,
101ca1c9b0cSelric     0x00002880, 0x00012880, 0x00002888, 0x00012888,
102ca1c9b0cSelric     0x00102800, 0x00112800, 0x00102808, 0x00112808,
103ca1c9b0cSelric     0x00102880, 0x00112880, 0x00102888, 0x00112888
104ca1c9b0cSelric };
105ca1c9b0cSelric /* pc2_d_1 bit pattern 51 35 31 52 39 45 */
106ca1c9b0cSelric static int pc2_d_1[64] = {
107ca1c9b0cSelric     0x00000000, 0x00000080, 0x00002000, 0x00002080,
108ca1c9b0cSelric     0x00000001, 0x00000081, 0x00002001, 0x00002081,
109ca1c9b0cSelric     0x00200000, 0x00200080, 0x00202000, 0x00202080,
110ca1c9b0cSelric     0x00200001, 0x00200081, 0x00202001, 0x00202081,
111ca1c9b0cSelric     0x00020000, 0x00020080, 0x00022000, 0x00022080,
112ca1c9b0cSelric     0x00020001, 0x00020081, 0x00022001, 0x00022081,
113ca1c9b0cSelric     0x00220000, 0x00220080, 0x00222000, 0x00222080,
114ca1c9b0cSelric     0x00220001, 0x00220081, 0x00222001, 0x00222081,
115ca1c9b0cSelric     0x00000002, 0x00000082, 0x00002002, 0x00002082,
116ca1c9b0cSelric     0x00000003, 0x00000083, 0x00002003, 0x00002083,
117ca1c9b0cSelric     0x00200002, 0x00200082, 0x00202002, 0x00202082,
118ca1c9b0cSelric     0x00200003, 0x00200083, 0x00202003, 0x00202083,
119ca1c9b0cSelric     0x00020002, 0x00020082, 0x00022002, 0x00022082,
120ca1c9b0cSelric     0x00020003, 0x00020083, 0x00022003, 0x00022083,
121ca1c9b0cSelric     0x00220002, 0x00220082, 0x00222002, 0x00222082,
122ca1c9b0cSelric     0x00220003, 0x00220083, 0x00222003, 0x00222083
123ca1c9b0cSelric };
124ca1c9b0cSelric /* pc2_d_2 bit pattern 50 32 43 36 29 48 */
125ca1c9b0cSelric static int pc2_d_2[64] = {
126ca1c9b0cSelric     0x00000000, 0x00000010, 0x00800000, 0x00800010,
127ca1c9b0cSelric     0x00010000, 0x00010010, 0x00810000, 0x00810010,
128ca1c9b0cSelric     0x00000200, 0x00000210, 0x00800200, 0x00800210,
129ca1c9b0cSelric     0x00010200, 0x00010210, 0x00810200, 0x00810210,
130ca1c9b0cSelric     0x00100000, 0x00100010, 0x00900000, 0x00900010,
131ca1c9b0cSelric     0x00110000, 0x00110010, 0x00910000, 0x00910010,
132ca1c9b0cSelric     0x00100200, 0x00100210, 0x00900200, 0x00900210,
133ca1c9b0cSelric     0x00110200, 0x00110210, 0x00910200, 0x00910210,
134ca1c9b0cSelric     0x00000004, 0x00000014, 0x00800004, 0x00800014,
135ca1c9b0cSelric     0x00010004, 0x00010014, 0x00810004, 0x00810014,
136ca1c9b0cSelric     0x00000204, 0x00000214, 0x00800204, 0x00800214,
137ca1c9b0cSelric     0x00010204, 0x00010214, 0x00810204, 0x00810214,
138ca1c9b0cSelric     0x00100004, 0x00100014, 0x00900004, 0x00900014,
139ca1c9b0cSelric     0x00110004, 0x00110014, 0x00910004, 0x00910014,
140ca1c9b0cSelric     0x00100204, 0x00100214, 0x00900204, 0x00900214,
141ca1c9b0cSelric     0x00110204, 0x00110214, 0x00910204, 0x00910214
142ca1c9b0cSelric };
143ca1c9b0cSelric /* pc2_d_3 bit pattern 41 38 47 33 40 42 */
144ca1c9b0cSelric static int pc2_d_3[64] = {
145ca1c9b0cSelric     0x00000000, 0x00000400, 0x00001000, 0x00001400,
146ca1c9b0cSelric     0x00080000, 0x00080400, 0x00081000, 0x00081400,
147ca1c9b0cSelric     0x00000020, 0x00000420, 0x00001020, 0x00001420,
148ca1c9b0cSelric     0x00080020, 0x00080420, 0x00081020, 0x00081420,
149ca1c9b0cSelric     0x00004000, 0x00004400, 0x00005000, 0x00005400,
150ca1c9b0cSelric     0x00084000, 0x00084400, 0x00085000, 0x00085400,
151ca1c9b0cSelric     0x00004020, 0x00004420, 0x00005020, 0x00005420,
152ca1c9b0cSelric     0x00084020, 0x00084420, 0x00085020, 0x00085420,
153ca1c9b0cSelric     0x00000800, 0x00000c00, 0x00001800, 0x00001c00,
154ca1c9b0cSelric     0x00080800, 0x00080c00, 0x00081800, 0x00081c00,
155ca1c9b0cSelric     0x00000820, 0x00000c20, 0x00001820, 0x00001c20,
156ca1c9b0cSelric     0x00080820, 0x00080c20, 0x00081820, 0x00081c20,
157ca1c9b0cSelric     0x00004800, 0x00004c00, 0x00005800, 0x00005c00,
158ca1c9b0cSelric     0x00084800, 0x00084c00, 0x00085800, 0x00085c00,
159ca1c9b0cSelric     0x00004820, 0x00004c20, 0x00005820, 0x00005c20,
160ca1c9b0cSelric     0x00084820, 0x00084c20, 0x00085820, 0x00085c20
161ca1c9b0cSelric };
162ca1c9b0cSelric /* pc2_d_4 bit pattern 49 37 30 46 34 44 */
163ca1c9b0cSelric static int pc2_d_4[64] = {
164ca1c9b0cSelric     0x00000000, 0x00000100, 0x00040000, 0x00040100,
165ca1c9b0cSelric     0x00000040, 0x00000140, 0x00040040, 0x00040140,
166ca1c9b0cSelric     0x00400000, 0x00400100, 0x00440000, 0x00440100,
167ca1c9b0cSelric     0x00400040, 0x00400140, 0x00440040, 0x00440140,
168ca1c9b0cSelric     0x00008000, 0x00008100, 0x00048000, 0x00048100,
169ca1c9b0cSelric     0x00008040, 0x00008140, 0x00048040, 0x00048140,
170ca1c9b0cSelric     0x00408000, 0x00408100, 0x00448000, 0x00448100,
171ca1c9b0cSelric     0x00408040, 0x00408140, 0x00448040, 0x00448140,
172ca1c9b0cSelric     0x00000008, 0x00000108, 0x00040008, 0x00040108,
173ca1c9b0cSelric     0x00000048, 0x00000148, 0x00040048, 0x00040148,
174ca1c9b0cSelric     0x00400008, 0x00400108, 0x00440008, 0x00440108,
175ca1c9b0cSelric     0x00400048, 0x00400148, 0x00440048, 0x00440148,
176ca1c9b0cSelric     0x00008008, 0x00008108, 0x00048008, 0x00048108,
177ca1c9b0cSelric     0x00008048, 0x00008148, 0x00048048, 0x00048148,
178ca1c9b0cSelric     0x00408008, 0x00408108, 0x00448008, 0x00448108,
179ca1c9b0cSelric     0x00408048, 0x00408148, 0x00448048, 0x00448148
180ca1c9b0cSelric };
181ca1c9b0cSelric static unsigned char odd_parity[256] = {
182ca1c9b0cSelric   1,  1,  2,  2,  4,  4,  7,  7,  8,  8, 11, 11, 13, 13, 14, 14,
183ca1c9b0cSelric  16, 16, 19, 19, 21, 21, 22, 22, 25, 25, 26, 26, 28, 28, 31, 31,
184ca1c9b0cSelric  32, 32, 35, 35, 37, 37, 38, 38, 41, 41, 42, 42, 44, 44, 47, 47,
185ca1c9b0cSelric  49, 49, 50, 50, 52, 52, 55, 55, 56, 56, 59, 59, 61, 61, 62, 62,
186ca1c9b0cSelric  64, 64, 67, 67, 69, 69, 70, 70, 73, 73, 74, 74, 76, 76, 79, 79,
187ca1c9b0cSelric  81, 81, 82, 82, 84, 84, 87, 87, 88, 88, 91, 91, 93, 93, 94, 94,
188ca1c9b0cSelric  97, 97, 98, 98,100,100,103,103,104,104,107,107,109,109,110,110,
189ca1c9b0cSelric 112,112,115,115,117,117,118,118,121,121,122,122,124,124,127,127,
190ca1c9b0cSelric 128,128,131,131,133,133,134,134,137,137,138,138,140,140,143,143,
191ca1c9b0cSelric 145,145,146,146,148,148,151,151,152,152,155,155,157,157,158,158,
192ca1c9b0cSelric 161,161,162,162,164,164,167,167,168,168,171,171,173,173,174,174,
193ca1c9b0cSelric 176,176,179,179,181,181,182,182,185,185,186,186,188,188,191,191,
194ca1c9b0cSelric 193,193,194,194,196,196,199,199,200,200,203,203,205,205,206,206,
195ca1c9b0cSelric 208,208,211,211,213,213,214,214,217,217,218,218,220,220,223,223,
196ca1c9b0cSelric 224,224,227,227,229,229,230,230,233,233,234,234,236,236,239,239,
197ca1c9b0cSelric 241,241,242,242,244,244,247,247,248,248,251,251,253,253,254,254,
198ca1c9b0cSelric  };
199