diff options
Diffstat (limited to 'src/lib/libc/crypt/blowfish.c')
-rw-r--r-- | src/lib/libc/crypt/blowfish.c | 87 |
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 |
476 | void | 476 | void |
477 | Blowfish_expand0state(c, key, keybytes) | 477 | Blowfish_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 | ||