| OLD | NEW |
| 1 /* ssl/s2_enc.c */ | 1 /* ssl/s2_enc.c */ |
| 2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 * All rights reserved. | 3 * All rights reserved. |
| 4 * | 4 * |
| 5 * This package is an SSL implementation written | 5 * This package is an SSL implementation written |
| 6 * by Eric Young (eay@cryptsoft.com). | 6 * by Eric Young (eay@cryptsoft.com). |
| 7 * The implementation was written so as to conform with Netscapes SSL. | 7 * The implementation was written so as to conform with Netscapes SSL. |
| 8 * | 8 * |
| 9 * This library is free for commercial and non-commercial use as long as | 9 * This library is free for commercial and non-commercial use as long as |
| 10 * the following conditions are aheared to. The following conditions | 10 * the following conditions are aheared to. The following conditions |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 #include <stdio.h> | 61 #include <stdio.h> |
| 62 | 62 |
| 63 int ssl2_enc_init(SSL *s, int client) | 63 int ssl2_enc_init(SSL *s, int client) |
| 64 { | 64 { |
| 65 /* Max number of bytes needed */ | 65 /* Max number of bytes needed */ |
| 66 EVP_CIPHER_CTX *rs,*ws; | 66 EVP_CIPHER_CTX *rs,*ws; |
| 67 const EVP_CIPHER *c; | 67 const EVP_CIPHER *c; |
| 68 const EVP_MD *md; | 68 const EVP_MD *md; |
| 69 int num; | 69 int num; |
| 70 | 70 |
| 71 » if (!ssl_cipher_get_evp(s->session,&c,&md,NULL)) | 71 » if (!ssl_cipher_get_evp(s->session,&c,&md,NULL,NULL,NULL)) |
| 72 { | 72 { |
| 73 ssl2_return_error(s,SSL2_PE_NO_CIPHER); | 73 ssl2_return_error(s,SSL2_PE_NO_CIPHER); |
| 74 SSLerr(SSL_F_SSL2_ENC_INIT,SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIO
NS); | 74 SSLerr(SSL_F_SSL2_ENC_INIT,SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIO
NS); |
| 75 return(0); | 75 return(0); |
| 76 } | 76 } |
| 77 | 77 » ssl_replace_hash(&s->read_hash,md); |
| 78 » s->read_hash=md; | 78 » ssl_replace_hash(&s->write_hash,md); |
| 79 » s->write_hash=md; | |
| 80 | 79 |
| 81 if ((s->enc_read_ctx == NULL) && | 80 if ((s->enc_read_ctx == NULL) && |
| 82 ((s->enc_read_ctx=(EVP_CIPHER_CTX *) | 81 ((s->enc_read_ctx=(EVP_CIPHER_CTX *) |
| 83 OPENSSL_malloc(sizeof(EVP_CIPHER_CTX))) == NULL)) | 82 OPENSSL_malloc(sizeof(EVP_CIPHER_CTX))) == NULL)) |
| 84 goto err; | 83 goto err; |
| 85 | 84 |
| 86 /* make sure it's intialized in case the malloc for enc_write_ctx fails | 85 /* make sure it's intialized in case the malloc for enc_write_ctx fails |
| 87 * and we exit with an error */ | 86 * and we exit with an error */ |
| 88 rs= s->enc_read_ctx; | 87 rs= s->enc_read_ctx; |
| 89 EVP_CIPHER_CTX_init(rs); | 88 EVP_CIPHER_CTX_init(rs); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 sec=s->s2->read_key; | 168 sec=s->s2->read_key; |
| 170 len=s->s2->ract_data_length; | 169 len=s->s2->ract_data_length; |
| 171 act=s->s2->ract_data; | 170 act=s->s2->ract_data; |
| 172 } | 171 } |
| 173 | 172 |
| 174 p= &(sequence[0]); | 173 p= &(sequence[0]); |
| 175 l2n(seq,p); | 174 l2n(seq,p); |
| 176 | 175 |
| 177 /* There has to be a MAC algorithm. */ | 176 /* There has to be a MAC algorithm. */ |
| 178 EVP_MD_CTX_init(&c); | 177 EVP_MD_CTX_init(&c); |
| 179 » EVP_DigestInit_ex(&c, s->read_hash, NULL); | 178 » EVP_MD_CTX_copy(&c, s->read_hash); |
| 180 EVP_DigestUpdate(&c,sec, | 179 EVP_DigestUpdate(&c,sec, |
| 181 EVP_CIPHER_CTX_key_length(s->enc_read_ctx)); | 180 EVP_CIPHER_CTX_key_length(s->enc_read_ctx)); |
| 182 EVP_DigestUpdate(&c,act,len); | 181 EVP_DigestUpdate(&c,act,len); |
| 183 /* the above line also does the pad data */ | 182 /* the above line also does the pad data */ |
| 184 EVP_DigestUpdate(&c,sequence,4); | 183 EVP_DigestUpdate(&c,sequence,4); |
| 185 EVP_DigestFinal_ex(&c,md,NULL); | 184 EVP_DigestFinal_ex(&c,md,NULL); |
| 186 EVP_MD_CTX_cleanup(&c); | 185 EVP_MD_CTX_cleanup(&c); |
| 187 } | 186 } |
| 188 #else /* !OPENSSL_NO_SSL2 */ | 187 #else /* !OPENSSL_NO_SSL2 */ |
| 189 | 188 |
| 190 # if PEDANTIC | 189 # if PEDANTIC |
| 191 static void *dummy=&dummy; | 190 static void *dummy=&dummy; |
| 192 # endif | 191 # endif |
| 193 | 192 |
| 194 #endif | 193 #endif |
| OLD | NEW |