use EVP for des-crc-mdX functions

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23574 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2008-08-17 14:06:37 +00:00
parent bf83b84842
commit 7cc56b554f

View File

@@ -1278,7 +1278,7 @@ RSA_MD4_checksum(krb5_context context,
static krb5_error_code static krb5_error_code
RSA_checksum(krb5_context context, des_checksum(krb5_context context,
const EVP_MD *evp_md, const EVP_MD *evp_md,
struct key_data *key, struct key_data *key,
const void *data, const void *data,
@@ -1313,28 +1313,18 @@ RSA_checksum(krb5_context context,
} }
static krb5_error_code static krb5_error_code
RSA_MD4_DES_checksum(krb5_context context, des_verify(krb5_context context,
struct key_data *key, const EVP_MD *evp_md,
const void *data, struct key_data *key,
size_t len, const void *data,
unsigned usage, size_t len,
Checksum *cksum) Checksum *C)
{
return RSA_checksum(context, EVP_md4(), key, data, len, cksum);
}
static krb5_error_code
RSA_MD4_DES_verify(krb5_context context,
struct key_data *key,
const void *data,
size_t len,
unsigned usage,
Checksum *C)
{ {
EVP_MD_CTX *m; EVP_MD_CTX *m;
unsigned char tmp[24]; unsigned char tmp[24];
unsigned char res[16]; unsigned char res[16];
DES_cblock ivec; DES_cblock ivec;
DES_key_schedule *sched = key->schedule->data;
krb5_error_code ret = 0; krb5_error_code ret = 0;
m = EVP_MD_CTX_create(); m = EVP_MD_CTX_create();
@@ -1347,10 +1337,10 @@ RSA_MD4_DES_verify(krb5_context context,
DES_cbc_encrypt(C->checksum.data, DES_cbc_encrypt(C->checksum.data,
(void*)tmp, (void*)tmp,
C->checksum.length, C->checksum.length,
key->schedule->data, &sched[0],
&ivec, &ivec,
DES_DECRYPT); DES_DECRYPT);
EVP_DigestInit_ex(m, EVP_md4(), NULL); EVP_DigestInit_ex(m, evp_md, NULL);
EVP_DigestUpdate(m, tmp, 8); /* confounder */ EVP_DigestUpdate(m, tmp, 8); /* confounder */
EVP_DigestUpdate(m, data, len); EVP_DigestUpdate(m, data, len);
EVP_DigestFinal_ex (m, res, NULL); EVP_DigestFinal_ex (m, res, NULL);
@@ -1364,6 +1354,28 @@ RSA_MD4_DES_verify(krb5_context context,
return ret; return ret;
} }
static krb5_error_code
RSA_MD4_DES_checksum(krb5_context context,
struct key_data *key,
const void *data,
size_t len,
unsigned usage,
Checksum *cksum)
{
return des_checksum(context, EVP_md4(), key, data, len, cksum);
}
static krb5_error_code
RSA_MD4_DES_verify(krb5_context context,
struct key_data *key,
const void *data,
size_t len,
unsigned usage,
Checksum *C)
{
return des_verify(context, EVP_md5(), key, data, len, C);
}
static krb5_error_code static krb5_error_code
RSA_MD5_checksum(krb5_context context, RSA_MD5_checksum(krb5_context context,
struct key_data *key, struct key_data *key,
@@ -1385,7 +1397,7 @@ RSA_MD5_DES_checksum(krb5_context context,
unsigned usage, unsigned usage,
Checksum *C) Checksum *C)
{ {
return RSA_checksum(context, EVP_md5(), key, data, len, C); return des_checksum(context, EVP_md5(), key, data, len, C);
} }
static krb5_error_code static krb5_error_code
@@ -1396,31 +1408,7 @@ RSA_MD5_DES_verify(krb5_context context,
unsigned usage, unsigned usage,
Checksum *C) Checksum *C)
{ {
MD5_CTX md5; return des_verify(context, EVP_md5(), key, data, len, C);
unsigned char tmp[24];
unsigned char res[16];
DES_cblock ivec;
DES_key_schedule *sched = key->schedule->data;
krb5_error_code ret = 0;
memset(&ivec, 0, sizeof(ivec));
DES_cbc_encrypt(C->checksum.data,
(void*)tmp,
C->checksum.length,
&sched[0],
&ivec,
DES_DECRYPT);
MD5_Init (&md5);
MD5_Update (&md5, tmp, 8); /* confounder */
MD5_Update (&md5, data, len);
MD5_Final (res, &md5);
if(memcmp(res, tmp + 8, sizeof(res)) != 0) {
krb5_clear_error_string (context);
ret = KRB5KRB_AP_ERR_BAD_INTEGRITY;
}
memset(tmp, 0, sizeof(tmp));
memset(res, 0, sizeof(res));
return ret;
} }
static krb5_error_code static krb5_error_code