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