|
@@ -107,25 +107,25 @@ static int ssl3_generate_key_block(SSL *s, unsigned char *km, int num)
|
|
|
for (j=0; j<k; j++)
|
|
|
buf[j]=c;
|
|
|
c++;
|
|
|
- EVP_DigestInit(&s1,EVP_sha1());
|
|
|
+ EVP_DigestInit_ex(&s1,EVP_sha1(), NULL);
|
|
|
EVP_DigestUpdate(&s1,buf,k);
|
|
|
EVP_DigestUpdate(&s1,s->session->master_key,
|
|
|
s->session->master_key_length);
|
|
|
EVP_DigestUpdate(&s1,s->s3->server_random,SSL3_RANDOM_SIZE);
|
|
|
EVP_DigestUpdate(&s1,s->s3->client_random,SSL3_RANDOM_SIZE);
|
|
|
- EVP_DigestFinal(&s1,smd,NULL);
|
|
|
+ EVP_DigestFinal_ex(&s1,smd,NULL);
|
|
|
|
|
|
- EVP_DigestInit(&m5,EVP_md5());
|
|
|
+ EVP_DigestInit_ex(&m5,EVP_md5(), NULL);
|
|
|
EVP_DigestUpdate(&m5,s->session->master_key,
|
|
|
s->session->master_key_length);
|
|
|
EVP_DigestUpdate(&m5,smd,SHA_DIGEST_LENGTH);
|
|
|
if ((i+MD5_DIGEST_LENGTH) > num)
|
|
|
{
|
|
|
- EVP_DigestFinal(&m5,smd,NULL);
|
|
|
+ EVP_DigestFinal_ex(&m5,smd,NULL);
|
|
|
memcpy(km,smd,(num-i));
|
|
|
}
|
|
|
else
|
|
|
- EVP_DigestFinal(&m5,km,NULL);
|
|
|
+ EVP_DigestFinal_ex(&m5,km,NULL);
|
|
|
|
|
|
km+=MD5_DIGEST_LENGTH;
|
|
|
}
|
|
@@ -256,19 +256,19 @@ int ssl3_change_cipher_state(SSL *s, int which)
|
|
|
/* In here I set both the read and write key/iv to the
|
|
|
* same value since only the correct one will be used :-).
|
|
|
*/
|
|
|
- EVP_DigestInit(&md,EVP_md5());
|
|
|
+ EVP_DigestInit_ex(&md,EVP_md5(), NULL);
|
|
|
EVP_DigestUpdate(&md,key,j);
|
|
|
EVP_DigestUpdate(&md,er1,SSL3_RANDOM_SIZE);
|
|
|
EVP_DigestUpdate(&md,er2,SSL3_RANDOM_SIZE);
|
|
|
- EVP_DigestFinal(&md,&(exp_key[0]),NULL);
|
|
|
+ EVP_DigestFinal_ex(&md,&(exp_key[0]),NULL);
|
|
|
key= &(exp_key[0]);
|
|
|
|
|
|
if (k > 0)
|
|
|
{
|
|
|
- EVP_DigestInit(&md,EVP_md5());
|
|
|
+ EVP_DigestInit_ex(&md,EVP_md5(), NULL);
|
|
|
EVP_DigestUpdate(&md,er1,SSL3_RANDOM_SIZE);
|
|
|
EVP_DigestUpdate(&md,er2,SSL3_RANDOM_SIZE);
|
|
|
- EVP_DigestFinal(&md,&(exp_iv[0]),NULL);
|
|
|
+ EVP_DigestFinal_ex(&md,&(exp_iv[0]),NULL);
|
|
|
iv= &(exp_iv[0]);
|
|
|
}
|
|
|
}
|
|
@@ -421,8 +421,8 @@ int ssl3_enc(SSL *s, int send)
|
|
|
|
|
|
void ssl3_init_finished_mac(SSL *s)
|
|
|
{
|
|
|
- EVP_DigestInit(&(s->s3->finish_dgst1),s->ctx->md5);
|
|
|
- EVP_DigestInit(&(s->s3->finish_dgst2),s->ctx->sha1);
|
|
|
+ EVP_DigestInit_ex(&(s->s3->finish_dgst1),s->ctx->md5, NULL);
|
|
|
+ EVP_DigestInit_ex(&(s->s3->finish_dgst2),s->ctx->sha1, NULL);
|
|
|
}
|
|
|
|
|
|
void ssl3_finish_mac(SSL *s, const unsigned char *buf, int len)
|
|
@@ -457,7 +457,7 @@ static int ssl3_handshake_mac(SSL *s, EVP_MD_CTX *in_ctx,
|
|
|
EVP_MD_CTX ctx;
|
|
|
|
|
|
EVP_MD_CTX_init(&ctx);
|
|
|
- EVP_MD_CTX_copy(&ctx,in_ctx);
|
|
|
+ EVP_MD_CTX_copy_ex(&ctx,in_ctx);
|
|
|
|
|
|
n=EVP_MD_CTX_size(&ctx);
|
|
|
npad=(48/n)*n;
|
|
@@ -467,14 +467,14 @@ static int ssl3_handshake_mac(SSL *s, EVP_MD_CTX *in_ctx,
|
|
|
EVP_DigestUpdate(&ctx,s->session->master_key,
|
|
|
s->session->master_key_length);
|
|
|
EVP_DigestUpdate(&ctx,ssl3_pad_1,npad);
|
|
|
- EVP_DigestFinal(&ctx,md_buf,&i);
|
|
|
+ EVP_DigestFinal_ex(&ctx,md_buf,&i);
|
|
|
|
|
|
- EVP_DigestInit(&ctx,EVP_MD_CTX_md(&ctx));
|
|
|
+ EVP_DigestInit_ex(&ctx,EVP_MD_CTX_md(&ctx), NULL);
|
|
|
EVP_DigestUpdate(&ctx,s->session->master_key,
|
|
|
s->session->master_key_length);
|
|
|
EVP_DigestUpdate(&ctx,ssl3_pad_2,npad);
|
|
|
EVP_DigestUpdate(&ctx,md_buf,i);
|
|
|
- EVP_DigestFinal(&ctx,p,&ret);
|
|
|
+ EVP_DigestFinal_ex(&ctx,p,&ret);
|
|
|
|
|
|
EVP_MD_CTX_cleanup(&ctx);
|
|
|
|
|
@@ -512,7 +512,7 @@ int ssl3_mac(SSL *ssl, unsigned char *md, int send)
|
|
|
/* Chop the digest off the end :-) */
|
|
|
EVP_MD_CTX_init(&md_ctx);
|
|
|
|
|
|
- EVP_DigestInit( &md_ctx,hash);
|
|
|
+ EVP_DigestInit_ex( &md_ctx,hash, NULL);
|
|
|
EVP_DigestUpdate(&md_ctx,mac_sec,md_size);
|
|
|
EVP_DigestUpdate(&md_ctx,ssl3_pad_1,npad);
|
|
|
EVP_DigestUpdate(&md_ctx,seq,8);
|
|
@@ -522,13 +522,13 @@ int ssl3_mac(SSL *ssl, unsigned char *md, int send)
|
|
|
s2n(rec->length,p);
|
|
|
EVP_DigestUpdate(&md_ctx,md,2);
|
|
|
EVP_DigestUpdate(&md_ctx,rec->input,rec->length);
|
|
|
- EVP_DigestFinal( &md_ctx,md,NULL);
|
|
|
+ EVP_DigestFinal_ex( &md_ctx,md,NULL);
|
|
|
|
|
|
- EVP_DigestInit( &md_ctx,hash);
|
|
|
+ EVP_DigestInit_ex( &md_ctx,hash, NULL);
|
|
|
EVP_DigestUpdate(&md_ctx,mac_sec,md_size);
|
|
|
EVP_DigestUpdate(&md_ctx,ssl3_pad_2,npad);
|
|
|
EVP_DigestUpdate(&md_ctx,md,md_size);
|
|
|
- EVP_DigestFinal( &md_ctx,md,&md_size);
|
|
|
+ EVP_DigestFinal_ex( &md_ctx,md,&md_size);
|
|
|
|
|
|
EVP_MD_CTX_cleanup(&md_ctx);
|
|
|
|
|
@@ -563,19 +563,19 @@ int ssl3_generate_master_secret(SSL *s, unsigned char *out, unsigned char *p,
|
|
|
EVP_MD_CTX_init(&ctx);
|
|
|
for (i=0; i<3; i++)
|
|
|
{
|
|
|
- EVP_DigestInit(&ctx,s->ctx->sha1);
|
|
|
+ EVP_DigestInit_ex(&ctx,s->ctx->sha1, NULL);
|
|
|
EVP_DigestUpdate(&ctx,salt[i],strlen((const char *)salt[i]));
|
|
|
EVP_DigestUpdate(&ctx,p,len);
|
|
|
EVP_DigestUpdate(&ctx,&(s->s3->client_random[0]),
|
|
|
SSL3_RANDOM_SIZE);
|
|
|
EVP_DigestUpdate(&ctx,&(s->s3->server_random[0]),
|
|
|
SSL3_RANDOM_SIZE);
|
|
|
- EVP_DigestFinal(&ctx,buf,&n);
|
|
|
+ EVP_DigestFinal_ex(&ctx,buf,&n);
|
|
|
|
|
|
- EVP_DigestInit(&ctx,s->ctx->md5);
|
|
|
+ EVP_DigestInit_ex(&ctx,s->ctx->md5, NULL);
|
|
|
EVP_DigestUpdate(&ctx,p,len);
|
|
|
EVP_DigestUpdate(&ctx,buf,n);
|
|
|
- EVP_DigestFinal(&ctx,out,&n);
|
|
|
+ EVP_DigestFinal_ex(&ctx,out,&n);
|
|
|
out+=n;
|
|
|
ret+=n;
|
|
|
}
|