switch from the des_ to the DES_ api
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@12752 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -48,9 +48,9 @@ mic_des
|
|||||||
u_char *p;
|
u_char *p;
|
||||||
MD5_CTX md5;
|
MD5_CTX md5;
|
||||||
u_char hash[16];
|
u_char hash[16];
|
||||||
des_key_schedule schedule;
|
DES_key_schedule schedule;
|
||||||
des_cblock deskey;
|
DES_cblock deskey;
|
||||||
des_cblock zero;
|
DES_cblock zero;
|
||||||
int32_t seq_number;
|
int32_t seq_number;
|
||||||
size_t len, total_len;
|
size_t len, total_len;
|
||||||
|
|
||||||
@@ -86,9 +86,9 @@ mic_des
|
|||||||
|
|
||||||
memset (&zero, 0, sizeof(zero));
|
memset (&zero, 0, sizeof(zero));
|
||||||
memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
|
memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
des_cbc_cksum ((void *)hash, (void *)hash, sizeof(hash),
|
DES_cbc_cksum ((void *)hash, (void *)hash, sizeof(hash),
|
||||||
schedule, &zero);
|
&schedule, &zero);
|
||||||
memcpy (p - 8, hash, 8); /* SGN_CKSUM */
|
memcpy (p - 8, hash, 8); /* SGN_CKSUM */
|
||||||
|
|
||||||
HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex);
|
HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex);
|
||||||
@@ -106,9 +106,9 @@ mic_des
|
|||||||
(context_handle->more_flags & LOCAL) ? 0 : 0xFF,
|
(context_handle->more_flags & LOCAL) ? 0 : 0xFF,
|
||||||
4);
|
4);
|
||||||
|
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
des_cbc_encrypt ((void *)p, (void *)p, 8,
|
DES_cbc_encrypt ((void *)p, (void *)p, 8,
|
||||||
schedule, (des_cblock *)(p + 8), DES_ENCRYPT);
|
&schedule, (DES_cblock *)(p + 8), DES_ENCRYPT);
|
||||||
|
|
||||||
krb5_auth_con_setlocalseqnumber (gssapi_krb5_context,
|
krb5_auth_con_setlocalseqnumber (gssapi_krb5_context,
|
||||||
context_handle->auth_context,
|
context_handle->auth_context,
|
||||||
@@ -116,7 +116,7 @@ mic_des
|
|||||||
HEIMDAL_MUTEX_unlock(&context_handle->ctx_id_mutex);
|
HEIMDAL_MUTEX_unlock(&context_handle->ctx_id_mutex);
|
||||||
|
|
||||||
memset (deskey, 0, sizeof(deskey));
|
memset (deskey, 0, sizeof(deskey));
|
||||||
memset (schedule, 0, sizeof(schedule));
|
memset (&schedule, 0, sizeof(schedule));
|
||||||
|
|
||||||
*minor_status = 0;
|
*minor_status = 0;
|
||||||
return GSS_S_COMPLETE;
|
return GSS_S_COMPLETE;
|
||||||
|
@@ -48,9 +48,9 @@ mic_des
|
|||||||
u_char *p;
|
u_char *p;
|
||||||
MD5_CTX md5;
|
MD5_CTX md5;
|
||||||
u_char hash[16];
|
u_char hash[16];
|
||||||
des_key_schedule schedule;
|
DES_key_schedule schedule;
|
||||||
des_cblock deskey;
|
DES_cblock deskey;
|
||||||
des_cblock zero;
|
DES_cblock zero;
|
||||||
int32_t seq_number;
|
int32_t seq_number;
|
||||||
size_t len, total_len;
|
size_t len, total_len;
|
||||||
|
|
||||||
@@ -86,9 +86,9 @@ mic_des
|
|||||||
|
|
||||||
memset (&zero, 0, sizeof(zero));
|
memset (&zero, 0, sizeof(zero));
|
||||||
memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
|
memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
des_cbc_cksum ((void *)hash, (void *)hash, sizeof(hash),
|
DES_cbc_cksum ((void *)hash, (void *)hash, sizeof(hash),
|
||||||
schedule, &zero);
|
&schedule, &zero);
|
||||||
memcpy (p - 8, hash, 8); /* SGN_CKSUM */
|
memcpy (p - 8, hash, 8); /* SGN_CKSUM */
|
||||||
|
|
||||||
HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex);
|
HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex);
|
||||||
@@ -106,9 +106,9 @@ mic_des
|
|||||||
(context_handle->more_flags & LOCAL) ? 0 : 0xFF,
|
(context_handle->more_flags & LOCAL) ? 0 : 0xFF,
|
||||||
4);
|
4);
|
||||||
|
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
des_cbc_encrypt ((void *)p, (void *)p, 8,
|
DES_cbc_encrypt ((void *)p, (void *)p, 8,
|
||||||
schedule, (des_cblock *)(p + 8), DES_ENCRYPT);
|
&schedule, (DES_cblock *)(p + 8), DES_ENCRYPT);
|
||||||
|
|
||||||
krb5_auth_con_setlocalseqnumber (gssapi_krb5_context,
|
krb5_auth_con_setlocalseqnumber (gssapi_krb5_context,
|
||||||
context_handle->auth_context,
|
context_handle->auth_context,
|
||||||
@@ -116,7 +116,7 @@ mic_des
|
|||||||
HEIMDAL_MUTEX_unlock(&context_handle->ctx_id_mutex);
|
HEIMDAL_MUTEX_unlock(&context_handle->ctx_id_mutex);
|
||||||
|
|
||||||
memset (deskey, 0, sizeof(deskey));
|
memset (deskey, 0, sizeof(deskey));
|
||||||
memset (schedule, 0, sizeof(schedule));
|
memset (&schedule, 0, sizeof(schedule));
|
||||||
|
|
||||||
*minor_status = 0;
|
*minor_status = 0;
|
||||||
return GSS_S_COMPLETE;
|
return GSS_S_COMPLETE;
|
||||||
|
@@ -75,9 +75,9 @@ unwrap_des
|
|||||||
size_t len;
|
size_t len;
|
||||||
MD5_CTX md5;
|
MD5_CTX md5;
|
||||||
u_char hash[16];
|
u_char hash[16];
|
||||||
des_key_schedule schedule;
|
DES_key_schedule schedule;
|
||||||
des_cblock deskey;
|
DES_cblock deskey;
|
||||||
des_cblock zero;
|
DES_cblock zero;
|
||||||
int i;
|
int i;
|
||||||
int32_t seq_number;
|
int32_t seq_number;
|
||||||
size_t padlength;
|
size_t padlength;
|
||||||
@@ -118,17 +118,17 @@ unwrap_des
|
|||||||
|
|
||||||
for (i = 0; i < sizeof(deskey); ++i)
|
for (i = 0; i < sizeof(deskey); ++i)
|
||||||
deskey[i] ^= 0xf0;
|
deskey[i] ^= 0xf0;
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
memset (&zero, 0, sizeof(zero));
|
memset (&zero, 0, sizeof(zero));
|
||||||
des_cbc_encrypt ((void *)p,
|
DES_cbc_encrypt ((void *)p,
|
||||||
(void *)p,
|
(void *)p,
|
||||||
input_message_buffer->length - len,
|
input_message_buffer->length - len,
|
||||||
schedule,
|
&schedule,
|
||||||
&zero,
|
&zero,
|
||||||
DES_DECRYPT);
|
DES_DECRYPT);
|
||||||
|
|
||||||
memset (deskey, 0, sizeof(deskey));
|
memset (deskey, 0, sizeof(deskey));
|
||||||
memset (schedule, 0, sizeof(schedule));
|
memset (&schedule, 0, sizeof(schedule));
|
||||||
}
|
}
|
||||||
/* check pad */
|
/* check pad */
|
||||||
ret = _gssapi_verify_pad(input_message_buffer,
|
ret = _gssapi_verify_pad(input_message_buffer,
|
||||||
@@ -144,9 +144,9 @@ unwrap_des
|
|||||||
|
|
||||||
memset (&zero, 0, sizeof(zero));
|
memset (&zero, 0, sizeof(zero));
|
||||||
memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
|
memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
des_cbc_cksum ((void *)hash, (void *)hash, sizeof(hash),
|
DES_cbc_cksum ((void *)hash, (void *)hash, sizeof(hash),
|
||||||
schedule, &zero);
|
&schedule, &zero);
|
||||||
if (memcmp (p - 8, hash, 8) != 0)
|
if (memcmp (p - 8, hash, 8) != 0)
|
||||||
return GSS_S_BAD_MIC;
|
return GSS_S_BAD_MIC;
|
||||||
|
|
||||||
@@ -155,12 +155,12 @@ unwrap_des
|
|||||||
HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex);
|
HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex);
|
||||||
|
|
||||||
p -= 16;
|
p -= 16;
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
des_cbc_encrypt ((void *)p, (void *)p, 8,
|
DES_cbc_encrypt ((void *)p, (void *)p, 8,
|
||||||
schedule, (des_cblock *)hash, DES_DECRYPT);
|
&schedule, (DES_cblock *)hash, DES_DECRYPT);
|
||||||
|
|
||||||
memset (deskey, 0, sizeof(deskey));
|
memset (deskey, 0, sizeof(deskey));
|
||||||
memset (schedule, 0, sizeof(schedule));
|
memset (&schedule, 0, sizeof(schedule));
|
||||||
|
|
||||||
seq = p;
|
seq = p;
|
||||||
gssapi_decode_om_uint32(seq, &seq_number);
|
gssapi_decode_om_uint32(seq, &seq_number);
|
||||||
@@ -293,7 +293,7 @@ unwrap_des3
|
|||||||
return GSS_S_FAILURE;
|
return GSS_S_FAILURE;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
des_cblock ivec;
|
DES_cblock ivec;
|
||||||
|
|
||||||
memcpy(&ivec, p + 8, 8);
|
memcpy(&ivec, p + 8, 8);
|
||||||
ret = krb5_decrypt_ivec (gssapi_krb5_context,
|
ret = krb5_decrypt_ivec (gssapi_krb5_context,
|
||||||
|
@@ -49,9 +49,9 @@ verify_mic_des
|
|||||||
u_char *p;
|
u_char *p;
|
||||||
MD5_CTX md5;
|
MD5_CTX md5;
|
||||||
u_char hash[16], *seq;
|
u_char hash[16], *seq;
|
||||||
des_key_schedule schedule;
|
DES_key_schedule schedule;
|
||||||
des_cblock zero;
|
DES_cblock zero;
|
||||||
des_cblock deskey;
|
DES_cblock deskey;
|
||||||
int32_t seq_number;
|
int32_t seq_number;
|
||||||
OM_uint32 ret;
|
OM_uint32 ret;
|
||||||
int cmp;
|
int cmp;
|
||||||
@@ -82,12 +82,12 @@ verify_mic_des
|
|||||||
memset (&zero, 0, sizeof(zero));
|
memset (&zero, 0, sizeof(zero));
|
||||||
memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
|
memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
|
||||||
|
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
des_cbc_cksum ((void *)hash, (void *)hash, sizeof(hash),
|
DES_cbc_cksum ((void *)hash, (void *)hash, sizeof(hash),
|
||||||
schedule, &zero);
|
&schedule, &zero);
|
||||||
if (memcmp (p - 8, hash, 8) != 0) {
|
if (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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,12 +96,12 @@ verify_mic_des
|
|||||||
HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex);
|
HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex);
|
||||||
|
|
||||||
p -= 16;
|
p -= 16;
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
des_cbc_encrypt ((void *)p, (void *)p, 8,
|
DES_cbc_encrypt ((void *)p, (void *)p, 8,
|
||||||
schedule, (des_cblock *)hash, DES_DECRYPT);
|
&schedule, (DES_cblock *)hash, DES_DECRYPT);
|
||||||
|
|
||||||
memset (deskey, 0, sizeof(deskey));
|
memset (deskey, 0, sizeof(deskey));
|
||||||
memset (schedule, 0, sizeof(schedule));
|
memset (&schedule, 0, sizeof(schedule));
|
||||||
|
|
||||||
seq = p;
|
seq = p;
|
||||||
gssapi_decode_om_uint32(seq, &seq_number);
|
gssapi_decode_om_uint32(seq, &seq_number);
|
||||||
|
@@ -144,9 +144,9 @@ wrap_des
|
|||||||
u_char *p;
|
u_char *p;
|
||||||
MD5_CTX md5;
|
MD5_CTX md5;
|
||||||
u_char hash[16];
|
u_char hash[16];
|
||||||
des_key_schedule schedule;
|
DES_key_schedule schedule;
|
||||||
des_cblock deskey;
|
DES_cblock deskey;
|
||||||
des_cblock zero;
|
DES_cblock zero;
|
||||||
int i;
|
int i;
|
||||||
int32_t seq_number;
|
int32_t seq_number;
|
||||||
size_t len, total_len, padlength, datalen;
|
size_t len, total_len, padlength, datalen;
|
||||||
@@ -199,9 +199,9 @@ wrap_des
|
|||||||
|
|
||||||
memset (&zero, 0, sizeof(zero));
|
memset (&zero, 0, sizeof(zero));
|
||||||
memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
|
memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
des_cbc_cksum ((void *)hash, (void *)hash, sizeof(hash),
|
DES_cbc_cksum ((void *)hash, (void *)hash, sizeof(hash),
|
||||||
schedule, &zero);
|
&schedule, &zero);
|
||||||
memcpy (p - 8, hash, 8);
|
memcpy (p - 8, hash, 8);
|
||||||
|
|
||||||
/* sequence number */
|
/* sequence number */
|
||||||
@@ -219,9 +219,9 @@ wrap_des
|
|||||||
(context_handle->more_flags & LOCAL) ? 0 : 0xFF,
|
(context_handle->more_flags & LOCAL) ? 0 : 0xFF,
|
||||||
4);
|
4);
|
||||||
|
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
des_cbc_encrypt ((void *)p, (void *)p, 8,
|
DES_cbc_encrypt ((void *)p, (void *)p, 8,
|
||||||
schedule, (des_cblock *)(p + 8), DES_ENCRYPT);
|
&schedule, (DES_cblock *)(p + 8), DES_ENCRYPT);
|
||||||
|
|
||||||
krb5_auth_con_setlocalseqnumber (gssapi_krb5_context,
|
krb5_auth_con_setlocalseqnumber (gssapi_krb5_context,
|
||||||
context_handle->auth_context,
|
context_handle->auth_context,
|
||||||
@@ -236,18 +236,18 @@ wrap_des
|
|||||||
|
|
||||||
for (i = 0; i < sizeof(deskey); ++i)
|
for (i = 0; i < sizeof(deskey); ++i)
|
||||||
deskey[i] ^= 0xf0;
|
deskey[i] ^= 0xf0;
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
memset (&zero, 0, sizeof(zero));
|
memset (&zero, 0, sizeof(zero));
|
||||||
des_cbc_encrypt ((void *)p,
|
DES_cbc_encrypt ((void *)p,
|
||||||
(void *)p,
|
(void *)p,
|
||||||
datalen,
|
datalen,
|
||||||
schedule,
|
&schedule,
|
||||||
&zero,
|
&zero,
|
||||||
DES_ENCRYPT);
|
DES_ENCRYPT);
|
||||||
|
|
||||||
memset (deskey, 0, sizeof(deskey));
|
|
||||||
memset (schedule, 0, sizeof(schedule));
|
|
||||||
}
|
}
|
||||||
|
memset (deskey, 0, sizeof(deskey));
|
||||||
|
memset (&schedule, 0, sizeof(schedule));
|
||||||
|
|
||||||
if(conf_state != NULL)
|
if(conf_state != NULL)
|
||||||
*conf_state = conf_req_flag;
|
*conf_state = conf_req_flag;
|
||||||
*minor_status = 0;
|
*minor_status = 0;
|
||||||
@@ -366,7 +366,7 @@ wrap_des3
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
des_cblock ivec;
|
DES_cblock ivec;
|
||||||
|
|
||||||
memcpy (&ivec, p + 8, 8);
|
memcpy (&ivec, p + 8, 8);
|
||||||
ret = krb5_encrypt_ivec (gssapi_krb5_context,
|
ret = krb5_encrypt_ivec (gssapi_krb5_context,
|
||||||
|
@@ -75,9 +75,9 @@ unwrap_des
|
|||||||
size_t len;
|
size_t len;
|
||||||
MD5_CTX md5;
|
MD5_CTX md5;
|
||||||
u_char hash[16];
|
u_char hash[16];
|
||||||
des_key_schedule schedule;
|
DES_key_schedule schedule;
|
||||||
des_cblock deskey;
|
DES_cblock deskey;
|
||||||
des_cblock zero;
|
DES_cblock zero;
|
||||||
int i;
|
int i;
|
||||||
int32_t seq_number;
|
int32_t seq_number;
|
||||||
size_t padlength;
|
size_t padlength;
|
||||||
@@ -118,17 +118,17 @@ unwrap_des
|
|||||||
|
|
||||||
for (i = 0; i < sizeof(deskey); ++i)
|
for (i = 0; i < sizeof(deskey); ++i)
|
||||||
deskey[i] ^= 0xf0;
|
deskey[i] ^= 0xf0;
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
memset (&zero, 0, sizeof(zero));
|
memset (&zero, 0, sizeof(zero));
|
||||||
des_cbc_encrypt ((void *)p,
|
DES_cbc_encrypt ((void *)p,
|
||||||
(void *)p,
|
(void *)p,
|
||||||
input_message_buffer->length - len,
|
input_message_buffer->length - len,
|
||||||
schedule,
|
&schedule,
|
||||||
&zero,
|
&zero,
|
||||||
DES_DECRYPT);
|
DES_DECRYPT);
|
||||||
|
|
||||||
memset (deskey, 0, sizeof(deskey));
|
memset (deskey, 0, sizeof(deskey));
|
||||||
memset (schedule, 0, sizeof(schedule));
|
memset (&schedule, 0, sizeof(schedule));
|
||||||
}
|
}
|
||||||
/* check pad */
|
/* check pad */
|
||||||
ret = _gssapi_verify_pad(input_message_buffer,
|
ret = _gssapi_verify_pad(input_message_buffer,
|
||||||
@@ -144,9 +144,9 @@ unwrap_des
|
|||||||
|
|
||||||
memset (&zero, 0, sizeof(zero));
|
memset (&zero, 0, sizeof(zero));
|
||||||
memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
|
memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
des_cbc_cksum ((void *)hash, (void *)hash, sizeof(hash),
|
DES_cbc_cksum ((void *)hash, (void *)hash, sizeof(hash),
|
||||||
schedule, &zero);
|
&schedule, &zero);
|
||||||
if (memcmp (p - 8, hash, 8) != 0)
|
if (memcmp (p - 8, hash, 8) != 0)
|
||||||
return GSS_S_BAD_MIC;
|
return GSS_S_BAD_MIC;
|
||||||
|
|
||||||
@@ -155,12 +155,12 @@ unwrap_des
|
|||||||
HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex);
|
HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex);
|
||||||
|
|
||||||
p -= 16;
|
p -= 16;
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
des_cbc_encrypt ((void *)p, (void *)p, 8,
|
DES_cbc_encrypt ((void *)p, (void *)p, 8,
|
||||||
schedule, (des_cblock *)hash, DES_DECRYPT);
|
&schedule, (DES_cblock *)hash, DES_DECRYPT);
|
||||||
|
|
||||||
memset (deskey, 0, sizeof(deskey));
|
memset (deskey, 0, sizeof(deskey));
|
||||||
memset (schedule, 0, sizeof(schedule));
|
memset (&schedule, 0, sizeof(schedule));
|
||||||
|
|
||||||
seq = p;
|
seq = p;
|
||||||
gssapi_decode_om_uint32(seq, &seq_number);
|
gssapi_decode_om_uint32(seq, &seq_number);
|
||||||
@@ -293,7 +293,7 @@ unwrap_des3
|
|||||||
return GSS_S_FAILURE;
|
return GSS_S_FAILURE;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
des_cblock ivec;
|
DES_cblock ivec;
|
||||||
|
|
||||||
memcpy(&ivec, p + 8, 8);
|
memcpy(&ivec, p + 8, 8);
|
||||||
ret = krb5_decrypt_ivec (gssapi_krb5_context,
|
ret = krb5_decrypt_ivec (gssapi_krb5_context,
|
||||||
|
@@ -49,9 +49,9 @@ verify_mic_des
|
|||||||
u_char *p;
|
u_char *p;
|
||||||
MD5_CTX md5;
|
MD5_CTX md5;
|
||||||
u_char hash[16], *seq;
|
u_char hash[16], *seq;
|
||||||
des_key_schedule schedule;
|
DES_key_schedule schedule;
|
||||||
des_cblock zero;
|
DES_cblock zero;
|
||||||
des_cblock deskey;
|
DES_cblock deskey;
|
||||||
int32_t seq_number;
|
int32_t seq_number;
|
||||||
OM_uint32 ret;
|
OM_uint32 ret;
|
||||||
int cmp;
|
int cmp;
|
||||||
@@ -82,12 +82,12 @@ verify_mic_des
|
|||||||
memset (&zero, 0, sizeof(zero));
|
memset (&zero, 0, sizeof(zero));
|
||||||
memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
|
memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
|
||||||
|
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
des_cbc_cksum ((void *)hash, (void *)hash, sizeof(hash),
|
DES_cbc_cksum ((void *)hash, (void *)hash, sizeof(hash),
|
||||||
schedule, &zero);
|
&schedule, &zero);
|
||||||
if (memcmp (p - 8, hash, 8) != 0) {
|
if (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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,12 +96,12 @@ verify_mic_des
|
|||||||
HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex);
|
HEIMDAL_MUTEX_lock(&context_handle->ctx_id_mutex);
|
||||||
|
|
||||||
p -= 16;
|
p -= 16;
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
des_cbc_encrypt ((void *)p, (void *)p, 8,
|
DES_cbc_encrypt ((void *)p, (void *)p, 8,
|
||||||
schedule, (des_cblock *)hash, DES_DECRYPT);
|
&schedule, (DES_cblock *)hash, DES_DECRYPT);
|
||||||
|
|
||||||
memset (deskey, 0, sizeof(deskey));
|
memset (deskey, 0, sizeof(deskey));
|
||||||
memset (schedule, 0, sizeof(schedule));
|
memset (&schedule, 0, sizeof(schedule));
|
||||||
|
|
||||||
seq = p;
|
seq = p;
|
||||||
gssapi_decode_om_uint32(seq, &seq_number);
|
gssapi_decode_om_uint32(seq, &seq_number);
|
||||||
|
@@ -144,9 +144,9 @@ wrap_des
|
|||||||
u_char *p;
|
u_char *p;
|
||||||
MD5_CTX md5;
|
MD5_CTX md5;
|
||||||
u_char hash[16];
|
u_char hash[16];
|
||||||
des_key_schedule schedule;
|
DES_key_schedule schedule;
|
||||||
des_cblock deskey;
|
DES_cblock deskey;
|
||||||
des_cblock zero;
|
DES_cblock zero;
|
||||||
int i;
|
int i;
|
||||||
int32_t seq_number;
|
int32_t seq_number;
|
||||||
size_t len, total_len, padlength, datalen;
|
size_t len, total_len, padlength, datalen;
|
||||||
@@ -199,9 +199,9 @@ wrap_des
|
|||||||
|
|
||||||
memset (&zero, 0, sizeof(zero));
|
memset (&zero, 0, sizeof(zero));
|
||||||
memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
|
memcpy (&deskey, key->keyvalue.data, sizeof(deskey));
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
des_cbc_cksum ((void *)hash, (void *)hash, sizeof(hash),
|
DES_cbc_cksum ((void *)hash, (void *)hash, sizeof(hash),
|
||||||
schedule, &zero);
|
&schedule, &zero);
|
||||||
memcpy (p - 8, hash, 8);
|
memcpy (p - 8, hash, 8);
|
||||||
|
|
||||||
/* sequence number */
|
/* sequence number */
|
||||||
@@ -219,9 +219,9 @@ wrap_des
|
|||||||
(context_handle->more_flags & LOCAL) ? 0 : 0xFF,
|
(context_handle->more_flags & LOCAL) ? 0 : 0xFF,
|
||||||
4);
|
4);
|
||||||
|
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
des_cbc_encrypt ((void *)p, (void *)p, 8,
|
DES_cbc_encrypt ((void *)p, (void *)p, 8,
|
||||||
schedule, (des_cblock *)(p + 8), DES_ENCRYPT);
|
&schedule, (DES_cblock *)(p + 8), DES_ENCRYPT);
|
||||||
|
|
||||||
krb5_auth_con_setlocalseqnumber (gssapi_krb5_context,
|
krb5_auth_con_setlocalseqnumber (gssapi_krb5_context,
|
||||||
context_handle->auth_context,
|
context_handle->auth_context,
|
||||||
@@ -236,18 +236,18 @@ wrap_des
|
|||||||
|
|
||||||
for (i = 0; i < sizeof(deskey); ++i)
|
for (i = 0; i < sizeof(deskey); ++i)
|
||||||
deskey[i] ^= 0xf0;
|
deskey[i] ^= 0xf0;
|
||||||
des_set_key (&deskey, schedule);
|
DES_set_key (&deskey, &schedule);
|
||||||
memset (&zero, 0, sizeof(zero));
|
memset (&zero, 0, sizeof(zero));
|
||||||
des_cbc_encrypt ((void *)p,
|
DES_cbc_encrypt ((void *)p,
|
||||||
(void *)p,
|
(void *)p,
|
||||||
datalen,
|
datalen,
|
||||||
schedule,
|
&schedule,
|
||||||
&zero,
|
&zero,
|
||||||
DES_ENCRYPT);
|
DES_ENCRYPT);
|
||||||
|
|
||||||
memset (deskey, 0, sizeof(deskey));
|
|
||||||
memset (schedule, 0, sizeof(schedule));
|
|
||||||
}
|
}
|
||||||
|
memset (deskey, 0, sizeof(deskey));
|
||||||
|
memset (&schedule, 0, sizeof(schedule));
|
||||||
|
|
||||||
if(conf_state != NULL)
|
if(conf_state != NULL)
|
||||||
*conf_state = conf_req_flag;
|
*conf_state = conf_req_flag;
|
||||||
*minor_status = 0;
|
*minor_status = 0;
|
||||||
@@ -366,7 +366,7 @@ wrap_des3
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
des_cblock ivec;
|
DES_cblock ivec;
|
||||||
|
|
||||||
memcpy (&ivec, p + 8, 8);
|
memcpy (&ivec, p + 8, 8);
|
||||||
ret = krb5_encrypt_ivec (gssapi_krb5_context,
|
ret = krb5_encrypt_ivec (gssapi_krb5_context,
|
||||||
|
@@ -160,24 +160,24 @@ static void
|
|||||||
krb5_DES_random_key(krb5_context context,
|
krb5_DES_random_key(krb5_context context,
|
||||||
krb5_keyblock *key)
|
krb5_keyblock *key)
|
||||||
{
|
{
|
||||||
des_cblock *k = key->keyvalue.data;
|
DES_cblock *k = key->keyvalue.data;
|
||||||
do {
|
do {
|
||||||
krb5_generate_random_block(k, sizeof(des_cblock));
|
krb5_generate_random_block(k, sizeof(DES_cblock));
|
||||||
des_set_odd_parity(k);
|
DES_set_odd_parity(k);
|
||||||
} while(des_is_weak_key(k));
|
} while(DES_is_weak_key(k));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
krb5_DES_schedule(krb5_context context,
|
krb5_DES_schedule(krb5_context context,
|
||||||
struct key_data *key)
|
struct key_data *key)
|
||||||
{
|
{
|
||||||
des_set_key(key->key->keyvalue.data, key->schedule->data);
|
DES_set_key(key->key->keyvalue.data, key->schedule->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
DES_string_to_key_int(unsigned char *data, size_t length, des_cblock *key)
|
DES_string_to_key_int(unsigned char *data, size_t length, DES_cblock *key)
|
||||||
{
|
{
|
||||||
des_key_schedule schedule;
|
DES_key_schedule schedule;
|
||||||
int i;
|
int i;
|
||||||
int reverse = 0;
|
int reverse = 0;
|
||||||
unsigned char *p;
|
unsigned char *p;
|
||||||
@@ -196,13 +196,13 @@ DES_string_to_key_int(unsigned char *data, size_t length, des_cblock *key)
|
|||||||
if((i % 8) == 7)
|
if((i % 8) == 7)
|
||||||
reverse = !reverse;
|
reverse = !reverse;
|
||||||
}
|
}
|
||||||
des_set_odd_parity(key);
|
DES_set_odd_parity(key);
|
||||||
if(des_is_weak_key(key))
|
if(DES_is_weak_key(key))
|
||||||
(*key)[7] ^= 0xF0;
|
(*key)[7] ^= 0xF0;
|
||||||
des_set_key(key, schedule);
|
DES_set_key(key, &schedule);
|
||||||
des_cbc_cksum((void*)data, key, length, schedule, key);
|
DES_cbc_cksum((void*)data, key, length, &schedule, key);
|
||||||
memset(schedule, 0, sizeof(schedule));
|
memset(&schedule, 0, sizeof(schedule));
|
||||||
des_set_odd_parity(key);
|
DES_set_odd_parity(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
static krb5_error_code
|
static krb5_error_code
|
||||||
@@ -215,7 +215,7 @@ krb5_DES_string_to_key(krb5_context context,
|
|||||||
{
|
{
|
||||||
unsigned char *s;
|
unsigned char *s;
|
||||||
size_t len;
|
size_t len;
|
||||||
des_cblock tmp;
|
DES_cblock tmp;
|
||||||
|
|
||||||
len = password.length + salt.saltvalue.length;
|
len = password.length + salt.saltvalue.length;
|
||||||
s = malloc(len);
|
s = malloc(len);
|
||||||
@@ -246,7 +246,7 @@ krb5_DES_string_to_key(krb5_context context,
|
|||||||
static void
|
static void
|
||||||
krb5_DES_AFS3_CMU_string_to_key (krb5_data pw,
|
krb5_DES_AFS3_CMU_string_to_key (krb5_data pw,
|
||||||
krb5_data cell,
|
krb5_data cell,
|
||||||
des_cblock *key)
|
DES_cblock *key)
|
||||||
{
|
{
|
||||||
char password[8+1]; /* crypt is limited to 8 chars anyway */
|
char password[8+1]; /* crypt is limited to 8 chars anyway */
|
||||||
int i;
|
int i;
|
||||||
@@ -259,14 +259,14 @@ krb5_DES_AFS3_CMU_string_to_key (krb5_data pw,
|
|||||||
}
|
}
|
||||||
password[8] = '\0';
|
password[8] = '\0';
|
||||||
|
|
||||||
memcpy(key, crypt(password, "p1") + 2, sizeof(des_cblock));
|
memcpy(key, crypt(password, "p1") + 2, sizeof(DES_cblock));
|
||||||
|
|
||||||
/* parity is inserted into the LSB so left shift each byte up one
|
/* parity is inserted into the LSB so left shift each byte up one
|
||||||
bit. This allows ascii characters with a zero MSB to retain as
|
bit. This allows ascii characters with a zero MSB to retain as
|
||||||
much significance as possible. */
|
much significance as possible. */
|
||||||
for (i = 0; i < sizeof(des_cblock); i++)
|
for (i = 0; i < sizeof(DES_cblock); i++)
|
||||||
((unsigned char*)key)[i] <<= 1;
|
((unsigned char*)key)[i] <<= 1;
|
||||||
des_set_odd_parity (key);
|
DES_set_odd_parity (key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -275,11 +275,11 @@ krb5_DES_AFS3_CMU_string_to_key (krb5_data pw,
|
|||||||
static void
|
static void
|
||||||
krb5_DES_AFS3_Transarc_string_to_key (krb5_data pw,
|
krb5_DES_AFS3_Transarc_string_to_key (krb5_data pw,
|
||||||
krb5_data cell,
|
krb5_data cell,
|
||||||
des_cblock *key)
|
DES_cblock *key)
|
||||||
{
|
{
|
||||||
des_key_schedule schedule;
|
DES_key_schedule schedule;
|
||||||
des_cblock temp_key;
|
DES_cblock temp_key;
|
||||||
des_cblock ivec;
|
DES_cblock ivec;
|
||||||
char password[512];
|
char password[512];
|
||||||
size_t passlen;
|
size_t passlen;
|
||||||
|
|
||||||
@@ -295,20 +295,20 @@ krb5_DES_AFS3_Transarc_string_to_key (krb5_data pw,
|
|||||||
passlen = min(sizeof(password), pw.length + cell.length);
|
passlen = min(sizeof(password), pw.length + cell.length);
|
||||||
memcpy(&ivec, "kerberos", 8);
|
memcpy(&ivec, "kerberos", 8);
|
||||||
memcpy(&temp_key, "kerberos", 8);
|
memcpy(&temp_key, "kerberos", 8);
|
||||||
des_set_odd_parity (&temp_key);
|
DES_set_odd_parity (&temp_key);
|
||||||
des_set_key (&temp_key, schedule);
|
DES_set_key (&temp_key, &schedule);
|
||||||
des_cbc_cksum (password, &ivec, passlen, schedule, &ivec);
|
DES_cbc_cksum ((void*)password, &ivec, passlen, &schedule, &ivec);
|
||||||
|
|
||||||
memcpy(&temp_key, &ivec, 8);
|
memcpy(&temp_key, &ivec, 8);
|
||||||
des_set_odd_parity (&temp_key);
|
DES_set_odd_parity (&temp_key);
|
||||||
des_set_key (&temp_key, schedule);
|
DES_set_key (&temp_key, &schedule);
|
||||||
des_cbc_cksum (password, key, passlen, schedule, &ivec);
|
DES_cbc_cksum (password, key, passlen, &schedule, &ivec);
|
||||||
memset(&schedule, 0, sizeof(schedule));
|
memset(&schedule, 0, sizeof(schedule));
|
||||||
memset(&temp_key, 0, sizeof(temp_key));
|
memset(&temp_key, 0, sizeof(temp_key));
|
||||||
memset(&ivec, 0, sizeof(ivec));
|
memset(&ivec, 0, sizeof(ivec));
|
||||||
memset(password, 0, sizeof(password));
|
memset(password, 0, sizeof(password));
|
||||||
|
|
||||||
des_set_odd_parity (key);
|
DES_set_odd_parity (key);
|
||||||
}
|
}
|
||||||
|
|
||||||
static krb5_error_code
|
static krb5_error_code
|
||||||
@@ -319,7 +319,7 @@ DES_AFS3_string_to_key(krb5_context context,
|
|||||||
krb5_data opaque,
|
krb5_data opaque,
|
||||||
krb5_keyblock *key)
|
krb5_keyblock *key)
|
||||||
{
|
{
|
||||||
des_cblock tmp;
|
DES_cblock tmp;
|
||||||
if(password.length > 8)
|
if(password.length > 8)
|
||||||
krb5_DES_AFS3_Transarc_string_to_key(password, salt.saltvalue, &tmp);
|
krb5_DES_AFS3_Transarc_string_to_key(password, salt.saltvalue, &tmp);
|
||||||
else
|
else
|
||||||
@@ -334,26 +334,26 @@ static void
|
|||||||
DES3_random_key(krb5_context context,
|
DES3_random_key(krb5_context context,
|
||||||
krb5_keyblock *key)
|
krb5_keyblock *key)
|
||||||
{
|
{
|
||||||
des_cblock *k = key->keyvalue.data;
|
DES_cblock *k = key->keyvalue.data;
|
||||||
do {
|
do {
|
||||||
krb5_generate_random_block(k, 3 * sizeof(des_cblock));
|
krb5_generate_random_block(k, 3 * sizeof(DES_cblock));
|
||||||
des_set_odd_parity(&k[0]);
|
DES_set_odd_parity(&k[0]);
|
||||||
des_set_odd_parity(&k[1]);
|
DES_set_odd_parity(&k[1]);
|
||||||
des_set_odd_parity(&k[2]);
|
DES_set_odd_parity(&k[2]);
|
||||||
} while(des_is_weak_key(&k[0]) ||
|
} while(DES_is_weak_key(&k[0]) ||
|
||||||
des_is_weak_key(&k[1]) ||
|
DES_is_weak_key(&k[1]) ||
|
||||||
des_is_weak_key(&k[2]));
|
DES_is_weak_key(&k[2]));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
DES3_schedule(krb5_context context,
|
DES3_schedule(krb5_context context,
|
||||||
struct key_data *key)
|
struct key_data *key)
|
||||||
{
|
{
|
||||||
des_cblock *k = key->key->keyvalue.data;
|
DES_cblock *k = key->key->keyvalue.data;
|
||||||
des_key_schedule *s = key->schedule->data;
|
DES_key_schedule *s = key->schedule->data;
|
||||||
des_set_key(&k[0], s[0]);
|
DES_set_key(&k[0], &s[0]);
|
||||||
des_set_key(&k[1], s[1]);
|
DES_set_key(&k[1], &s[1]);
|
||||||
des_set_key(&k[2], s[2]);
|
DES_set_key(&k[2], &s[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -361,7 +361,7 @@ DES3_schedule(krb5_context context,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
static void
|
static void
|
||||||
xor (des_cblock *key, const unsigned char *b)
|
xor (DES_cblock *key, const unsigned char *b)
|
||||||
{
|
{
|
||||||
unsigned char *a = (unsigned char*)key;
|
unsigned char *a = (unsigned char*)key;
|
||||||
a[0] ^= b[0];
|
a[0] ^= b[0];
|
||||||
@@ -385,7 +385,7 @@ DES3_string_to_key(krb5_context context,
|
|||||||
char *str;
|
char *str;
|
||||||
size_t len;
|
size_t len;
|
||||||
unsigned char tmp[24];
|
unsigned char tmp[24];
|
||||||
des_cblock keys[3];
|
DES_cblock keys[3];
|
||||||
|
|
||||||
len = password.length + salt.saltvalue.length;
|
len = password.length + salt.saltvalue.length;
|
||||||
str = malloc(len);
|
str = malloc(len);
|
||||||
@@ -396,29 +396,29 @@ DES3_string_to_key(krb5_context context,
|
|||||||
memcpy(str, password.data, password.length);
|
memcpy(str, password.data, password.length);
|
||||||
memcpy(str + password.length, salt.saltvalue.data, salt.saltvalue.length);
|
memcpy(str + password.length, salt.saltvalue.data, salt.saltvalue.length);
|
||||||
{
|
{
|
||||||
des_cblock ivec;
|
DES_cblock ivec;
|
||||||
des_key_schedule s[3];
|
DES_key_schedule s[3];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
_krb5_n_fold(str, len, tmp, 24);
|
_krb5_n_fold(str, len, tmp, 24);
|
||||||
|
|
||||||
for(i = 0; i < 3; i++){
|
for(i = 0; i < 3; i++){
|
||||||
memcpy(keys + i, tmp + i * 8, sizeof(keys[i]));
|
memcpy(keys + i, tmp + i * 8, sizeof(keys[i]));
|
||||||
des_set_odd_parity(keys + i);
|
DES_set_odd_parity(keys + i);
|
||||||
if(des_is_weak_key(keys + i))
|
if(DES_is_weak_key(keys + i))
|
||||||
xor(keys + i, (const unsigned char*)"\0\0\0\0\0\0\0\xf0");
|
xor(keys + i, (const unsigned char*)"\0\0\0\0\0\0\0\xf0");
|
||||||
des_set_key(keys + i, s[i]);
|
DES_set_key(keys + i, &s[i]);
|
||||||
}
|
}
|
||||||
memset(&ivec, 0, sizeof(ivec));
|
memset(&ivec, 0, sizeof(ivec));
|
||||||
des_ede3_cbc_encrypt(tmp,
|
DES_ede3_cbc_encrypt(tmp,
|
||||||
tmp, sizeof(tmp),
|
tmp, sizeof(tmp),
|
||||||
s[0], s[1], s[2], &ivec, DES_ENCRYPT);
|
&s[0], &s[1], &s[2], &ivec, DES_ENCRYPT);
|
||||||
memset(s, 0, sizeof(s));
|
memset(s, 0, sizeof(s));
|
||||||
memset(&ivec, 0, sizeof(ivec));
|
memset(&ivec, 0, sizeof(ivec));
|
||||||
for(i = 0; i < 3; i++){
|
for(i = 0; i < 3; i++){
|
||||||
memcpy(keys + i, tmp + i * 8, sizeof(keys[i]));
|
memcpy(keys + i, tmp + i * 8, sizeof(keys[i]));
|
||||||
des_set_odd_parity(keys + i);
|
DES_set_odd_parity(keys + i);
|
||||||
if(des_is_weak_key(keys + i))
|
if(DES_is_weak_key(keys + i))
|
||||||
xor(keys + i, (const unsigned char*)"\0\0\0\0\0\0\0\xf0");
|
xor(keys + i, (const unsigned char*)"\0\0\0\0\0\0\0\xf0");
|
||||||
}
|
}
|
||||||
memset(tmp, 0, sizeof(tmp));
|
memset(tmp, 0, sizeof(tmp));
|
||||||
@@ -715,8 +715,8 @@ struct key_type keytype_des = {
|
|||||||
KEYTYPE_DES,
|
KEYTYPE_DES,
|
||||||
"des",
|
"des",
|
||||||
56,
|
56,
|
||||||
sizeof(des_cblock),
|
sizeof(DES_cblock),
|
||||||
sizeof(des_key_schedule),
|
sizeof(DES_key_schedule),
|
||||||
krb5_DES_random_key,
|
krb5_DES_random_key,
|
||||||
krb5_DES_schedule,
|
krb5_DES_schedule,
|
||||||
des_salt
|
des_salt
|
||||||
@@ -726,8 +726,8 @@ struct key_type keytype_des3 = {
|
|||||||
KEYTYPE_DES3,
|
KEYTYPE_DES3,
|
||||||
"des3",
|
"des3",
|
||||||
168,
|
168,
|
||||||
3 * sizeof(des_cblock),
|
3 * sizeof(DES_cblock),
|
||||||
3 * sizeof(des_key_schedule),
|
3 * sizeof(DES_key_schedule),
|
||||||
DES3_random_key,
|
DES3_random_key,
|
||||||
DES3_schedule,
|
DES3_schedule,
|
||||||
des3_salt
|
des3_salt
|
||||||
@@ -737,8 +737,8 @@ struct key_type keytype_des3_derived = {
|
|||||||
KEYTYPE_DES3,
|
KEYTYPE_DES3,
|
||||||
"des3",
|
"des3",
|
||||||
168,
|
168,
|
||||||
3 * sizeof(des_cblock),
|
3 * sizeof(DES_cblock),
|
||||||
3 * sizeof(des_key_schedule),
|
3 * sizeof(DES_key_schedule),
|
||||||
DES3_random_key,
|
DES3_random_key,
|
||||||
DES3_schedule,
|
DES3_schedule,
|
||||||
des3_salt_derived
|
des3_salt_derived
|
||||||
@@ -1210,7 +1210,7 @@ RSA_MD4_DES_checksum(krb5_context context,
|
|||||||
Checksum *cksum)
|
Checksum *cksum)
|
||||||
{
|
{
|
||||||
MD4_CTX md4;
|
MD4_CTX md4;
|
||||||
des_cblock ivec;
|
DES_cblock ivec;
|
||||||
unsigned char *p = cksum->checksum.data;
|
unsigned char *p = cksum->checksum.data;
|
||||||
|
|
||||||
krb5_generate_random_block(p, 8);
|
krb5_generate_random_block(p, 8);
|
||||||
@@ -1219,7 +1219,7 @@ RSA_MD4_DES_checksum(krb5_context context,
|
|||||||
MD4_Update (&md4, data, len);
|
MD4_Update (&md4, data, len);
|
||||||
MD4_Final (p + 8, &md4);
|
MD4_Final (p + 8, &md4);
|
||||||
memset (&ivec, 0, sizeof(ivec));
|
memset (&ivec, 0, sizeof(ivec));
|
||||||
des_cbc_encrypt(p,
|
DES_cbc_encrypt(p,
|
||||||
p,
|
p,
|
||||||
24,
|
24,
|
||||||
key->schedule->data,
|
key->schedule->data,
|
||||||
@@ -1238,11 +1238,11 @@ RSA_MD4_DES_verify(krb5_context context,
|
|||||||
MD4_CTX md4;
|
MD4_CTX md4;
|
||||||
unsigned char tmp[24];
|
unsigned char tmp[24];
|
||||||
unsigned char res[16];
|
unsigned char res[16];
|
||||||
des_cblock ivec;
|
DES_cblock ivec;
|
||||||
krb5_error_code ret = 0;
|
krb5_error_code ret = 0;
|
||||||
|
|
||||||
memset(&ivec, 0, sizeof(ivec));
|
memset(&ivec, 0, sizeof(ivec));
|
||||||
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,
|
key->schedule->data,
|
||||||
@@ -1285,7 +1285,7 @@ RSA_MD5_DES_checksum(krb5_context context,
|
|||||||
Checksum *C)
|
Checksum *C)
|
||||||
{
|
{
|
||||||
MD5_CTX md5;
|
MD5_CTX md5;
|
||||||
des_cblock ivec;
|
DES_cblock ivec;
|
||||||
unsigned char *p = C->checksum.data;
|
unsigned char *p = C->checksum.data;
|
||||||
|
|
||||||
krb5_generate_random_block(p, 8);
|
krb5_generate_random_block(p, 8);
|
||||||
@@ -1294,7 +1294,7 @@ RSA_MD5_DES_checksum(krb5_context context,
|
|||||||
MD5_Update (&md5, data, len);
|
MD5_Update (&md5, data, len);
|
||||||
MD5_Final (p + 8, &md5);
|
MD5_Final (p + 8, &md5);
|
||||||
memset (&ivec, 0, sizeof(ivec));
|
memset (&ivec, 0, sizeof(ivec));
|
||||||
des_cbc_encrypt(p,
|
DES_cbc_encrypt(p,
|
||||||
p,
|
p,
|
||||||
24,
|
24,
|
||||||
key->schedule->data,
|
key->schedule->data,
|
||||||
@@ -1313,15 +1313,15 @@ RSA_MD5_DES_verify(krb5_context context,
|
|||||||
MD5_CTX md5;
|
MD5_CTX md5;
|
||||||
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;
|
DES_key_schedule *sched = key->schedule->data;
|
||||||
krb5_error_code ret = 0;
|
krb5_error_code ret = 0;
|
||||||
|
|
||||||
memset(&ivec, 0, sizeof(ivec));
|
memset(&ivec, 0, sizeof(ivec));
|
||||||
des_cbc_encrypt(C->checksum.data,
|
DES_cbc_encrypt(C->checksum.data,
|
||||||
(void*)tmp,
|
(void*)tmp,
|
||||||
C->checksum.length,
|
C->checksum.length,
|
||||||
sched[0],
|
&sched[0],
|
||||||
&ivec,
|
&ivec,
|
||||||
DES_DECRYPT);
|
DES_DECRYPT);
|
||||||
MD5_Init (&md5);
|
MD5_Init (&md5);
|
||||||
@@ -1346,9 +1346,9 @@ RSA_MD5_DES3_checksum(krb5_context context,
|
|||||||
Checksum *C)
|
Checksum *C)
|
||||||
{
|
{
|
||||||
MD5_CTX md5;
|
MD5_CTX md5;
|
||||||
des_cblock ivec;
|
DES_cblock ivec;
|
||||||
unsigned char *p = C->checksum.data;
|
unsigned char *p = C->checksum.data;
|
||||||
des_key_schedule *sched = key->schedule->data;
|
DES_key_schedule *sched = key->schedule->data;
|
||||||
|
|
||||||
krb5_generate_random_block(p, 8);
|
krb5_generate_random_block(p, 8);
|
||||||
MD5_Init (&md5);
|
MD5_Init (&md5);
|
||||||
@@ -1356,10 +1356,10 @@ RSA_MD5_DES3_checksum(krb5_context context,
|
|||||||
MD5_Update (&md5, data, len);
|
MD5_Update (&md5, data, len);
|
||||||
MD5_Final (p + 8, &md5);
|
MD5_Final (p + 8, &md5);
|
||||||
memset (&ivec, 0, sizeof(ivec));
|
memset (&ivec, 0, sizeof(ivec));
|
||||||
des_ede3_cbc_encrypt(p,
|
DES_ede3_cbc_encrypt(p,
|
||||||
p,
|
p,
|
||||||
24,
|
24,
|
||||||
sched[0], sched[1], sched[2],
|
&sched[0], &sched[1], &sched[2],
|
||||||
&ivec,
|
&ivec,
|
||||||
DES_ENCRYPT);
|
DES_ENCRYPT);
|
||||||
}
|
}
|
||||||
@@ -1375,15 +1375,15 @@ RSA_MD5_DES3_verify(krb5_context context,
|
|||||||
MD5_CTX md5;
|
MD5_CTX md5;
|
||||||
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;
|
DES_key_schedule *sched = key->schedule->data;
|
||||||
krb5_error_code ret = 0;
|
krb5_error_code ret = 0;
|
||||||
|
|
||||||
memset(&ivec, 0, sizeof(ivec));
|
memset(&ivec, 0, sizeof(ivec));
|
||||||
des_ede3_cbc_encrypt(C->checksum.data,
|
DES_ede3_cbc_encrypt(C->checksum.data,
|
||||||
(void*)tmp,
|
(void*)tmp,
|
||||||
C->checksum.length,
|
C->checksum.length,
|
||||||
sched[0], sched[1], sched[2],
|
&sched[0], &sched[1], &sched[2],
|
||||||
&ivec,
|
&ivec,
|
||||||
DES_DECRYPT);
|
DES_DECRYPT);
|
||||||
MD5_Init (&md5);
|
MD5_Init (&md5);
|
||||||
@@ -2069,10 +2069,10 @@ DES_CBC_encrypt_null_ivec(krb5_context context,
|
|||||||
int usage,
|
int usage,
|
||||||
void *ignore_ivec)
|
void *ignore_ivec)
|
||||||
{
|
{
|
||||||
des_cblock ivec;
|
DES_cblock ivec;
|
||||||
des_key_schedule *s = key->schedule->data;
|
DES_key_schedule *s = key->schedule->data;
|
||||||
memset(&ivec, 0, sizeof(ivec));
|
memset(&ivec, 0, sizeof(ivec));
|
||||||
des_cbc_encrypt(data, data, len, *s, &ivec, encrypt);
|
DES_cbc_encrypt(data, data, len, s, &ivec, encrypt);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2085,10 +2085,10 @@ DES_CBC_encrypt_key_ivec(krb5_context context,
|
|||||||
int usage,
|
int usage,
|
||||||
void *ignore_ivec)
|
void *ignore_ivec)
|
||||||
{
|
{
|
||||||
des_cblock ivec;
|
DES_cblock ivec;
|
||||||
des_key_schedule *s = key->schedule->data;
|
DES_key_schedule *s = key->schedule->data;
|
||||||
memcpy(&ivec, key->key->keyvalue.data, sizeof(ivec));
|
memcpy(&ivec, key->key->keyvalue.data, sizeof(ivec));
|
||||||
des_cbc_encrypt(data, data, len, *s, &ivec, encrypt);
|
DES_cbc_encrypt(data, data, len, s, &ivec, encrypt);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2101,13 +2101,13 @@ DES3_CBC_encrypt(krb5_context context,
|
|||||||
int usage,
|
int usage,
|
||||||
void *ivec)
|
void *ivec)
|
||||||
{
|
{
|
||||||
des_cblock local_ivec;
|
DES_cblock local_ivec;
|
||||||
des_key_schedule *s = key->schedule->data;
|
DES_key_schedule *s = key->schedule->data;
|
||||||
if(ivec == NULL) {
|
if(ivec == NULL) {
|
||||||
ivec = &local_ivec;
|
ivec = &local_ivec;
|
||||||
memset(local_ivec, 0, sizeof(local_ivec));
|
memset(local_ivec, 0, sizeof(local_ivec));
|
||||||
}
|
}
|
||||||
des_ede3_cbc_encrypt(data, data, len, s[0], s[1], s[2], ivec, encrypt);
|
DES_ede3_cbc_encrypt(data, data, len, &s[0], &s[1], &s[2], ivec, encrypt);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2120,12 +2120,12 @@ DES_CFB64_encrypt_null_ivec(krb5_context context,
|
|||||||
int usage,
|
int usage,
|
||||||
void *ignore_ivec)
|
void *ignore_ivec)
|
||||||
{
|
{
|
||||||
des_cblock ivec;
|
DES_cblock ivec;
|
||||||
int num = 0;
|
int num = 0;
|
||||||
des_key_schedule *s = key->schedule->data;
|
DES_key_schedule *s = key->schedule->data;
|
||||||
memset(&ivec, 0, sizeof(ivec));
|
memset(&ivec, 0, sizeof(ivec));
|
||||||
|
|
||||||
des_cfb64_encrypt(data, data, len, *s, &ivec, &num, encrypt);
|
DES_cfb64_encrypt(data, data, len, s, &ivec, &num, encrypt);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2138,11 +2138,11 @@ DES_PCBC_encrypt_key_ivec(krb5_context context,
|
|||||||
int usage,
|
int usage,
|
||||||
void *ignore_ivec)
|
void *ignore_ivec)
|
||||||
{
|
{
|
||||||
des_cblock ivec;
|
DES_cblock ivec;
|
||||||
des_key_schedule *s = key->schedule->data;
|
DES_key_schedule *s = key->schedule->data;
|
||||||
memcpy(&ivec, key->key->keyvalue.data, sizeof(ivec));
|
memcpy(&ivec, key->key->keyvalue.data, sizeof(ivec));
|
||||||
|
|
||||||
des_pcbc_encrypt(data, data, len, *s, &ivec, encrypt);
|
DES_pcbc_encrypt(data, data, len, s, &ivec, encrypt);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3335,23 +3335,23 @@ krb5_generate_random_block(void *buf, size_t len)
|
|||||||
void
|
void
|
||||||
krb5_generate_random_block(void *buf, size_t len)
|
krb5_generate_random_block(void *buf, size_t len)
|
||||||
{
|
{
|
||||||
des_cblock key, out;
|
DES_cblock key, out;
|
||||||
static des_cblock counter;
|
static DES_cblock counter;
|
||||||
static des_key_schedule schedule;
|
static DES_key_schedule schedule;
|
||||||
int i;
|
int i;
|
||||||
static int initialized = 0;
|
static int initialized = 0;
|
||||||
|
|
||||||
HEIMDAL_MUTEX_lock(&crypto_mutex);
|
HEIMDAL_MUTEX_lock(&crypto_mutex);
|
||||||
if(!initialized) {
|
if(!initialized) {
|
||||||
des_new_random_key(&key);
|
DES_new_random_key(&key);
|
||||||
des_set_key(&key, schedule);
|
DES_set_key(&key, &schedule);
|
||||||
memset(&key, 0, sizeof(key));
|
memset(&key, 0, sizeof(key));
|
||||||
des_new_random_key(&counter);
|
DES_new_random_key(&counter);
|
||||||
initialized = 1;
|
initialized = 1;
|
||||||
}
|
}
|
||||||
HEIMDAL_MUTEX_unlock(&crypto_mutex);
|
HEIMDAL_MUTEX_unlock(&crypto_mutex);
|
||||||
while(len > 0) {
|
while(len > 0) {
|
||||||
des_ecb_encrypt(&counter, &out, schedule, DES_ENCRYPT);
|
DES_ecb_encrypt(&counter, &out, &schedule, DES_ENCRYPT);
|
||||||
for(i = 7; i >=0; i--)
|
for(i = 7; i >=0; i--)
|
||||||
if(counter[i]++)
|
if(counter[i]++)
|
||||||
break;
|
break;
|
||||||
@@ -3392,9 +3392,9 @@ DES3_postproc(krb5_context context,
|
|||||||
krb5_free_data(context, key->schedule);
|
krb5_free_data(context, key->schedule);
|
||||||
key->schedule = NULL;
|
key->schedule = NULL;
|
||||||
}
|
}
|
||||||
des_set_odd_parity((des_cblock*)k);
|
DES_set_odd_parity((DES_cblock*)k);
|
||||||
des_set_odd_parity((des_cblock*)(k + 8));
|
DES_set_odd_parity((DES_cblock*)(k + 8));
|
||||||
des_set_odd_parity((des_cblock*)(k + 16));
|
DES_set_odd_parity((DES_cblock*)(k + 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
static krb5_error_code
|
static krb5_error_code
|
||||||
|
Reference in New Issue
Block a user