diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libc/crypt/blowfish.c | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/src/lib/libc/crypt/blowfish.c b/src/lib/libc/crypt/blowfish.c index d946655624..96b4c06f00 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.9 1998/08/10 18:40:59 provos Exp $ */ | 1 | /* $OpenBSD: blowfish.c,v 1.10 1998/08/21 23:31:28 deraadt 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> |
| @@ -611,16 +611,16 @@ blf_ecb_encrypt(c, data, len) | |||
| 611 | u_int32_t len; | 611 | u_int32_t len; |
| 612 | #endif | 612 | #endif |
| 613 | { | 613 | { |
| 614 | #if BYTE_ORDER == LITTLE_ENDIAN | ||
| 615 | u_int32_t l, r; | 614 | u_int32_t l, r; |
| 616 | #endif | ||
| 617 | u_int32_t i; | 615 | u_int32_t i; |
| 618 | 616 | ||
| 619 | for (i = 0; i < len; i += 8) { | 617 | for (i = 0; i < len; i += 8) { |
| 620 | #if BYTE_ORDER == LITTLE_ENDIAN | 618 | #if BYTE_ORDER == LITTLE_ENDIAN |
| 621 | BLF_BLK_ENC; | 619 | BLF_BLK_ENC; |
| 622 | #else | 620 | #else |
| 623 | Blowfish_encipher(c, data, data + 4); | 621 | memcpy(&l, data, sizeof l); |
| 622 | memcpy(&r, data + 4, sizeof r); | ||
| 623 | Blowfish_encipher(c, &l, &r); | ||
| 624 | #endif | 624 | #endif |
| 625 | data += 8; | 625 | data += 8; |
| 626 | } | 626 | } |
| @@ -637,16 +637,16 @@ blf_ecb_decrypt(c, data, len) | |||
| 637 | u_int32_t len; | 637 | u_int32_t len; |
| 638 | #endif | 638 | #endif |
| 639 | { | 639 | { |
| 640 | #if BYTE_ORDER == LITTLE_ENDIAN | ||
| 641 | u_int32_t l, r; | 640 | u_int32_t l, r; |
| 642 | #endif | ||
| 643 | u_int32_t i; | 641 | u_int32_t i; |
| 644 | 642 | ||
| 645 | for (i = 0; i < len; i += 8) { | 643 | for (i = 0; i < len; i += 8) { |
| 646 | #if BYTE_ORDER == LITTLE_ENDIAN | 644 | #if BYTE_ORDER == LITTLE_ENDIAN |
| 647 | BLF_BLK_DEC; | 645 | BLF_BLK_DEC; |
| 648 | #else | 646 | #else |
| 649 | Blowfish_decipher(c, data, data + 4); | 647 | memcpy(&l, data, sizeof l); |
| 648 | memcpy(&r, data + 4, sizeof r); | ||
| 649 | Blowfish_decipher(c, &l, &r); | ||
| 650 | #endif | 650 | #endif |
| 651 | data += 8; | 651 | data += 8; |
| 652 | } | 652 | } |
| @@ -664,9 +664,7 @@ blf_cbc_encrypt(c, iv, data, len) | |||
| 664 | u_int32_t len; | 664 | u_int32_t len; |
| 665 | #endif | 665 | #endif |
| 666 | { | 666 | { |
| 667 | #if BYTE_ORDER == LITTLE_ENDIAN | ||
| 668 | u_int32_t l, r; | 667 | u_int32_t l, r; |
| 669 | #endif | ||
| 670 | u_int32_t i; | 668 | u_int32_t i; |
| 671 | 669 | ||
| 672 | for (i = 0; i < len; i += 8) { | 670 | for (i = 0; i < len; i += 8) { |
| @@ -675,7 +673,9 @@ blf_cbc_encrypt(c, iv, data, len) | |||
| 675 | #if BYTE_ORDER == LITTLE_ENDIAN | 673 | #if BYTE_ORDER == LITTLE_ENDIAN |
| 676 | BLF_BLK_ENC; | 674 | BLF_BLK_ENC; |
| 677 | #else | 675 | #else |
| 678 | Blowfish_encipher(c, data, data + 4); | 676 | memcpy(&l, data, sizeof l); |
| 677 | memcpy(&r, data + 4, sizeof r); | ||
| 678 | Blowfish_encipher(c, &l, &r); | ||
| 679 | #endif | 679 | #endif |
| 680 | iv = data; | 680 | iv = data; |
| 681 | data += 8; | 681 | data += 8; |
| @@ -694,9 +694,7 @@ blf_cbc_decrypt(c, iva, data, len) | |||
| 694 | u_int32_t len; | 694 | u_int32_t len; |
| 695 | #endif | 695 | #endif |
| 696 | { | 696 | { |
| 697 | #if BYTE_ORDER == LITTLE_ENDIAN | ||
| 698 | u_int32_t l, r; | 697 | u_int32_t l, r; |
| 699 | #endif | ||
| 700 | u_int8_t *iv; | 698 | u_int8_t *iv; |
| 701 | u_int32_t i; | 699 | u_int32_t i; |
| 702 | 700 | ||
| @@ -706,7 +704,9 @@ blf_cbc_decrypt(c, iva, data, len) | |||
| 706 | #if BYTE_ORDER == LITTLE_ENDIAN | 704 | #if BYTE_ORDER == LITTLE_ENDIAN |
| 707 | BLF_BLK_DEC; | 705 | BLF_BLK_DEC; |
| 708 | #else | 706 | #else |
| 709 | Blowfish_decipher(c, data, data + 4); | 707 | memcpy(&l, data, sizeof l); |
| 708 | memcpy(&r, data + 4, sizeof r); | ||
| 709 | Blowfish_decipher(c, &l, &r); | ||
| 710 | #endif | 710 | #endif |
| 711 | *(u_int32_t *)data ^= *(u_int32_t *)iv; | 711 | *(u_int32_t *)data ^= *(u_int32_t *)iv; |
| 712 | *(u_int32_t *)(data + 4) ^= *(u_int32_t *)(iv + 4); | 712 | *(u_int32_t *)(data + 4) ^= *(u_int32_t *)(iv + 4); |
| @@ -716,7 +716,9 @@ blf_cbc_decrypt(c, iva, data, len) | |||
| 716 | #if BYTE_ORDER == LITTLE_ENDIAN | 716 | #if BYTE_ORDER == LITTLE_ENDIAN |
| 717 | BLF_BLK_DEC; | 717 | BLF_BLK_DEC; |
| 718 | #else | 718 | #else |
| 719 | Blowfish_decipher(c, data, data + 4); | 719 | memcpy(&l, data, sizeof l); |
| 720 | memcpy(&r, data + 4, sizeof r); | ||
| 721 | Blowfish_decipher(c, &l, &r); | ||
| 720 | #endif | 722 | #endif |
| 721 | *(u_int32_t *)data ^= *(u_int32_t *)iva; | 723 | *(u_int32_t *)data ^= *(u_int32_t *)iva; |
| 722 | *(u_int32_t *)(data + 4) ^= *(u_int32_t *)(iva + 4); | 724 | *(u_int32_t *)(data + 4) ^= *(u_int32_t *)(iva + 4); |
