diff options
Diffstat (limited to '')
-rw-r--r-- | src/lib/libssl/tls13_server.c | 20 |
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 | ||