diff options
| author | jsing <> | 2017-01-23 13:36:13 +0000 |
|---|---|---|
| committer | jsing <> | 2017-01-23 13:36:13 +0000 |
| commit | 4ae6fa4e9b3c20e6347b1b4ad62b1051ed5d7630 (patch) | |
| tree | 84ee9c4c985fe1078df40f818b7697846dba1c18 /src/lib/libssl/d1_srvr.c | |
| parent | d997e8b2da4774b32b9a1e6368bb19aca5bf82c2 (diff) | |
| download | openbsd-4ae6fa4e9b3c20e6347b1b4ad62b1051ed5d7630.tar.gz openbsd-4ae6fa4e9b3c20e6347b1b4ad62b1051ed5d7630.tar.bz2 openbsd-4ae6fa4e9b3c20e6347b1b4ad62b1051ed5d7630.zip | |
Split most of SSL_METHOD out into an internal variant, which is opaque.
Discussed with beck@
Diffstat (limited to 'src/lib/libssl/d1_srvr.c')
| -rw-r--r-- | src/lib/libssl/d1_srvr.c | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/src/lib/libssl/d1_srvr.c b/src/lib/libssl/d1_srvr.c index 2a68483169..1787412bf5 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.78 2017/01/23 10:22:06 jsing Exp $ */ | 1 | /* $OpenBSD: d1_srvr.c,v 1.79 2017/01/23 13:36:13 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. |
| @@ -128,7 +128,7 @@ | |||
| 128 | static const SSL_METHOD *dtls1_get_server_method(int ver); | 128 | static const SSL_METHOD *dtls1_get_server_method(int ver); |
| 129 | static int dtls1_send_hello_verify_request(SSL *s); | 129 | static int dtls1_send_hello_verify_request(SSL *s); |
| 130 | 130 | ||
| 131 | static const SSL_METHOD DTLSv1_server_method_data = { | 131 | static const SSL_METHOD_INTERNAL DTLSv1_server_method_internal_data = { |
| 132 | .version = DTLS1_VERSION, | 132 | .version = DTLS1_VERSION, |
| 133 | .min_version = DTLS1_VERSION, | 133 | .min_version = DTLS1_VERSION, |
| 134 | .max_version = DTLS1_VERSION, | 134 | .max_version = DTLS1_VERSION, |
| @@ -141,21 +141,25 @@ static const SSL_METHOD DTLSv1_server_method_data = { | |||
| 141 | .ssl_peek = ssl3_peek, | 141 | .ssl_peek = ssl3_peek, |
| 142 | .ssl_write = ssl3_write, | 142 | .ssl_write = ssl3_write, |
| 143 | .ssl_shutdown = dtls1_shutdown, | 143 | .ssl_shutdown = dtls1_shutdown, |
| 144 | .ssl_pending = ssl3_pending, | ||
| 145 | .get_ssl_method = dtls1_get_server_method, | ||
| 146 | .get_timeout = dtls1_default_timeout, | ||
| 147 | .ssl_version = ssl_undefined_void_function, | ||
| 144 | .ssl_renegotiate = ssl3_renegotiate, | 148 | .ssl_renegotiate = ssl3_renegotiate, |
| 145 | .ssl_renegotiate_check = ssl3_renegotiate_check, | 149 | .ssl_renegotiate_check = ssl3_renegotiate_check, |
| 146 | .ssl_get_message = dtls1_get_message, | 150 | .ssl_get_message = dtls1_get_message, |
| 147 | .ssl_read_bytes = dtls1_read_bytes, | 151 | .ssl_read_bytes = dtls1_read_bytes, |
| 148 | .ssl_write_bytes = dtls1_write_app_data_bytes, | 152 | .ssl_write_bytes = dtls1_write_app_data_bytes, |
| 153 | .ssl3_enc = &DTLSv1_enc_data, | ||
| 154 | }; | ||
| 155 | |||
| 156 | static const SSL_METHOD DTLSv1_server_method_data = { | ||
| 149 | .ssl_dispatch_alert = dtls1_dispatch_alert, | 157 | .ssl_dispatch_alert = dtls1_dispatch_alert, |
| 150 | .get_cipher_by_char = ssl3_get_cipher_by_char, | ||
| 151 | .put_cipher_by_char = ssl3_put_cipher_by_char, | ||
| 152 | .ssl_pending = ssl3_pending, | ||
| 153 | .num_ciphers = ssl3_num_ciphers, | 158 | .num_ciphers = ssl3_num_ciphers, |
| 154 | .get_cipher = dtls1_get_cipher, | 159 | .get_cipher = dtls1_get_cipher, |
| 155 | .get_ssl_method = dtls1_get_server_method, | 160 | .get_cipher_by_char = ssl3_get_cipher_by_char, |
| 156 | .get_timeout = dtls1_default_timeout, | 161 | .put_cipher_by_char = ssl3_put_cipher_by_char, |
| 157 | .ssl3_enc = &DTLSv1_enc_data, | 162 | .internal = &DTLSv1_server_method_internal_data, |
| 158 | .ssl_version = ssl_undefined_void_function, | ||
| 159 | }; | 163 | }; |
| 160 | 164 | ||
| 161 | const SSL_METHOD * | 165 | const SSL_METHOD * |
| @@ -519,9 +523,9 @@ dtls1_accept(SSL *s) | |||
| 519 | 523 | ||
| 520 | /* We need to get hashes here so if there is | 524 | /* We need to get hashes here so if there is |
| 521 | * a client cert, it can be verified */ | 525 | * a client cert, it can be verified */ |
| 522 | s->method->ssl3_enc->cert_verify_mac(s, | 526 | s->method->internal->ssl3_enc->cert_verify_mac(s, |
| 523 | NID_md5, &(S3I(s)->tmp.cert_verify_md[0])); | 527 | NID_md5, &(S3I(s)->tmp.cert_verify_md[0])); |
| 524 | s->method->ssl3_enc->cert_verify_mac(s, | 528 | s->method->internal->ssl3_enc->cert_verify_mac(s, |
| 525 | NID_sha1, | 529 | NID_sha1, |
| 526 | &(S3I(s)->tmp.cert_verify_md[MD5_DIGEST_LENGTH])); | 530 | &(S3I(s)->tmp.cert_verify_md[MD5_DIGEST_LENGTH])); |
| 527 | } | 531 | } |
| @@ -579,7 +583,7 @@ dtls1_accept(SSL *s) | |||
| 579 | case SSL3_ST_SW_CHANGE_B: | 583 | case SSL3_ST_SW_CHANGE_B: |
| 580 | 584 | ||
| 581 | s->session->cipher = S3I(s)->tmp.new_cipher; | 585 | s->session->cipher = S3I(s)->tmp.new_cipher; |
| 582 | if (!s->method->ssl3_enc->setup_key_block(s)) { | 586 | if (!s->method->internal->ssl3_enc->setup_key_block(s)) { |
| 583 | ret = -1; | 587 | ret = -1; |
| 584 | goto end; | 588 | goto end; |
| 585 | } | 589 | } |
| @@ -594,7 +598,7 @@ dtls1_accept(SSL *s) | |||
| 594 | s->internal->state = SSL3_ST_SW_FINISHED_A; | 598 | s->internal->state = SSL3_ST_SW_FINISHED_A; |
| 595 | s->internal->init_num = 0; | 599 | s->internal->init_num = 0; |
| 596 | 600 | ||
| 597 | if (!s->method->ssl3_enc->change_cipher_state(s, | 601 | if (!s->method->internal->ssl3_enc->change_cipher_state(s, |
| 598 | SSL3_CHANGE_CIPHER_SERVER_WRITE)) { | 602 | SSL3_CHANGE_CIPHER_SERVER_WRITE)) { |
| 599 | ret = -1; | 603 | ret = -1; |
| 600 | goto end; | 604 | goto end; |
| @@ -607,8 +611,8 @@ dtls1_accept(SSL *s) | |||
| 607 | case SSL3_ST_SW_FINISHED_B: | 611 | case SSL3_ST_SW_FINISHED_B: |
| 608 | ret = ssl3_send_finished(s, | 612 | ret = ssl3_send_finished(s, |
| 609 | SSL3_ST_SW_FINISHED_A, SSL3_ST_SW_FINISHED_B, | 613 | SSL3_ST_SW_FINISHED_A, SSL3_ST_SW_FINISHED_B, |
| 610 | s->method->ssl3_enc->server_finished_label, | 614 | s->method->internal->ssl3_enc->server_finished_label, |
| 611 | s->method->ssl3_enc->server_finished_label_len); | 615 | s->method->internal->ssl3_enc->server_finished_label_len); |
| 612 | if (ret <= 0) | 616 | if (ret <= 0) |
| 613 | goto end; | 617 | goto end; |
| 614 | s->internal->state = SSL3_ST_SW_FLUSH; | 618 | s->internal->state = SSL3_ST_SW_FLUSH; |
