Changeset View
Changeset View
Standalone View
Standalone View
projects/openssl111/crypto/heimdal/lib/gssapi/krb5/verify_mic.c
Show First 20 Lines • Show All 45 Lines • ▼ Show 20 Lines | verify_mic_des | ||||
krb5_keyblock *key, | krb5_keyblock *key, | ||||
const char *type | const char *type | ||||
) | ) | ||||
{ | { | ||||
u_char *p; | u_char *p; | ||||
EVP_MD_CTX *md5; | EVP_MD_CTX *md5; | ||||
u_char hash[16], *seq; | u_char hash[16], *seq; | ||||
DES_key_schedule schedule; | DES_key_schedule schedule; | ||||
EVP_CIPHER_CTX des_ctx; | EVP_CIPHER_CTX *des_ctx; | ||||
DES_cblock zero; | DES_cblock zero; | ||||
DES_cblock deskey; | DES_cblock deskey; | ||||
uint32_t seq_number; | uint32_t seq_number; | ||||
OM_uint32 ret; | OM_uint32 ret; | ||||
int cmp; | int cmp; | ||||
p = token_buffer->value; | p = token_buffer->value; | ||||
ret = _gsskrb5_verify_header (&p, | ret = _gsskrb5_verify_header (&p, | ||||
Show All 28 Lines | verify_mic_des | ||||
if (ct_memcmp (p - 8, hash, 8) != 0) { | if (ct_memcmp (p - 8, hash, 8) != 0) { | ||||
memset (deskey, 0, sizeof(deskey)); | memset (deskey, 0, sizeof(deskey)); | ||||
memset (&schedule, 0, sizeof(schedule)); | memset (&schedule, 0, sizeof(schedule)); | ||||
return GSS_S_BAD_MIC; | return GSS_S_BAD_MIC; | ||||
} | } | ||||
/* verify sequence number */ | /* verify sequence number */ | ||||
des_ctx = EVP_CIPHER_CTX_new(); | |||||
if (des_ctx == NULL) { | |||||
memset (deskey, 0, sizeof(deskey)); | |||||
memset (&schedule, 0, sizeof(schedule)); | |||||
*minor_status = ENOMEM; | |||||
return GSS_S_FAILURE; | |||||
} | |||||
HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex); | HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex); | ||||
p -= 16; | p -= 16; | ||||
EVP_CIPHER_CTX_init(&des_ctx); | EVP_CipherInit_ex(des_ctx, EVP_des_cbc(), NULL, key->keyvalue.data, hash, 0); | ||||
EVP_CipherInit_ex(&des_ctx, EVP_des_cbc(), NULL, key->keyvalue.data, hash, 0); | EVP_Cipher(des_ctx, p, p, 8); | ||||
EVP_Cipher(&des_ctx, p, p, 8); | EVP_CIPHER_CTX_free(des_ctx); | ||||
EVP_CIPHER_CTX_cleanup(&des_ctx); | |||||
memset (deskey, 0, sizeof(deskey)); | memset (deskey, 0, sizeof(deskey)); | ||||
memset (&schedule, 0, sizeof(schedule)); | memset (&schedule, 0, sizeof(schedule)); | ||||
seq = p; | seq = p; | ||||
_gsskrb5_decode_om_uint32(seq, &seq_number); | _gsskrb5_decode_om_uint32(seq, &seq_number); | ||||
if (context_handle->more_flags & LOCAL) | if (context_handle->more_flags & LOCAL) | ||||
▲ Show 20 Lines • Show All 248 Lines • Show Last 20 Lines |