Print this page
3882 remove xmod & friends
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/common/crypto/des/des_ks.c
+++ new/usr/src/common/crypto/des/des_ks.c
1 1 /*
2 2 * CDDL HEADER START
3 3 *
4 4 * The contents of this file are subject to the terms of the
5 5 * Common Development and Distribution License, Version 1.0 only
6 6 * (the "License"). You may not use this file except in compliance
7 7 * with the License.
8 8 *
9 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 10 * or http://www.opensolaris.org/os/licensing.
11 11 * See the License for the specific language governing permissions
12 12 * and limitations under the License.
13 13 *
14 14 * When distributing Covered Code, include this CDDL HEADER in each
15 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 16 * If applicable, add the following below this CDDL HEADER, with the
17 17 * fields enclosed by brackets "[]" replaced with your own identifying
18 18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 19 *
20 20 * CDDL HEADER END
↓ open down ↓ |
20 lines elided |
↑ open up ↑ |
21 21 */
22 22 /*
23 23 * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
24 24 * Use is subject to license terms.
25 25 */
26 26
27 27 #include <sys/types.h>
28 28
29 29 #pragma ident "%Z%%M% %I% %E% SMI"
30 30
31 -/* EXPORT DELETE START */
32 -
33 31 static uint64_t pc1_table[2][128]=
34 32 {
35 33 /* BEGIN CSTYLED */
36 34 {
37 35 0x0000000000000000ULL, 0x0000000000100000ULL, 0x0000000000001000ULL, 0x0000000000101000ULL,
38 36 0x0000000000000010ULL, 0x0000000000100010ULL, 0x0000000000001010ULL, 0x0000000000101010ULL,
39 37 0x0000000000000001ULL, 0x0000000000100001ULL, 0x0000000000001001ULL, 0x0000000000101001ULL,
40 38 0x0000000000000011ULL, 0x0000000000100011ULL, 0x0000000000001011ULL, 0x0000000000101011ULL,
41 39 0x0000000100000000ULL, 0x0000000100100000ULL, 0x0000000100001000ULL, 0x0000000100101000ULL,
42 40 0x0000000100000010ULL, 0x0000000100100010ULL, 0x0000000100001010ULL, 0x0000000100101010ULL,
43 41 0x0000000100000001ULL, 0x0000000100100001ULL, 0x0000000100001001ULL, 0x0000000100101001ULL,
44 42 0x0000000100000011ULL, 0x0000000100100011ULL, 0x0000000100001011ULL, 0x0000000100101011ULL,
45 43 0x0000010000000000ULL, 0x0000010000100000ULL, 0x0000010000001000ULL, 0x0000010000101000ULL,
46 44 0x0000010000000010ULL, 0x0000010000100010ULL, 0x0000010000001010ULL, 0x0000010000101010ULL,
47 45 0x0000010000000001ULL, 0x0000010000100001ULL, 0x0000010000001001ULL, 0x0000010000101001ULL,
48 46 0x0000010000000011ULL, 0x0000010000100011ULL, 0x0000010000001011ULL, 0x0000010000101011ULL,
49 47 0x0000010100000000ULL, 0x0000010100100000ULL, 0x0000010100001000ULL, 0x0000010100101000ULL,
50 48 0x0000010100000010ULL, 0x0000010100100010ULL, 0x0000010100001010ULL, 0x0000010100101010ULL,
51 49 0x0000010100000001ULL, 0x0000010100100001ULL, 0x0000010100001001ULL, 0x0000010100101001ULL,
52 50 0x0000010100000011ULL, 0x0000010100100011ULL, 0x0000010100001011ULL, 0x0000010100101011ULL,
53 51 0x0001000000000000ULL, 0x0001000000100000ULL, 0x0001000000001000ULL, 0x0001000000101000ULL,
54 52 0x0001000000000010ULL, 0x0001000000100010ULL, 0x0001000000001010ULL, 0x0001000000101010ULL,
55 53 0x0001000000000001ULL, 0x0001000000100001ULL, 0x0001000000001001ULL, 0x0001000000101001ULL,
56 54 0x0001000000000011ULL, 0x0001000000100011ULL, 0x0001000000001011ULL, 0x0001000000101011ULL,
57 55 0x0001000100000000ULL, 0x0001000100100000ULL, 0x0001000100001000ULL, 0x0001000100101000ULL,
58 56 0x0001000100000010ULL, 0x0001000100100010ULL, 0x0001000100001010ULL, 0x0001000100101010ULL,
59 57 0x0001000100000001ULL, 0x0001000100100001ULL, 0x0001000100001001ULL, 0x0001000100101001ULL,
60 58 0x0001000100000011ULL, 0x0001000100100011ULL, 0x0001000100001011ULL, 0x0001000100101011ULL,
61 59 0x0001010000000000ULL, 0x0001010000100000ULL, 0x0001010000001000ULL, 0x0001010000101000ULL,
62 60 0x0001010000000010ULL, 0x0001010000100010ULL, 0x0001010000001010ULL, 0x0001010000101010ULL,
63 61 0x0001010000000001ULL, 0x0001010000100001ULL, 0x0001010000001001ULL, 0x0001010000101001ULL,
64 62 0x0001010000000011ULL, 0x0001010000100011ULL, 0x0001010000001011ULL, 0x0001010000101011ULL,
65 63 0x0001010100000000ULL, 0x0001010100100000ULL, 0x0001010100001000ULL, 0x0001010100101000ULL,
66 64 0x0001010100000010ULL, 0x0001010100100010ULL, 0x0001010100001010ULL, 0x0001010100101010ULL,
67 65 0x0001010100000001ULL, 0x0001010100100001ULL, 0x0001010100001001ULL, 0x0001010100101001ULL,
68 66 0x0001010100000011ULL, 0x0001010100100011ULL, 0x0001010100001011ULL, 0x0001010100101011ULL
69 67 },
70 68 {
71 69 0x0000000000000000ULL, 0x0000000001000000ULL, 0x0000000000010000ULL, 0x0000000001010000ULL,
72 70 0x0000000000000100ULL, 0x0000000001000100ULL, 0x0000000000010100ULL, 0x0000000001010100ULL,
73 71 0x0000000010000000ULL, 0x0000000011000000ULL, 0x0000000010010000ULL, 0x0000000011010000ULL,
74 72 0x0000000010000100ULL, 0x0000000011000100ULL, 0x0000000010010100ULL, 0x0000000011010100ULL,
75 73 0x0000001000000000ULL, 0x0000001001000000ULL, 0x0000001000010000ULL, 0x0000001001010000ULL,
76 74 0x0000001000000100ULL, 0x0000001001000100ULL, 0x0000001000010100ULL, 0x0000001001010100ULL,
77 75 0x0000001010000000ULL, 0x0000001011000000ULL, 0x0000001010010000ULL, 0x0000001011010000ULL,
78 76 0x0000001010000100ULL, 0x0000001011000100ULL, 0x0000001010010100ULL, 0x0000001011010100ULL,
79 77 0x0000100000000000ULL, 0x0000100001000000ULL, 0x0000100000010000ULL, 0x0000100001010000ULL,
80 78 0x0000100000000100ULL, 0x0000100001000100ULL, 0x0000100000010100ULL, 0x0000100001010100ULL,
81 79 0x0000100010000000ULL, 0x0000100011000000ULL, 0x0000100010010000ULL, 0x0000100011010000ULL,
82 80 0x0000100010000100ULL, 0x0000100011000100ULL, 0x0000100010010100ULL, 0x0000100011010100ULL,
83 81 0x0000101000000000ULL, 0x0000101001000000ULL, 0x0000101000010000ULL, 0x0000101001010000ULL,
84 82 0x0000101000000100ULL, 0x0000101001000100ULL, 0x0000101000010100ULL, 0x0000101001010100ULL,
85 83 0x0000101010000000ULL, 0x0000101011000000ULL, 0x0000101010010000ULL, 0x0000101011010000ULL,
86 84 0x0000101010000100ULL, 0x0000101011000100ULL, 0x0000101010010100ULL, 0x0000101011010100ULL,
87 85 0x0010000000000000ULL, 0x0010000001000000ULL, 0x0010000000010000ULL, 0x0010000001010000ULL,
88 86 0x0010000000000100ULL, 0x0010000001000100ULL, 0x0010000000010100ULL, 0x0010000001010100ULL,
89 87 0x0010000010000000ULL, 0x0010000011000000ULL, 0x0010000010010000ULL, 0x0010000011010000ULL,
90 88 0x0010000010000100ULL, 0x0010000011000100ULL, 0x0010000010010100ULL, 0x0010000011010100ULL,
91 89 0x0010001000000000ULL, 0x0010001001000000ULL, 0x0010001000010000ULL, 0x0010001001010000ULL,
92 90 0x0010001000000100ULL, 0x0010001001000100ULL, 0x0010001000010100ULL, 0x0010001001010100ULL,
93 91 0x0010001010000000ULL, 0x0010001011000000ULL, 0x0010001010010000ULL, 0x0010001011010000ULL,
94 92 0x0010001010000100ULL, 0x0010001011000100ULL, 0x0010001010010100ULL, 0x0010001011010100ULL,
95 93 0x0010100000000000ULL, 0x0010100001000000ULL, 0x0010100000010000ULL, 0x0010100001010000ULL,
96 94 0x0010100000000100ULL, 0x0010100001000100ULL, 0x0010100000010100ULL, 0x0010100001010100ULL,
97 95 0x0010100010000000ULL, 0x0010100011000000ULL, 0x0010100010010000ULL, 0x0010100011010000ULL,
98 96 0x0010100010000100ULL, 0x0010100011000100ULL, 0x0010100010010100ULL, 0x0010100011010100ULL,
99 97 0x0010101000000000ULL, 0x0010101001000000ULL, 0x0010101000010000ULL, 0x0010101001010000ULL,
100 98 0x0010101000000100ULL, 0x0010101001000100ULL, 0x0010101000010100ULL, 0x0010101001010100ULL,
101 99 0x0010101010000000ULL, 0x0010101011000000ULL, 0x0010101010010000ULL, 0x0010101011010000ULL,
102 100 0x0010101010000100ULL, 0x0010101011000100ULL, 0x0010101010010100ULL, 0x0010101011010100ULL
103 101 }
104 102 /* END CSTYLED */
105 103 };
106 104
107 105
108 106 static uint32_t pc2_1_table[4][64] =
109 107 {
110 108 {
111 109 0x00000000, 0x00004000, 0x04000000, 0x04004000,
112 110 0x00000100, 0x00004100, 0x04000100, 0x04004100,
113 111 0x00020000, 0x00024000, 0x04020000, 0x04024000,
114 112 0x00020100, 0x00024100, 0x04020100, 0x04024100,
115 113 0x00000001, 0x00004001, 0x04000001, 0x04004001,
116 114 0x00000101, 0x00004101, 0x04000101, 0x04004101,
117 115 0x00020001, 0x00024001, 0x04020001, 0x04024001,
118 116 0x00020101, 0x00024101, 0x04020101, 0x04024101,
119 117 0x08000000, 0x08004000, 0x0c000000, 0x0c004000,
120 118 0x08000100, 0x08004100, 0x0c000100, 0x0c004100,
121 119 0x08020000, 0x08024000, 0x0c020000, 0x0c024000,
122 120 0x08020100, 0x08024100, 0x0c020100, 0x0c024100,
123 121 0x08000001, 0x08004001, 0x0c000001, 0x0c004001,
124 122 0x08000101, 0x08004101, 0x0c000101, 0x0c004101,
125 123 0x08020001, 0x08024001, 0x0c020001, 0x0c024001,
126 124 0x08020101, 0x08024101, 0x0c020101, 0x0c024101
127 125 },
128 126 {
129 127 0x00000000, 0x00000200, 0x20000000, 0x20000200,
130 128 0x00001000, 0x00001200, 0x20001000, 0x20001200,
131 129 0x00000000, 0x00000200, 0x20000000, 0x20000200,
132 130 0x00001000, 0x00001200, 0x20001000, 0x20001200,
133 131 0x00000040, 0x00000240, 0x20000040, 0x20000240,
134 132 0x00001040, 0x00001240, 0x20001040, 0x20001240,
135 133 0x00000040, 0x00000240, 0x20000040, 0x20000240,
136 134 0x00001040, 0x00001240, 0x20001040, 0x20001240,
137 135 0x00000010, 0x00000210, 0x20000010, 0x20000210,
138 136 0x00001010, 0x00001210, 0x20001010, 0x20001210,
139 137 0x00000010, 0x00000210, 0x20000010, 0x20000210,
140 138 0x00001010, 0x00001210, 0x20001010, 0x20001210,
141 139 0x00000050, 0x00000250, 0x20000050, 0x20000250,
142 140 0x00001050, 0x00001250, 0x20001050, 0x20001250,
143 141 0x00000050, 0x00000250, 0x20000050, 0x20000250,
144 142 0x00001050, 0x00001250, 0x20001050, 0x20001250
145 143 },
146 144 {
147 145 0x00000000, 0x00000000, 0x40000000, 0x40000000,
148 146 0x00000020, 0x00000020, 0x40000020, 0x40000020,
149 147 0x00008000, 0x00008000, 0x40008000, 0x40008000,
150 148 0x00008020, 0x00008020, 0x40008020, 0x40008020,
151 149 0x80000000, 0x80000000, 0xc0000000, 0xc0000000,
152 150 0x80000020, 0x80000020, 0xc0000020, 0xc0000020,
153 151 0x80008000, 0x80008000, 0xc0008000, 0xc0008000,
154 152 0x80008020, 0x80008020, 0xc0008020, 0xc0008020,
155 153 0x00000002, 0x00000002, 0x40000002, 0x40000002,
156 154 0x00000022, 0x00000022, 0x40000022, 0x40000022,
157 155 0x00008002, 0x00008002, 0x40008002, 0x40008002,
158 156 0x00008022, 0x00008022, 0x40008022, 0x40008022,
159 157 0x80000002, 0x80000002, 0xc0000002, 0xc0000002,
160 158 0x80000022, 0x80000022, 0xc0000022, 0xc0000022,
161 159 0x80008002, 0x80008002, 0xc0008002, 0xc0008002,
162 160 0x80008022, 0x80008022, 0xc0008022, 0xc0008022
163 161 },
164 162 {
165 163 0x00000000, 0x10000000, 0x00000800, 0x10000800,
166 164 0x00000000, 0x10000000, 0x00000800, 0x10000800,
167 165 0x00002000, 0x10002000, 0x00002800, 0x10002800,
168 166 0x00002000, 0x10002000, 0x00002800, 0x10002800,
169 167 0x00000004, 0x10000004, 0x00000804, 0x10000804,
170 168 0x00000004, 0x10000004, 0x00000804, 0x10000804,
171 169 0x00002004, 0x10002004, 0x00002804, 0x10002804,
172 170 0x00002004, 0x10002004, 0x00002804, 0x10002804,
173 171 0x00000400, 0x10000400, 0x00000c00, 0x10000c00,
174 172 0x00000400, 0x10000400, 0x00000c00, 0x10000c00,
175 173 0x00002400, 0x10002400, 0x00002c00, 0x10002c00,
176 174 0x00002400, 0x10002400, 0x00002c00, 0x10002c00,
177 175 0x00000404, 0x10000404, 0x00000c04, 0x10000c04,
178 176 0x00000404, 0x10000404, 0x00000c04, 0x10000c04,
179 177 0x00002404, 0x10002404, 0x00002c04, 0x10002c04,
180 178 0x00002404, 0x10002404, 0x00002c04, 0x10002c04
181 179 }
182 180 };
183 181
184 182 static uint32_t pc2_1_tail_table[8] =
185 183 {
186 184 0x00000000, 0x00010000, 0x00000008, 0x00010008,
187 185 0x00000080, 0x00010080, 0x00000088, 0x00010088
188 186 };
189 187
190 188 static uint32_t pc2_2_table[5][32] =
191 189 {
192 190 {
193 191 0x00000000, 0x00010000, 0x00000008, 0x00010008,
194 192 0x20000000, 0x20010000, 0x20000008, 0x20010008,
195 193 0x00100000, 0x00110000, 0x00100008, 0x00110008,
196 194 0x20100000, 0x20110000, 0x20100008, 0x20110008,
197 195 0x00000010, 0x00010010, 0x00000018, 0x00010018,
198 196 0x20000010, 0x20010010, 0x20000018, 0x20010018,
199 197 0x00100010, 0x00110010, 0x00100018, 0x00110018,
200 198 0x20100010, 0x20110010, 0x20100018, 0x20110018
201 199 },
202 200 {
203 201 0x00000000, 0x00000000, 0x10000000, 0x10000000,
204 202 0x00000020, 0x00000020, 0x10000020, 0x10000020,
205 203 0x00000000, 0x00000000, 0x10000000, 0x10000000,
206 204 0x00000020, 0x00000020, 0x10000020, 0x10000020,
207 205 0x00000400, 0x00000400, 0x10000400, 0x10000400,
208 206 0x00000420, 0x00000420, 0x10000420, 0x10000420,
209 207 0x00000400, 0x00000400, 0x10000400, 0x10000400,
210 208 0x00000420, 0x00000420, 0x10000420, 0x10000420
211 209 },
212 210 {
213 211 0x00000000, 0x00000000, 0x00000080, 0x00000080,
214 212 0x80000000, 0x80000000, 0x80000080, 0x80000080,
215 213 0x00080000, 0x00080000, 0x00080080, 0x00080080,
216 214 0x80080000, 0x80080000, 0x80080080, 0x80080080,
217 215 0x00001000, 0x00001000, 0x00001080, 0x00001080,
218 216 0x80001000, 0x80001000, 0x80001080, 0x80001080,
219 217 0x00081000, 0x00081000, 0x00081080, 0x00081080,
220 218 0x80081000, 0x80081000, 0x80081080, 0x80081080
221 219 },
222 220 {
223 221 0x00000000, 0x00008000, 0x08000000, 0x08008000,
224 222 0x00000100, 0x00008100, 0x08000100, 0x08008100,
225 223 0x00020000, 0x00028000, 0x08020000, 0x08028000,
226 224 0x00020100, 0x00028100, 0x08020100, 0x08028100,
227 225 0x00004000, 0x0000c000, 0x08004000, 0x0800c000,
228 226 0x00004100, 0x0000c100, 0x08004100, 0x0800c100,
229 227 0x00024000, 0x0002c000, 0x08024000, 0x0802c000,
230 228 0x00024100, 0x0002c100, 0x08024100, 0x0802c100
231 229 },
232 230 {
233 231 0x00000000, 0x00000200, 0x40000000, 0x40000200,
234 232 0x00040000, 0x00040200, 0x40040000, 0x40040200,
235 233 0x00000040, 0x00000240, 0x40000040, 0x40000240,
236 234 0x00040040, 0x00040240, 0x40040040, 0x40040240,
237 235 0x00002000, 0x00002200, 0x40002000, 0x40002200,
238 236 0x00042000, 0x00042200, 0x40042000, 0x40042200,
239 237 0x00002040, 0x00002240, 0x40002040, 0x40002240,
240 238 0x00042040, 0x00042240, 0x40042040, 0x40042240
241 239 }
242 240 };
243 241
244 242 static uint32_t pc2_2_tail_table[4] =
245 243 {
246 244 0x00000000, 0x00000800, 0x04000000, 0x04000800
247 245 };
248 246
249 247 static int ss[16] = {1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1};
250 248
251 249
252 250 /*
253 251 * This routine initializes the key schedule.
254 252 */
255 253 void
256 254 des_ks(uint64_t *ks, uint64_t key)
257 255 {
258 256 int i;
259 257 uint32_t upper, lower;
260 258 uint64_t c, d;
261 259
262 260 c = pc1_table[0][key >> 57] |
263 261 ((pc1_table[0][(key >> 49) & 127ULL]) << 1) |
264 262 ((pc1_table[0][(key >> 41) & 127ULL]) << 2) |
265 263 ((pc1_table[0][(key >> 33) & 127ULL]) << 3) |
266 264 pc1_table[1][(key >> 25) & 127ULL] |
267 265 ((pc1_table[1][(key >> 17) & 127ULL]) << 1) |
268 266 ((pc1_table[1][(key >> 9) & 127ULL]) << 2) |
269 267 ((pc1_table[1][(key >> 1) & 127ULL]) << 3);
270 268
271 269 d = (c & 0xfffffffULL) | ((c & 0xfffffffULL) << 28);
272 270 c = (c & 0xfffffff0000000ULL) | ((c & 0xfffffff0000000ULL) >> 28);
273 271
274 272 for (i = 0; i < 16; i++) {
275 273 c = c << ss[i];
276 274 d = d << ss[i];
277 275
278 276 upper = pc2_1_table[0][(c >> 50) & 63] |
279 277 pc2_1_table[1][(c >> 44) & 63] |
280 278 pc2_1_table[2][(c >> 38) & 63] |
281 279 pc2_1_table[3][(c >> 32) & 63] |
282 280 pc2_1_tail_table[(c >> 28) & 7];
↓ open down ↓ |
240 lines elided |
↑ open up ↑ |
283 281
284 282 lower = pc2_2_table[0][(d >> 51) & 31] |
285 283 pc2_2_table[1][(d >> 46) & 31] |
286 284 pc2_2_table[2][(d >> 41) & 31] |
287 285 pc2_2_table[3][(d >> 36) & 31] |
288 286 pc2_2_table[4][(d >> 31) & 31] |
289 287 pc2_2_tail_table[(d >> 28) & 3];
290 288 ks[i] = ((uint64_t)upper)<<32 | ((uint64_t)lower);
291 289 }
292 290 }
293 -
294 -/* EXPORT DELETE END */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX