diff options
Diffstat (limited to 'src/lib/libcrypto/des')
-rw-r--r-- | src/lib/libcrypto/des/des.h | 15 | ||||
-rw-r--r-- | src/lib/libcrypto/des/des_enc.c | 121 | ||||
-rw-r--r-- | src/lib/libcrypto/des/des_fcrypt.c | 34 | ||||
-rw-r--r-- | src/lib/libcrypto/des/des_local.h | 6 |
4 files changed, 44 insertions, 132 deletions
diff --git a/src/lib/libcrypto/des/des.h b/src/lib/libcrypto/des/des.h index 2d957a192c..ad7a418c01 100644 --- a/src/lib/libcrypto/des/des.h +++ b/src/lib/libcrypto/des/des.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: des.h,v 1.23 2025/01/25 17:59:44 tb Exp $ */ | 1 | /* $OpenBSD: des.h,v 1.26 2025/06/09 17:49:45 tb Exp $ */ |
2 | /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -56,11 +56,20 @@ | |||
56 | * [including the GNU Public Licence.] | 56 | * [including the GNU Public Licence.] |
57 | */ | 57 | */ |
58 | 58 | ||
59 | #ifndef HEADER_NEW_DES_H | 59 | #ifndef HEADER_DES_H |
60 | #define HEADER_NEW_DES_H | 60 | #define HEADER_DES_H |
61 | 61 | ||
62 | #include <openssl/opensslconf.h> | 62 | #include <openssl/opensslconf.h> |
63 | 63 | ||
64 | #ifndef DES_LONG | ||
65 | /* XXX - typedef to unsigned int everywhere. */ | ||
66 | #ifdef __i386__ | ||
67 | #define DES_LONG unsigned long | ||
68 | #else | ||
69 | #define DES_LONG unsigned int | ||
70 | #endif | ||
71 | #endif | ||
72 | |||
64 | #ifdef __cplusplus | 73 | #ifdef __cplusplus |
65 | extern "C" { | 74 | extern "C" { |
66 | #endif | 75 | #endif |
diff --git a/src/lib/libcrypto/des/des_enc.c b/src/lib/libcrypto/des/des_enc.c index deec50bffb..cb89784fb0 100644 --- a/src/lib/libcrypto/des/des_enc.c +++ b/src/lib/libcrypto/des/des_enc.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: des_enc.c,v 1.20 2024/08/31 16:17:13 jsing Exp $ */ | 1 | /* $OpenBSD: des_enc.c,v 1.21 2025/07/27 13:26:24 jsing Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -210,10 +210,8 @@ void | |||
210 | DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc) | 210 | DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc) |
211 | { | 211 | { |
212 | DES_LONG l, r, t, u; | 212 | DES_LONG l, r, t, u; |
213 | #ifndef DES_UNROLL | ||
214 | int i; | ||
215 | #endif | ||
216 | DES_LONG *s; | 213 | DES_LONG *s; |
214 | int i; | ||
217 | 215 | ||
218 | r = data[0]; | 216 | r = data[0]; |
219 | l = data[1]; | 217 | l = data[1]; |
@@ -231,56 +229,21 @@ DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc) | |||
231 | l = ROTATE(l, 29) & 0xffffffffL; | 229 | l = ROTATE(l, 29) & 0xffffffffL; |
232 | 230 | ||
233 | s = ks->ks->deslong; | 231 | s = ks->ks->deslong; |
234 | /* I don't know if it is worth the effort of loop unrolling the | 232 | |
235 | * inner loop */ | ||
236 | if (enc) { | 233 | if (enc) { |
237 | #ifdef DES_UNROLL | 234 | for (i = 0; i < 32; i += 8) { |
238 | D_ENCRYPT(l, r, 0); /* 1 */ | 235 | D_ENCRYPT(l, r, i + 0); |
239 | D_ENCRYPT(r, l, 2); /* 2 */ | 236 | D_ENCRYPT(r, l, i + 2); |
240 | D_ENCRYPT(l, r, 4); /* 3 */ | 237 | D_ENCRYPT(l, r, i + 4); |
241 | D_ENCRYPT(r, l, 6); /* 4 */ | 238 | D_ENCRYPT(r, l, i + 6); |
242 | D_ENCRYPT(l, r, 8); /* 5 */ | ||
243 | D_ENCRYPT(r, l, 10); /* 6 */ | ||
244 | D_ENCRYPT(l, r, 12); /* 7 */ | ||
245 | D_ENCRYPT(r, l, 14); /* 8 */ | ||
246 | D_ENCRYPT(l, r, 16); /* 9 */ | ||
247 | D_ENCRYPT(r, l, 18); /* 10 */ | ||
248 | D_ENCRYPT(l, r, 20); /* 11 */ | ||
249 | D_ENCRYPT(r, l, 22); /* 12 */ | ||
250 | D_ENCRYPT(l, r, 24); /* 13 */ | ||
251 | D_ENCRYPT(r, l, 26); /* 14 */ | ||
252 | D_ENCRYPT(l, r, 28); /* 15 */ | ||
253 | D_ENCRYPT(r, l, 30); /* 16 */ | ||
254 | #else | ||
255 | for (i = 0; i < 32; i += 4) { | ||
256 | D_ENCRYPT(l, r, i + 0); /* 1 */ | ||
257 | D_ENCRYPT(r, l, i + 2); /* 2 */ | ||
258 | } | 239 | } |
259 | #endif | ||
260 | } else { | 240 | } else { |
261 | #ifdef DES_UNROLL | 241 | for (i = 32; i > 0; i -= 8) { |
262 | D_ENCRYPT(l, r, 30); /* 16 */ | 242 | D_ENCRYPT(l, r, i - 2); |
263 | D_ENCRYPT(r, l, 28); /* 15 */ | 243 | D_ENCRYPT(r, l, i - 4); |
264 | D_ENCRYPT(l, r, 26); /* 14 */ | 244 | D_ENCRYPT(l, r, i - 6); |
265 | D_ENCRYPT(r, l, 24); /* 13 */ | 245 | D_ENCRYPT(r, l, i - 8); |
266 | D_ENCRYPT(l, r, 22); /* 12 */ | ||
267 | D_ENCRYPT(r, l, 20); /* 11 */ | ||
268 | D_ENCRYPT(l, r, 18); /* 10 */ | ||
269 | D_ENCRYPT(r, l, 16); /* 9 */ | ||
270 | D_ENCRYPT(l, r, 14); /* 8 */ | ||
271 | D_ENCRYPT(r, l, 12); /* 7 */ | ||
272 | D_ENCRYPT(l, r, 10); /* 6 */ | ||
273 | D_ENCRYPT(r, l, 8); /* 5 */ | ||
274 | D_ENCRYPT(l, r, 6); /* 4 */ | ||
275 | D_ENCRYPT(r, l, 4); /* 3 */ | ||
276 | D_ENCRYPT(l, r, 2); /* 2 */ | ||
277 | D_ENCRYPT(r, l, 0); /* 1 */ | ||
278 | #else | ||
279 | for (i = 30; i > 0; i -= 4) { | ||
280 | D_ENCRYPT(l, r, i - 0); /* 16 */ | ||
281 | D_ENCRYPT(r, l, i - 2); /* 15 */ | ||
282 | } | 246 | } |
283 | #endif | ||
284 | } | 247 | } |
285 | 248 | ||
286 | /* rotate and clear the top bits on machines with 8byte longs */ | 249 | /* rotate and clear the top bits on machines with 8byte longs */ |
@@ -298,10 +261,8 @@ void | |||
298 | DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc) | 261 | DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc) |
299 | { | 262 | { |
300 | DES_LONG l, r, t, u; | 263 | DES_LONG l, r, t, u; |
301 | #ifndef DES_UNROLL | ||
302 | int i; | ||
303 | #endif | ||
304 | DES_LONG *s; | 264 | DES_LONG *s; |
265 | int i; | ||
305 | 266 | ||
306 | r = data[0]; | 267 | r = data[0]; |
307 | l = data[1]; | 268 | l = data[1]; |
@@ -320,53 +281,19 @@ DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc) | |||
320 | /* I don't know if it is worth the effort of loop unrolling the | 281 | /* I don't know if it is worth the effort of loop unrolling the |
321 | * inner loop */ | 282 | * inner loop */ |
322 | if (enc) { | 283 | if (enc) { |
323 | #ifdef DES_UNROLL | 284 | for (i = 0; i < 32; i += 8) { |
324 | D_ENCRYPT(l, r, 0); /* 1 */ | 285 | D_ENCRYPT(l, r, i + 0); |
325 | D_ENCRYPT(r, l, 2); /* 2 */ | 286 | D_ENCRYPT(r, l, i + 2); |
326 | D_ENCRYPT(l, r, 4); /* 3 */ | 287 | D_ENCRYPT(l, r, i + 4); |
327 | D_ENCRYPT(r, l, 6); /* 4 */ | 288 | D_ENCRYPT(r, l, i + 6); |
328 | D_ENCRYPT(l, r, 8); /* 5 */ | ||
329 | D_ENCRYPT(r, l, 10); /* 6 */ | ||
330 | D_ENCRYPT(l, r, 12); /* 7 */ | ||
331 | D_ENCRYPT(r, l, 14); /* 8 */ | ||
332 | D_ENCRYPT(l, r, 16); /* 9 */ | ||
333 | D_ENCRYPT(r, l, 18); /* 10 */ | ||
334 | D_ENCRYPT(l, r, 20); /* 11 */ | ||
335 | D_ENCRYPT(r, l, 22); /* 12 */ | ||
336 | D_ENCRYPT(l, r, 24); /* 13 */ | ||
337 | D_ENCRYPT(r, l, 26); /* 14 */ | ||
338 | D_ENCRYPT(l, r, 28); /* 15 */ | ||
339 | D_ENCRYPT(r, l, 30); /* 16 */ | ||
340 | #else | ||
341 | for (i = 0; i < 32; i += 4) { | ||
342 | D_ENCRYPT(l, r, i + 0); /* 1 */ | ||
343 | D_ENCRYPT(r, l, i + 2); /* 2 */ | ||
344 | } | 289 | } |
345 | #endif | ||
346 | } else { | 290 | } else { |
347 | #ifdef DES_UNROLL | 291 | for (i = 32; i > 0; i -= 8) { |
348 | D_ENCRYPT(l, r, 30); /* 16 */ | 292 | D_ENCRYPT(l, r, i - 2); |
349 | D_ENCRYPT(r, l, 28); /* 15 */ | 293 | D_ENCRYPT(r, l, i - 4); |
350 | D_ENCRYPT(l, r, 26); /* 14 */ | 294 | D_ENCRYPT(l, r, i - 6); |
351 | D_ENCRYPT(r, l, 24); /* 13 */ | 295 | D_ENCRYPT(r, l, i - 8); |
352 | D_ENCRYPT(l, r, 22); /* 12 */ | ||
353 | D_ENCRYPT(r, l, 20); /* 11 */ | ||
354 | D_ENCRYPT(l, r, 18); /* 10 */ | ||
355 | D_ENCRYPT(r, l, 16); /* 9 */ | ||
356 | D_ENCRYPT(l, r, 14); /* 8 */ | ||
357 | D_ENCRYPT(r, l, 12); /* 7 */ | ||
358 | D_ENCRYPT(l, r, 10); /* 6 */ | ||
359 | D_ENCRYPT(r, l, 8); /* 5 */ | ||
360 | D_ENCRYPT(l, r, 6); /* 4 */ | ||
361 | D_ENCRYPT(r, l, 4); /* 3 */ | ||
362 | D_ENCRYPT(l, r, 2); /* 2 */ | ||
363 | D_ENCRYPT(r, l, 0); /* 1 */ | ||
364 | #else | ||
365 | for (i = 30; i > 0; i -= 4) { | ||
366 | D_ENCRYPT(l, r, i - 0); /* 16 */ | ||
367 | D_ENCRYPT(r, l, i - 2); /* 15 */ | ||
368 | } | 296 | } |
369 | #endif | ||
370 | } | 297 | } |
371 | /* rotate and clear the top bits on machines with 8byte longs */ | 298 | /* rotate and clear the top bits on machines with 8byte longs */ |
372 | data[0] = ROTATE(l, 3) & 0xffffffffL; | 299 | data[0] = ROTATE(l, 3) & 0xffffffffL; |
diff --git a/src/lib/libcrypto/des/des_fcrypt.c b/src/lib/libcrypto/des/des_fcrypt.c index b33b1240c2..2dd071f5d0 100644 --- a/src/lib/libcrypto/des/des_fcrypt.c +++ b/src/lib/libcrypto/des/des_fcrypt.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: des_fcrypt.c,v 1.4 2024/08/31 16:22:18 jsing Exp $ */ | 1 | /* $OpenBSD: des_fcrypt.c,v 1.5 2025/07/27 13:26:24 jsing Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -90,8 +90,8 @@ fcrypt_body(DES_LONG *out, DES_key_schedule *ks, DES_LONG Eswap0, | |||
90 | { | 90 | { |
91 | DES_LONG l, r, t, u; | 91 | DES_LONG l, r, t, u; |
92 | DES_LONG *s; | 92 | DES_LONG *s; |
93 | int j; | ||
94 | DES_LONG E0, E1; | 93 | DES_LONG E0, E1; |
94 | int i, j; | ||
95 | 95 | ||
96 | l = 0; | 96 | l = 0; |
97 | r = 0; | 97 | r = 0; |
@@ -101,32 +101,12 @@ fcrypt_body(DES_LONG *out, DES_key_schedule *ks, DES_LONG Eswap0, | |||
101 | E1 = Eswap1; | 101 | E1 = Eswap1; |
102 | 102 | ||
103 | for (j = 0; j < 25; j++) { | 103 | for (j = 0; j < 25; j++) { |
104 | #ifndef DES_UNROLL | 104 | for (i = 0; i < 32; i += 8) { |
105 | int i; | 105 | D_ENCRYPT(l, r, i + 0); |
106 | 106 | D_ENCRYPT(r, l, i + 2); | |
107 | for (i = 0; i < 32; i += 4) { | 107 | D_ENCRYPT(l, r, i + 4); |
108 | D_ENCRYPT(l, r, i + 0); /* 1 */ | 108 | D_ENCRYPT(r, l, i + 6); |
109 | D_ENCRYPT(r, l, i + 2); /* 2 */ | ||
110 | } | 109 | } |
111 | #else | ||
112 | D_ENCRYPT(l, r, 0); /* 1 */ | ||
113 | D_ENCRYPT(r, l, 2); /* 2 */ | ||
114 | D_ENCRYPT(l, r, 4); /* 3 */ | ||
115 | D_ENCRYPT(r, l, 6); /* 4 */ | ||
116 | D_ENCRYPT(l, r, 8); /* 5 */ | ||
117 | D_ENCRYPT(r, l, 10); /* 6 */ | ||
118 | D_ENCRYPT(l, r, 12); /* 7 */ | ||
119 | D_ENCRYPT(r, l, 14); /* 8 */ | ||
120 | D_ENCRYPT(l, r, 16); /* 9 */ | ||
121 | D_ENCRYPT(r, l, 18); /* 10 */ | ||
122 | D_ENCRYPT(l, r, 20); /* 11 */ | ||
123 | D_ENCRYPT(r, l, 22); /* 12 */ | ||
124 | D_ENCRYPT(l, r, 24); /* 13 */ | ||
125 | D_ENCRYPT(r, l, 26); /* 14 */ | ||
126 | D_ENCRYPT(l, r, 28); /* 15 */ | ||
127 | D_ENCRYPT(r, l, 30); /* 16 */ | ||
128 | #endif | ||
129 | |||
130 | t = l; | 110 | t = l; |
131 | l = r; | 111 | l = r; |
132 | r = t; | 112 | r = t; |
diff --git a/src/lib/libcrypto/des/des_local.h b/src/lib/libcrypto/des/des_local.h index 61bfde7520..077c03139f 100644 --- a/src/lib/libcrypto/des/des_local.h +++ b/src/lib/libcrypto/des/des_local.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: des_local.h,v 1.5 2024/08/31 16:22:18 jsing Exp $ */ | 1 | /* $OpenBSD: des_local.h,v 1.6 2025/04/23 10:08:20 jsing Exp $ */ |
2 | /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -217,10 +217,6 @@ ROTATE(uint32_t a, uint32_t n) | |||
217 | 217 | ||
218 | extern const DES_LONG DES_SPtrans[8][64]; | 218 | extern const DES_LONG DES_SPtrans[8][64]; |
219 | 219 | ||
220 | #ifdef OPENSSL_SMALL_FOOTPRINT | ||
221 | #undef DES_UNROLL | ||
222 | #endif | ||
223 | |||
224 | __END_HIDDEN_DECLS | 220 | __END_HIDDEN_DECLS |
225 | 221 | ||
226 | #endif | 222 | #endif |