summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2021-06-27 19:23:51 +0000
committerjsing <>2021-06-27 19:23:51 +0000
commit965b27267cd3ec2efbae469ff3190c696e822852 (patch)
treea69f06d8a93017bbcd381361796ab0149ede3065 /src
parentfe2e9ea28e886fa3dae7e2d6035a86fae494be20 (diff)
downloadopenbsd-965b27267cd3ec2efbae469ff3190c696e822852.tar.gz
openbsd-965b27267cd3ec2efbae469ff3190c696e822852.tar.bz2
openbsd-965b27267cd3ec2efbae469ff3190c696e822852.zip
Track the sigalgs used by ourselves and our peer.
Move the sigalg pointer from SSL_HANDSHAKE_TLS13 to SSL_HANDSHAKE, naming it our_sigalg, adding an equivalent peer_sigalg. Adjust the TLSv1.3 code that records our signature algorithm. Add code to record the signature algorithm used by our peer. Needed for upcoming API additions. ok tb@
Diffstat (limited to 'src')
-rw-r--r--src/lib/libssl/ssl_locl.h9
-rw-r--r--src/lib/libssl/tls13_client.c7
-rw-r--r--src/lib/libssl/tls13_server.c7
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;