diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libssl/d1_enc.c | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/lib/libssl/d1_enc.c b/src/lib/libssl/d1_enc.c index cf3332e4e4..8fa57347a9 100644 --- a/src/lib/libssl/d1_enc.c +++ b/src/lib/libssl/d1_enc.c | |||
| @@ -136,8 +136,12 @@ int dtls1_enc(SSL *s, int send) | |||
| 136 | 136 | ||
| 137 | if (send) | 137 | if (send) |
| 138 | { | 138 | { |
| 139 | if (s->write_hash != NULL) | 139 | if (EVP_MD_CTX_md(s->write_hash)) |
| 140 | n=EVP_MD_size(s->write_hash); | 140 | { |
| 141 | n=EVP_MD_CTX_size(s->write_hash); | ||
| 142 | if (n < 0) | ||
| 143 | return -1; | ||
| 144 | } | ||
| 141 | ds=s->enc_write_ctx; | 145 | ds=s->enc_write_ctx; |
| 142 | rec= &(s->s3->wrec); | 146 | rec= &(s->s3->wrec); |
| 143 | if (s->enc_write_ctx == NULL) | 147 | if (s->enc_write_ctx == NULL) |
| @@ -151,15 +155,19 @@ int dtls1_enc(SSL *s, int send) | |||
| 151 | __FILE__, __LINE__); | 155 | __FILE__, __LINE__); |
| 152 | else if ( EVP_CIPHER_block_size(ds->cipher) > 1) | 156 | else if ( EVP_CIPHER_block_size(ds->cipher) > 1) |
| 153 | { | 157 | { |
| 154 | if (!RAND_bytes(rec->input, EVP_CIPHER_block_size(ds->cipher))) | 158 | if (RAND_bytes(rec->input, EVP_CIPHER_block_size(ds->cipher)) <= 0) |
| 155 | return -1; | 159 | return -1; |
| 156 | } | 160 | } |
| 157 | } | 161 | } |
| 158 | } | 162 | } |
| 159 | else | 163 | else |
| 160 | { | 164 | { |
| 161 | if (s->read_hash != NULL) | 165 | if (EVP_MD_CTX_md(s->read_hash)) |
| 162 | n=EVP_MD_size(s->read_hash); | 166 | { |
| 167 | n=EVP_MD_CTX_size(s->read_hash); | ||
| 168 | if (n < 0) | ||
| 169 | return -1; | ||
| 170 | } | ||
| 163 | ds=s->enc_read_ctx; | 171 | ds=s->enc_read_ctx; |
| 164 | rec= &(s->s3->rrec); | 172 | rec= &(s->s3->rrec); |
| 165 | if (s->enc_read_ctx == NULL) | 173 | if (s->enc_read_ctx == NULL) |
| @@ -206,11 +214,10 @@ int dtls1_enc(SSL *s, int send) | |||
| 206 | { | 214 | { |
| 207 | unsigned long ui; | 215 | unsigned long ui; |
| 208 | printf("EVP_Cipher(ds=%p,rec->data=%p,rec->input=%p,l=%ld) ==>\n", | 216 | printf("EVP_Cipher(ds=%p,rec->data=%p,rec->input=%p,l=%ld) ==>\n", |
| 209 | (void *)ds,rec->data,rec->input,l); | 217 | ds,rec->data,rec->input,l); |
| 210 | printf("\tEVP_CIPHER_CTX: %d buf_len, %d key_len [%ld %ld], %d iv_len\n", | 218 | printf("\tEVP_CIPHER_CTX: %d buf_len, %d key_len [%d %d], %d iv_len\n", |
| 211 | ds->buf_len, ds->cipher->key_len, | 219 | ds->buf_len, ds->cipher->key_len, |
| 212 | (unsigned long)DES_KEY_SZ, | 220 | DES_KEY_SZ, DES_SCHEDULE_SZ, |
| 213 | (unsigned long)DES_SCHEDULE_SZ, | ||
| 214 | ds->cipher->iv_len); | 221 | ds->cipher->iv_len); |
| 215 | printf("\t\tIV: "); | 222 | printf("\t\tIV: "); |
| 216 | for (i=0; i<ds->cipher->iv_len; i++) printf("%02X", ds->iv[i]); | 223 | for (i=0; i<ds->cipher->iv_len; i++) printf("%02X", ds->iv[i]); |
| @@ -235,10 +242,10 @@ int dtls1_enc(SSL *s, int send) | |||
| 235 | 242 | ||
| 236 | #ifdef KSSL_DEBUG | 243 | #ifdef KSSL_DEBUG |
| 237 | { | 244 | { |
| 238 | unsigned long ki; | 245 | unsigned long i; |
| 239 | printf("\trec->data="); | 246 | printf("\trec->data="); |
| 240 | for (ki=0; ki<l; ki++) | 247 | for (i=0; i<l; i++) |
| 241 | printf(" %02x", rec->data[ki]); printf("\n"); | 248 | printf(" %02x", rec->data[i]); printf("\n"); |
| 242 | } | 249 | } |
| 243 | #endif /* KSSL_DEBUG */ | 250 | #endif /* KSSL_DEBUG */ |
| 244 | 251 | ||
