summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2021-06-29 19:31:16 +0000
committerjsing <>2021-06-29 19:31:16 +0000
commitd0f4c6c8d88f67e8c5b9cfc675014a2842294d70 (patch)
treee36c2a84830261004e85932b8c126629ad157155 /src
parent8d59110527cec018fea3a4d0ac7b9798140cd735 (diff)
downloadopenbsd-d0f4c6c8d88f67e8c5b9cfc675014a2842294d70.tar.gz
openbsd-d0f4c6c8d88f67e8c5b9cfc675014a2842294d70.tar.bz2
openbsd-d0f4c6c8d88f67e8c5b9cfc675014a2842294d70.zip
Use appropriate TLS version when building client sigalg extensions.
Only use the minimum TLS version to when building a signature algorithms extension for a ClientHello - in all other cases we should be using the negotiated TLS version. ok inoguchi@ tb@
Diffstat (limited to 'src')
-rw-r--r--src/lib/libssl/ssl_tlsext.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/lib/libssl/ssl_tlsext.c b/src/lib/libssl/ssl_tlsext.c
index 22932f969d..2eac4947e9 100644
--- a/src/lib/libssl/ssl_tlsext.c
+++ b/src/lib/libssl/ssl_tlsext.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_tlsext.c,v 1.96 2021/06/27 17:59:17 jsing Exp $ */ 1/* $OpenBSD: ssl_tlsext.c,v 1.97 2021/06/29 19:31:16 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2016, 2017, 2019 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2016, 2017, 2019 Joel Sing <jsing@openbsd.org>
4 * Copyright (c) 2017 Doug Hogan <doug@openbsd.org> 4 * Copyright (c) 2017 Doug Hogan <doug@openbsd.org>
@@ -558,11 +558,15 @@ tlsext_sigalgs_client_needs(SSL *s, uint16_t msg_type)
558int 558int
559tlsext_sigalgs_client_build(SSL *s, uint16_t msg_type, CBB *cbb) 559tlsext_sigalgs_client_build(SSL *s, uint16_t msg_type, CBB *cbb)
560{ 560{
561 uint16_t tls_version = S3I(s)->hs.negotiated_tls_version;
561 CBB sigalgs; 562 CBB sigalgs;
562 563
564 if (msg_type == SSL_TLSEXT_MSG_CH)
565 tls_version = S3I(s)->hs.our_min_tls_version;
566
563 if (!CBB_add_u16_length_prefixed(cbb, &sigalgs)) 567 if (!CBB_add_u16_length_prefixed(cbb, &sigalgs))
564 return 0; 568 return 0;
565 if (!ssl_sigalgs_build(S3I(s)->hs.our_min_tls_version, &sigalgs)) 569 if (!ssl_sigalgs_build(tls_version, &sigalgs))
566 return 0; 570 return 0;
567 if (!CBB_flush(cbb)) 571 if (!CBB_flush(cbb))
568 return 0; 572 return 0;