summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/libssl/ssl_clnt.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/src/lib/libssl/ssl_clnt.c b/src/lib/libssl/ssl_clnt.c
index a7a7bf93a5..4085fed39b 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.105 2021/06/29 19:43:15 jsing Exp $ */ 1/* $OpenBSD: ssl_clnt.c,v 1.106 2021/06/29 19:56:11 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 *
@@ -2317,9 +2317,9 @@ ssl3_send_client_key_exchange(SSL *s)
2317} 2317}
2318 2318
2319static int 2319static int
2320ssl3_send_client_verify_sigalgs(SSL *s, EVP_PKEY *pkey, CBB *cert_verify) 2320ssl3_send_client_verify_sigalgs(SSL *s, EVP_PKEY *pkey,
2321 const struct ssl_sigalg *sigalg, CBB *cert_verify)
2321{ 2322{
2322 const struct ssl_sigalg *sigalg;
2323 CBB cbb_signature; 2323 CBB cbb_signature;
2324 EVP_PKEY_CTX *pctx = NULL; 2324 EVP_PKEY_CTX *pctx = NULL;
2325 EVP_MD_CTX mctx; 2325 EVP_MD_CTX mctx;
@@ -2331,16 +2331,6 @@ ssl3_send_client_verify_sigalgs(SSL *s, EVP_PKEY *pkey, CBB *cert_verify)
2331 2331
2332 EVP_MD_CTX_init(&mctx); 2332 EVP_MD_CTX_init(&mctx);
2333 2333
2334 if ((sigalg = ssl_sigalg_select(s, pkey)) == NULL) {
2335 SSLerror(s, SSL_R_SIGNATURE_ALGORITHMS_ERROR);
2336 goto err;
2337 }
2338 if ((md = sigalg->md()) == NULL) {
2339 SSLerror(s, SSL_R_UNKNOWN_DIGEST);
2340 goto err;
2341 }
2342 S3I(s)->hs.our_sigalg = sigalg;
2343
2344 if (!tls1_transcript_data(s, &hdata, &hdata_len)) { 2334 if (!tls1_transcript_data(s, &hdata, &hdata_len)) {
2345 SSLerror(s, ERR_R_INTERNAL_ERROR); 2335 SSLerror(s, ERR_R_INTERNAL_ERROR);
2346 goto err; 2336 goto err;
@@ -2532,6 +2522,7 @@ ssl3_send_client_verify_gost(SSL *s, EVP_PKEY *pkey, CBB *cert_verify)
2532int 2522int
2533ssl3_send_client_verify(SSL *s) 2523ssl3_send_client_verify(SSL *s)
2534{ 2524{
2525 const struct ssl_sigalg *sigalg;
2535 CBB cbb, cert_verify; 2526 CBB cbb, cert_verify;
2536 EVP_PKEY *pkey; 2527 EVP_PKEY *pkey;
2537 2528
@@ -2543,13 +2534,19 @@ ssl3_send_client_verify(SSL *s)
2543 goto err; 2534 goto err;
2544 2535
2545 pkey = s->cert->key->privatekey; 2536 pkey = s->cert->key->privatekey;
2537 if ((sigalg = ssl_sigalg_select(s, pkey)) == NULL) {
2538 SSLerror(s, SSL_R_SIGNATURE_ALGORITHMS_ERROR);
2539 goto err;
2540 }
2541 S3I(s)->hs.our_sigalg = sigalg;
2546 2542
2547 /* 2543 /*
2548 * For TLS v1.2 send signature algorithm and signature using 2544 * For TLS v1.2 send signature algorithm and signature using
2549 * agreed digest and cached handshake records. 2545 * agreed digest and cached handshake records.
2550 */ 2546 */
2551 if (SSL_USE_SIGALGS(s)) { 2547 if (SSL_USE_SIGALGS(s)) {
2552 if (!ssl3_send_client_verify_sigalgs(s, pkey, &cert_verify)) 2548 if (!ssl3_send_client_verify_sigalgs(s, pkey, sigalg,
2549 &cert_verify))
2553 goto err; 2550 goto err;
2554 } else if (pkey->type == EVP_PKEY_RSA) { 2551 } else if (pkey->type == EVP_PKEY_RSA) {
2555 if (!ssl3_send_client_verify_rsa(s, pkey, &cert_verify)) 2552 if (!ssl3_send_client_verify_rsa(s, pkey, &cert_verify))