diff options
Diffstat (limited to 'src/lib/libssl/d1_both.c')
| -rw-r--r-- | src/lib/libssl/d1_both.c | 140 |
1 files changed, 70 insertions, 70 deletions
diff --git a/src/lib/libssl/d1_both.c b/src/lib/libssl/d1_both.c index 962b73ed6c..f440a8baf2 100644 --- a/src/lib/libssl/d1_both.c +++ b/src/lib/libssl/d1_both.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: d1_both.c,v 1.43 2017/01/23 04:55:26 beck Exp $ */ | 1 | /* $OpenBSD: d1_both.c,v 1.44 2017/01/23 06:45:30 beck Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * DTLS implementation written by Nagendra Modadugu | 3 | * DTLS implementation written by Nagendra Modadugu |
| 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. |
| @@ -223,7 +223,7 @@ dtls1_hm_fragment_free(hm_fragment *frag) | |||
| 223 | free(frag); | 223 | free(frag); |
| 224 | } | 224 | } |
| 225 | 225 | ||
| 226 | /* send s->init_buf in records of type 'type' (SSL3_RT_HANDSHAKE or SSL3_RT_CHANGE_CIPHER_SPEC) */ | 226 | /* send s->internal->init_buf in records of type 'type' (SSL3_RT_HANDSHAKE or SSL3_RT_CHANGE_CIPHER_SPEC) */ |
| 227 | int | 227 | int |
| 228 | dtls1_do_write(SSL *s, int type) | 228 | dtls1_do_write(SSL *s, int type) |
| 229 | { | 229 | { |
| @@ -253,23 +253,23 @@ dtls1_do_write(SSL *s, int type) | |||
| 253 | OPENSSL_assert(D1I(s)->mtu >= dtls1_min_mtu()); | 253 | OPENSSL_assert(D1I(s)->mtu >= dtls1_min_mtu()); |
| 254 | /* should have something reasonable now */ | 254 | /* should have something reasonable now */ |
| 255 | 255 | ||
| 256 | if (s->init_off == 0 && type == SSL3_RT_HANDSHAKE) | 256 | if (s->internal->init_off == 0 && type == SSL3_RT_HANDSHAKE) |
| 257 | OPENSSL_assert(s->init_num == | 257 | OPENSSL_assert(s->internal->init_num == |
| 258 | (int)D1I(s)->w_msg_hdr.msg_len + DTLS1_HM_HEADER_LENGTH); | 258 | (int)D1I(s)->w_msg_hdr.msg_len + DTLS1_HM_HEADER_LENGTH); |
| 259 | 259 | ||
| 260 | if (s->write_hash) | 260 | if (s->internal->write_hash) |
| 261 | mac_size = EVP_MD_CTX_size(s->write_hash); | 261 | mac_size = EVP_MD_CTX_size(s->internal->write_hash); |
| 262 | else | 262 | else |
| 263 | mac_size = 0; | 263 | mac_size = 0; |
| 264 | 264 | ||
| 265 | if (s->enc_write_ctx && | 265 | if (s->internal->enc_write_ctx && |
| 266 | (EVP_CIPHER_mode( s->enc_write_ctx->cipher) & EVP_CIPH_CBC_MODE)) | 266 | (EVP_CIPHER_mode( s->internal->enc_write_ctx->cipher) & EVP_CIPH_CBC_MODE)) |
| 267 | blocksize = 2 * EVP_CIPHER_block_size(s->enc_write_ctx->cipher); | 267 | blocksize = 2 * EVP_CIPHER_block_size(s->internal->enc_write_ctx->cipher); |
| 268 | else | 268 | else |
| 269 | blocksize = 0; | 269 | blocksize = 0; |
| 270 | 270 | ||
| 271 | frag_off = 0; | 271 | frag_off = 0; |
| 272 | while (s->init_num) { | 272 | while (s->internal->init_num) { |
| 273 | curr_mtu = D1I(s)->mtu - BIO_wpending(SSL_get_wbio(s)) - | 273 | curr_mtu = D1I(s)->mtu - BIO_wpending(SSL_get_wbio(s)) - |
| 274 | DTLS1_RT_HEADER_LENGTH - mac_size - blocksize; | 274 | DTLS1_RT_HEADER_LENGTH - mac_size - blocksize; |
| 275 | 275 | ||
| @@ -282,36 +282,36 @@ dtls1_do_write(SSL *s, int type) | |||
| 282 | mac_size - blocksize; | 282 | mac_size - blocksize; |
| 283 | } | 283 | } |
| 284 | 284 | ||
| 285 | if (s->init_num > curr_mtu) | 285 | if (s->internal->init_num > curr_mtu) |
| 286 | len = curr_mtu; | 286 | len = curr_mtu; |
| 287 | else | 287 | else |
| 288 | len = s->init_num; | 288 | len = s->internal->init_num; |
| 289 | 289 | ||
| 290 | 290 | ||
| 291 | /* XDTLS: this function is too long. split out the CCS part */ | 291 | /* XDTLS: this function is too long. split out the CCS part */ |
| 292 | if (type == SSL3_RT_HANDSHAKE) { | 292 | if (type == SSL3_RT_HANDSHAKE) { |
| 293 | if (s->init_off != 0) { | 293 | if (s->internal->init_off != 0) { |
| 294 | OPENSSL_assert(s->init_off > DTLS1_HM_HEADER_LENGTH); | 294 | OPENSSL_assert(s->internal->init_off > DTLS1_HM_HEADER_LENGTH); |
| 295 | s->init_off -= DTLS1_HM_HEADER_LENGTH; | 295 | s->internal->init_off -= DTLS1_HM_HEADER_LENGTH; |
| 296 | s->init_num += DTLS1_HM_HEADER_LENGTH; | 296 | s->internal->init_num += DTLS1_HM_HEADER_LENGTH; |
| 297 | 297 | ||
| 298 | if (s->init_num > curr_mtu) | 298 | if (s->internal->init_num > curr_mtu) |
| 299 | len = curr_mtu; | 299 | len = curr_mtu; |
| 300 | else | 300 | else |
| 301 | len = s->init_num; | 301 | len = s->internal->init_num; |
| 302 | } | 302 | } |
| 303 | 303 | ||
| 304 | dtls1_fix_message_header(s, frag_off, | 304 | dtls1_fix_message_header(s, frag_off, |
| 305 | len - DTLS1_HM_HEADER_LENGTH); | 305 | len - DTLS1_HM_HEADER_LENGTH); |
| 306 | 306 | ||
| 307 | dtls1_write_message_header(s, | 307 | dtls1_write_message_header(s, |
| 308 | (unsigned char *)&s->init_buf->data[s->init_off]); | 308 | (unsigned char *)&s->internal->init_buf->data[s->internal->init_off]); |
| 309 | 309 | ||
| 310 | OPENSSL_assert(len >= DTLS1_HM_HEADER_LENGTH); | 310 | OPENSSL_assert(len >= DTLS1_HM_HEADER_LENGTH); |
| 311 | } | 311 | } |
| 312 | 312 | ||
| 313 | ret = dtls1_write_bytes(s, type, | 313 | ret = dtls1_write_bytes(s, type, |
| 314 | &s->init_buf->data[s->init_off], len); | 314 | &s->internal->init_buf->data[s->internal->init_off], len); |
| 315 | if (ret < 0) { | 315 | if (ret < 0) { |
| 316 | /* | 316 | /* |
| 317 | * Might need to update MTU here, but we don't know | 317 | * Might need to update MTU here, but we don't know |
| @@ -342,7 +342,7 @@ dtls1_do_write(SSL *s, int type) | |||
| 342 | * but in that case we'll ignore the result | 342 | * but in that case we'll ignore the result |
| 343 | * anyway | 343 | * anyway |
| 344 | */ | 344 | */ |
| 345 | unsigned char *p = (unsigned char *)&s->init_buf->data[s->init_off]; | 345 | unsigned char *p = (unsigned char *)&s->internal->init_buf->data[s->internal->init_off]; |
| 346 | const struct hm_header_st *msg_hdr = &D1I(s)->w_msg_hdr; | 346 | const struct hm_header_st *msg_hdr = &D1I(s)->w_msg_hdr; |
| 347 | int xlen; | 347 | int xlen; |
| 348 | 348 | ||
| @@ -366,21 +366,21 @@ dtls1_do_write(SSL *s, int type) | |||
| 366 | tls1_finish_mac(s, p, xlen); | 366 | tls1_finish_mac(s, p, xlen); |
| 367 | } | 367 | } |
| 368 | 368 | ||
| 369 | if (ret == s->init_num) { | 369 | if (ret == s->internal->init_num) { |
| 370 | if (s->internal->msg_callback) | 370 | if (s->internal->msg_callback) |
| 371 | s->internal->msg_callback(1, s->version, type, | 371 | s->internal->msg_callback(1, s->version, type, |
| 372 | s->init_buf->data, | 372 | s->internal->init_buf->data, |
| 373 | (size_t)(s->init_off + s->init_num), | 373 | (size_t)(s->internal->init_off + s->internal->init_num), |
| 374 | s, s->internal->msg_callback_arg); | 374 | s, s->internal->msg_callback_arg); |
| 375 | 375 | ||
| 376 | s->init_off = 0; | 376 | s->internal->init_off = 0; |
| 377 | /* done writing this message */ | 377 | /* done writing this message */ |
| 378 | s->init_num = 0; | 378 | s->internal->init_num = 0; |
| 379 | 379 | ||
| 380 | return (1); | 380 | return (1); |
| 381 | } | 381 | } |
| 382 | s->init_off += ret; | 382 | s->internal->init_off += ret; |
| 383 | s->init_num -= ret; | 383 | s->internal->init_num -= ret; |
| 384 | frag_off += (ret -= DTLS1_HM_HEADER_LENGTH); | 384 | frag_off += (ret -= DTLS1_HM_HEADER_LENGTH); |
| 385 | } | 385 | } |
| 386 | } | 386 | } |
| @@ -415,9 +415,9 @@ dtls1_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok) | |||
| 415 | goto f_err; | 415 | goto f_err; |
| 416 | } | 416 | } |
| 417 | *ok = 1; | 417 | *ok = 1; |
| 418 | s->init_msg = s->init_buf->data + DTLS1_HM_HEADER_LENGTH; | 418 | s->internal->init_msg = s->internal->init_buf->data + DTLS1_HM_HEADER_LENGTH; |
| 419 | s->init_num = (int)S3I(s)->tmp.message_size; | 419 | s->internal->init_num = (int)S3I(s)->tmp.message_size; |
| 420 | return s->init_num; | 420 | return s->internal->init_num; |
| 421 | } | 421 | } |
| 422 | 422 | ||
| 423 | msg_hdr = &D1I(s)->r_msg_hdr; | 423 | msg_hdr = &D1I(s)->r_msg_hdr; |
| @@ -431,7 +431,7 @@ again: | |||
| 431 | else if (i <= 0 && !*ok) | 431 | else if (i <= 0 && !*ok) |
| 432 | return i; | 432 | return i; |
| 433 | 433 | ||
| 434 | p = (unsigned char *)s->init_buf->data; | 434 | p = (unsigned char *)s->internal->init_buf->data; |
| 435 | msg_len = msg_hdr->msg_len; | 435 | msg_len = msg_hdr->msg_len; |
| 436 | 436 | ||
| 437 | /* reconstruct message header */ | 437 | /* reconstruct message header */ |
| @@ -455,8 +455,8 @@ again: | |||
| 455 | if (!D1I(s)->listen) | 455 | if (!D1I(s)->listen) |
| 456 | D1I(s)->handshake_read_seq++; | 456 | D1I(s)->handshake_read_seq++; |
| 457 | 457 | ||
| 458 | s->init_msg = s->init_buf->data + DTLS1_HM_HEADER_LENGTH; | 458 | s->internal->init_msg = s->internal->init_buf->data + DTLS1_HM_HEADER_LENGTH; |
| 459 | return s->init_num; | 459 | return s->internal->init_num; |
| 460 | 460 | ||
| 461 | f_err: | 461 | f_err: |
| 462 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 462 | ssl3_send_alert(s, SSL3_AL_FATAL, al); |
| @@ -493,7 +493,7 @@ dtls1_preprocess_fragment(SSL *s, struct hm_header_st *msg_hdr, int max) | |||
| 493 | * msg_len is limited to 2^24, but is effectively checked | 493 | * msg_len is limited to 2^24, but is effectively checked |
| 494 | * against max above | 494 | * against max above |
| 495 | */ | 495 | */ |
| 496 | if (!BUF_MEM_grow_clean(s->init_buf, | 496 | if (!BUF_MEM_grow_clean(s->internal->init_buf, |
| 497 | msg_len + DTLS1_HM_HEADER_LENGTH)) { | 497 | msg_len + DTLS1_HM_HEADER_LENGTH)) { |
| 498 | SSLerr(SSL_F_DTLS1_PREPROCESS_FRAGMENT, ERR_R_BUF_LIB); | 498 | SSLerr(SSL_F_DTLS1_PREPROCESS_FRAGMENT, ERR_R_BUF_LIB); |
| 499 | return SSL_AD_INTERNAL_ERROR; | 499 | return SSL_AD_INTERNAL_ERROR; |
| @@ -523,8 +523,8 @@ dtls1_retrieve_buffered_fragment(SSL *s, long max, int *ok) | |||
| 523 | /* | 523 | /* |
| 524 | * (0) check whether the desired fragment is available | 524 | * (0) check whether the desired fragment is available |
| 525 | * if so: | 525 | * if so: |
| 526 | * (1) copy over the fragment to s->init_buf->data[] | 526 | * (1) copy over the fragment to s->internal->init_buf->data[] |
| 527 | * (2) update s->init_num | 527 | * (2) update s->internal->init_num |
| 528 | */ | 528 | */ |
| 529 | pitem *item; | 529 | pitem *item; |
| 530 | hm_fragment *frag; | 530 | hm_fragment *frag; |
| @@ -549,7 +549,7 @@ dtls1_retrieve_buffered_fragment(SSL *s, long max, int *ok) | |||
| 549 | 549 | ||
| 550 | if (al == 0) /* no alert */ | 550 | if (al == 0) /* no alert */ |
| 551 | { | 551 | { |
| 552 | unsigned char *p = (unsigned char *)s->init_buf->data + DTLS1_HM_HEADER_LENGTH; | 552 | unsigned char *p = (unsigned char *)s->internal->init_buf->data + DTLS1_HM_HEADER_LENGTH; |
| 553 | memcpy(&p[frag->msg_header.frag_off], | 553 | memcpy(&p[frag->msg_header.frag_off], |
| 554 | frag->fragment, frag->msg_header.frag_len); | 554 | frag->fragment, frag->msg_header.frag_len); |
| 555 | } | 555 | } |
| @@ -563,7 +563,7 @@ dtls1_retrieve_buffered_fragment(SSL *s, long max, int *ok) | |||
| 563 | } | 563 | } |
| 564 | 564 | ||
| 565 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 565 | ssl3_send_alert(s, SSL3_AL_FATAL, al); |
| 566 | s->init_num = 0; | 566 | s->internal->init_num = 0; |
| 567 | *ok = 0; | 567 | *ok = 0; |
| 568 | return -1; | 568 | return -1; |
| 569 | } else | 569 | } else |
| @@ -581,8 +581,8 @@ dtls1_max_handshake_message_len(const SSL *s) | |||
| 581 | unsigned long max_len; | 581 | unsigned long max_len; |
| 582 | 582 | ||
| 583 | max_len = DTLS1_HM_HEADER_LENGTH + SSL3_RT_MAX_ENCRYPTED_LENGTH; | 583 | max_len = DTLS1_HM_HEADER_LENGTH + SSL3_RT_MAX_ENCRYPTED_LENGTH; |
| 584 | if (max_len < (unsigned long)s->max_cert_list) | 584 | if (max_len < (unsigned long)s->internal->max_cert_list) |
| 585 | return s->max_cert_list; | 585 | return s->internal->max_cert_list; |
| 586 | return max_len; | 586 | return max_len; |
| 587 | } | 587 | } |
| 588 | 588 | ||
| @@ -785,7 +785,7 @@ again: | |||
| 785 | /* see if we have the required fragment already */ | 785 | /* see if we have the required fragment already */ |
| 786 | if ((frag_len = dtls1_retrieve_buffered_fragment(s, max, ok)) || *ok) { | 786 | if ((frag_len = dtls1_retrieve_buffered_fragment(s, max, ok)) || *ok) { |
| 787 | if (*ok) | 787 | if (*ok) |
| 788 | s->init_num = frag_len; | 788 | s->internal->init_num = frag_len; |
| 789 | return frag_len; | 789 | return frag_len; |
| 790 | } | 790 | } |
| 791 | 791 | ||
| @@ -794,7 +794,7 @@ again: | |||
| 794 | DTLS1_HM_HEADER_LENGTH, 0); | 794 | DTLS1_HM_HEADER_LENGTH, 0); |
| 795 | if (i <= 0) /* nbio, or an error */ | 795 | if (i <= 0) /* nbio, or an error */ |
| 796 | { | 796 | { |
| 797 | s->rwstate = SSL_READING; | 797 | s->internal->rwstate = SSL_READING; |
| 798 | *ok = 0; | 798 | *ok = 0; |
| 799 | return i; | 799 | return i; |
| 800 | } | 800 | } |
| @@ -840,7 +840,7 @@ again: | |||
| 840 | DTLS1_HM_HEADER_LENGTH, s, | 840 | DTLS1_HM_HEADER_LENGTH, s, |
| 841 | s->internal->msg_callback_arg); | 841 | s->internal->msg_callback_arg); |
| 842 | 842 | ||
| 843 | s->init_num = 0; | 843 | s->internal->init_num = 0; |
| 844 | goto again; | 844 | goto again; |
| 845 | } | 845 | } |
| 846 | else /* Incorrectly formated Hello request */ | 846 | else /* Incorrectly formated Hello request */ |
| @@ -859,13 +859,13 @@ again: | |||
| 859 | s->state = stn; | 859 | s->state = stn; |
| 860 | 860 | ||
| 861 | if (frag_len > 0) { | 861 | if (frag_len > 0) { |
| 862 | unsigned char *p = (unsigned char *)s->init_buf->data + DTLS1_HM_HEADER_LENGTH; | 862 | unsigned char *p = (unsigned char *)s->internal->init_buf->data + DTLS1_HM_HEADER_LENGTH; |
| 863 | 863 | ||
| 864 | i = s->method->ssl_read_bytes(s, SSL3_RT_HANDSHAKE, | 864 | i = s->method->ssl_read_bytes(s, SSL3_RT_HANDSHAKE, |
| 865 | &p[frag_off], frag_len, 0); | 865 | &p[frag_off], frag_len, 0); |
| 866 | /* XDTLS: fix this--message fragments cannot span multiple packets */ | 866 | /* XDTLS: fix this--message fragments cannot span multiple packets */ |
| 867 | if (i <= 0) { | 867 | if (i <= 0) { |
| 868 | s->rwstate = SSL_READING; | 868 | s->internal->rwstate = SSL_READING; |
| 869 | *ok = 0; | 869 | *ok = 0; |
| 870 | return i; | 870 | return i; |
| 871 | } | 871 | } |
| @@ -886,17 +886,17 @@ again: | |||
| 886 | *ok = 1; | 886 | *ok = 1; |
| 887 | 887 | ||
| 888 | /* | 888 | /* |
| 889 | * Note that s->init_num is *not* used as current offset in | 889 | * Note that s->internal->init_num is *not* used as current offset in |
| 890 | * s->init_buf->data, but as a counter summing up fragments' | 890 | * s->internal->init_buf->data, but as a counter summing up fragments' |
| 891 | * lengths: as soon as they sum up to handshake packet | 891 | * lengths: as soon as they sum up to handshake packet |
| 892 | * length, we assume we have got all the fragments. | 892 | * length, we assume we have got all the fragments. |
| 893 | */ | 893 | */ |
| 894 | s->init_num = frag_len; | 894 | s->internal->init_num = frag_len; |
| 895 | return frag_len; | 895 | return frag_len; |
| 896 | 896 | ||
| 897 | f_err: | 897 | f_err: |
| 898 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 898 | ssl3_send_alert(s, SSL3_AL_FATAL, al); |
| 899 | s->init_num = 0; | 899 | s->internal->init_num = 0; |
| 900 | 900 | ||
| 901 | *ok = 0; | 901 | *ok = 0; |
| 902 | return (-1); | 902 | return (-1); |
| @@ -916,12 +916,12 @@ dtls1_send_change_cipher_spec(SSL *s, int a, int b) | |||
| 916 | unsigned char *p; | 916 | unsigned char *p; |
| 917 | 917 | ||
| 918 | if (s->state == a) { | 918 | if (s->state == a) { |
| 919 | p = (unsigned char *)s->init_buf->data; | 919 | p = (unsigned char *)s->internal->init_buf->data; |
| 920 | *p++=SSL3_MT_CCS; | 920 | *p++=SSL3_MT_CCS; |
| 921 | D1I(s)->handshake_write_seq = D1I(s)->next_handshake_write_seq; | 921 | D1I(s)->handshake_write_seq = D1I(s)->next_handshake_write_seq; |
| 922 | s->init_num = DTLS1_CCS_HEADER_LENGTH; | 922 | s->internal->init_num = DTLS1_CCS_HEADER_LENGTH; |
| 923 | 923 | ||
| 924 | s->init_off = 0; | 924 | s->internal->init_off = 0; |
| 925 | 925 | ||
| 926 | dtls1_set_message_header_int(s, SSL3_MT_CCS, 0, | 926 | dtls1_set_message_header_int(s, SSL3_MT_CCS, 0, |
| 927 | D1I(s)->handshake_write_seq, 0, 0); | 927 | D1I(s)->handshake_write_seq, 0, 0); |
| @@ -1022,21 +1022,21 @@ dtls1_buffer_message(SSL *s, int is_ccs) | |||
| 1022 | * This function is called immediately after a message has | 1022 | * This function is called immediately after a message has |
| 1023 | * been serialized | 1023 | * been serialized |
| 1024 | */ | 1024 | */ |
| 1025 | OPENSSL_assert(s->init_off == 0); | 1025 | OPENSSL_assert(s->internal->init_off == 0); |
| 1026 | 1026 | ||
| 1027 | frag = dtls1_hm_fragment_new(s->init_num, 0); | 1027 | frag = dtls1_hm_fragment_new(s->internal->init_num, 0); |
| 1028 | if (frag == NULL) | 1028 | if (frag == NULL) |
| 1029 | return 0; | 1029 | return 0; |
| 1030 | 1030 | ||
| 1031 | memcpy(frag->fragment, s->init_buf->data, s->init_num); | 1031 | memcpy(frag->fragment, s->internal->init_buf->data, s->internal->init_num); |
| 1032 | 1032 | ||
| 1033 | if (is_ccs) { | 1033 | if (is_ccs) { |
| 1034 | OPENSSL_assert(D1I(s)->w_msg_hdr.msg_len + | 1034 | OPENSSL_assert(D1I(s)->w_msg_hdr.msg_len + |
| 1035 | ((s->version == DTLS1_VERSION) ? | 1035 | ((s->version == DTLS1_VERSION) ? |
| 1036 | DTLS1_CCS_HEADER_LENGTH : 3) == (unsigned int)s->init_num); | 1036 | DTLS1_CCS_HEADER_LENGTH : 3) == (unsigned int)s->internal->init_num); |
| 1037 | } else { | 1037 | } else { |
| 1038 | OPENSSL_assert(D1I(s)->w_msg_hdr.msg_len + | 1038 | OPENSSL_assert(D1I(s)->w_msg_hdr.msg_len + |
| 1039 | DTLS1_HM_HEADER_LENGTH == (unsigned int)s->init_num); | 1039 | DTLS1_HM_HEADER_LENGTH == (unsigned int)s->internal->init_num); |
| 1040 | } | 1040 | } |
| 1041 | 1041 | ||
| 1042 | frag->msg_header.msg_len = D1I(s)->w_msg_hdr.msg_len; | 1042 | frag->msg_header.msg_len = D1I(s)->w_msg_hdr.msg_len; |
| @@ -1047,8 +1047,8 @@ dtls1_buffer_message(SSL *s, int is_ccs) | |||
| 1047 | frag->msg_header.is_ccs = is_ccs; | 1047 | frag->msg_header.is_ccs = is_ccs; |
| 1048 | 1048 | ||
| 1049 | /* save current state*/ | 1049 | /* save current state*/ |
| 1050 | frag->msg_header.saved_retransmit_state.enc_write_ctx = s->enc_write_ctx; | 1050 | frag->msg_header.saved_retransmit_state.enc_write_ctx = s->internal->enc_write_ctx; |
| 1051 | frag->msg_header.saved_retransmit_state.write_hash = s->write_hash; | 1051 | frag->msg_header.saved_retransmit_state.write_hash = s->internal->write_hash; |
| 1052 | frag->msg_header.saved_retransmit_state.session = s->session; | 1052 | frag->msg_header.saved_retransmit_state.session = s->session; |
| 1053 | frag->msg_header.saved_retransmit_state.epoch = D1I(s)->w_epoch; | 1053 | frag->msg_header.saved_retransmit_state.epoch = D1I(s)->w_epoch; |
| 1054 | 1054 | ||
| @@ -1082,8 +1082,8 @@ dtls1_retransmit_message(SSL *s, unsigned short seq, unsigned long frag_off, | |||
| 1082 | unsigned char save_write_sequence[8]; | 1082 | unsigned char save_write_sequence[8]; |
| 1083 | 1083 | ||
| 1084 | /* | 1084 | /* |
| 1085 | OPENSSL_assert(s->init_num == 0); | 1085 | OPENSSL_assert(s->internal->init_num == 0); |
| 1086 | OPENSSL_assert(s->init_off == 0); | 1086 | OPENSSL_assert(s->internal->init_off == 0); |
| 1087 | */ | 1087 | */ |
| 1088 | 1088 | ||
| 1089 | /* XDTLS: the requested message ought to be found, otherwise error */ | 1089 | /* XDTLS: the requested message ought to be found, otherwise error */ |
| @@ -1108,25 +1108,25 @@ dtls1_retransmit_message(SSL *s, unsigned short seq, unsigned long frag_off, | |||
| 1108 | else | 1108 | else |
| 1109 | header_length = DTLS1_HM_HEADER_LENGTH; | 1109 | header_length = DTLS1_HM_HEADER_LENGTH; |
| 1110 | 1110 | ||
| 1111 | memcpy(s->init_buf->data, frag->fragment, | 1111 | memcpy(s->internal->init_buf->data, frag->fragment, |
| 1112 | frag->msg_header.msg_len + header_length); | 1112 | frag->msg_header.msg_len + header_length); |
| 1113 | s->init_num = frag->msg_header.msg_len + header_length; | 1113 | s->internal->init_num = frag->msg_header.msg_len + header_length; |
| 1114 | 1114 | ||
| 1115 | dtls1_set_message_header_int(s, frag->msg_header.type, | 1115 | dtls1_set_message_header_int(s, frag->msg_header.type, |
| 1116 | frag->msg_header.msg_len, frag->msg_header.seq, 0, | 1116 | frag->msg_header.msg_len, frag->msg_header.seq, 0, |
| 1117 | frag->msg_header.frag_len); | 1117 | frag->msg_header.frag_len); |
| 1118 | 1118 | ||
| 1119 | /* save current state */ | 1119 | /* save current state */ |
| 1120 | saved_state.enc_write_ctx = s->enc_write_ctx; | 1120 | saved_state.enc_write_ctx = s->internal->enc_write_ctx; |
| 1121 | saved_state.write_hash = s->write_hash; | 1121 | saved_state.write_hash = s->internal->write_hash; |
| 1122 | saved_state.session = s->session; | 1122 | saved_state.session = s->session; |
| 1123 | saved_state.epoch = D1I(s)->w_epoch; | 1123 | saved_state.epoch = D1I(s)->w_epoch; |
| 1124 | 1124 | ||
| 1125 | D1I(s)->retransmitting = 1; | 1125 | D1I(s)->retransmitting = 1; |
| 1126 | 1126 | ||
| 1127 | /* restore state in which the message was originally sent */ | 1127 | /* restore state in which the message was originally sent */ |
| 1128 | s->enc_write_ctx = frag->msg_header.saved_retransmit_state.enc_write_ctx; | 1128 | s->internal->enc_write_ctx = frag->msg_header.saved_retransmit_state.enc_write_ctx; |
| 1129 | s->write_hash = frag->msg_header.saved_retransmit_state.write_hash; | 1129 | s->internal->write_hash = frag->msg_header.saved_retransmit_state.write_hash; |
| 1130 | s->session = frag->msg_header.saved_retransmit_state.session; | 1130 | s->session = frag->msg_header.saved_retransmit_state.session; |
| 1131 | D1I(s)->w_epoch = frag->msg_header.saved_retransmit_state.epoch; | 1131 | D1I(s)->w_epoch = frag->msg_header.saved_retransmit_state.epoch; |
| 1132 | 1132 | ||
| @@ -1142,8 +1142,8 @@ dtls1_retransmit_message(SSL *s, unsigned short seq, unsigned long frag_off, | |||
| 1142 | SSL3_RT_CHANGE_CIPHER_SPEC : SSL3_RT_HANDSHAKE); | 1142 | SSL3_RT_CHANGE_CIPHER_SPEC : SSL3_RT_HANDSHAKE); |
| 1143 | 1143 | ||
| 1144 | /* restore current state */ | 1144 | /* restore current state */ |
| 1145 | s->enc_write_ctx = saved_state.enc_write_ctx; | 1145 | s->internal->enc_write_ctx = saved_state.enc_write_ctx; |
| 1146 | s->write_hash = saved_state.write_hash; | 1146 | s->internal->write_hash = saved_state.write_hash; |
| 1147 | s->session = saved_state.session; | 1147 | s->session = saved_state.session; |
| 1148 | D1I(s)->w_epoch = saved_state.epoch; | 1148 | D1I(s)->w_epoch = saved_state.epoch; |
| 1149 | 1149 | ||
