Fixes #3135 - Replace _OpenSSLECCurve with crypto.get_elliptic_curve (#3157)

fixes #3135

Signed-off-by: Will Hunt will@half-shot.uk
This commit is contained in:
Will Hunt 2018-04-30 16:21:11 +01:00 committed by Richard van der Hoff
parent cead75fae3
commit 2ad3fc36e6
2 changed files with 8 additions and 8 deletions

View File

@ -13,8 +13,8 @@
# limitations under the License. # limitations under the License.
from twisted.internet import ssl from twisted.internet import ssl
from OpenSSL import SSL from OpenSSL import SSL, crypto
from twisted.internet._sslverify import _OpenSSLECCurve, _defaultCurveName from twisted.internet._sslverify import _defaultCurveName
import logging import logging
@ -32,8 +32,9 @@ class ServerContextFactory(ssl.ContextFactory):
@staticmethod @staticmethod
def configure_context(context, config): def configure_context(context, config):
try: try:
_ecCurve = _OpenSSLECCurve(_defaultCurveName) _ecCurve = crypto.get_elliptic_curve(_defaultCurveName)
_ecCurve.addECKeyToContext(context) context.set_tmp_ecdh(_ecCurve)
except Exception: except Exception:
logger.exception("Failed to enable elliptic curve for TLS") logger.exception("Failed to enable elliptic curve for TLS")
context.set_options(SSL.OP_NO_SSLv2 | SSL.OP_NO_SSLv3) context.set_options(SSL.OP_NO_SSLv2 | SSL.OP_NO_SSLv3)

View File

@ -39,12 +39,11 @@ REQUIREMENTS = {
"signedjson>=1.0.0": ["signedjson>=1.0.0"], "signedjson>=1.0.0": ["signedjson>=1.0.0"],
"pynacl>=1.2.1": ["nacl>=1.2.1", "nacl.bindings"], "pynacl>=1.2.1": ["nacl>=1.2.1", "nacl.bindings"],
"service_identity>=1.0.0": ["service_identity>=1.0.0"], "service_identity>=1.0.0": ["service_identity>=1.0.0"],
"Twisted>=16.0.0": ["twisted>=16.0.0"],
# we break under Twisted 18.4 # We use crypto.get_elliptic_curve which is only supported in >=0.15
# (https://github.com/matrix-org/synapse/issues/3135) "pyopenssl>=0.15": ["OpenSSL>=0.15"],
"Twisted>=16.0.0,<18.4": ["twisted>=16.0.0"],
"pyopenssl>=0.14": ["OpenSSL>=0.14"],
"pyyaml": ["yaml"], "pyyaml": ["yaml"],
"pyasn1": ["pyasn1"], "pyasn1": ["pyasn1"],
"daemonize": ["daemonize"], "daemonize": ["daemonize"],