summaryrefslogtreecommitdiff
path: root/src/lib/libssl/s3_clnt.c
diff options
context:
space:
mode:
authorjsing <>2017-01-23 13:36:13 +0000
committerjsing <>2017-01-23 13:36:13 +0000
commit0eff443f2ac1ae9043870f2d40d9dc0d57f236d6 (patch)
tree84ee9c4c985fe1078df40f818b7697846dba1c18 /src/lib/libssl/s3_clnt.c
parent76088a8d37b68292f56046a6a4dea9544ad5ab89 (diff)
downloadopenbsd-0eff443f2ac1ae9043870f2d40d9dc0d57f236d6.tar.gz
openbsd-0eff443f2ac1ae9043870f2d40d9dc0d57f236d6.tar.bz2
openbsd-0eff443f2ac1ae9043870f2d40d9dc0d57f236d6.zip
Split most of SSL_METHOD out into an internal variant, which is opaque.
Discussed with beck@
Diffstat (limited to 'src/lib/libssl/s3_clnt.c')
-rw-r--r--src/lib/libssl/s3_clnt.c40
1 files changed, 20 insertions, 20 deletions
diff --git a/src/lib/libssl/s3_clnt.c b/src/lib/libssl/s3_clnt.c
index a6feb68e91..055f8d1f3a 100644
--- a/src/lib/libssl/s3_clnt.c
+++ b/src/lib/libssl/s3_clnt.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: s3_clnt.c,v 1.169 2017/01/23 08:48:44 beck Exp $ */ 1/* $OpenBSD: s3_clnt.c,v 1.170 2017/01/23 13:36:13 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 *
@@ -419,12 +419,12 @@ ssl3_connect(SSL *s)
419 s->internal->init_num = 0; 419 s->internal->init_num = 0;
420 420
421 s->session->cipher = S3I(s)->tmp.new_cipher; 421 s->session->cipher = S3I(s)->tmp.new_cipher;
422 if (!s->method->ssl3_enc->setup_key_block(s)) { 422 if (!s->method->internal->ssl3_enc->setup_key_block(s)) {
423 ret = -1; 423 ret = -1;
424 goto end; 424 goto end;
425 } 425 }
426 426
427 if (!s->method->ssl3_enc->change_cipher_state(s, 427 if (!s->method->internal->ssl3_enc->change_cipher_state(s,
428 SSL3_CHANGE_CIPHER_CLIENT_WRITE)) { 428 SSL3_CHANGE_CIPHER_CLIENT_WRITE)) {
429 ret = -1; 429 ret = -1;
430 goto end; 430 goto end;
@@ -444,8 +444,8 @@ ssl3_connect(SSL *s)
444 case SSL3_ST_CW_FINISHED_B: 444 case SSL3_ST_CW_FINISHED_B:
445 ret = ssl3_send_finished(s, SSL3_ST_CW_FINISHED_A, 445 ret = ssl3_send_finished(s, SSL3_ST_CW_FINISHED_A,
446 SSL3_ST_CW_FINISHED_B, 446 SSL3_ST_CW_FINISHED_B,
447 s->method->ssl3_enc->client_finished_label, 447 s->method->internal->ssl3_enc->client_finished_label,
448 s->method->ssl3_enc->client_finished_label_len); 448 s->method->internal->ssl3_enc->client_finished_label_len);
449 if (ret <= 0) 449 if (ret <= 0)
450 goto end; 450 goto end;
451 s->s3->flags |= SSL3_FLAGS_CCS_OK; 451 s->s3->flags |= SSL3_FLAGS_CCS_OK;
@@ -730,7 +730,7 @@ ssl3_get_server_hello(SSL *s)
730 int i, al, ok; 730 int i, al, ok;
731 long n; 731 long n;
732 732
733 n = s->method->ssl_get_message(s, SSL3_ST_CR_SRVR_HELLO_A, 733 n = s->method->internal->ssl_get_message(s, SSL3_ST_CR_SRVR_HELLO_A,
734 SSL3_ST_CR_SRVR_HELLO_B, -1, 20000, /* ?? */ &ok); 734 SSL3_ST_CR_SRVR_HELLO_B, -1, 20000, /* ?? */ &ok);
735 735
736 if (!ok) 736 if (!ok)
@@ -950,7 +950,7 @@ ssl3_get_server_certificate(SSL *s)
950 SESS_CERT *sc; 950 SESS_CERT *sc;
951 EVP_PKEY *pkey = NULL; 951 EVP_PKEY *pkey = NULL;
952 952
953 n = s->method->ssl_get_message(s, SSL3_ST_CR_CERT_A, 953 n = s->method->internal->ssl_get_message(s, SSL3_ST_CR_CERT_A,
954 SSL3_ST_CR_CERT_B, -1, s->internal->max_cert_list, &ok); 954 SSL3_ST_CR_CERT_B, -1, s->internal->max_cert_list, &ok);
955 955
956 if (!ok) 956 if (!ok)
@@ -1373,7 +1373,7 @@ ssl3_get_server_key_exchange(SSL *s)
1373 * Use same message size as in ssl3_get_certificate_request() 1373 * Use same message size as in ssl3_get_certificate_request()
1374 * as ServerKeyExchange message may be skipped. 1374 * as ServerKeyExchange message may be skipped.
1375 */ 1375 */
1376 n = s->method->ssl_get_message(s, SSL3_ST_CR_KEY_EXCH_A, 1376 n = s->method->internal->ssl_get_message(s, SSL3_ST_CR_KEY_EXCH_A,
1377 SSL3_ST_CR_KEY_EXCH_B, -1, s->internal->max_cert_list, &ok); 1377 SSL3_ST_CR_KEY_EXCH_B, -1, s->internal->max_cert_list, &ok);
1378 if (!ok) 1378 if (!ok)
1379 return ((int)n); 1379 return ((int)n);
@@ -1579,7 +1579,7 @@ ssl3_get_certificate_request(SSL *s)
1579 const unsigned char *q; 1579 const unsigned char *q;
1580 STACK_OF(X509_NAME) *ca_sk = NULL; 1580 STACK_OF(X509_NAME) *ca_sk = NULL;
1581 1581
1582 n = s->method->ssl_get_message(s, SSL3_ST_CR_CERT_REQ_A, 1582 n = s->method->internal->ssl_get_message(s, SSL3_ST_CR_CERT_REQ_A,
1583 SSL3_ST_CR_CERT_REQ_B, -1, s->internal->max_cert_list, &ok); 1583 SSL3_ST_CR_CERT_REQ_B, -1, s->internal->max_cert_list, &ok);
1584 1584
1585 if (!ok) 1585 if (!ok)
@@ -1756,7 +1756,7 @@ ssl3_get_new_session_ticket(SSL *s)
1756 long n; 1756 long n;
1757 CBS cbs, session_ticket; 1757 CBS cbs, session_ticket;
1758 1758
1759 n = s->method->ssl_get_message(s, SSL3_ST_CR_SESSION_TICKET_A, 1759 n = s->method->internal->ssl_get_message(s, SSL3_ST_CR_SESSION_TICKET_A,
1760 SSL3_ST_CR_SESSION_TICKET_B, -1, 16384, &ok); 1760 SSL3_ST_CR_SESSION_TICKET_B, -1, 16384, &ok);
1761 if (!ok) 1761 if (!ok)
1762 return ((int)n); 1762 return ((int)n);
@@ -1836,7 +1836,7 @@ ssl3_get_cert_status(SSL *s)
1836 long n; 1836 long n;
1837 uint8_t status_type; 1837 uint8_t status_type;
1838 1838
1839 n = s->method->ssl_get_message(s, SSL3_ST_CR_CERT_STATUS_A, 1839 n = s->method->internal->ssl_get_message(s, SSL3_ST_CR_CERT_STATUS_A,
1840 SSL3_ST_CR_CERT_STATUS_B, SSL3_MT_CERTIFICATE_STATUS, 1840 SSL3_ST_CR_CERT_STATUS_B, SSL3_MT_CERTIFICATE_STATUS,
1841 16384, &ok); 1841 16384, &ok);
1842 1842
@@ -1915,7 +1915,7 @@ ssl3_get_server_done(SSL *s)
1915 int ok, ret = 0; 1915 int ok, ret = 0;
1916 long n; 1916 long n;
1917 1917
1918 n = s->method->ssl_get_message(s, SSL3_ST_CR_SRVR_DONE_A, 1918 n = s->method->internal->ssl_get_message(s, SSL3_ST_CR_SRVR_DONE_A,
1919 SSL3_ST_CR_SRVR_DONE_B, SSL3_MT_SERVER_DONE, 1919 SSL3_ST_CR_SRVR_DONE_B, SSL3_MT_SERVER_DONE,
1920 30, /* should be very small, like 0 :-) */ &ok); 1920 30, /* should be very small, like 0 :-) */ &ok);
1921 1921
@@ -1979,7 +1979,7 @@ ssl3_send_client_kex_rsa(SSL *s, SESS_CERT *sess_cert, CBB *cbb)
1979 goto err; 1979 goto err;
1980 1980
1981 s->session->master_key_length = 1981 s->session->master_key_length =
1982 s->method->ssl3_enc->generate_master_secret(s, 1982 s->method->internal->ssl3_enc->generate_master_secret(s,
1983 s->session->master_key, pms, sizeof(pms)); 1983 s->session->master_key, pms, sizeof(pms));
1984 1984
1985 ret = 1; 1985 ret = 1;
@@ -2034,7 +2034,7 @@ ssl3_send_client_kex_dhe(SSL *s, SESS_CERT *sess_cert, CBB *cbb)
2034 2034
2035 /* Generate master key from the result. */ 2035 /* Generate master key from the result. */
2036 s->session->master_key_length = 2036 s->session->master_key_length =
2037 s->method->ssl3_enc->generate_master_secret(s, 2037 s->method->internal->ssl3_enc->generate_master_secret(s,
2038 s->session->master_key, key, key_len); 2038 s->session->master_key, key, key_len);
2039 2039
2040 if (!CBB_add_u16_length_prefixed(cbb, &dh_Yc)) 2040 if (!CBB_add_u16_length_prefixed(cbb, &dh_Yc))
@@ -2109,7 +2109,7 @@ ssl3_send_client_kex_ecdhe_ecp(SSL *s, SESS_CERT *sc, CBB *cbb)
2109 2109
2110 /* Generate master key from the result. */ 2110 /* Generate master key from the result. */
2111 s->session->master_key_length = 2111 s->session->master_key_length =
2112 s->method->ssl3_enc->generate_master_secret(s, 2112 s->method->internal->ssl3_enc->generate_master_secret(s,
2113 s->session->master_key, key, key_len); 2113 s->session->master_key, key, key_len);
2114 2114
2115 encoded_len = EC_POINT_point2oct(group, EC_KEY_get0_public_key(ecdh), 2115 encoded_len = EC_POINT_point2oct(group, EC_KEY_get0_public_key(ecdh),
@@ -2178,7 +2178,7 @@ ssl3_send_client_kex_ecdhe_ecx(SSL *s, SESS_CERT *sc, CBB *cbb)
2178 2178
2179 /* Generate master key from the result. */ 2179 /* Generate master key from the result. */
2180 s->session->master_key_length = 2180 s->session->master_key_length =
2181 s->method->ssl3_enc->generate_master_secret(s, 2181 s->method->internal->ssl3_enc->generate_master_secret(s,
2182 s->session->master_key, shared_key, X25519_KEY_LENGTH); 2182 s->session->master_key, shared_key, X25519_KEY_LENGTH);
2183 2183
2184 ret = 1; 2184 ret = 1;
@@ -2318,7 +2318,7 @@ ssl3_send_client_kex_gost(SSL *s, SESS_CERT *sess_cert, CBB *cbb)
2318 } 2318 }
2319 EVP_PKEY_CTX_free(pkey_ctx); 2319 EVP_PKEY_CTX_free(pkey_ctx);
2320 s->session->master_key_length = 2320 s->session->master_key_length =
2321 s->method->ssl3_enc->generate_master_secret(s, 2321 s->method->internal->ssl3_enc->generate_master_secret(s,
2322 s->session->master_key, premaster_secret, 32); 2322 s->session->master_key, premaster_secret, 32);
2323 2323
2324 ret = 1; 2324 ret = 1;
@@ -2415,7 +2415,7 @@ ssl3_send_client_verify(SSL *s)
2415 EVP_PKEY_sign_init(pctx); 2415 EVP_PKEY_sign_init(pctx);
2416 if (EVP_PKEY_CTX_set_signature_md(pctx, EVP_sha1()) > 0) { 2416 if (EVP_PKEY_CTX_set_signature_md(pctx, EVP_sha1()) > 0) {
2417 if (!SSL_USE_SIGALGS(s)) 2417 if (!SSL_USE_SIGALGS(s))
2418 s->method->ssl3_enc->cert_verify_mac(s, 2418 s->method->internal->ssl3_enc->cert_verify_mac(s,
2419 NID_sha1, &(data[MD5_DIGEST_LENGTH])); 2419 NID_sha1, &(data[MD5_DIGEST_LENGTH]));
2420 } else { 2420 } else {
2421 ERR_clear_error(); 2421 ERR_clear_error();
@@ -2449,7 +2449,7 @@ ssl3_send_client_verify(SSL *s)
2449 if (!tls1_digest_cached_records(s)) 2449 if (!tls1_digest_cached_records(s))
2450 goto err; 2450 goto err;
2451 } else if (pkey->type == EVP_PKEY_RSA) { 2451 } else if (pkey->type == EVP_PKEY_RSA) {
2452 s->method->ssl3_enc->cert_verify_mac( 2452 s->method->internal->ssl3_enc->cert_verify_mac(
2453 s, NID_md5, &(data[0])); 2453 s, NID_md5, &(data[0]));
2454 if (RSA_sign(NID_md5_sha1, data, 2454 if (RSA_sign(NID_md5_sha1, data,
2455 MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH, &(p[2]), 2455 MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH, &(p[2]),
@@ -2737,7 +2737,7 @@ ssl3_check_finished(SSL *s)
2737 return (1); 2737 return (1);
2738 /* this function is called when we really expect a Certificate 2738 /* this function is called when we really expect a Certificate
2739 * message, so permit appropriate message length */ 2739 * message, so permit appropriate message length */
2740 n = s->method->ssl_get_message(s, SSL3_ST_CR_CERT_A, 2740 n = s->method->internal->ssl_get_message(s, SSL3_ST_CR_CERT_A,
2741 SSL3_ST_CR_CERT_B, -1, s->internal->max_cert_list, &ok); 2741 SSL3_ST_CR_CERT_B, -1, s->internal->max_cert_list, &ok);
2742 if (!ok) 2742 if (!ok)
2743 return ((int)n); 2743 return ((int)n);