diff options
| author | jsing <> | 2021-06-27 17:59:17 +0000 |
|---|---|---|
| committer | jsing <> | 2021-06-27 17:59:17 +0000 |
| commit | 891146bbfc5899a9664de6a0a9cdd3e07e4b71be (patch) | |
| tree | 9aa7a2ebffa610b50040d3f0f8342808ac133685 /src/lib/libssl/ssl_sigalgs.c | |
| parent | d098f30c3e9d8c1b5b893995afa30e490e98bd85 (diff) | |
| download | openbsd-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 '')
| -rw-r--r-- | src/lib/libssl/ssl_sigalgs.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/lib/libssl/ssl_sigalgs.c b/src/lib/libssl/ssl_sigalgs.c index d3ac3d969d..590932bdf6 100644 --- a/src/lib/libssl/ssl_sigalgs.c +++ b/src/lib/libssl/ssl_sigalgs.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_sigalgs.c,v 1.26 2021/06/27 17:50:06 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_sigalgs.c,v 1.27 2021/06/27 17:59:17 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2018-2020 Bob Beck <beck@openbsd.org> | 3 | * Copyright (c) 2018-2020 Bob Beck <beck@openbsd.org> |
| 4 | * | 4 | * |
| @@ -174,6 +174,19 @@ const uint16_t tls12_sigalgs[] = { | |||
| 174 | }; | 174 | }; |
| 175 | const size_t tls12_sigalgs_len = (sizeof(tls12_sigalgs) / sizeof(tls12_sigalgs[0])); | 175 | const size_t tls12_sigalgs_len = (sizeof(tls12_sigalgs) / sizeof(tls12_sigalgs[0])); |
| 176 | 176 | ||
| 177 | static void | ||
| 178 | ssl_sigalgs_for_version(uint16_t tls_version, const uint16_t **out_values, | ||
| 179 | size_t *out_len) | ||
| 180 | { | ||
| 181 | if (tls_version >= TLS1_3_VERSION) { | ||
| 182 | *out_values = tls13_sigalgs; | ||
| 183 | *out_len = tls13_sigalgs_len; | ||
| 184 | } else { | ||
| 185 | *out_values = tls12_sigalgs; | ||
| 186 | *out_len = tls12_sigalgs_len; | ||
| 187 | } | ||
| 188 | } | ||
| 189 | |||
| 177 | const struct ssl_sigalg * | 190 | const struct ssl_sigalg * |
| 178 | ssl_sigalg_lookup(uint16_t sigalg) | 191 | ssl_sigalg_lookup(uint16_t sigalg) |
| 179 | { | 192 | { |
| @@ -201,10 +214,14 @@ ssl_sigalg(uint16_t sigalg, const uint16_t *values, size_t len) | |||
| 201 | } | 214 | } |
| 202 | 215 | ||
| 203 | int | 216 | int |
| 204 | ssl_sigalgs_build(CBB *cbb, const uint16_t *values, size_t len) | 217 | ssl_sigalgs_build(uint16_t tls_version, CBB *cbb) |
| 205 | { | 218 | { |
| 219 | const uint16_t *values; | ||
| 220 | size_t len; | ||
| 206 | size_t i; | 221 | size_t i; |
| 207 | 222 | ||
| 223 | ssl_sigalgs_for_version(tls_version, &values, &len); | ||
| 224 | |||
| 208 | /* Add values in order as long as they are supported. */ | 225 | /* Add values in order as long as they are supported. */ |
| 209 | for (i = 0; i < len; i++) { | 226 | for (i = 0; i < len; i++) { |
| 210 | /* Do not allow the legacy value for < 1.2 to be used. */ | 227 | /* Do not allow the legacy value for < 1.2 to be used. */ |
