summaryrefslogtreecommitdiff
path: root/src/lib/libssl/t1_lib.c
diff options
context:
space:
mode:
authorjsing <>2017-08-10 17:18:38 +0000
committerjsing <>2017-08-10 17:18:38 +0000
commitf6039d62295a1c6b1188b531731d233d196faf0d (patch)
treeaa09a427af12b5b2e6c7178a34d25bab71b31269 /src/lib/libssl/t1_lib.c
parent53bebfdbe69d92a9d3e68a860900ff0ebd428792 (diff)
downloadopenbsd-f6039d62295a1c6b1188b531731d233d196faf0d.tar.gz
openbsd-f6039d62295a1c6b1188b531731d233d196faf0d.tar.bz2
openbsd-f6039d62295a1c6b1188b531731d233d196faf0d.zip
Clean up the EC key/curve configuration handling.
Over the years OpenSSL grew multiple ways of being able to specify EC keys (and/or curves) for use with ECDH and ECDHE key exchange. You could specify a static EC key (SSL{_CTX,}_set_tmp_ecdh()), use that as a curve and generate ephemeral keys (SSL_OP_SINGLE_ECDH_USE), provide the EC key via a callback that was provided with insufficient information (SSL{_CTX,}_set_tmp_ecdh_cb()) or enable automatic selection and generation of EC keys via SSL{_CTX,}_set_ecdh_auto(). This complexity leads to problems (like ECDHE not being enabled) and potential weird configuration (like being able to do ECDHE without the ephemeral part...). We no longer support ECDH and ECDHE can be disabled by removing ECDHE ciphers from the cipher list. As such, permanently enable automatic EC curve selection and generation, effectively disabling all of the configuration knobs. The only exception is the SSL{_CTX,}_set_tmp_ecdh() functions, which retain part of their previous behaviour by configuring the curve of the given EC key as the only curve being enabled. Everything else becomes a no-op. ok beck@ doug@
Diffstat (limited to 'src/lib/libssl/t1_lib.c')
-rw-r--r--src/lib/libssl/t1_lib.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/src/lib/libssl/t1_lib.c b/src/lib/libssl/t1_lib.c
index ea44e7579a..42fd18fe2d 100644
--- a/src/lib/libssl/t1_lib.c
+++ b/src/lib/libssl/t1_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: t1_lib.c,v 1.123 2017/08/09 22:24:25 jsing Exp $ */ 1/* $OpenBSD: t1_lib.c,v 1.124 2017/08/10 17:18:38 jsing 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 *
@@ -611,18 +611,13 @@ tls1_check_ec_tmp_key(SSL *s)
611 EC_KEY *ec = s->cert->ecdh_tmp; 611 EC_KEY *ec = s->cert->ecdh_tmp;
612 uint16_t curve_id; 612 uint16_t curve_id;
613 613
614 if (s->cert->ecdh_tmp_auto != 0) { 614 /* Need a shared curve. */
615 /* Need a shared curve. */ 615 if (tls1_get_shared_curve(s) != NID_undef)
616 if (tls1_get_shared_curve(s) != NID_undef) 616 return (1);
617 return (1);
618 return (0);
619 }
620 617
621 if (ec == NULL) { 618 if (ec == NULL)
622 if (s->cert->ecdh_tmp_cb != NULL)
623 return (1);
624 return (0); 619 return (0);
625 } 620
626 if (tls1_set_ec_id(&curve_id, NULL, ec) != 1) 621 if (tls1_set_ec_id(&curve_id, NULL, ec) != 1)
627 return (0); 622 return (0);
628 623