diff options
| author | beck <> | 2018-11-16 02:41:16 +0000 |
|---|---|---|
| committer | beck <> | 2018-11-16 02:41:16 +0000 |
| commit | 69bf77d3b518cd8ed78eef6ac0fe903148c8fa95 (patch) | |
| tree | 81fc6ce79f085ec2150e52ecdda69a90efe41c22 | |
| parent | c68f49c1f250c7a1b71ff7df5f893ece438e0c28 (diff) | |
| download | openbsd-69bf77d3b518cd8ed78eef6ac0fe903148c8fa95.tar.gz openbsd-69bf77d3b518cd8ed78eef6ac0fe903148c8fa95.tar.bz2 openbsd-69bf77d3b518cd8ed78eef6ac0fe903148c8fa95.zip | |
Unbreak legacy ciphers for prior to 1.1 by setting having a legacy
sigalg for MD5_SHA1 and using it as the non sigalgs default
ok jsing@
| -rw-r--r-- | src/lib/libssl/ssl_cert.c | 8 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_clnt.c | 4 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_sigalgs.c | 15 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_sigalgs.h | 5 |
4 files changed, 22 insertions, 10 deletions
diff --git a/src/lib/libssl/ssl_cert.c b/src/lib/libssl/ssl_cert.c index 30bb74508d..e78335c5bb 100644 --- a/src/lib/libssl/ssl_cert.c +++ b/src/lib/libssl/ssl_cert.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_cert.c,v 1.70 2018/11/10 01:19:09 beck Exp $ */ | 1 | /* $OpenBSD: ssl_cert.c,v 1.71 2018/11/16 02:41:16 beck 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 | * |
| @@ -161,11 +161,11 @@ SSL_get_ex_data_X509_STORE_CTX_idx(void) | |||
| 161 | static void | 161 | static void |
| 162 | ssl_cert_set_default_sigalgs(CERT *cert) | 162 | ssl_cert_set_default_sigalgs(CERT *cert) |
| 163 | { | 163 | { |
| 164 | /* Set digest values to defaults */ | 164 | /* Set digest values to legacy defaults */ |
| 165 | cert->pkeys[SSL_PKEY_RSA_SIGN].sigalg = | 165 | cert->pkeys[SSL_PKEY_RSA_SIGN].sigalg = |
| 166 | ssl_sigalg_lookup(SIGALG_RSA_PKCS1_SHA1); | 166 | ssl_sigalg_lookup(SIGALG_RSA_PKCS1_MD5_SHA1); |
| 167 | cert->pkeys[SSL_PKEY_RSA_ENC].sigalg = | 167 | cert->pkeys[SSL_PKEY_RSA_ENC].sigalg = |
| 168 | ssl_sigalg_lookup(SIGALG_RSA_PKCS1_SHA1); | 168 | ssl_sigalg_lookup(SIGALG_RSA_PKCS1_MD5_SHA1); |
| 169 | cert->pkeys[SSL_PKEY_ECC].sigalg = | 169 | cert->pkeys[SSL_PKEY_ECC].sigalg = |
| 170 | ssl_sigalg_lookup(SIGALG_ECDSA_SHA1); | 170 | ssl_sigalg_lookup(SIGALG_ECDSA_SHA1); |
| 171 | #ifndef OPENSSL_NO_GOST | 171 | #ifndef OPENSSL_NO_GOST |
diff --git a/src/lib/libssl/ssl_clnt.c b/src/lib/libssl/ssl_clnt.c index 2094417994..2f9724f99f 100644 --- a/src/lib/libssl/ssl_clnt.c +++ b/src/lib/libssl/ssl_clnt.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_clnt.c,v 1.44 2018/11/11 21:54:47 beck Exp $ */ | 1 | /* $OpenBSD: ssl_clnt.c,v 1.45 2018/11/16 02:41:16 beck 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 | * |
| @@ -1533,7 +1533,7 @@ ssl3_get_server_key_exchange(SSL *s) | |||
| 1533 | goto f_err; | 1533 | goto f_err; |
| 1534 | } | 1534 | } |
| 1535 | } else if (pkey->type == EVP_PKEY_RSA) { | 1535 | } else if (pkey->type == EVP_PKEY_RSA) { |
| 1536 | sigalg = ssl_sigalg_lookup(SIGALG_RSA_PKCS1_SHA1); | 1536 | sigalg = ssl_sigalg_lookup(SIGALG_RSA_PKCS1_MD5_SHA1); |
| 1537 | } else if (pkey->type == EVP_PKEY_EC) { | 1537 | } else if (pkey->type == EVP_PKEY_EC) { |
| 1538 | sigalg = ssl_sigalg_lookup(SIGALG_ECDSA_SHA1); | 1538 | sigalg = ssl_sigalg_lookup(SIGALG_ECDSA_SHA1); |
| 1539 | } else { | 1539 | } else { |
diff --git a/src/lib/libssl/ssl_sigalgs.c b/src/lib/libssl/ssl_sigalgs.c index 835c40e74e..a6b4251d70 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.10 2018/11/14 02:27:15 beck Exp $ */ | 1 | /* $OpenBSD: ssl_sigalgs.c,v 1.11 2018/11/16 02:41:16 beck Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2018, Bob Beck <beck@openbsd.org> | 3 | * Copyright (c) 2018, Bob Beck <beck@openbsd.org> |
| 4 | * | 4 | * |
| @@ -153,6 +153,12 @@ const struct ssl_sigalg sigalgs[] = { | |||
| 153 | .pkey_idx = SSL_PKEY_ECC, | 153 | .pkey_idx = SSL_PKEY_ECC, |
| 154 | }, | 154 | }, |
| 155 | { | 155 | { |
| 156 | .value = SIGALG_RSA_PKCS1_MD5_SHA1, | ||
| 157 | .key_type = EVP_PKEY_RSA, | ||
| 158 | .pkey_idx = SSL_PKEY_RSA_SIGN, | ||
| 159 | .md = EVP_md5_sha1, | ||
| 160 | }, | ||
| 161 | { | ||
| 156 | .value = SIGALG_NONE, | 162 | .value = SIGALG_NONE, |
| 157 | }, | 163 | }, |
| 158 | }; | 164 | }; |
| @@ -209,7 +215,6 @@ ssl_sigalg(uint16_t sigalg, uint16_t *values, size_t len) | |||
| 209 | int | 215 | int |
| 210 | ssl_sigalgs_build(CBB *cbb, uint16_t *values, size_t len) | 216 | ssl_sigalgs_build(CBB *cbb, uint16_t *values, size_t len) |
| 211 | { | 217 | { |
| 212 | const struct ssl_sigalg *sap; | ||
| 213 | size_t i; | 218 | size_t i; |
| 214 | 219 | ||
| 215 | for (i = 0; sigalgs[i].value != SIGALG_NONE; i++); | 220 | for (i = 0; sigalgs[i].value != SIGALG_NONE; i++); |
| @@ -220,7 +225,11 @@ ssl_sigalgs_build(CBB *cbb, uint16_t *values, size_t len) | |||
| 220 | 225 | ||
| 221 | /* Add values in order as long as they are supported. */ | 226 | /* Add values in order as long as they are supported. */ |
| 222 | for (i = 0; i < len; i++) { | 227 | for (i = 0; i < len; i++) { |
| 223 | if ((sap = ssl_sigalg_lookup(values[i])) != NULL) { | 228 | /* Do not allow the legacy value for < 1.2 to be used */ |
| 229 | if (values[i] == SIGALG_RSA_PKCS1_MD5_SHA1) | ||
| 230 | return 0; | ||
| 231 | |||
| 232 | if (ssl_sigalg_lookup(values[i]) != NULL) { | ||
| 224 | if (!CBB_add_u16(cbb, values[i])) | 233 | if (!CBB_add_u16(cbb, values[i])) |
| 225 | return 0; | 234 | return 0; |
| 226 | } else | 235 | } else |
diff --git a/src/lib/libssl/ssl_sigalgs.h b/src/lib/libssl/ssl_sigalgs.h index 1bce6e8ee3..5ae595835b 100644 --- a/src/lib/libssl/ssl_sigalgs.h +++ b/src/lib/libssl/ssl_sigalgs.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_sigalgs.h,v 1.7 2018/11/11 21:54:47 beck Exp $ */ | 1 | /* $OpenBSD: ssl_sigalgs.h,v 1.8 2018/11/16 02:41:16 beck Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2018, Bob Beck <beck@openbsd.org> | 3 | * Copyright (c) 2018, Bob Beck <beck@openbsd.org> |
| 4 | * | 4 | * |
| @@ -55,6 +55,9 @@ __BEGIN_HIDDEN_DECLS | |||
| 55 | #define SIGALG_GOSTR12_256_STREEBOG_256 0xEEEE | 55 | #define SIGALG_GOSTR12_256_STREEBOG_256 0xEEEE |
| 56 | #define SIGALG_GOSTR01_GOST94 0xEDED | 56 | #define SIGALG_GOSTR01_GOST94 0xEDED |
| 57 | 57 | ||
| 58 | /* Legacy sigalg for < 1.2 same value as boring uses*/ | ||
| 59 | #define SIGALG_RSA_PKCS1_MD5_SHA1 0xFF01 | ||
| 60 | |||
| 58 | #define SIGALG_FLAG_RSA_PSS 0x00000001 | 61 | #define SIGALG_FLAG_RSA_PSS 0x00000001 |
| 59 | 62 | ||
| 60 | struct ssl_sigalg{ | 63 | struct ssl_sigalg{ |
