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 | ||
