diff options
Diffstat (limited to 'src/lib/libssl/ssl_clnt.c')
-rw-r--r-- | src/lib/libssl/ssl_clnt.c | 202 |
1 files changed, 101 insertions, 101 deletions
diff --git a/src/lib/libssl/ssl_clnt.c b/src/lib/libssl/ssl_clnt.c index 8b2f209a79..d5791e3ffc 100644 --- a/src/lib/libssl/ssl_clnt.c +++ b/src/lib/libssl/ssl_clnt.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_clnt.c,v 1.154 2022/10/01 16:23:15 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_clnt.c,v 1.155 2022/10/02 16:36:41 jsing Exp $ */ |
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 | * |
@@ -204,7 +204,7 @@ ssl3_connect(SSL *s) | |||
204 | ERR_clear_error(); | 204 | ERR_clear_error(); |
205 | errno = 0; | 205 | errno = 0; |
206 | 206 | ||
207 | s->internal->in_handshake++; | 207 | s->in_handshake++; |
208 | if (!SSL_in_init(s) || SSL_in_before(s)) | 208 | if (!SSL_in_init(s) || SSL_in_before(s)) |
209 | SSL_clear(s); | 209 | SSL_clear(s); |
210 | 210 | ||
@@ -213,9 +213,9 @@ ssl3_connect(SSL *s) | |||
213 | 213 | ||
214 | switch (s->s3->hs.state) { | 214 | switch (s->s3->hs.state) { |
215 | case SSL_ST_RENEGOTIATE: | 215 | case SSL_ST_RENEGOTIATE: |
216 | s->internal->renegotiate = 1; | 216 | s->renegotiate = 1; |
217 | s->s3->hs.state = SSL_ST_CONNECT; | 217 | s->s3->hs.state = SSL_ST_CONNECT; |
218 | s->ctx->internal->stats.sess_connect_renegotiate++; | 218 | s->ctx->stats.sess_connect_renegotiate++; |
219 | /* break */ | 219 | /* break */ |
220 | case SSL_ST_BEFORE: | 220 | case SSL_ST_BEFORE: |
221 | case SSL_ST_CONNECT: | 221 | case SSL_ST_CONNECT: |
@@ -268,21 +268,21 @@ ssl3_connect(SSL *s) | |||
268 | } | 268 | } |
269 | 269 | ||
270 | s->s3->hs.state = SSL3_ST_CW_CLNT_HELLO_A; | 270 | s->s3->hs.state = SSL3_ST_CW_CLNT_HELLO_A; |
271 | s->ctx->internal->stats.sess_connect++; | 271 | s->ctx->stats.sess_connect++; |
272 | s->internal->init_num = 0; | 272 | s->init_num = 0; |
273 | 273 | ||
274 | if (SSL_is_dtls(s)) { | 274 | if (SSL_is_dtls(s)) { |
275 | /* mark client_random uninitialized */ | 275 | /* mark client_random uninitialized */ |
276 | memset(s->s3->client_random, 0, | 276 | memset(s->s3->client_random, 0, |
277 | sizeof(s->s3->client_random)); | 277 | sizeof(s->s3->client_random)); |
278 | s->d1->send_cookie = 0; | 278 | s->d1->send_cookie = 0; |
279 | s->internal->hit = 0; | 279 | s->hit = 0; |
280 | } | 280 | } |
281 | break; | 281 | break; |
282 | 282 | ||
283 | case SSL3_ST_CW_CLNT_HELLO_A: | 283 | case SSL3_ST_CW_CLNT_HELLO_A: |
284 | case SSL3_ST_CW_CLNT_HELLO_B: | 284 | case SSL3_ST_CW_CLNT_HELLO_B: |
285 | s->internal->shutdown = 0; | 285 | s->shutdown = 0; |
286 | 286 | ||
287 | if (SSL_is_dtls(s)) { | 287 | if (SSL_is_dtls(s)) { |
288 | /* every DTLS ClientHello resets Finished MAC */ | 288 | /* every DTLS ClientHello resets Finished MAC */ |
@@ -301,7 +301,7 @@ ssl3_connect(SSL *s) | |||
301 | } else | 301 | } else |
302 | s->s3->hs.state = SSL3_ST_CR_SRVR_HELLO_A; | 302 | s->s3->hs.state = SSL3_ST_CR_SRVR_HELLO_A; |
303 | 303 | ||
304 | s->internal->init_num = 0; | 304 | s->init_num = 0; |
305 | 305 | ||
306 | /* turn on buffering for the next lot of output */ | 306 | /* turn on buffering for the next lot of output */ |
307 | if (s->bbio != s->wbio) | 307 | if (s->bbio != s->wbio) |
@@ -315,10 +315,10 @@ ssl3_connect(SSL *s) | |||
315 | if (ret <= 0) | 315 | if (ret <= 0) |
316 | goto end; | 316 | goto end; |
317 | 317 | ||
318 | if (s->internal->hit) { | 318 | if (s->hit) { |
319 | s->s3->hs.state = SSL3_ST_CR_FINISHED_A; | 319 | s->s3->hs.state = SSL3_ST_CR_FINISHED_A; |
320 | if (!SSL_is_dtls(s)) { | 320 | if (!SSL_is_dtls(s)) { |
321 | if (s->internal->tlsext_ticket_expected) { | 321 | if (s->tlsext_ticket_expected) { |
322 | /* receive renewed session ticket */ | 322 | /* receive renewed session ticket */ |
323 | s->s3->hs.state = SSL3_ST_CR_SESSION_TICKET_A; | 323 | s->s3->hs.state = SSL3_ST_CR_SESSION_TICKET_A; |
324 | } | 324 | } |
@@ -331,7 +331,7 @@ ssl3_connect(SSL *s) | |||
331 | } else { | 331 | } else { |
332 | s->s3->hs.state = SSL3_ST_CR_CERT_A; | 332 | s->s3->hs.state = SSL3_ST_CR_CERT_A; |
333 | } | 333 | } |
334 | s->internal->init_num = 0; | 334 | s->init_num = 0; |
335 | break; | 335 | break; |
336 | 336 | ||
337 | case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A: | 337 | case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A: |
@@ -344,7 +344,7 @@ ssl3_connect(SSL *s) | |||
344 | s->s3->hs.state = SSL3_ST_CW_CLNT_HELLO_A; | 344 | s->s3->hs.state = SSL3_ST_CW_CLNT_HELLO_A; |
345 | else | 345 | else |
346 | s->s3->hs.state = SSL3_ST_CR_CERT_A; | 346 | s->s3->hs.state = SSL3_ST_CR_CERT_A; |
347 | s->internal->init_num = 0; | 347 | s->init_num = 0; |
348 | break; | 348 | break; |
349 | 349 | ||
350 | case SSL3_ST_CR_CERT_A: | 350 | case SSL3_ST_CR_CERT_A: |
@@ -353,12 +353,12 @@ ssl3_connect(SSL *s) | |||
353 | if (ret <= 0) | 353 | if (ret <= 0) |
354 | goto end; | 354 | goto end; |
355 | if (ret == 2) { | 355 | if (ret == 2) { |
356 | s->internal->hit = 1; | 356 | s->hit = 1; |
357 | if (s->internal->tlsext_ticket_expected) | 357 | if (s->tlsext_ticket_expected) |
358 | s->s3->hs.state = SSL3_ST_CR_SESSION_TICKET_A; | 358 | s->s3->hs.state = SSL3_ST_CR_SESSION_TICKET_A; |
359 | else | 359 | else |
360 | s->s3->hs.state = SSL3_ST_CR_FINISHED_A; | 360 | s->s3->hs.state = SSL3_ST_CR_FINISHED_A; |
361 | s->internal->init_num = 0; | 361 | s->init_num = 0; |
362 | break; | 362 | break; |
363 | } | 363 | } |
364 | /* Check if it is anon DH/ECDH. */ | 364 | /* Check if it is anon DH/ECDH. */ |
@@ -367,7 +367,7 @@ ssl3_connect(SSL *s) | |||
367 | ret = ssl3_get_server_certificate(s); | 367 | ret = ssl3_get_server_certificate(s); |
368 | if (ret <= 0) | 368 | if (ret <= 0) |
369 | goto end; | 369 | goto end; |
370 | if (s->internal->tlsext_status_expected) | 370 | if (s->tlsext_status_expected) |
371 | s->s3->hs.state = SSL3_ST_CR_CERT_STATUS_A; | 371 | s->s3->hs.state = SSL3_ST_CR_CERT_STATUS_A; |
372 | else | 372 | else |
373 | s->s3->hs.state = SSL3_ST_CR_KEY_EXCH_A; | 373 | s->s3->hs.state = SSL3_ST_CR_KEY_EXCH_A; |
@@ -375,7 +375,7 @@ ssl3_connect(SSL *s) | |||
375 | skip = 1; | 375 | skip = 1; |
376 | s->s3->hs.state = SSL3_ST_CR_KEY_EXCH_A; | 376 | s->s3->hs.state = SSL3_ST_CR_KEY_EXCH_A; |
377 | } | 377 | } |
378 | s->internal->init_num = 0; | 378 | s->init_num = 0; |
379 | break; | 379 | break; |
380 | 380 | ||
381 | case SSL3_ST_CR_KEY_EXCH_A: | 381 | case SSL3_ST_CR_KEY_EXCH_A: |
@@ -384,7 +384,7 @@ ssl3_connect(SSL *s) | |||
384 | if (ret <= 0) | 384 | if (ret <= 0) |
385 | goto end; | 385 | goto end; |
386 | s->s3->hs.state = SSL3_ST_CR_CERT_REQ_A; | 386 | s->s3->hs.state = SSL3_ST_CR_CERT_REQ_A; |
387 | s->internal->init_num = 0; | 387 | s->init_num = 0; |
388 | 388 | ||
389 | /* | 389 | /* |
390 | * At this point we check that we have the | 390 | * At this point we check that we have the |
@@ -402,7 +402,7 @@ ssl3_connect(SSL *s) | |||
402 | if (ret <= 0) | 402 | if (ret <= 0) |
403 | goto end; | 403 | goto end; |
404 | s->s3->hs.state = SSL3_ST_CR_SRVR_DONE_A; | 404 | s->s3->hs.state = SSL3_ST_CR_SRVR_DONE_A; |
405 | s->internal->init_num = 0; | 405 | s->init_num = 0; |
406 | break; | 406 | break; |
407 | 407 | ||
408 | case SSL3_ST_CR_SRVR_DONE_A: | 408 | case SSL3_ST_CR_SRVR_DONE_A: |
@@ -416,7 +416,7 @@ ssl3_connect(SSL *s) | |||
416 | s->s3->hs.state = SSL3_ST_CW_CERT_A; | 416 | s->s3->hs.state = SSL3_ST_CW_CERT_A; |
417 | else | 417 | else |
418 | s->s3->hs.state = SSL3_ST_CW_KEY_EXCH_A; | 418 | s->s3->hs.state = SSL3_ST_CW_KEY_EXCH_A; |
419 | s->internal->init_num = 0; | 419 | s->init_num = 0; |
420 | 420 | ||
421 | break; | 421 | break; |
422 | 422 | ||
@@ -430,7 +430,7 @@ ssl3_connect(SSL *s) | |||
430 | if (ret <= 0) | 430 | if (ret <= 0) |
431 | goto end; | 431 | goto end; |
432 | s->s3->hs.state = SSL3_ST_CW_KEY_EXCH_A; | 432 | s->s3->hs.state = SSL3_ST_CW_KEY_EXCH_A; |
433 | s->internal->init_num = 0; | 433 | s->init_num = 0; |
434 | break; | 434 | break; |
435 | 435 | ||
436 | case SSL3_ST_CW_KEY_EXCH_A: | 436 | case SSL3_ST_CW_KEY_EXCH_A: |
@@ -469,7 +469,7 @@ ssl3_connect(SSL *s) | |||
469 | } | 469 | } |
470 | } | 470 | } |
471 | 471 | ||
472 | s->internal->init_num = 0; | 472 | s->init_num = 0; |
473 | break; | 473 | break; |
474 | 474 | ||
475 | case SSL3_ST_CW_CERT_VRFY_A: | 475 | case SSL3_ST_CW_CERT_VRFY_A: |
@@ -480,20 +480,20 @@ ssl3_connect(SSL *s) | |||
480 | if (ret <= 0) | 480 | if (ret <= 0) |
481 | goto end; | 481 | goto end; |
482 | s->s3->hs.state = SSL3_ST_CW_CHANGE_A; | 482 | s->s3->hs.state = SSL3_ST_CW_CHANGE_A; |
483 | s->internal->init_num = 0; | 483 | s->init_num = 0; |
484 | s->s3->change_cipher_spec = 0; | 484 | s->s3->change_cipher_spec = 0; |
485 | break; | 485 | break; |
486 | 486 | ||
487 | case SSL3_ST_CW_CHANGE_A: | 487 | case SSL3_ST_CW_CHANGE_A: |
488 | case SSL3_ST_CW_CHANGE_B: | 488 | case SSL3_ST_CW_CHANGE_B: |
489 | if (SSL_is_dtls(s) && !s->internal->hit) | 489 | if (SSL_is_dtls(s) && !s->hit) |
490 | dtls1_start_timer(s); | 490 | dtls1_start_timer(s); |
491 | ret = ssl3_send_client_change_cipher_spec(s); | 491 | ret = ssl3_send_client_change_cipher_spec(s); |
492 | if (ret <= 0) | 492 | if (ret <= 0) |
493 | goto end; | 493 | goto end; |
494 | 494 | ||
495 | s->s3->hs.state = SSL3_ST_CW_FINISHED_A; | 495 | s->s3->hs.state = SSL3_ST_CW_FINISHED_A; |
496 | s->internal->init_num = 0; | 496 | s->init_num = 0; |
497 | s->session->cipher = s->s3->hs.cipher; | 497 | s->session->cipher = s->s3->hs.cipher; |
498 | 498 | ||
499 | if (!tls1_setup_key_block(s)) { | 499 | if (!tls1_setup_key_block(s)) { |
@@ -508,7 +508,7 @@ ssl3_connect(SSL *s) | |||
508 | 508 | ||
509 | case SSL3_ST_CW_FINISHED_A: | 509 | case SSL3_ST_CW_FINISHED_A: |
510 | case SSL3_ST_CW_FINISHED_B: | 510 | case SSL3_ST_CW_FINISHED_B: |
511 | if (SSL_is_dtls(s) && !s->internal->hit) | 511 | if (SSL_is_dtls(s) && !s->hit) |
512 | dtls1_start_timer(s); | 512 | dtls1_start_timer(s); |
513 | ret = ssl3_send_client_finished(s); | 513 | ret = ssl3_send_client_finished(s); |
514 | if (ret <= 0) | 514 | if (ret <= 0) |
@@ -518,18 +518,18 @@ ssl3_connect(SSL *s) | |||
518 | s->s3->hs.state = SSL3_ST_CW_FLUSH; | 518 | s->s3->hs.state = SSL3_ST_CW_FLUSH; |
519 | 519 | ||
520 | /* clear flags */ | 520 | /* clear flags */ |
521 | if (s->internal->hit) { | 521 | if (s->hit) { |
522 | s->s3->hs.tls12.next_state = SSL_ST_OK; | 522 | s->s3->hs.tls12.next_state = SSL_ST_OK; |
523 | } else { | 523 | } else { |
524 | /* Allow NewSessionTicket if ticket expected */ | 524 | /* Allow NewSessionTicket if ticket expected */ |
525 | if (s->internal->tlsext_ticket_expected) | 525 | if (s->tlsext_ticket_expected) |
526 | s->s3->hs.tls12.next_state = | 526 | s->s3->hs.tls12.next_state = |
527 | SSL3_ST_CR_SESSION_TICKET_A; | 527 | SSL3_ST_CR_SESSION_TICKET_A; |
528 | else | 528 | else |
529 | s->s3->hs.tls12.next_state = | 529 | s->s3->hs.tls12.next_state = |
530 | SSL3_ST_CR_FINISHED_A; | 530 | SSL3_ST_CR_FINISHED_A; |
531 | } | 531 | } |
532 | s->internal->init_num = 0; | 532 | s->init_num = 0; |
533 | break; | 533 | break; |
534 | 534 | ||
535 | case SSL3_ST_CR_SESSION_TICKET_A: | 535 | case SSL3_ST_CR_SESSION_TICKET_A: |
@@ -538,7 +538,7 @@ ssl3_connect(SSL *s) | |||
538 | if (ret <= 0) | 538 | if (ret <= 0) |
539 | goto end; | 539 | goto end; |
540 | s->s3->hs.state = SSL3_ST_CR_FINISHED_A; | 540 | s->s3->hs.state = SSL3_ST_CR_FINISHED_A; |
541 | s->internal->init_num = 0; | 541 | s->init_num = 0; |
542 | break; | 542 | break; |
543 | 543 | ||
544 | case SSL3_ST_CR_CERT_STATUS_A: | 544 | case SSL3_ST_CR_CERT_STATUS_A: |
@@ -547,7 +547,7 @@ ssl3_connect(SSL *s) | |||
547 | if (ret <= 0) | 547 | if (ret <= 0) |
548 | goto end; | 548 | goto end; |
549 | s->s3->hs.state = SSL3_ST_CR_KEY_EXCH_A; | 549 | s->s3->hs.state = SSL3_ST_CR_KEY_EXCH_A; |
550 | s->internal->init_num = 0; | 550 | s->init_num = 0; |
551 | break; | 551 | break; |
552 | 552 | ||
553 | case SSL3_ST_CR_FINISHED_A: | 553 | case SSL3_ST_CR_FINISHED_A: |
@@ -562,27 +562,27 @@ ssl3_connect(SSL *s) | |||
562 | if (SSL_is_dtls(s)) | 562 | if (SSL_is_dtls(s)) |
563 | dtls1_stop_timer(s); | 563 | dtls1_stop_timer(s); |
564 | 564 | ||
565 | if (s->internal->hit) | 565 | if (s->hit) |
566 | s->s3->hs.state = SSL3_ST_CW_CHANGE_A; | 566 | s->s3->hs.state = SSL3_ST_CW_CHANGE_A; |
567 | else | 567 | else |
568 | s->s3->hs.state = SSL_ST_OK; | 568 | s->s3->hs.state = SSL_ST_OK; |
569 | s->internal->init_num = 0; | 569 | s->init_num = 0; |
570 | break; | 570 | break; |
571 | 571 | ||
572 | case SSL3_ST_CW_FLUSH: | 572 | case SSL3_ST_CW_FLUSH: |
573 | s->internal->rwstate = SSL_WRITING; | 573 | s->rwstate = SSL_WRITING; |
574 | if (BIO_flush(s->wbio) <= 0) { | 574 | if (BIO_flush(s->wbio) <= 0) { |
575 | if (SSL_is_dtls(s)) { | 575 | if (SSL_is_dtls(s)) { |
576 | /* If the write error was fatal, stop trying */ | 576 | /* If the write error was fatal, stop trying */ |
577 | if (!BIO_should_retry(s->wbio)) { | 577 | if (!BIO_should_retry(s->wbio)) { |
578 | s->internal->rwstate = SSL_NOTHING; | 578 | s->rwstate = SSL_NOTHING; |
579 | s->s3->hs.state = s->s3->hs.tls12.next_state; | 579 | s->s3->hs.state = s->s3->hs.tls12.next_state; |
580 | } | 580 | } |
581 | } | 581 | } |
582 | ret = -1; | 582 | ret = -1; |
583 | goto end; | 583 | goto end; |
584 | } | 584 | } |
585 | s->internal->rwstate = SSL_NOTHING; | 585 | s->rwstate = SSL_NOTHING; |
586 | s->s3->hs.state = s->s3->hs.tls12.next_state; | 586 | s->s3->hs.state = s->s3->hs.tls12.next_state; |
587 | break; | 587 | break; |
588 | 588 | ||
@@ -601,18 +601,18 @@ ssl3_connect(SSL *s) | |||
601 | 601 | ||
602 | ssl_free_wbio_buffer(s); | 602 | ssl_free_wbio_buffer(s); |
603 | 603 | ||
604 | s->internal->init_num = 0; | 604 | s->init_num = 0; |
605 | s->internal->renegotiate = 0; | 605 | s->renegotiate = 0; |
606 | s->internal->new_session = 0; | 606 | s->new_session = 0; |
607 | 607 | ||
608 | ssl_update_cache(s, SSL_SESS_CACHE_CLIENT); | 608 | ssl_update_cache(s, SSL_SESS_CACHE_CLIENT); |
609 | if (s->internal->hit) | 609 | if (s->hit) |
610 | s->ctx->internal->stats.sess_hit++; | 610 | s->ctx->stats.sess_hit++; |
611 | 611 | ||
612 | ret = 1; | 612 | ret = 1; |
613 | /* s->server=0; */ | 613 | /* s->server=0; */ |
614 | s->internal->handshake_func = ssl3_connect; | 614 | s->handshake_func = ssl3_connect; |
615 | s->ctx->internal->stats.sess_connect_good++; | 615 | s->ctx->stats.sess_connect_good++; |
616 | 616 | ||
617 | ssl_info_callback(s, SSL_CB_HANDSHAKE_DONE, 1); | 617 | ssl_info_callback(s, SSL_CB_HANDSHAKE_DONE, 1); |
618 | 618 | ||
@@ -634,7 +634,7 @@ ssl3_connect(SSL *s) | |||
634 | 634 | ||
635 | /* did we do anything */ | 635 | /* did we do anything */ |
636 | if (!s->s3->hs.tls12.reuse_message && !skip) { | 636 | if (!s->s3->hs.tls12.reuse_message && !skip) { |
637 | if (s->internal->debug) { | 637 | if (s->debug) { |
638 | if ((ret = BIO_flush(s->wbio)) <= 0) | 638 | if ((ret = BIO_flush(s->wbio)) <= 0) |
639 | goto end; | 639 | goto end; |
640 | } | 640 | } |
@@ -650,7 +650,7 @@ ssl3_connect(SSL *s) | |||
650 | } | 650 | } |
651 | 651 | ||
652 | end: | 652 | end: |
653 | s->internal->in_handshake--; | 653 | s->in_handshake--; |
654 | ssl_info_callback(s, SSL_CB_CONNECT_EXIT, ret); | 654 | ssl_info_callback(s, SSL_CB_CONNECT_EXIT, ret); |
655 | 655 | ||
656 | return (ret); | 656 | return (ret); |
@@ -706,7 +706,7 @@ ssl3_send_client_hello(SSL *s) | |||
706 | /* Session ID */ | 706 | /* Session ID */ |
707 | if (!CBB_add_u8_length_prefixed(&client_hello, &session_id)) | 707 | if (!CBB_add_u8_length_prefixed(&client_hello, &session_id)) |
708 | goto err; | 708 | goto err; |
709 | if (!s->internal->new_session && | 709 | if (!s->new_session && |
710 | s->session->session_id_length > 0) { | 710 | s->session->session_id_length > 0) { |
711 | sl = s->session->session_id_length; | 711 | sl = s->session->session_id_length; |
712 | if (sl > sizeof(s->session->session_id)) { | 712 | if (sl > sizeof(s->session->session_id)) { |
@@ -777,7 +777,7 @@ ssl3_get_dtls_hello_verify(SSL *s) | |||
777 | int al, ret; | 777 | int al, ret; |
778 | 778 | ||
779 | if ((ret = ssl3_get_message(s, DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A, | 779 | if ((ret = ssl3_get_message(s, DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A, |
780 | DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B, -1, s->internal->max_cert_list)) <= 0) | 780 | DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B, -1, s->max_cert_list)) <= 0) |
781 | return ret; | 781 | return ret; |
782 | 782 | ||
783 | if (s->s3->hs.tls12.message_type != DTLS1_MT_HELLO_VERIFY_REQUEST) { | 783 | if (s->s3->hs.tls12.message_type != DTLS1_MT_HELLO_VERIFY_REQUEST) { |
@@ -786,11 +786,11 @@ ssl3_get_dtls_hello_verify(SSL *s) | |||
786 | return (1); | 786 | return (1); |
787 | } | 787 | } |
788 | 788 | ||
789 | if (s->internal->init_num < 0) | 789 | if (s->init_num < 0) |
790 | goto decode_err; | 790 | goto decode_err; |
791 | 791 | ||
792 | CBS_init(&hello_verify_request, s->internal->init_msg, | 792 | CBS_init(&hello_verify_request, s->init_msg, |
793 | s->internal->init_num); | 793 | s->init_num); |
794 | 794 | ||
795 | if (!CBS_get_u16(&hello_verify_request, &ssl_version)) | 795 | if (!CBS_get_u16(&hello_verify_request, &ssl_version)) |
796 | goto decode_err; | 796 | goto decode_err; |
@@ -840,16 +840,16 @@ ssl3_get_server_hello(SSL *s) | |||
840 | unsigned long alg_k; | 840 | unsigned long alg_k; |
841 | int al, ret; | 841 | int al, ret; |
842 | 842 | ||
843 | s->internal->first_packet = 1; | 843 | s->first_packet = 1; |
844 | if ((ret = ssl3_get_message(s, SSL3_ST_CR_SRVR_HELLO_A, | 844 | if ((ret = ssl3_get_message(s, SSL3_ST_CR_SRVR_HELLO_A, |
845 | SSL3_ST_CR_SRVR_HELLO_B, -1, 20000 /* ?? */)) <= 0) | 845 | SSL3_ST_CR_SRVR_HELLO_B, -1, 20000 /* ?? */)) <= 0) |
846 | return ret; | 846 | return ret; |
847 | s->internal->first_packet = 0; | 847 | s->first_packet = 0; |
848 | 848 | ||
849 | if (s->internal->init_num < 0) | 849 | if (s->init_num < 0) |
850 | goto decode_err; | 850 | goto decode_err; |
851 | 851 | ||
852 | CBS_init(&cbs, s->internal->init_msg, s->internal->init_num); | 852 | CBS_init(&cbs, s->init_msg, s->init_num); |
853 | 853 | ||
854 | if (SSL_is_dtls(s)) { | 854 | if (SSL_is_dtls(s)) { |
855 | if (s->s3->hs.tls12.message_type == DTLS1_MT_HELLO_VERIFY_REQUEST) { | 855 | if (s->s3->hs.tls12.message_type == DTLS1_MT_HELLO_VERIFY_REQUEST) { |
@@ -944,13 +944,13 @@ ssl3_get_server_hello(SSL *s) | |||
944 | * Check if we want to resume the session based on external | 944 | * Check if we want to resume the session based on external |
945 | * pre-shared secret. | 945 | * pre-shared secret. |
946 | */ | 946 | */ |
947 | if (s->internal->tls_session_secret_cb != NULL) { | 947 | if (s->tls_session_secret_cb != NULL) { |
948 | SSL_CIPHER *pref_cipher = NULL; | 948 | SSL_CIPHER *pref_cipher = NULL; |
949 | int master_key_length = sizeof(s->session->master_key); | 949 | int master_key_length = sizeof(s->session->master_key); |
950 | 950 | ||
951 | if (!s->internal->tls_session_secret_cb(s, | 951 | if (!s->tls_session_secret_cb(s, |
952 | s->session->master_key, &master_key_length, NULL, | 952 | s->session->master_key, &master_key_length, NULL, |
953 | &pref_cipher, s->internal->tls_session_secret_cb_arg)) { | 953 | &pref_cipher, s->tls_session_secret_cb_arg)) { |
954 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 954 | SSLerror(s, ERR_R_INTERNAL_ERROR); |
955 | goto err; | 955 | goto err; |
956 | } | 956 | } |
@@ -978,13 +978,13 @@ ssl3_get_server_hello(SSL *s) | |||
978 | goto fatal_err; | 978 | goto fatal_err; |
979 | } | 979 | } |
980 | s->s3->flags |= SSL3_FLAGS_CCS_OK; | 980 | s->s3->flags |= SSL3_FLAGS_CCS_OK; |
981 | s->internal->hit = 1; | 981 | s->hit = 1; |
982 | } else { | 982 | } else { |
983 | /* a miss or crap from the other end */ | 983 | /* a miss or crap from the other end */ |
984 | 984 | ||
985 | /* If we were trying for session-id reuse, make a new | 985 | /* If we were trying for session-id reuse, make a new |
986 | * SSL_SESSION so we don't stuff up other people */ | 986 | * SSL_SESSION so we don't stuff up other people */ |
987 | s->internal->hit = 0; | 987 | s->hit = 0; |
988 | if (s->session->session_id_length > 0) { | 988 | if (s->session->session_id_length > 0) { |
989 | if (!ssl_get_new_session(s, 0)) { | 989 | if (!ssl_get_new_session(s, 0)) { |
990 | al = SSL_AD_INTERNAL_ERROR; | 990 | al = SSL_AD_INTERNAL_ERROR; |
@@ -1032,7 +1032,7 @@ ssl3_get_server_hello(SSL *s) | |||
1032 | */ | 1032 | */ |
1033 | if (s->session->cipher) | 1033 | if (s->session->cipher) |
1034 | s->session->cipher_id = s->session->cipher->id; | 1034 | s->session->cipher_id = s->session->cipher->id; |
1035 | if (s->internal->hit && (s->session->cipher_id != cipher->id)) { | 1035 | if (s->hit && (s->session->cipher_id != cipher->id)) { |
1036 | al = SSL_AD_ILLEGAL_PARAMETER; | 1036 | al = SSL_AD_ILLEGAL_PARAMETER; |
1037 | SSLerror(s, SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED); | 1037 | SSLerror(s, SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED); |
1038 | goto fatal_err; | 1038 | goto fatal_err; |
@@ -1076,7 +1076,7 @@ ssl3_get_server_hello(SSL *s) | |||
1076 | * absence on initial connect only. | 1076 | * absence on initial connect only. |
1077 | */ | 1077 | */ |
1078 | if (!s->s3->renegotiate_seen && | 1078 | if (!s->s3->renegotiate_seen && |
1079 | !(s->internal->options & SSL_OP_LEGACY_SERVER_CONNECT)) { | 1079 | !(s->options & SSL_OP_LEGACY_SERVER_CONNECT)) { |
1080 | al = SSL_AD_HANDSHAKE_FAILURE; | 1080 | al = SSL_AD_HANDSHAKE_FAILURE; |
1081 | SSLerror(s, SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED); | 1081 | SSLerror(s, SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED); |
1082 | goto fatal_err; | 1082 | goto fatal_err; |
@@ -1109,7 +1109,7 @@ ssl3_get_server_certificate(SSL *s) | |||
1109 | int al, ret; | 1109 | int al, ret; |
1110 | 1110 | ||
1111 | if ((ret = ssl3_get_message(s, SSL3_ST_CR_CERT_A, | 1111 | if ((ret = ssl3_get_message(s, SSL3_ST_CR_CERT_A, |
1112 | SSL3_ST_CR_CERT_B, -1, s->internal->max_cert_list)) <= 0) | 1112 | SSL3_ST_CR_CERT_B, -1, s->max_cert_list)) <= 0) |
1113 | return ret; | 1113 | return ret; |
1114 | 1114 | ||
1115 | ret = -1; | 1115 | ret = -1; |
@@ -1130,10 +1130,10 @@ ssl3_get_server_certificate(SSL *s) | |||
1130 | goto err; | 1130 | goto err; |
1131 | } | 1131 | } |
1132 | 1132 | ||
1133 | if (s->internal->init_num < 0) | 1133 | if (s->init_num < 0) |
1134 | goto decode_err; | 1134 | goto decode_err; |
1135 | 1135 | ||
1136 | CBS_init(&cbs, s->internal->init_msg, s->internal->init_num); | 1136 | CBS_init(&cbs, s->init_msg, s->init_num); |
1137 | 1137 | ||
1138 | if (!CBS_get_u24_length_prefixed(&cbs, &cert_list)) | 1138 | if (!CBS_get_u24_length_prefixed(&cbs, &cert_list)) |
1139 | goto decode_err; | 1139 | goto decode_err; |
@@ -1314,16 +1314,16 @@ ssl3_get_server_key_exchange(SSL *s) | |||
1314 | * as ServerKeyExchange message may be skipped. | 1314 | * as ServerKeyExchange message may be skipped. |
1315 | */ | 1315 | */ |
1316 | if ((ret = ssl3_get_message(s, SSL3_ST_CR_KEY_EXCH_A, | 1316 | if ((ret = ssl3_get_message(s, SSL3_ST_CR_KEY_EXCH_A, |
1317 | SSL3_ST_CR_KEY_EXCH_B, -1, s->internal->max_cert_list)) <= 0) | 1317 | SSL3_ST_CR_KEY_EXCH_B, -1, s->max_cert_list)) <= 0) |
1318 | return ret; | 1318 | return ret; |
1319 | 1319 | ||
1320 | if ((md_ctx = EVP_MD_CTX_new()) == NULL) | 1320 | if ((md_ctx = EVP_MD_CTX_new()) == NULL) |
1321 | goto err; | 1321 | goto err; |
1322 | 1322 | ||
1323 | if (s->internal->init_num < 0) | 1323 | if (s->init_num < 0) |
1324 | goto err; | 1324 | goto err; |
1325 | 1325 | ||
1326 | CBS_init(&cbs, s->internal->init_msg, s->internal->init_num); | 1326 | CBS_init(&cbs, s->init_msg, s->init_num); |
1327 | 1327 | ||
1328 | if (s->s3->hs.tls12.message_type != SSL3_MT_SERVER_KEY_EXCHANGE) { | 1328 | if (s->s3->hs.tls12.message_type != SSL3_MT_SERVER_KEY_EXCHANGE) { |
1329 | /* | 1329 | /* |
@@ -1454,7 +1454,7 @@ ssl3_get_certificate_request(SSL *s) | |||
1454 | int ret; | 1454 | int ret; |
1455 | 1455 | ||
1456 | if ((ret = ssl3_get_message(s, SSL3_ST_CR_CERT_REQ_A, | 1456 | if ((ret = ssl3_get_message(s, SSL3_ST_CR_CERT_REQ_A, |
1457 | SSL3_ST_CR_CERT_REQ_B, -1, s->internal->max_cert_list)) <= 0) | 1457 | SSL3_ST_CR_CERT_REQ_B, -1, s->max_cert_list)) <= 0) |
1458 | return ret; | 1458 | return ret; |
1459 | 1459 | ||
1460 | ret = 0; | 1460 | ret = 0; |
@@ -1484,9 +1484,9 @@ ssl3_get_certificate_request(SSL *s) | |||
1484 | goto err; | 1484 | goto err; |
1485 | } | 1485 | } |
1486 | 1486 | ||
1487 | if (s->internal->init_num < 0) | 1487 | if (s->init_num < 0) |
1488 | goto decode_err; | 1488 | goto decode_err; |
1489 | CBS_init(&cert_request, s->internal->init_msg, s->internal->init_num); | 1489 | CBS_init(&cert_request, s->init_msg, s->init_num); |
1490 | 1490 | ||
1491 | if ((ca_sk = sk_X509_NAME_new(ca_dn_cmp)) == NULL) { | 1491 | if ((ca_sk = sk_X509_NAME_new(ca_dn_cmp)) == NULL) { |
1492 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 1492 | SSLerror(s, ERR_R_MALLOC_FAILURE); |
@@ -1610,13 +1610,13 @@ ssl3_get_new_session_ticket(SSL *s) | |||
1610 | goto fatal_err; | 1610 | goto fatal_err; |
1611 | } | 1611 | } |
1612 | 1612 | ||
1613 | if (s->internal->init_num < 0) { | 1613 | if (s->init_num < 0) { |
1614 | al = SSL_AD_DECODE_ERROR; | 1614 | al = SSL_AD_DECODE_ERROR; |
1615 | SSLerror(s, SSL_R_LENGTH_MISMATCH); | 1615 | SSLerror(s, SSL_R_LENGTH_MISMATCH); |
1616 | goto fatal_err; | 1616 | goto fatal_err; |
1617 | } | 1617 | } |
1618 | 1618 | ||
1619 | CBS_init(&cbs, s->internal->init_msg, s->internal->init_num); | 1619 | CBS_init(&cbs, s->init_msg, s->init_num); |
1620 | if (!CBS_get_u32(&cbs, &lifetime_hint) || | 1620 | if (!CBS_get_u32(&cbs, &lifetime_hint) || |
1621 | !CBS_get_u16_length_prefixed(&cbs, &session_ticket) || | 1621 | !CBS_get_u16_length_prefixed(&cbs, &session_ticket) || |
1622 | CBS_len(&cbs) != 0) { | 1622 | CBS_len(&cbs) != 0) { |
@@ -1679,13 +1679,13 @@ ssl3_get_cert_status(SSL *s) | |||
1679 | * Tell the callback the server did not send us an OSCP | 1679 | * Tell the callback the server did not send us an OSCP |
1680 | * response, and has decided to head directly to key exchange. | 1680 | * response, and has decided to head directly to key exchange. |
1681 | */ | 1681 | */ |
1682 | if (s->ctx->internal->tlsext_status_cb) { | 1682 | if (s->ctx->tlsext_status_cb) { |
1683 | free(s->internal->tlsext_ocsp_resp); | 1683 | free(s->tlsext_ocsp_resp); |
1684 | s->internal->tlsext_ocsp_resp = NULL; | 1684 | s->tlsext_ocsp_resp = NULL; |
1685 | s->internal->tlsext_ocsp_resp_len = 0; | 1685 | s->tlsext_ocsp_resp_len = 0; |
1686 | 1686 | ||
1687 | ret = s->ctx->internal->tlsext_status_cb(s, | 1687 | ret = s->ctx->tlsext_status_cb(s, |
1688 | s->ctx->internal->tlsext_status_arg); | 1688 | s->ctx->tlsext_status_arg); |
1689 | if (ret == 0) { | 1689 | if (ret == 0) { |
1690 | al = SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE; | 1690 | al = SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE; |
1691 | SSLerror(s, SSL_R_INVALID_STATUS_RESPONSE); | 1691 | SSLerror(s, SSL_R_INVALID_STATUS_RESPONSE); |
@@ -1708,14 +1708,14 @@ ssl3_get_cert_status(SSL *s) | |||
1708 | goto fatal_err; | 1708 | goto fatal_err; |
1709 | } | 1709 | } |
1710 | 1710 | ||
1711 | if (s->internal->init_num < 0) { | 1711 | if (s->init_num < 0) { |
1712 | /* need at least status type + length */ | 1712 | /* need at least status type + length */ |
1713 | al = SSL_AD_DECODE_ERROR; | 1713 | al = SSL_AD_DECODE_ERROR; |
1714 | SSLerror(s, SSL_R_LENGTH_MISMATCH); | 1714 | SSLerror(s, SSL_R_LENGTH_MISMATCH); |
1715 | goto fatal_err; | 1715 | goto fatal_err; |
1716 | } | 1716 | } |
1717 | 1717 | ||
1718 | CBS_init(&cert_status, s->internal->init_msg, s->internal->init_num); | 1718 | CBS_init(&cert_status, s->init_msg, s->init_num); |
1719 | if (!CBS_get_u8(&cert_status, &status_type) || | 1719 | if (!CBS_get_u8(&cert_status, &status_type) || |
1720 | CBS_len(&cert_status) < 3) { | 1720 | CBS_len(&cert_status) < 3) { |
1721 | /* need at least status type + length */ | 1721 | /* need at least status type + length */ |
@@ -1737,16 +1737,16 @@ ssl3_get_cert_status(SSL *s) | |||
1737 | goto fatal_err; | 1737 | goto fatal_err; |
1738 | } | 1738 | } |
1739 | 1739 | ||
1740 | if (!CBS_stow(&response, &s->internal->tlsext_ocsp_resp, | 1740 | if (!CBS_stow(&response, &s->tlsext_ocsp_resp, |
1741 | &s->internal->tlsext_ocsp_resp_len)) { | 1741 | &s->tlsext_ocsp_resp_len)) { |
1742 | al = SSL_AD_INTERNAL_ERROR; | 1742 | al = SSL_AD_INTERNAL_ERROR; |
1743 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 1743 | SSLerror(s, ERR_R_MALLOC_FAILURE); |
1744 | goto fatal_err; | 1744 | goto fatal_err; |
1745 | } | 1745 | } |
1746 | 1746 | ||
1747 | if (s->ctx->internal->tlsext_status_cb) { | 1747 | if (s->ctx->tlsext_status_cb) { |
1748 | ret = s->ctx->internal->tlsext_status_cb(s, | 1748 | ret = s->ctx->tlsext_status_cb(s, |
1749 | s->ctx->internal->tlsext_status_arg); | 1749 | s->ctx->tlsext_status_arg); |
1750 | if (ret == 0) { | 1750 | if (ret == 0) { |
1751 | al = SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE; | 1751 | al = SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE; |
1752 | SSLerror(s, SSL_R_INVALID_STATUS_RESPONSE); | 1752 | SSLerror(s, SSL_R_INVALID_STATUS_RESPONSE); |
@@ -1774,7 +1774,7 @@ ssl3_get_server_done(SSL *s) | |||
1774 | 30 /* should be very small, like 0 :-) */)) <= 0) | 1774 | 30 /* should be very small, like 0 :-) */)) <= 0) |
1775 | return ret; | 1775 | return ret; |
1776 | 1776 | ||
1777 | if (s->internal->init_num != 0) { | 1777 | if (s->init_num != 0) { |
1778 | /* should contain no data */ | 1778 | /* should contain no data */ |
1779 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 1779 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); |
1780 | SSLerror(s, SSL_R_LENGTH_MISMATCH); | 1780 | SSLerror(s, SSL_R_LENGTH_MISMATCH); |
@@ -2383,15 +2383,15 @@ ssl3_send_client_certificate(SSL *s) | |||
2383 | if (s->s3->hs.state == SSL3_ST_CW_CERT_B) { | 2383 | if (s->s3->hs.state == SSL3_ST_CW_CERT_B) { |
2384 | /* | 2384 | /* |
2385 | * If we get an error, we need to | 2385 | * If we get an error, we need to |
2386 | * ssl->internal->rwstate = SSL_X509_LOOKUP; return(-1); | 2386 | * ssl->rwstate = SSL_X509_LOOKUP; return(-1); |
2387 | * We then get retried later. | 2387 | * We then get retried later. |
2388 | */ | 2388 | */ |
2389 | i = ssl_do_client_cert_cb(s, &x509, &pkey); | 2389 | i = ssl_do_client_cert_cb(s, &x509, &pkey); |
2390 | if (i < 0) { | 2390 | if (i < 0) { |
2391 | s->internal->rwstate = SSL_X509_LOOKUP; | 2391 | s->rwstate = SSL_X509_LOOKUP; |
2392 | return (-1); | 2392 | return (-1); |
2393 | } | 2393 | } |
2394 | s->internal->rwstate = SSL_NOTHING; | 2394 | s->rwstate = SSL_NOTHING; |
2395 | if ((i == 1) && (pkey != NULL) && (x509 != NULL)) { | 2395 | if ((i == 1) && (pkey != NULL) && (x509 != NULL)) { |
2396 | s->s3->hs.state = SSL3_ST_CW_CERT_B; | 2396 | s->s3->hs.state = SSL3_ST_CW_CERT_B; |
2397 | if (!SSL_use_certificate(s, x509) || | 2397 | if (!SSL_use_certificate(s, x509) || |
@@ -2508,7 +2508,7 @@ ssl3_check_finished(SSL *s) | |||
2508 | /* this function is called when we really expect a Certificate | 2508 | /* this function is called when we really expect a Certificate |
2509 | * message, so permit appropriate message length */ | 2509 | * message, so permit appropriate message length */ |
2510 | if ((ret = ssl3_get_message(s, SSL3_ST_CR_CERT_A, | 2510 | if ((ret = ssl3_get_message(s, SSL3_ST_CR_CERT_A, |
2511 | SSL3_ST_CR_CERT_B, -1, s->internal->max_cert_list)) <= 0) | 2511 | SSL3_ST_CR_CERT_B, -1, s->max_cert_list)) <= 0) |
2512 | return ret; | 2512 | return ret; |
2513 | 2513 | ||
2514 | s->s3->hs.tls12.reuse_message = 1; | 2514 | s->s3->hs.tls12.reuse_message = 1; |
@@ -2525,16 +2525,16 @@ ssl_do_client_cert_cb(SSL *s, X509 **px509, EVP_PKEY **ppkey) | |||
2525 | int i = 0; | 2525 | int i = 0; |
2526 | 2526 | ||
2527 | #ifndef OPENSSL_NO_ENGINE | 2527 | #ifndef OPENSSL_NO_ENGINE |
2528 | if (s->ctx->internal->client_cert_engine) { | 2528 | if (s->ctx->client_cert_engine) { |
2529 | i = ENGINE_load_ssl_client_cert( | 2529 | i = ENGINE_load_ssl_client_cert( |
2530 | s->ctx->internal->client_cert_engine, s, | 2530 | s->ctx->client_cert_engine, s, |
2531 | SSL_get_client_CA_list(s), px509, ppkey, NULL, NULL, NULL); | 2531 | SSL_get_client_CA_list(s), px509, ppkey, NULL, NULL, NULL); |
2532 | if (i != 0) | 2532 | if (i != 0) |
2533 | return (i); | 2533 | return (i); |
2534 | } | 2534 | } |
2535 | #endif | 2535 | #endif |
2536 | if (s->ctx->internal->client_cert_cb) | 2536 | if (s->ctx->client_cert_cb) |
2537 | i = s->ctx->internal->client_cert_cb(s, px509, ppkey); | 2537 | i = s->ctx->client_cert_cb(s, px509, ppkey); |
2538 | return (i); | 2538 | return (i); |
2539 | } | 2539 | } |
2540 | 2540 | ||
@@ -2547,8 +2547,8 @@ ssl3_send_client_change_cipher_spec(SSL *s) | |||
2547 | memset(&cbb, 0, sizeof(cbb)); | 2547 | memset(&cbb, 0, sizeof(cbb)); |
2548 | 2548 | ||
2549 | if (s->s3->hs.state == SSL3_ST_CW_CHANGE_A) { | 2549 | if (s->s3->hs.state == SSL3_ST_CW_CHANGE_A) { |
2550 | if (!CBB_init_fixed(&cbb, s->internal->init_buf->data, | 2550 | if (!CBB_init_fixed(&cbb, s->init_buf->data, |
2551 | s->internal->init_buf->length)) | 2551 | s->init_buf->length)) |
2552 | goto err; | 2552 | goto err; |
2553 | if (!CBB_add_u8(&cbb, SSL3_MT_CCS)) | 2553 | if (!CBB_add_u8(&cbb, SSL3_MT_CCS)) |
2554 | goto err; | 2554 | goto err; |
@@ -2558,8 +2558,8 @@ ssl3_send_client_change_cipher_spec(SSL *s) | |||
2558 | if (outlen > INT_MAX) | 2558 | if (outlen > INT_MAX) |
2559 | goto err; | 2559 | goto err; |
2560 | 2560 | ||
2561 | s->internal->init_num = (int)outlen; | 2561 | s->init_num = (int)outlen; |
2562 | s->internal->init_off = 0; | 2562 | s->init_off = 0; |
2563 | 2563 | ||
2564 | if (SSL_is_dtls(s)) { | 2564 | if (SSL_is_dtls(s)) { |
2565 | s->d1->handshake_write_seq = | 2565 | s->d1->handshake_write_seq = |
@@ -2639,13 +2639,13 @@ ssl3_get_server_finished(SSL *s) | |||
2639 | 2639 | ||
2640 | md_len = TLS1_FINISH_MAC_LENGTH; | 2640 | md_len = TLS1_FINISH_MAC_LENGTH; |
2641 | 2641 | ||
2642 | if (s->internal->init_num < 0) { | 2642 | if (s->init_num < 0) { |
2643 | al = SSL_AD_DECODE_ERROR; | 2643 | al = SSL_AD_DECODE_ERROR; |
2644 | SSLerror(s, SSL_R_BAD_DIGEST_LENGTH); | 2644 | SSLerror(s, SSL_R_BAD_DIGEST_LENGTH); |
2645 | goto fatal_err; | 2645 | goto fatal_err; |
2646 | } | 2646 | } |
2647 | 2647 | ||
2648 | CBS_init(&cbs, s->internal->init_msg, s->internal->init_num); | 2648 | CBS_init(&cbs, s->init_msg, s->init_num); |
2649 | 2649 | ||
2650 | if (s->s3->hs.peer_finished_len != md_len || | 2650 | if (s->s3->hs.peer_finished_len != md_len || |
2651 | CBS_len(&cbs) != md_len) { | 2651 | CBS_len(&cbs) != md_len) { |