summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_tlsext.c
diff options
context:
space:
mode:
authorjsing <>2021-06-27 17:59:17 +0000
committerjsing <>2021-06-27 17:59:17 +0000
commit891146bbfc5899a9664de6a0a9cdd3e07e4b71be (patch)
tree9aa7a2ebffa610b50040d3f0f8342808ac133685 /src/lib/libssl/ssl_tlsext.c
parentd098f30c3e9d8c1b5b893995afa30e490e98bd85 (diff)
downloadopenbsd-891146bbfc5899a9664de6a0a9cdd3e07e4b71be.tar.gz
openbsd-891146bbfc5899a9664de6a0a9cdd3e07e4b71be.tar.bz2
openbsd-891146bbfc5899a9664de6a0a9cdd3e07e4b71be.zip
Change ssl_sigalgs_build() to perform sigalg list selection.
Rather that doing sigalg list selection at every call site, pass in the appropriate TLS version and have ssl_sigalgs_build() perform the sigalg list selection itself. This reduces code duplication, simplifies the calling code and is the first step towards internalising the sigalg lists. ok tb@
Diffstat (limited to 'src/lib/libssl/ssl_tlsext.c')
-rw-r--r--src/lib/libssl/ssl_tlsext.c24
1 files changed, 3 insertions, 21 deletions
diff --git a/src/lib/libssl/ssl_tlsext.c b/src/lib/libssl/ssl_tlsext.c
index 035d6b4564..22932f969d 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.95 2021/06/11 17:29:48 jsing Exp $ */ 1/* $OpenBSD: ssl_tlsext.c,v 1.96 2021/06/27 17:59:17 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,21 +558,12 @@ 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 const uint16_t *tls_sigalgs = tls12_sigalgs;
562 size_t tls_sigalgs_len = tls12_sigalgs_len;
563 CBB sigalgs; 561 CBB sigalgs;
564 562
565 if (S3I(s)->hs.our_min_tls_version >= TLS1_3_VERSION) {
566 tls_sigalgs = tls13_sigalgs;
567 tls_sigalgs_len = tls13_sigalgs_len;
568 }
569
570 if (!CBB_add_u16_length_prefixed(cbb, &sigalgs)) 563 if (!CBB_add_u16_length_prefixed(cbb, &sigalgs))
571 return 0; 564 return 0;
572 565 if (!ssl_sigalgs_build(S3I(s)->hs.our_min_tls_version, &sigalgs))
573 if (!ssl_sigalgs_build(&sigalgs, tls_sigalgs, tls_sigalgs_len))
574 return 0; 566 return 0;
575
576 if (!CBB_flush(cbb)) 567 if (!CBB_flush(cbb))
577 return 0; 568 return 0;
578 569
@@ -603,21 +594,12 @@ tlsext_sigalgs_server_needs(SSL *s, uint16_t msg_type)
603int 594int
604tlsext_sigalgs_server_build(SSL *s, uint16_t msg_type, CBB *cbb) 595tlsext_sigalgs_server_build(SSL *s, uint16_t msg_type, CBB *cbb)
605{ 596{
606 const uint16_t *tls_sigalgs = tls12_sigalgs;
607 size_t tls_sigalgs_len = tls12_sigalgs_len;
608 CBB sigalgs; 597 CBB sigalgs;
609 598
610 if (S3I(s)->hs.negotiated_tls_version >= TLS1_3_VERSION) {
611 tls_sigalgs = tls13_sigalgs;
612 tls_sigalgs_len = tls13_sigalgs_len;
613 }
614
615 if (!CBB_add_u16_length_prefixed(cbb, &sigalgs)) 599 if (!CBB_add_u16_length_prefixed(cbb, &sigalgs))
616 return 0; 600 return 0;
617 601 if (!ssl_sigalgs_build(S3I(s)->hs.negotiated_tls_version, &sigalgs))
618 if (!ssl_sigalgs_build(&sigalgs, tls_sigalgs, tls_sigalgs_len))
619 return 0; 602 return 0;
620
621 if (!CBB_flush(cbb)) 603 if (!CBB_flush(cbb))
622 return 0; 604 return 0;
623 605