diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libssl/ssl_locl.h | 9 | ||||
| -rw-r--r-- | src/lib/libssl/tls13_client.c | 7 | ||||
| -rw-r--r-- | src/lib/libssl/tls13_server.c | 7 |
3 files changed, 14 insertions, 9 deletions
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h index 5f99c08cc9..200219c141 100644 --- a/src/lib/libssl/ssl_locl.h +++ b/src/lib/libssl/ssl_locl.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_locl.h,v 1.351 2021/06/23 11:12:33 tb Exp $ */ | 1 | /* $OpenBSD: ssl_locl.h,v 1.352 2021/06/27 19:23:51 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 | * |
| @@ -444,9 +444,8 @@ typedef struct ssl_handshake_tls13_st { | |||
| 444 | int use_legacy; | 444 | int use_legacy; |
| 445 | int hrr; | 445 | int hrr; |
| 446 | 446 | ||
| 447 | /* Certificate and sigalg selected for use (static pointers). */ | 447 | /* Certificate selected for use (static pointer). */ |
| 448 | const CERT_PKEY *cpk; | 448 | const CERT_PKEY *cpk; |
| 449 | const struct ssl_sigalg *sigalg; | ||
| 450 | 449 | ||
| 451 | /* Version proposed by peer server. */ | 450 | /* Version proposed by peer server. */ |
| 452 | uint16_t server_version; | 451 | uint16_t server_version; |
| @@ -503,6 +502,10 @@ typedef struct ssl_handshake_st { | |||
| 503 | /* Extensions seen in this handshake. */ | 502 | /* Extensions seen in this handshake. */ |
| 504 | uint32_t extensions_seen; | 503 | uint32_t extensions_seen; |
| 505 | 504 | ||
| 505 | /* Signature algorithms selected for use (static pointers). */ | ||
| 506 | const struct ssl_sigalg *our_sigalg; | ||
| 507 | const struct ssl_sigalg *peer_sigalg; | ||
| 508 | |||
| 506 | /* sigalgs offered in this handshake in wire form */ | 509 | /* sigalgs offered in this handshake in wire form */ |
| 507 | uint8_t *sigalgs; | 510 | uint8_t *sigalgs; |
| 508 | size_t sigalgs_len; | 511 | size_t sigalgs_len; |
diff --git a/src/lib/libssl/tls13_client.c b/src/lib/libssl/tls13_client.c index 644b16e26c..4ba0dd92f2 100644 --- a/src/lib/libssl/tls13_client.c +++ b/src/lib/libssl/tls13_client.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: tls13_client.c,v 1.82 2021/06/27 18:15:35 jsing Exp $ */ | 1 | /* $OpenBSD: tls13_client.c,v 1.83 2021/06/27 19:23:51 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -697,6 +697,7 @@ tls13_server_certificate_verify_recv(struct tls13_ctx *ctx, CBS *cbs) | |||
| 697 | goto err; | 697 | goto err; |
| 698 | if (!ssl_sigalg_pkey_ok(sigalg, pkey, 1)) | 698 | if (!ssl_sigalg_pkey_ok(sigalg, pkey, 1)) |
| 699 | goto err; | 699 | goto err; |
| 700 | ctx->hs->peer_sigalg = sigalg; | ||
| 700 | 701 | ||
| 701 | if (CBS_len(&signature) > EVP_PKEY_size(pkey)) | 702 | if (CBS_len(&signature) > EVP_PKEY_size(pkey)) |
| 702 | goto err; | 703 | goto err; |
| @@ -898,7 +899,7 @@ tls13_client_certificate_send(struct tls13_ctx *ctx, CBB *cbb) | |||
| 898 | goto err; | 899 | goto err; |
| 899 | 900 | ||
| 900 | ctx->hs->tls13.cpk = cpk; | 901 | ctx->hs->tls13.cpk = cpk; |
| 901 | ctx->hs->tls13.sigalg = sigalg; | 902 | ctx->hs->our_sigalg = sigalg; |
| 902 | 903 | ||
| 903 | if (!CBB_add_u8_length_prefixed(cbb, &cert_request_context)) | 904 | if (!CBB_add_u8_length_prefixed(cbb, &cert_request_context)) |
| 904 | goto err; | 905 | goto err; |
| @@ -949,7 +950,7 @@ tls13_client_certificate_verify_send(struct tls13_ctx *ctx, CBB *cbb) | |||
| 949 | 950 | ||
| 950 | if ((cpk = ctx->hs->tls13.cpk) == NULL) | 951 | if ((cpk = ctx->hs->tls13.cpk) == NULL) |
| 951 | goto err; | 952 | goto err; |
| 952 | if ((sigalg = ctx->hs->tls13.sigalg) == NULL) | 953 | if ((sigalg = ctx->hs->our_sigalg) == NULL) |
| 953 | goto err; | 954 | goto err; |
| 954 | pkey = cpk->privatekey; | 955 | pkey = cpk->privatekey; |
| 955 | 956 | ||
diff --git a/src/lib/libssl/tls13_server.c b/src/lib/libssl/tls13_server.c index b68a2f9294..18cb056755 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.80 2021/06/27 18:15:35 jsing Exp $ */ | 1 | /* $OpenBSD: tls13_server.c,v 1.81 2021/06/27 19:23:51 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> |
| @@ -635,7 +635,7 @@ tls13_server_certificate_send(struct tls13_ctx *ctx, CBB *cbb) | |||
| 635 | } | 635 | } |
| 636 | 636 | ||
| 637 | ctx->hs->tls13.cpk = cpk; | 637 | ctx->hs->tls13.cpk = cpk; |
| 638 | ctx->hs->tls13.sigalg = sigalg; | 638 | ctx->hs->our_sigalg = sigalg; |
| 639 | 639 | ||
| 640 | if ((chain = cpk->chain) == NULL) | 640 | if ((chain = cpk->chain) == NULL) |
| 641 | chain = s->ctx->extra_certs; | 641 | chain = s->ctx->extra_certs; |
| @@ -708,7 +708,7 @@ tls13_server_certificate_verify_send(struct tls13_ctx *ctx, CBB *cbb) | |||
| 708 | 708 | ||
| 709 | if ((cpk = ctx->hs->tls13.cpk) == NULL) | 709 | if ((cpk = ctx->hs->tls13.cpk) == NULL) |
| 710 | goto err; | 710 | goto err; |
| 711 | if ((sigalg = ctx->hs->tls13.sigalg) == NULL) | 711 | if ((sigalg = ctx->hs->our_sigalg) == NULL) |
| 712 | goto err; | 712 | goto err; |
| 713 | pkey = cpk->privatekey; | 713 | pkey = cpk->privatekey; |
| 714 | 714 | ||
| @@ -996,6 +996,7 @@ tls13_client_certificate_verify_recv(struct tls13_ctx *ctx, CBS *cbs) | |||
| 996 | goto err; | 996 | goto err; |
| 997 | if (!ssl_sigalg_pkey_ok(sigalg, pkey, 1)) | 997 | if (!ssl_sigalg_pkey_ok(sigalg, pkey, 1)) |
| 998 | goto err; | 998 | goto err; |
| 999 | ctx->hs->peer_sigalg = sigalg; | ||
| 999 | 1000 | ||
| 1000 | if (CBS_len(&signature) > EVP_PKEY_size(pkey)) | 1001 | if (CBS_len(&signature) > EVP_PKEY_size(pkey)) |
| 1001 | goto err; | 1002 | goto err; |
