summaryrefslogtreecommitdiff
path: root/src/lib/libc/crypt/blowfish.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libc/crypt/blowfish.c')
-rw-r--r--src/lib/libc/crypt/blowfish.c87
1 files changed, 43 insertions, 44 deletions
diff --git a/src/lib/libc/crypt/blowfish.c b/src/lib/libc/crypt/blowfish.c
index 46568d2318..b9cd41f960 100644
--- a/src/lib/libc/crypt/blowfish.c
+++ b/src/lib/libc/crypt/blowfish.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: blowfish.c,v 1.4 1997/04/30 05:57:05 tholo Exp $ */ 1/* $OpenBSD: blowfish.c,v 1.5 1997/07/23 20:58:27 kstailey Exp $ */
2/* 2/*
3 * Blowfish block cipher for OpenBSD 3 * Blowfish block cipher for OpenBSD
4 * Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de> 4 * Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>
@@ -429,13 +429,13 @@ Blowfish_initstate(c)
429 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, 429 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
430 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6} 430 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6}
431 }, 431 },
432 { 432 {
433 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 433 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
434 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, 434 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,
435 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, 435 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
436 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 436 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,
437 0x9216d5d9, 0x8979fb1b 437 0x9216d5d9, 0x8979fb1b
438 } }; 438 } };
439 439
440 *c = initstate; 440 *c = initstate;
441 441
@@ -475,44 +475,43 @@ Blowfish_expand0state(blf_ctx *c, const u_int8_t *key, u_int16_t keybytes)
475#else 475#else
476void 476void
477Blowfish_expand0state(c, key, keybytes) 477Blowfish_expand0state(c, key, keybytes)
478 blf_ctx *c; 478 blf_ctx *c;
479 const u_int8_t *key; 479 const u_int8_t *key;
480 u_int16_t keybytes; 480 u_int16_t keybytes;
481#endif 481#endif
482{ 482{
483 u_int16_t i; 483 u_int16_t i;
484 u_int16_t j; 484 u_int16_t j;
485 u_int16_t k; 485 u_int16_t k;
486 u_int32_t temp; 486 u_int32_t temp;
487 u_int32_t datal; 487 u_int32_t datal;
488 u_int32_t datar; 488 u_int32_t datar;
489 489
490 j = 0; 490 j = 0;
491 for (i = 0; i < BLF_N + 2; i++) { 491 for (i = 0; i < BLF_N + 2; i++) {
492 /* Extract 4 int8 to 1 int32 from keystream */ 492 /* Extract 4 int8 to 1 int32 from keystream */
493 temp = Blowfish_stream2word(key, keybytes, &j); 493 temp = Blowfish_stream2word(key, keybytes, &j);
494 c->P[i] = c->P[i] ^ temp; 494 c->P[i] = c->P[i] ^ temp;
495 } 495 }
496 496
497 j = 0; 497 j = 0;
498 datal = 0x00000000; 498 datal = 0x00000000;
499 datar = 0x00000000; 499 datar = 0x00000000;
500 for (i = 0; i < BLF_N + 2; i += 2) { 500 for (i = 0; i < BLF_N + 2; i += 2) {
501 Blowfish_encipher(c, &datal, &datar); 501 Blowfish_encipher(c, &datal, &datar);
502 502
503 c->P[i] = datal; 503 c->P[i] = datal;
504 c->P[i + 1] = datar; 504 c->P[i + 1] = datar;
505 } 505 }
506 506
507 for (i = 0; i < 4; i++) { 507 for (i = 0; i < 4; i++) {
508 for (k = 0; k < 256; k += 2) { 508 for (k = 0; k < 256; k += 2) {
509 Blowfish_encipher(c, &datal, &datar); 509 Blowfish_encipher(c, &datal, &datar);
510 510
511 c->S[i][k] = datal; 511 c->S[i][k] = datal;
512 c->S[i][k + 1] = datar; 512 c->S[i][k + 1] = datar;
513 } 513 }
514 } 514 }
515
516} 515}
517 516
518 517