summaryrefslogtreecommitdiff
path: root/src/lib/libssl/t1_enc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/t1_enc.c')
-rw-r--r--src/lib/libssl/t1_enc.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/lib/libssl/t1_enc.c b/src/lib/libssl/t1_enc.c
index 793ea43e90..9719541f2b 100644
--- a/src/lib/libssl/t1_enc.c
+++ b/src/lib/libssl/t1_enc.c
@@ -157,7 +157,7 @@ static int tls1_P_hash(const EVP_MD *md, const unsigned char *sec,
157 const void *seed5, int seed5_len, 157 const void *seed5, int seed5_len,
158 unsigned char *out, int olen) 158 unsigned char *out, int olen)
159 { 159 {
160 int chunk; 160 int chunk,n;
161 unsigned int j; 161 unsigned int j;
162 HMAC_CTX ctx; 162 HMAC_CTX ctx;
163 HMAC_CTX ctx_tmp; 163 HMAC_CTX ctx_tmp;
@@ -187,6 +187,7 @@ static int tls1_P_hash(const EVP_MD *md, const unsigned char *sec,
187 if (!HMAC_Final(&ctx,A1,&A1_len)) 187 if (!HMAC_Final(&ctx,A1,&A1_len))
188 goto err; 188 goto err;
189 189
190 n=0;
190 for (;;) 191 for (;;)
191 { 192 {
192 if (!HMAC_Init_ex(&ctx,NULL,0,NULL,NULL)) /* re-init */ 193 if (!HMAC_Init_ex(&ctx,NULL,0,NULL,NULL)) /* re-init */
@@ -308,13 +309,13 @@ static int tls1_generate_key_block(SSL *s, unsigned char *km,
308int tls1_change_cipher_state(SSL *s, int which) 309int tls1_change_cipher_state(SSL *s, int which)
309 { 310 {
310 static const unsigned char empty[]=""; 311 static const unsigned char empty[]="";
311 unsigned char *p,*mac_secret; 312 unsigned char *p,*key_block,*mac_secret;
312 unsigned char *exp_label; 313 unsigned char *exp_label;
313 unsigned char tmp1[EVP_MAX_KEY_LENGTH]; 314 unsigned char tmp1[EVP_MAX_KEY_LENGTH];
314 unsigned char tmp2[EVP_MAX_KEY_LENGTH]; 315 unsigned char tmp2[EVP_MAX_KEY_LENGTH];
315 unsigned char iv1[EVP_MAX_IV_LENGTH*2]; 316 unsigned char iv1[EVP_MAX_IV_LENGTH*2];
316 unsigned char iv2[EVP_MAX_IV_LENGTH*2]; 317 unsigned char iv2[EVP_MAX_IV_LENGTH*2];
317 unsigned char *ms,*key,*iv; 318 unsigned char *ms,*key,*iv,*er1,*er2;
318 int client_write; 319 int client_write;
319 EVP_CIPHER_CTX *dd; 320 EVP_CIPHER_CTX *dd;
320 const EVP_CIPHER *c; 321 const EVP_CIPHER *c;
@@ -336,6 +337,7 @@ int tls1_change_cipher_state(SSL *s, int which)
336#ifndef OPENSSL_NO_COMP 337#ifndef OPENSSL_NO_COMP
337 comp=s->s3->tmp.new_compression; 338 comp=s->s3->tmp.new_compression;
338#endif 339#endif
340 key_block=s->s3->tmp.key_block;
339 341
340#ifdef KSSL_DEBUG 342#ifdef KSSL_DEBUG
341 printf("tls1_change_cipher_state(which= %d) w/\n", which); 343 printf("tls1_change_cipher_state(which= %d) w/\n", which);
@@ -446,6 +448,8 @@ int tls1_change_cipher_state(SSL *s, int which)
446 cl : SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher)) : cl; 448 cl : SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher)) : cl;
447 /* Was j=(exp)?5:EVP_CIPHER_key_length(c); */ 449 /* Was j=(exp)?5:EVP_CIPHER_key_length(c); */
448 k=EVP_CIPHER_iv_length(c); 450 k=EVP_CIPHER_iv_length(c);
451 er1= &(s->s3->client_random[0]);
452 er2= &(s->s3->server_random[0]);
449 if ( (which == SSL3_CHANGE_CIPHER_CLIENT_WRITE) || 453 if ( (which == SSL3_CHANGE_CIPHER_CLIENT_WRITE) ||
450 (which == SSL3_CHANGE_CIPHER_SERVER_READ)) 454 (which == SSL3_CHANGE_CIPHER_SERVER_READ))
451 { 455 {
@@ -876,7 +880,7 @@ int tls1_final_finish_mac(SSL *s,
876int tls1_mac(SSL *ssl, unsigned char *md, int send) 880int tls1_mac(SSL *ssl, unsigned char *md, int send)
877 { 881 {
878 SSL3_RECORD *rec; 882 SSL3_RECORD *rec;
879 unsigned char *seq; 883 unsigned char *mac_sec,*seq;
880 EVP_MD_CTX *hash; 884 EVP_MD_CTX *hash;
881 size_t md_size; 885 size_t md_size;
882 int i; 886 int i;
@@ -888,12 +892,14 @@ int tls1_mac(SSL *ssl, unsigned char *md, int send)
888 if (send) 892 if (send)
889 { 893 {
890 rec= &(ssl->s3->wrec); 894 rec= &(ssl->s3->wrec);
895 mac_sec= &(ssl->s3->write_mac_secret[0]);
891 seq= &(ssl->s3->write_sequence[0]); 896 seq= &(ssl->s3->write_sequence[0]);
892 hash=ssl->write_hash; 897 hash=ssl->write_hash;
893 } 898 }
894 else 899 else
895 { 900 {
896 rec= &(ssl->s3->rrec); 901 rec= &(ssl->s3->rrec);
902 mac_sec= &(ssl->s3->read_mac_secret[0]);
897 seq= &(ssl->s3->read_sequence[0]); 903 seq= &(ssl->s3->read_sequence[0]);
898 hash=ssl->read_hash; 904 hash=ssl->read_hash;
899 } 905 }