From 3335d600c1ba76b0864c3013b87a73308786c4b5 Mon Sep 17 00:00:00 2001 From: John Kohl Date: Tue, 26 Feb 1991 14:06:25 +0000 Subject: [PATCH] update to use latest MD4 code git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@1788 dc483132-0cff-0310-8789-dd5450dbe970 --- src/lib/crypto/md4/md4crypto.c | 28 ++++++++-------------------- src/lib/crypto/md4/md4glue.c | 27 +++++++-------------------- 2 files changed, 15 insertions(+), 40 deletions(-) diff --git a/src/lib/crypto/md4/md4crypto.c b/src/lib/crypto/md4/md4crypto.c index d11e93662..4a5cd03e2 100644 --- a/src/lib/crypto/md4/md4crypto.c +++ b/src/lib/crypto/md4/md4crypto.c @@ -18,6 +18,7 @@ static char rcsid_md4crypto_c[] = #include #include +#include #include #include "../des/des_int.h" /* we cheat a bit and call it directly... */ @@ -30,37 +31,24 @@ krb5_pointer seed; size_t seed_length; krb5_checksum *outcksum; { - krb5_octet *output, outtmp[RSA_MD4_DES_CKSUM_LENGTH]; + krb5_octet outtmp[RSA_MD4_DES_CKSUM_LENGTH]; krb5_octet *input = (krb5_octet *)in; krb5_encrypt_block eblock; krb5_keyblock keyblock; krb5_error_code retval; - register int i, j; - MDstruct working; + MD4_CTX working; - MDbegin(&working); - - for (i = in_length; i >= 64; i -= 64, input += 64) - /* MD4 works in 512 bit chunks (64 bytes) */ - MDupdate(&working, input, 512); - /* now close out remaining stuff. Even if i == 0, we want to - "close out" the MD4 algorithm */ - MDupdate(&working, input, i*8); + MD4Init(&working); + MD4Update(&working, input, in_length*8); + MD4Final(&working); outcksum->checksum_type = CKSUMTYPE_RSA_MD4_DES; outcksum->length = RSA_MD4_DES_CKSUM_LENGTH; - /* the output code here is adapted from MDprint; - it needs to assemble it into proper byte order. */ - - output = &outtmp[0]; - for (i = 0; i < 4; i++) - for (j = 0; j < 32; j += 8) - *output++ = (working.buffer[i] >> j) & 0xFF; + memcpy((char *)outtmp, (char *)&working.digest[0], 16); - for (i = 0; i < 8; i++) - *output++ = working.count[i]; + memset((char *)&working, 0, sizeof(working)); keyblock.length = seed_length; keyblock.contents = (krb5_octet *)seed; diff --git a/src/lib/crypto/md4/md4glue.c b/src/lib/crypto/md4/md4glue.c index b0576f125..f0c9be683 100644 --- a/src/lib/crypto/md4/md4glue.c +++ b/src/lib/crypto/md4/md4glue.c @@ -18,6 +18,7 @@ static char rcsid_md4glue_c[] = #include #include +#include #include static krb5_error_code @@ -28,33 +29,19 @@ krb5_pointer seed; size_t seed_length; krb5_checksum *outcksum; { - krb5_octet *output; krb5_octet *input = (krb5_octet *)in; - register int i, j; - MDstruct working; + MD4_CTX working; - MDbegin(&working); - - for (i = in_length; i >= 64; i -= 64, input += 64) - /* MD4 works in 512 bit chunks (64 bytes) */ - MDupdate(&working, input, 512); - /* now close out remaining stuff. Even if i == 0, we want to - "close out" the MD4 algorithm */ - MDupdate(&working, input, i*8); + MD4Init(&working); + MD4Update(&working, input, in_length*8); + MD4Final(&working); outcksum->checksum_type = CKSUMTYPE_RSA_MD4; outcksum->length = RSA_MD4_CKSUM_LENGTH; - /* the output code here is adapted from MDprint */ - - output = outcksum->contents; - for (i = 0; i < 4; i++) - for (j = 0; j < 32; j += 8) - *output++ = (working.buffer[i] >> j) & 0xFF; - - for (i = 0; i < 8; i++) - *output++ = working.count[i]; + memcpy((char *)outcksum->contents, (char *)&working.digest[0], 16); + memset((char *)&working, 0, sizeof(working)); return 0; } -- 2.26.2