diff options
author | beck <> | 2017-01-23 06:45:30 +0000 |
---|---|---|
committer | beck <> | 2017-01-23 06:45:30 +0000 |
commit | fedd988b9f44e5e0ccf1a340f14354f32800d524 (patch) | |
tree | dfb700c2a3d1498e8069f1fab4c6691ef0f3fef1 /src/lib/libssl/d1_both.c | |
parent | 3b1c7c5973d7e6aca42940bd4e07900c35d585f5 (diff) | |
download | openbsd-fedd988b9f44e5e0ccf1a340f14354f32800d524.tar.gz openbsd-fedd988b9f44e5e0ccf1a340f14354f32800d524.tar.bz2 openbsd-fedd988b9f44e5e0ccf1a340f14354f32800d524.zip |
Move a large part of ssl_st into internal, so we can see what squeals.
ok jsing@
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 | ||