diff options
Diffstat (limited to 'src/lib/libssl/d1_both.c')
-rw-r--r-- | src/lib/libssl/d1_both.c | 134 |
1 files changed, 67 insertions, 67 deletions
diff --git a/src/lib/libssl/d1_both.c b/src/lib/libssl/d1_both.c index fd7c07a4d5..4f7f8be6ce 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.81 2022/02/05 14:54:10 jsing Exp $ */ | 1 | /* $OpenBSD: d1_both.c,v 1.82 2022/10/02 16:36:41 jsing 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. |
@@ -206,7 +206,7 @@ dtls1_hm_fragment_free(hm_fragment *frag) | |||
206 | free(frag); | 206 | free(frag); |
207 | } | 207 | } |
208 | 208 | ||
209 | /* send s->internal->init_buf in records of type 'type' (SSL3_RT_HANDSHAKE or SSL3_RT_CHANGE_CIPHER_SPEC) */ | 209 | /* send s->init_buf in records of type 'type' (SSL3_RT_HANDSHAKE or SSL3_RT_CHANGE_CIPHER_SPEC) */ |
210 | int | 210 | int |
211 | dtls1_do_write(SSL *s, int type) | 211 | dtls1_do_write(SSL *s, int type) |
212 | { | 212 | { |
@@ -237,15 +237,15 @@ dtls1_do_write(SSL *s, int type) | |||
237 | OPENSSL_assert(s->d1->mtu >= dtls1_min_mtu()); | 237 | OPENSSL_assert(s->d1->mtu >= dtls1_min_mtu()); |
238 | /* should have something reasonable now */ | 238 | /* should have something reasonable now */ |
239 | 239 | ||
240 | if (s->internal->init_off == 0 && type == SSL3_RT_HANDSHAKE) | 240 | if (s->init_off == 0 && type == SSL3_RT_HANDSHAKE) |
241 | OPENSSL_assert(s->internal->init_num == | 241 | OPENSSL_assert(s->init_num == |
242 | (int)s->d1->w_msg_hdr.msg_len + DTLS1_HM_HEADER_LENGTH); | 242 | (int)s->d1->w_msg_hdr.msg_len + DTLS1_HM_HEADER_LENGTH); |
243 | 243 | ||
244 | if (!tls12_record_layer_write_overhead(s->internal->rl, &overhead)) | 244 | if (!tls12_record_layer_write_overhead(s->rl, &overhead)) |
245 | return -1; | 245 | return -1; |
246 | 246 | ||
247 | frag_off = 0; | 247 | frag_off = 0; |
248 | while (s->internal->init_num) { | 248 | while (s->init_num) { |
249 | curr_mtu = s->d1->mtu - BIO_wpending(SSL_get_wbio(s)) - | 249 | curr_mtu = s->d1->mtu - BIO_wpending(SSL_get_wbio(s)) - |
250 | DTLS1_RT_HEADER_LENGTH - overhead; | 250 | DTLS1_RT_HEADER_LENGTH - overhead; |
251 | 251 | ||
@@ -258,22 +258,22 @@ dtls1_do_write(SSL *s, int type) | |||
258 | overhead; | 258 | overhead; |
259 | } | 259 | } |
260 | 260 | ||
261 | if (s->internal->init_num > curr_mtu) | 261 | if (s->init_num > curr_mtu) |
262 | len = curr_mtu; | 262 | len = curr_mtu; |
263 | else | 263 | else |
264 | len = s->internal->init_num; | 264 | len = s->init_num; |
265 | 265 | ||
266 | /* XDTLS: this function is too long. split out the CCS part */ | 266 | /* XDTLS: this function is too long. split out the CCS part */ |
267 | if (type == SSL3_RT_HANDSHAKE) { | 267 | if (type == SSL3_RT_HANDSHAKE) { |
268 | if (s->internal->init_off != 0) { | 268 | if (s->init_off != 0) { |
269 | OPENSSL_assert(s->internal->init_off > DTLS1_HM_HEADER_LENGTH); | 269 | OPENSSL_assert(s->init_off > DTLS1_HM_HEADER_LENGTH); |
270 | s->internal->init_off -= DTLS1_HM_HEADER_LENGTH; | 270 | s->init_off -= DTLS1_HM_HEADER_LENGTH; |
271 | s->internal->init_num += DTLS1_HM_HEADER_LENGTH; | 271 | s->init_num += DTLS1_HM_HEADER_LENGTH; |
272 | 272 | ||
273 | if (s->internal->init_num > curr_mtu) | 273 | if (s->init_num > curr_mtu) |
274 | len = curr_mtu; | 274 | len = curr_mtu; |
275 | else | 275 | else |
276 | len = s->internal->init_num; | 276 | len = s->init_num; |
277 | } | 277 | } |
278 | 278 | ||
279 | dtls1_fix_message_header(s, frag_off, | 279 | dtls1_fix_message_header(s, frag_off, |
@@ -281,14 +281,14 @@ dtls1_do_write(SSL *s, int type) | |||
281 | 281 | ||
282 | if (!dtls1_write_message_header(&s->d1->w_msg_hdr, | 282 | if (!dtls1_write_message_header(&s->d1->w_msg_hdr, |
283 | s->d1->w_msg_hdr.frag_off, s->d1->w_msg_hdr.frag_len, | 283 | s->d1->w_msg_hdr.frag_off, s->d1->w_msg_hdr.frag_len, |
284 | (unsigned char *)&s->internal->init_buf->data[s->internal->init_off])) | 284 | (unsigned char *)&s->init_buf->data[s->init_off])) |
285 | return -1; | 285 | return -1; |
286 | 286 | ||
287 | OPENSSL_assert(len >= DTLS1_HM_HEADER_LENGTH); | 287 | OPENSSL_assert(len >= DTLS1_HM_HEADER_LENGTH); |
288 | } | 288 | } |
289 | 289 | ||
290 | ret = dtls1_write_bytes(s, type, | 290 | ret = dtls1_write_bytes(s, type, |
291 | &s->internal->init_buf->data[s->internal->init_off], len); | 291 | &s->init_buf->data[s->init_off], len); |
292 | if (ret < 0) { | 292 | if (ret < 0) { |
293 | /* | 293 | /* |
294 | * Might need to update MTU here, but we don't know | 294 | * Might need to update MTU here, but we don't know |
@@ -319,7 +319,7 @@ dtls1_do_write(SSL *s, int type) | |||
319 | * but in that case we'll ignore the result | 319 | * but in that case we'll ignore the result |
320 | * anyway | 320 | * anyway |
321 | */ | 321 | */ |
322 | unsigned char *p = (unsigned char *)&s->internal->init_buf->data[s->internal->init_off]; | 322 | unsigned char *p = (unsigned char *)&s->init_buf->data[s->init_off]; |
323 | const struct hm_header_st *msg_hdr = &s->d1->w_msg_hdr; | 323 | const struct hm_header_st *msg_hdr = &s->d1->w_msg_hdr; |
324 | int xlen; | 324 | int xlen; |
325 | 325 | ||
@@ -340,21 +340,21 @@ dtls1_do_write(SSL *s, int type) | |||
340 | tls1_transcript_record(s, p, xlen); | 340 | tls1_transcript_record(s, p, xlen); |
341 | } | 341 | } |
342 | 342 | ||
343 | if (ret == s->internal->init_num) { | 343 | if (ret == s->init_num) { |
344 | if (s->internal->msg_callback) | 344 | if (s->msg_callback) |
345 | s->internal->msg_callback(1, s->version, type, | 345 | s->msg_callback(1, s->version, type, |
346 | s->internal->init_buf->data, | 346 | s->init_buf->data, |
347 | (size_t)(s->internal->init_off + s->internal->init_num), | 347 | (size_t)(s->init_off + s->init_num), |
348 | s, s->internal->msg_callback_arg); | 348 | s, s->msg_callback_arg); |
349 | 349 | ||
350 | s->internal->init_off = 0; | 350 | s->init_off = 0; |
351 | /* done writing this message */ | 351 | /* done writing this message */ |
352 | s->internal->init_num = 0; | 352 | s->init_num = 0; |
353 | 353 | ||
354 | return (1); | 354 | return (1); |
355 | } | 355 | } |
356 | s->internal->init_off += ret; | 356 | s->init_off += ret; |
357 | s->internal->init_num -= ret; | 357 | s->init_num -= ret; |
358 | frag_off += (ret -= DTLS1_HM_HEADER_LENGTH); | 358 | frag_off += (ret -= DTLS1_HM_HEADER_LENGTH); |
359 | } | 359 | } |
360 | } | 360 | } |
@@ -377,7 +377,7 @@ dtls1_get_message(SSL *s, int st1, int stn, int mt, long max) | |||
377 | int i, al, ok; | 377 | int i, al, ok; |
378 | 378 | ||
379 | /* | 379 | /* |
380 | * s3->internal->tmp is used to store messages that are unexpected, caused | 380 | * s3->tmp is used to store messages that are unexpected, caused |
381 | * by the absence of an optional handshake message | 381 | * by the absence of an optional handshake message |
382 | */ | 382 | */ |
383 | if (s->s3->hs.tls12.reuse_message) { | 383 | if (s->s3->hs.tls12.reuse_message) { |
@@ -387,8 +387,8 @@ dtls1_get_message(SSL *s, int st1, int stn, int mt, long max) | |||
387 | SSLerror(s, SSL_R_UNEXPECTED_MESSAGE); | 387 | SSLerror(s, SSL_R_UNEXPECTED_MESSAGE); |
388 | goto fatal_err; | 388 | goto fatal_err; |
389 | } | 389 | } |
390 | s->internal->init_msg = s->internal->init_buf->data + DTLS1_HM_HEADER_LENGTH; | 390 | s->init_msg = s->init_buf->data + DTLS1_HM_HEADER_LENGTH; |
391 | s->internal->init_num = (int)s->s3->hs.tls12.message_size; | 391 | s->init_num = (int)s->s3->hs.tls12.message_size; |
392 | return 1; | 392 | return 1; |
393 | } | 393 | } |
394 | 394 | ||
@@ -403,7 +403,7 @@ dtls1_get_message(SSL *s, int st1, int stn, int mt, long max) | |||
403 | else if (i <= 0 && !ok) | 403 | else if (i <= 0 && !ok) |
404 | return i; | 404 | return i; |
405 | 405 | ||
406 | p = (unsigned char *)s->internal->init_buf->data; | 406 | p = (unsigned char *)s->init_buf->data; |
407 | msg_len = msg_hdr->msg_len; | 407 | msg_len = msg_hdr->msg_len; |
408 | 408 | ||
409 | /* reconstruct message header */ | 409 | /* reconstruct message header */ |
@@ -413,9 +413,9 @@ dtls1_get_message(SSL *s, int st1, int stn, int mt, long max) | |||
413 | msg_len += DTLS1_HM_HEADER_LENGTH; | 413 | msg_len += DTLS1_HM_HEADER_LENGTH; |
414 | 414 | ||
415 | tls1_transcript_record(s, p, msg_len); | 415 | tls1_transcript_record(s, p, msg_len); |
416 | if (s->internal->msg_callback) | 416 | if (s->msg_callback) |
417 | s->internal->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, p, msg_len, | 417 | s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, p, msg_len, |
418 | s, s->internal->msg_callback_arg); | 418 | s, s->msg_callback_arg); |
419 | 419 | ||
420 | memset(msg_hdr, 0, sizeof(struct hm_header_st)); | 420 | memset(msg_hdr, 0, sizeof(struct hm_header_st)); |
421 | 421 | ||
@@ -423,7 +423,7 @@ dtls1_get_message(SSL *s, int st1, int stn, int mt, long max) | |||
423 | if (!s->d1->listen) | 423 | if (!s->d1->listen) |
424 | s->d1->handshake_read_seq++; | 424 | s->d1->handshake_read_seq++; |
425 | 425 | ||
426 | s->internal->init_msg = s->internal->init_buf->data + DTLS1_HM_HEADER_LENGTH; | 426 | s->init_msg = s->init_buf->data + DTLS1_HM_HEADER_LENGTH; |
427 | return 1; | 427 | return 1; |
428 | 428 | ||
429 | fatal_err: | 429 | fatal_err: |
@@ -457,7 +457,7 @@ dtls1_preprocess_fragment(SSL *s, struct hm_header_st *msg_hdr, int max) | |||
457 | * msg_len is limited to 2^24, but is effectively checked | 457 | * msg_len is limited to 2^24, but is effectively checked |
458 | * against max above | 458 | * against max above |
459 | */ | 459 | */ |
460 | if (!BUF_MEM_grow_clean(s->internal->init_buf, | 460 | if (!BUF_MEM_grow_clean(s->init_buf, |
461 | msg_len + DTLS1_HM_HEADER_LENGTH)) { | 461 | msg_len + DTLS1_HM_HEADER_LENGTH)) { |
462 | SSLerror(s, ERR_R_BUF_LIB); | 462 | SSLerror(s, ERR_R_BUF_LIB); |
463 | return SSL_AD_INTERNAL_ERROR; | 463 | return SSL_AD_INTERNAL_ERROR; |
@@ -486,8 +486,8 @@ dtls1_retrieve_buffered_fragment(SSL *s, long max, int *ok) | |||
486 | /* | 486 | /* |
487 | * (0) check whether the desired fragment is available | 487 | * (0) check whether the desired fragment is available |
488 | * if so: | 488 | * if so: |
489 | * (1) copy over the fragment to s->internal->init_buf->data[] | 489 | * (1) copy over the fragment to s->init_buf->data[] |
490 | * (2) update s->internal->init_num | 490 | * (2) update s->init_num |
491 | */ | 491 | */ |
492 | pitem *item; | 492 | pitem *item; |
493 | hm_fragment *frag; | 493 | hm_fragment *frag; |
@@ -512,7 +512,7 @@ dtls1_retrieve_buffered_fragment(SSL *s, long max, int *ok) | |||
512 | 512 | ||
513 | if (al == 0) /* no alert */ | 513 | if (al == 0) /* no alert */ |
514 | { | 514 | { |
515 | unsigned char *p = (unsigned char *)s->internal->init_buf->data + DTLS1_HM_HEADER_LENGTH; | 515 | unsigned char *p = (unsigned char *)s->init_buf->data + DTLS1_HM_HEADER_LENGTH; |
516 | memcpy(&p[frag->msg_header.frag_off], | 516 | memcpy(&p[frag->msg_header.frag_off], |
517 | frag->fragment, frag->msg_header.frag_len); | 517 | frag->fragment, frag->msg_header.frag_len); |
518 | } | 518 | } |
@@ -526,7 +526,7 @@ dtls1_retrieve_buffered_fragment(SSL *s, long max, int *ok) | |||
526 | } | 526 | } |
527 | 527 | ||
528 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 528 | ssl3_send_alert(s, SSL3_AL_FATAL, al); |
529 | s->internal->init_num = 0; | 529 | s->init_num = 0; |
530 | *ok = 0; | 530 | *ok = 0; |
531 | return -1; | 531 | return -1; |
532 | } else | 532 | } else |
@@ -544,8 +544,8 @@ dtls1_max_handshake_message_len(const SSL *s) | |||
544 | unsigned long max_len; | 544 | unsigned long max_len; |
545 | 545 | ||
546 | max_len = DTLS1_HM_HEADER_LENGTH + SSL3_RT_MAX_ENCRYPTED_LENGTH; | 546 | max_len = DTLS1_HM_HEADER_LENGTH + SSL3_RT_MAX_ENCRYPTED_LENGTH; |
547 | if (max_len < (unsigned long)s->internal->max_cert_list) | 547 | if (max_len < (unsigned long)s->max_cert_list) |
548 | return s->internal->max_cert_list; | 548 | return s->max_cert_list; |
549 | return max_len; | 549 | return max_len; |
550 | } | 550 | } |
551 | 551 | ||
@@ -749,7 +749,7 @@ dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok) | |||
749 | /* see if we have the required fragment already */ | 749 | /* see if we have the required fragment already */ |
750 | if ((frag_len = dtls1_retrieve_buffered_fragment(s, max, ok)) || *ok) { | 750 | if ((frag_len = dtls1_retrieve_buffered_fragment(s, max, ok)) || *ok) { |
751 | if (*ok) | 751 | if (*ok) |
752 | s->internal->init_num = frag_len; | 752 | s->init_num = frag_len; |
753 | return frag_len; | 753 | return frag_len; |
754 | } | 754 | } |
755 | 755 | ||
@@ -758,7 +758,7 @@ dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok) | |||
758 | DTLS1_HM_HEADER_LENGTH, 0); | 758 | DTLS1_HM_HEADER_LENGTH, 0); |
759 | if (i <= 0) { | 759 | if (i <= 0) { |
760 | /* nbio, or an error */ | 760 | /* nbio, or an error */ |
761 | s->internal->rwstate = SSL_READING; | 761 | s->rwstate = SSL_READING; |
762 | *ok = 0; | 762 | *ok = 0; |
763 | return i; | 763 | return i; |
764 | } | 764 | } |
@@ -797,13 +797,13 @@ dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok) | |||
797 | * 'Finished' MAC. | 797 | * 'Finished' MAC. |
798 | */ | 798 | */ |
799 | if (wire[1] == 0 && wire[2] == 0 && wire[3] == 0) { | 799 | if (wire[1] == 0 && wire[2] == 0 && wire[3] == 0) { |
800 | if (s->internal->msg_callback) | 800 | if (s->msg_callback) |
801 | s->internal->msg_callback(0, s->version, | 801 | s->msg_callback(0, s->version, |
802 | SSL3_RT_HANDSHAKE, wire, | 802 | SSL3_RT_HANDSHAKE, wire, |
803 | DTLS1_HM_HEADER_LENGTH, s, | 803 | DTLS1_HM_HEADER_LENGTH, s, |
804 | s->internal->msg_callback_arg); | 804 | s->msg_callback_arg); |
805 | 805 | ||
806 | s->internal->init_num = 0; | 806 | s->init_num = 0; |
807 | goto again; | 807 | goto again; |
808 | } | 808 | } |
809 | else /* Incorrectly formated Hello request */ | 809 | else /* Incorrectly formated Hello request */ |
@@ -821,13 +821,13 @@ dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok) | |||
821 | s->s3->hs.state = stn; | 821 | s->s3->hs.state = stn; |
822 | 822 | ||
823 | if (frag_len > 0) { | 823 | if (frag_len > 0) { |
824 | unsigned char *p = (unsigned char *)s->internal->init_buf->data + DTLS1_HM_HEADER_LENGTH; | 824 | unsigned char *p = (unsigned char *)s->init_buf->data + DTLS1_HM_HEADER_LENGTH; |
825 | 825 | ||
826 | i = s->method->ssl_read_bytes(s, SSL3_RT_HANDSHAKE, | 826 | i = s->method->ssl_read_bytes(s, SSL3_RT_HANDSHAKE, |
827 | &p[frag_off], frag_len, 0); | 827 | &p[frag_off], frag_len, 0); |
828 | /* XDTLS: fix this--message fragments cannot span multiple packets */ | 828 | /* XDTLS: fix this--message fragments cannot span multiple packets */ |
829 | if (i <= 0) { | 829 | if (i <= 0) { |
830 | s->internal->rwstate = SSL_READING; | 830 | s->rwstate = SSL_READING; |
831 | *ok = 0; | 831 | *ok = 0; |
832 | return i; | 832 | return i; |
833 | } | 833 | } |
@@ -845,18 +845,18 @@ dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok) | |||
845 | } | 845 | } |
846 | 846 | ||
847 | /* | 847 | /* |
848 | * Note that s->internal->init_num is *not* used as current offset in | 848 | * Note that s->init_num is *not* used as current offset in |
849 | * s->internal->init_buf->data, but as a counter summing up fragments' | 849 | * s->init_buf->data, but as a counter summing up fragments' |
850 | * lengths: as soon as they sum up to handshake packet | 850 | * lengths: as soon as they sum up to handshake packet |
851 | * length, we assume we have got all the fragments. | 851 | * length, we assume we have got all the fragments. |
852 | */ | 852 | */ |
853 | s->internal->init_num = frag_len; | 853 | s->init_num = frag_len; |
854 | *ok = 1; | 854 | *ok = 1; |
855 | return frag_len; | 855 | return frag_len; |
856 | 856 | ||
857 | fatal_err: | 857 | fatal_err: |
858 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 858 | ssl3_send_alert(s, SSL3_AL_FATAL, al); |
859 | s->internal->init_num = 0; | 859 | s->init_num = 0; |
860 | 860 | ||
861 | *ok = 0; | 861 | *ok = 0; |
862 | return (-1); | 862 | return (-1); |
@@ -948,17 +948,17 @@ dtls1_buffer_message(SSL *s, int is_ccs) | |||
948 | * This function is called immediately after a message has | 948 | * This function is called immediately after a message has |
949 | * been serialized | 949 | * been serialized |
950 | */ | 950 | */ |
951 | OPENSSL_assert(s->internal->init_off == 0); | 951 | OPENSSL_assert(s->init_off == 0); |
952 | 952 | ||
953 | frag = dtls1_hm_fragment_new(s->internal->init_num, 0); | 953 | frag = dtls1_hm_fragment_new(s->init_num, 0); |
954 | if (frag == NULL) | 954 | if (frag == NULL) |
955 | return 0; | 955 | return 0; |
956 | 956 | ||
957 | memcpy(frag->fragment, s->internal->init_buf->data, s->internal->init_num); | 957 | memcpy(frag->fragment, s->init_buf->data, s->init_num); |
958 | 958 | ||
959 | OPENSSL_assert(s->d1->w_msg_hdr.msg_len + | 959 | OPENSSL_assert(s->d1->w_msg_hdr.msg_len + |
960 | (is_ccs ? DTLS1_CCS_HEADER_LENGTH : DTLS1_HM_HEADER_LENGTH) == | 960 | (is_ccs ? DTLS1_CCS_HEADER_LENGTH : DTLS1_HM_HEADER_LENGTH) == |
961 | (unsigned int)s->internal->init_num); | 961 | (unsigned int)s->init_num); |
962 | 962 | ||
963 | frag->msg_header.msg_len = s->d1->w_msg_hdr.msg_len; | 963 | frag->msg_header.msg_len = s->d1->w_msg_hdr.msg_len; |
964 | frag->msg_header.seq = s->d1->w_msg_hdr.seq; | 964 | frag->msg_header.seq = s->d1->w_msg_hdr.seq; |
@@ -970,7 +970,7 @@ dtls1_buffer_message(SSL *s, int is_ccs) | |||
970 | /* save current state*/ | 970 | /* save current state*/ |
971 | frag->msg_header.saved_retransmit_state.session = s->session; | 971 | frag->msg_header.saved_retransmit_state.session = s->session; |
972 | frag->msg_header.saved_retransmit_state.epoch = | 972 | frag->msg_header.saved_retransmit_state.epoch = |
973 | tls12_record_layer_write_epoch(s->internal->rl); | 973 | tls12_record_layer_write_epoch(s->rl); |
974 | 974 | ||
975 | memset(seq64be, 0, sizeof(seq64be)); | 975 | memset(seq64be, 0, sizeof(seq64be)); |
976 | seq64be[6] = (unsigned char)(dtls1_get_queue_priority( | 976 | seq64be[6] = (unsigned char)(dtls1_get_queue_priority( |
@@ -1001,8 +1001,8 @@ dtls1_retransmit_message(SSL *s, unsigned short seq, unsigned long frag_off, | |||
1001 | struct dtls1_retransmit_state saved_state; | 1001 | struct dtls1_retransmit_state saved_state; |
1002 | 1002 | ||
1003 | /* | 1003 | /* |
1004 | OPENSSL_assert(s->internal->init_num == 0); | 1004 | OPENSSL_assert(s->init_num == 0); |
1005 | OPENSSL_assert(s->internal->init_off == 0); | 1005 | OPENSSL_assert(s->init_off == 0); |
1006 | */ | 1006 | */ |
1007 | 1007 | ||
1008 | /* XDTLS: the requested message ought to be found, otherwise error */ | 1008 | /* XDTLS: the requested message ought to be found, otherwise error */ |
@@ -1027,9 +1027,9 @@ dtls1_retransmit_message(SSL *s, unsigned short seq, unsigned long frag_off, | |||
1027 | else | 1027 | else |
1028 | header_length = DTLS1_HM_HEADER_LENGTH; | 1028 | header_length = DTLS1_HM_HEADER_LENGTH; |
1029 | 1029 | ||
1030 | memcpy(s->internal->init_buf->data, frag->fragment, | 1030 | memcpy(s->init_buf->data, frag->fragment, |
1031 | frag->msg_header.msg_len + header_length); | 1031 | frag->msg_header.msg_len + header_length); |
1032 | s->internal->init_num = frag->msg_header.msg_len + header_length; | 1032 | s->init_num = frag->msg_header.msg_len + header_length; |
1033 | 1033 | ||
1034 | dtls1_set_message_header_int(s, frag->msg_header.type, | 1034 | dtls1_set_message_header_int(s, frag->msg_header.type, |
1035 | frag->msg_header.msg_len, frag->msg_header.seq, 0, | 1035 | frag->msg_header.msg_len, frag->msg_header.seq, 0, |
@@ -1037,13 +1037,13 @@ dtls1_retransmit_message(SSL *s, unsigned short seq, unsigned long frag_off, | |||
1037 | 1037 | ||
1038 | /* save current state */ | 1038 | /* save current state */ |
1039 | saved_state.session = s->session; | 1039 | saved_state.session = s->session; |
1040 | saved_state.epoch = tls12_record_layer_write_epoch(s->internal->rl); | 1040 | saved_state.epoch = tls12_record_layer_write_epoch(s->rl); |
1041 | 1041 | ||
1042 | s->d1->retransmitting = 1; | 1042 | s->d1->retransmitting = 1; |
1043 | 1043 | ||
1044 | /* restore state in which the message was originally sent */ | 1044 | /* restore state in which the message was originally sent */ |
1045 | s->session = frag->msg_header.saved_retransmit_state.session; | 1045 | s->session = frag->msg_header.saved_retransmit_state.session; |
1046 | if (!tls12_record_layer_use_write_epoch(s->internal->rl, | 1046 | if (!tls12_record_layer_use_write_epoch(s->rl, |
1047 | frag->msg_header.saved_retransmit_state.epoch)) | 1047 | frag->msg_header.saved_retransmit_state.epoch)) |
1048 | return 0; | 1048 | return 0; |
1049 | 1049 | ||
@@ -1052,7 +1052,7 @@ dtls1_retransmit_message(SSL *s, unsigned short seq, unsigned long frag_off, | |||
1052 | 1052 | ||
1053 | /* restore current state */ | 1053 | /* restore current state */ |
1054 | s->session = saved_state.session; | 1054 | s->session = saved_state.session; |
1055 | if (!tls12_record_layer_use_write_epoch(s->internal->rl, | 1055 | if (!tls12_record_layer_use_write_epoch(s->rl, |
1056 | saved_state.epoch)) | 1056 | saved_state.epoch)) |
1057 | return 0; | 1057 | return 0; |
1058 | 1058 | ||
@@ -1073,7 +1073,7 @@ dtls1_clear_record_buffer(SSL *s) | |||
1073 | item = pqueue_pop(s->d1->sent_messages)) { | 1073 | item = pqueue_pop(s->d1->sent_messages)) { |
1074 | frag = item->data; | 1074 | frag = item->data; |
1075 | if (frag->msg_header.is_ccs) | 1075 | if (frag->msg_header.is_ccs) |
1076 | tls12_record_layer_write_epoch_done(s->internal->rl, | 1076 | tls12_record_layer_write_epoch_done(s->rl, |
1077 | frag->msg_header.saved_retransmit_state.epoch); | 1077 | frag->msg_header.saved_retransmit_state.epoch); |
1078 | dtls1_hm_fragment_free(frag); | 1078 | dtls1_hm_fragment_free(frag); |
1079 | pitem_free(item); | 1079 | pitem_free(item); |