Add broken MD4 compatible checksum.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@3280 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1997-08-29 16:33:21 +00:00
parent c36ec7291f
commit 5ece63f46e

View File

@@ -144,6 +144,41 @@ MD4_DES_verify (void *p, size_t len, const krb5_keyblock *keyblock,
return memcmp (res, (u_char *)other + 8, 16);
}
static void
MD4_DES_broken_checksum (void *p, size_t len, const krb5_keyblock *keyblock,
void *result)
{
struct md4 md4;
des_key_schedule schedule;
u_char *r = result;
md4_init(&md4);
md4_update(&md4, p, len);
md4_finito(&md4, r);
des_set_key((des_cblock*)keyblock->keyvalue.data, schedule);
des_cbc_encrypt(result, result, 16, schedule,
(des_cblock*)keyblock->keyvalue.data, DES_ENCRYPT);
}
static int
MD4_DES_broken_verify (void *p, size_t len, const krb5_keyblock *keyblock,
void *other)
{
des_key_schedule schedule;
u_char res[16];
struct md4 md4;
des_set_key((des_cblock*)keyblock->keyvalue.data, schedule);
des_cbc_encrypt(other, other, 16, schedule,
(des_cblock*)keyblock->keyvalue.data, DES_DECRYPT);
md4_init(&md4);
md4_update(&md4, p, len);
md4_finito(&md4, res);
return memcmp (res, (u_char *)other, 16);
}
static void
MD5_DES_checksum (void *p, size_t len, const krb5_keyblock *keyblock,
void *result)
@@ -200,6 +235,9 @@ static struct checksum_type cm[] = {
{ CKSUMTYPE_RSA_MD4, 16, KEYTYPE_NULL, MD4_checksum, NULL},
{ CKSUMTYPE_RSA_MD5, 16, KEYTYPE_NULL, MD5_checksum, NULL},
{ CKSUMTYPE_RSA_MD4_DES, 24, KEYTYPE_DES, MD4_DES_checksum, MD4_DES_verify},
#if 0
{ CKSUMTYPE_RSA_MD4_DES, 16, KEYTYPE_DES, MD4_DES_broken_checksum, MD4_DES_broken_verify},
#endif
{ CKSUMTYPE_RSA_MD5_DES, 24, KEYTYPE_DES, MD5_DES_checksum, MD5_DES_verify}
};