summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorjsing <>2015-09-12 14:32:24 +0000
committerjsing <>2015-09-12 14:32:24 +0000
commitddd30c4c28f5907be3ec4f811ed2ea002f0380e6 (patch)
tree87d3044abbf271c818fee5b9b7ad4cb5e0019cf3 /src/lib
parent967cab81155e7ef61307715e8ba16352a214b90f (diff)
downloadopenbsd-ddd30c4c28f5907be3ec4f811ed2ea002f0380e6.tar.gz
openbsd-ddd30c4c28f5907be3ec4f811ed2ea002f0380e6.tar.bz2
openbsd-ddd30c4c28f5907be3ec4f811ed2ea002f0380e6.zip
Uncopy and unpaste dtls1_send_certificate_request() - removes another 80
lines of code, while gaining SIGALGs support.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libssl/d1_srvr.c80
-rw-r--r--src/lib/libssl/src/ssl/d1_srvr.c80
-rw-r--r--src/lib/libssl/src/ssl/ssl_locl.h3
-rw-r--r--src/lib/libssl/ssl_locl.h3
4 files changed, 6 insertions, 160 deletions
diff --git a/src/lib/libssl/d1_srvr.c b/src/lib/libssl/d1_srvr.c
index 768c39eb25..7eae8ed4e4 100644
--- a/src/lib/libssl/d1_srvr.c
+++ b/src/lib/libssl/d1_srvr.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: d1_srvr.c,v 1.62 2015/09/12 14:28:23 jsing Exp $ */ 1/* $OpenBSD: d1_srvr.c,v 1.63 2015/09/12 14:32:24 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.
@@ -429,7 +429,7 @@ dtls1_accept(SSL *s)
429 } else { 429 } else {
430 s->s3->tmp.cert_request = 1; 430 s->s3->tmp.cert_request = 1;
431 dtls1_start_timer(s); 431 dtls1_start_timer(s);
432 ret = dtls1_send_certificate_request(s); 432 ret = ssl3_send_certificate_request(s);
433 if (ret <= 0) 433 if (ret <= 0)
434 goto end; 434 goto end;
435 s->state = SSL3_ST_SW_SRVR_DONE_A; 435 s->state = SSL3_ST_SW_SRVR_DONE_A;
@@ -700,82 +700,6 @@ dtls1_send_hello_verify_request(SSL *s)
700} 700}
701 701
702int 702int
703dtls1_send_certificate_request(SSL *s)
704{
705 unsigned char *p, *d;
706 int i, j, nl, off, n;
707 STACK_OF(X509_NAME) *sk = NULL;
708 X509_NAME *name;
709 BUF_MEM *buf;
710 unsigned int msg_len;
711
712 if (s->state == SSL3_ST_SW_CERT_REQ_A) {
713 buf = s->init_buf;
714
715 d = p=(unsigned char *)&(buf->data[DTLS1_HM_HEADER_LENGTH]);
716
717 /* get the list of acceptable cert types */
718 p++;
719 n = ssl3_get_req_cert_type(s, p);
720 d[0] = n;
721 p += n;
722 n++;
723
724 off = n;
725 p += 2;
726 n += 2;
727
728 sk = SSL_get_client_CA_list(s);
729 nl = 0;
730 if (sk != NULL) {
731 for (i = 0; i < sk_X509_NAME_num(sk); i++) {
732 name = sk_X509_NAME_value(sk, i);
733 j = i2d_X509_NAME(name, NULL);
734 if (!BUF_MEM_grow_clean(buf, DTLS1_HM_HEADER_LENGTH + n + j + 2)) {
735 SSLerr(SSL_F_DTLS1_SEND_CERTIFICATE_REQUEST, ERR_R_BUF_LIB);
736 goto err;
737 }
738 p = (unsigned char *)&(buf->data[DTLS1_HM_HEADER_LENGTH + n]);
739 s2n(j, p);
740 i2d_X509_NAME(name, &p);
741 n += 2 + j;
742 nl += 2 + j;
743 }
744 }
745 /* else no CA names */
746 p = (unsigned char *)&(buf->data[DTLS1_HM_HEADER_LENGTH + off]);
747 s2n(nl, p);
748
749 d = (unsigned char *)buf->data;
750 *(d++) = SSL3_MT_CERTIFICATE_REQUEST;
751 l2n3(n, d);
752 s2n(s->d1->handshake_write_seq, d);
753 s->d1->handshake_write_seq++;
754
755 /* we should now have things packed up, so lets send
756 * it off */
757
758 s->init_num = n + DTLS1_HM_HEADER_LENGTH;
759 s->init_off = 0;
760
761 /* XDTLS: set message header ? */
762 msg_len = s->init_num - DTLS1_HM_HEADER_LENGTH;
763 dtls1_set_message_header(s, (void *)s->init_buf->data,
764 SSL3_MT_CERTIFICATE_REQUEST, msg_len, 0, msg_len);
765
766 /* buffer the message to handle re-xmits */
767 dtls1_buffer_message(s, 0);
768
769 s->state = SSL3_ST_SW_CERT_REQ_B;
770 }
771
772 /* SSL3_ST_SW_CERT_REQ_B */
773 return (dtls1_do_write(s, SSL3_RT_HANDSHAKE));
774err:
775 return (-1);
776}
777
778int
779dtls1_send_server_certificate(SSL *s) 703dtls1_send_server_certificate(SSL *s)
780{ 704{
781 unsigned long l; 705 unsigned long l;
diff --git a/src/lib/libssl/src/ssl/d1_srvr.c b/src/lib/libssl/src/ssl/d1_srvr.c
index 768c39eb25..7eae8ed4e4 100644
--- a/src/lib/libssl/src/ssl/d1_srvr.c
+++ b/src/lib/libssl/src/ssl/d1_srvr.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: d1_srvr.c,v 1.62 2015/09/12 14:28:23 jsing Exp $ */ 1/* $OpenBSD: d1_srvr.c,v 1.63 2015/09/12 14:32:24 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.
@@ -429,7 +429,7 @@ dtls1_accept(SSL *s)
429 } else { 429 } else {
430 s->s3->tmp.cert_request = 1; 430 s->s3->tmp.cert_request = 1;
431 dtls1_start_timer(s); 431 dtls1_start_timer(s);
432 ret = dtls1_send_certificate_request(s); 432 ret = ssl3_send_certificate_request(s);
433 if (ret <= 0) 433 if (ret <= 0)
434 goto end; 434 goto end;
435 s->state = SSL3_ST_SW_SRVR_DONE_A; 435 s->state = SSL3_ST_SW_SRVR_DONE_A;
@@ -700,82 +700,6 @@ dtls1_send_hello_verify_request(SSL *s)
700} 700}
701 701
702int 702int
703dtls1_send_certificate_request(SSL *s)
704{
705 unsigned char *p, *d;
706 int i, j, nl, off, n;
707 STACK_OF(X509_NAME) *sk = NULL;
708 X509_NAME *name;
709 BUF_MEM *buf;
710 unsigned int msg_len;
711
712 if (s->state == SSL3_ST_SW_CERT_REQ_A) {
713 buf = s->init_buf;
714
715 d = p=(unsigned char *)&(buf->data[DTLS1_HM_HEADER_LENGTH]);
716
717 /* get the list of acceptable cert types */
718 p++;
719 n = ssl3_get_req_cert_type(s, p);
720 d[0] = n;
721 p += n;
722 n++;
723
724 off = n;
725 p += 2;
726 n += 2;
727
728 sk = SSL_get_client_CA_list(s);
729 nl = 0;
730 if (sk != NULL) {
731 for (i = 0; i < sk_X509_NAME_num(sk); i++) {
732 name = sk_X509_NAME_value(sk, i);
733 j = i2d_X509_NAME(name, NULL);
734 if (!BUF_MEM_grow_clean(buf, DTLS1_HM_HEADER_LENGTH + n + j + 2)) {
735 SSLerr(SSL_F_DTLS1_SEND_CERTIFICATE_REQUEST, ERR_R_BUF_LIB);
736 goto err;
737 }
738 p = (unsigned char *)&(buf->data[DTLS1_HM_HEADER_LENGTH + n]);
739 s2n(j, p);
740 i2d_X509_NAME(name, &p);
741 n += 2 + j;
742 nl += 2 + j;
743 }
744 }
745 /* else no CA names */
746 p = (unsigned char *)&(buf->data[DTLS1_HM_HEADER_LENGTH + off]);
747 s2n(nl, p);
748
749 d = (unsigned char *)buf->data;
750 *(d++) = SSL3_MT_CERTIFICATE_REQUEST;
751 l2n3(n, d);
752 s2n(s->d1->handshake_write_seq, d);
753 s->d1->handshake_write_seq++;
754
755 /* we should now have things packed up, so lets send
756 * it off */
757
758 s->init_num = n + DTLS1_HM_HEADER_LENGTH;
759 s->init_off = 0;
760
761 /* XDTLS: set message header ? */
762 msg_len = s->init_num - DTLS1_HM_HEADER_LENGTH;
763 dtls1_set_message_header(s, (void *)s->init_buf->data,
764 SSL3_MT_CERTIFICATE_REQUEST, msg_len, 0, msg_len);
765
766 /* buffer the message to handle re-xmits */
767 dtls1_buffer_message(s, 0);
768
769 s->state = SSL3_ST_SW_CERT_REQ_B;
770 }
771
772 /* SSL3_ST_SW_CERT_REQ_B */
773 return (dtls1_do_write(s, SSL3_RT_HANDSHAKE));
774err:
775 return (-1);
776}
777
778int
779dtls1_send_server_certificate(SSL *s) 703dtls1_send_server_certificate(SSL *s)
780{ 704{
781 unsigned long l; 705 unsigned long l;
diff --git a/src/lib/libssl/src/ssl/ssl_locl.h b/src/lib/libssl/src/ssl/ssl_locl.h
index 6f030e6e53..130482dbba 100644
--- a/src/lib/libssl/src/ssl/ssl_locl.h
+++ b/src/lib/libssl/src/ssl/ssl_locl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_locl.h,v 1.125 2015/09/12 14:28:23 jsing Exp $ */ 1/* $OpenBSD: ssl_locl.h,v 1.126 2015/09/12 14:32:24 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 *
@@ -725,7 +725,6 @@ int ssl3_get_cert_verify(SSL *s);
725int ssl3_get_next_proto(SSL *s); 725int ssl3_get_next_proto(SSL *s);
726 726
727int dtls1_send_server_certificate(SSL *s); 727int dtls1_send_server_certificate(SSL *s);
728int dtls1_send_certificate_request(SSL *s);
729 728
730int ssl23_accept(SSL *s); 729int ssl23_accept(SSL *s);
731int ssl23_connect(SSL *s); 730int ssl23_connect(SSL *s);
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h
index 6f030e6e53..130482dbba 100644
--- a/src/lib/libssl/ssl_locl.h
+++ b/src/lib/libssl/ssl_locl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_locl.h,v 1.125 2015/09/12 14:28:23 jsing Exp $ */ 1/* $OpenBSD: ssl_locl.h,v 1.126 2015/09/12 14:32:24 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 *
@@ -725,7 +725,6 @@ int ssl3_get_cert_verify(SSL *s);
725int ssl3_get_next_proto(SSL *s); 725int ssl3_get_next_proto(SSL *s);
726 726
727int dtls1_send_server_certificate(SSL *s); 727int dtls1_send_server_certificate(SSL *s);
728int dtls1_send_certificate_request(SSL *s);
729 728
730int ssl23_accept(SSL *s); 729int ssl23_accept(SSL *s);
731int ssl23_connect(SSL *s); 730int ssl23_connect(SSL *s);