Skip to content

Commit

Permalink
Restore context.set_ciphers() to create_urllib3_context() (#1463)
Browse files Browse the repository at this point in the history
  • Loading branch information
sethmlarson committed Nov 1, 2018
1 parent 0aeba3b commit 0cedb3b
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 0 deletions.
2 changes: 2 additions & 0 deletions CHANGES.rst
Expand Up @@ -6,6 +6,8 @@ dev (master)

* Remove quadratic behavior within ``GzipDecoder.decompress()`` (Issue #1467)

* Restored functionality of `ciphers` parameter for `create_urllib3_context()`. (Issue #1462)

* ... [Short description of non-trivial change.] (Issue #)


Expand Down
2 changes: 2 additions & 0 deletions src/urllib3/util/ssl_.py
Expand Up @@ -263,6 +263,8 @@ def create_urllib3_context(ssl_version=None, cert_reqs=None,
"""
context = SSLContext(ssl_version or ssl.PROTOCOL_SSLv23)

context.set_ciphers(ciphers or DEFAULT_CIPHERS)

# Setting the default here, as we may have no ssl module on import
cert_reqs = ssl.CERT_REQUIRED if cert_reqs is None else cert_reqs

Expand Down
18 changes: 18 additions & 0 deletions test/test_ssl.py
Expand Up @@ -70,3 +70,21 @@ def test_sni_missing_warning_with_ip_addresses(monkeypatch, has_sni, server_host
assert SNIMissingWarning in warnings
else:
assert warn.call_count == 0


@pytest.mark.parametrize(
["ciphers", "expected_ciphers"],
[(None, ssl_.DEFAULT_CIPHERS),
("ECDH+AESGCM:ECDH+CHACHA20", "ECDH+AESGCM:ECDH+CHACHA20")]
)
def test_create_urllib3_context_set_ciphers(monkeypatch, ciphers, expected_ciphers):

context = mock.create_autospec(ssl_.SSLContext)
context.set_ciphers = mock.Mock()
context.options = 0
monkeypatch.setattr(ssl_, "SSLContext", lambda *_, **__: context)

assert ssl_.create_urllib3_context(ciphers=ciphers) is context

assert context.set_ciphers.call_count == 1
assert context.set_ciphers.call_args == mock.call(expected_ciphers)

0 comments on commit 0cedb3b

Please sign in to comment.