diff options
Diffstat (limited to 'src/lib/libssl/d1_clnt.c')
-rw-r--r-- | src/lib/libssl/d1_clnt.c | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/src/lib/libssl/d1_clnt.c b/src/lib/libssl/d1_clnt.c index a6ed09c51d..48e5e06bde 100644 --- a/src/lib/libssl/d1_clnt.c +++ b/src/lib/libssl/d1_clnt.c | |||
@@ -538,13 +538,6 @@ int dtls1_connect(SSL *s) | |||
538 | SSL3_ST_CW_CHANGE_A,SSL3_ST_CW_CHANGE_B); | 538 | SSL3_ST_CW_CHANGE_A,SSL3_ST_CW_CHANGE_B); |
539 | if (ret <= 0) goto end; | 539 | if (ret <= 0) goto end; |
540 | 540 | ||
541 | #ifndef OPENSSL_NO_SCTP | ||
542 | /* Change to new shared key of SCTP-Auth, | ||
543 | * will be ignored if no SCTP used. | ||
544 | */ | ||
545 | BIO_ctrl(SSL_get_wbio(s), BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY, 0, NULL); | ||
546 | #endif | ||
547 | |||
548 | s->state=SSL3_ST_CW_FINISHED_A; | 541 | s->state=SSL3_ST_CW_FINISHED_A; |
549 | s->init_num=0; | 542 | s->init_num=0; |
550 | 543 | ||
@@ -571,6 +564,16 @@ int dtls1_connect(SSL *s) | |||
571 | goto end; | 564 | goto end; |
572 | } | 565 | } |
573 | 566 | ||
567 | #ifndef OPENSSL_NO_SCTP | ||
568 | if (s->hit) | ||
569 | { | ||
570 | /* Change to new shared key of SCTP-Auth, | ||
571 | * will be ignored if no SCTP used. | ||
572 | */ | ||
573 | BIO_ctrl(SSL_get_wbio(s), BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY, 0, NULL); | ||
574 | } | ||
575 | #endif | ||
576 | |||
574 | dtls1_reset_seq_numbers(s, SSL3_CC_WRITE); | 577 | dtls1_reset_seq_numbers(s, SSL3_CC_WRITE); |
575 | break; | 578 | break; |
576 | 579 | ||
@@ -613,6 +616,13 @@ int dtls1_connect(SSL *s) | |||
613 | } | 616 | } |
614 | else | 617 | else |
615 | { | 618 | { |
619 | #ifndef OPENSSL_NO_SCTP | ||
620 | /* Change to new shared key of SCTP-Auth, | ||
621 | * will be ignored if no SCTP used. | ||
622 | */ | ||
623 | BIO_ctrl(SSL_get_wbio(s), BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY, 0, NULL); | ||
624 | #endif | ||
625 | |||
616 | #ifndef OPENSSL_NO_TLSEXT | 626 | #ifndef OPENSSL_NO_TLSEXT |
617 | /* Allow NewSessionTicket if ticket expected */ | 627 | /* Allow NewSessionTicket if ticket expected */ |
618 | if (s->tlsext_ticket_expected) | 628 | if (s->tlsext_ticket_expected) |
@@ -773,7 +783,7 @@ int dtls1_client_hello(SSL *s) | |||
773 | unsigned char *buf; | 783 | unsigned char *buf; |
774 | unsigned char *p,*d; | 784 | unsigned char *p,*d; |
775 | unsigned int i,j; | 785 | unsigned int i,j; |
776 | unsigned long Time,l; | 786 | unsigned long l; |
777 | SSL_COMP *comp; | 787 | SSL_COMP *comp; |
778 | 788 | ||
779 | buf=(unsigned char *)s->init_buf->data; | 789 | buf=(unsigned char *)s->init_buf->data; |
@@ -798,13 +808,11 @@ int dtls1_client_hello(SSL *s) | |||
798 | 808 | ||
799 | /* if client_random is initialized, reuse it, we are | 809 | /* if client_random is initialized, reuse it, we are |
800 | * required to use same upon reply to HelloVerify */ | 810 | * required to use same upon reply to HelloVerify */ |
801 | for (i=0;p[i]=='\0' && i<sizeof(s->s3->client_random);i++) ; | 811 | for (i=0;p[i]=='\0' && i<sizeof(s->s3->client_random);i++) |
812 | ; | ||
802 | if (i==sizeof(s->s3->client_random)) | 813 | if (i==sizeof(s->s3->client_random)) |
803 | { | 814 | ssl_fill_hello_random(s, 0, p, |
804 | Time=(unsigned long)time(NULL); /* Time */ | 815 | sizeof(s->s3->client_random)); |
805 | l2n(Time,p); | ||
806 | RAND_pseudo_bytes(p,sizeof(s->s3->client_random)-4); | ||
807 | } | ||
808 | 816 | ||
809 | /* Do the message type and length last */ | 817 | /* Do the message type and length last */ |
810 | d=p= &(buf[DTLS1_HM_HEADER_LENGTH]); | 818 | d=p= &(buf[DTLS1_HM_HEADER_LENGTH]); |