summaryrefslogtreecommitdiff
path: root/src/lib/libssl/tls13_server.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib/libssl/tls13_server.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/lib/libssl/tls13_server.c b/src/lib/libssl/tls13_server.c
index 3330023430..10e49104d4 100644
--- a/src/lib/libssl/tls13_server.c
+++ b/src/lib/libssl/tls13_server.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls13_server.c,v 1.94 2022/01/11 18:39:28 jsing Exp $ */ 1/* $OpenBSD: tls13_server.c,v 1.95 2022/01/11 19:03:15 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2019, 2020 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2019, 2020 Joel Sing <jsing@openbsd.org>
4 * Copyright (c) 2020 Bob Beck <beck@openbsd.org> 4 * Copyright (c) 2020 Bob Beck <beck@openbsd.org>
@@ -857,7 +857,7 @@ tls13_client_certificate_recv(struct tls13_ctx *ctx, CBS *cbs)
857 X509 *cert = NULL; 857 X509 *cert = NULL;
858 EVP_PKEY *pkey; 858 EVP_PKEY *pkey;
859 const uint8_t *p; 859 const uint8_t *p;
860 int cert_idx; 860 int cert_type;
861 int ret = 0; 861 int ret = 0;
862 862
863 if (!CBS_get_u8_length_prefixed(cbs, &cert_request_context)) 863 if (!CBS_get_u8_length_prefixed(cbs, &cert_request_context))
@@ -918,24 +918,20 @@ tls13_client_certificate_recv(struct tls13_ctx *ctx, CBS *cbs)
918 goto err; 918 goto err;
919 if (EVP_PKEY_missing_parameters(pkey)) 919 if (EVP_PKEY_missing_parameters(pkey))
920 goto err; 920 goto err;
921 if ((cert_idx = ssl_cert_type(cert, pkey)) < 0) 921 if ((cert_type = ssl_cert_type(cert, pkey)) < 0)
922 goto err; 922 goto err;
923 923
924 sk_X509_pop_free(s->session->cert_chain, X509_free);
925 s->session->cert_chain = certs;
926 certs = NULL;
927
928 X509_up_ref(cert);
929 X509_free(s->session->peer_pkeys[cert_idx].x509);
930 s->session->peer_pkeys[cert_idx].x509 = cert;
931 s->session->peer_key = &s->session->peer_pkeys[cert_idx];
932
933 X509_up_ref(cert); 924 X509_up_ref(cert);
934 X509_free(s->session->peer_cert); 925 X509_free(s->session->peer_cert);
935 s->session->peer_cert = cert; 926 s->session->peer_cert = cert;
927 s->session->peer_cert_type = cert_type;
936 928
937 s->session->verify_result = s->verify_result; 929 s->session->verify_result = s->verify_result;
938 930
931 sk_X509_pop_free(s->session->cert_chain, X509_free);
932 s->session->cert_chain = certs;
933 certs = NULL;
934
939 ctx->handshake_stage.hs_type |= WITH_CCV; 935 ctx->handshake_stage.hs_type |= WITH_CCV;
940 ret = 1; 936 ret = 1;
941 937