diff options
author | deraadt <> | 1998-08-21 23:31:28 +0000 |
---|---|---|
committer | deraadt <> | 1998-08-21 23:31:28 +0000 |
commit | c04b7e38e544beab5fe438fe00eccf2cd82d4706 (patch) | |
tree | a7a4ba5c7ab965f6acceda5aa0d9b3cd72b3a9ff /src/lib/libc/crypt | |
parent | fe77f4fa52d4821a35fe27394164d30bc16db1b0 (diff) | |
download | openbsd-c04b7e38e544beab5fe438fe00eccf2cd82d4706.tar.gz openbsd-c04b7e38e544beab5fe438fe00eccf2cd82d4706.tar.bz2 openbsd-c04b7e38e544beab5fe438fe00eccf2cd82d4706.zip |
for new functions, fix BE & UA cases. LE UA case is still busted
Diffstat (limited to 'src/lib/libc/crypt')
-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); |