diff options
author | beck <> | 2018-11-16 02:41:16 +0000 |
---|---|---|
committer | beck <> | 2018-11-16 02:41:16 +0000 |
commit | bc7f7090db96e35bfcf73da923be89cb0b15c0e9 (patch) | |
tree | 81fc6ce79f085ec2150e52ecdda69a90efe41c22 | |
parent | b48e8a19a37f8c20a0c41e40ccd93d4e06600fb8 (diff) | |
download | openbsd-bc7f7090db96e35bfcf73da923be89cb0b15c0e9.tar.gz openbsd-bc7f7090db96e35bfcf73da923be89cb0b15c0e9.tar.bz2 openbsd-bc7f7090db96e35bfcf73da923be89cb0b15c0e9.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{ |