summaryrefslogtreecommitdiff
path: root/src/lib/libc/crypt
diff options
context:
space:
mode:
authorderaadt <>1998-08-21 23:31:28 +0000
committerderaadt <>1998-08-21 23:31:28 +0000
commitc04b7e38e544beab5fe438fe00eccf2cd82d4706 (patch)
treea7a4ba5c7ab965f6acceda5aa0d9b3cd72b3a9ff /src/lib/libc/crypt
parentfe77f4fa52d4821a35fe27394164d30bc16db1b0 (diff)
downloadopenbsd-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.c30
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);