Skip to content
This repository was archived by the owner on Jan 13, 2021. It is now read-only.

Commit 3951307

Browse files
committed
Merge pull request #184 from mobify/development
Fixed typo in SSLContext
2 parents d395d57 + b2d2b7f commit 3951307

File tree

4 files changed

+79
-1
lines changed

4 files changed

+79
-1
lines changed

hyper/ssl_compat.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ def load_verify_locations(self, cafile=None, capath=None, cadata=None):
236236
def load_cert_chain(self, certfile, keyfile=None, password=None):
237237
self._ctx.use_certificate_file(certfile)
238238
if password is not None:
239-
self._ctx.set_password_cb(lambda max_length, prompt_twice, userdata: password)
239+
self._ctx.set_passwd_cb(lambda max_length, prompt_twice, userdata: password)
240240
self._ctx.use_privatekey_file(keyfile or certfile)
241241

242242
def set_npn_protocols(self, protocols):

test/certs/client.crt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICnzCCAggCCQCGXOeu96ab6zANBgkqhkiG9w0BAQsFADCBkzELMAkGA1UEBhMC
3+
Q0ExGTAXBgNVBAgMEEJyaXRpc2ggQ29sdW1iaWExEjAQBgNVBAcMCVZhbmNvdXZl
4+
cjEdMBsGA1UECgwUVGVzdCBDbGllbnQgQ2VydCBJbmMxGzAZBgNVBAsMElVuaXQg
5+
VGVzdCBEaXZpc2lvbjEZMBcGA1UEAwwQY2xpZW50LnRlc3QuY2VydDAeFw0xNTEy
6+
MjIyMjA4NDJaFw0xNjAxMjEyMjA4NDJaMIGTMQswCQYDVQQGEwJDQTEZMBcGA1UE
7+
CAwQQnJpdGlzaCBDb2x1bWJpYTESMBAGA1UEBwwJVmFuY291dmVyMR0wGwYDVQQK
8+
DBRUZXN0IENsaWVudCBDZXJ0IEluYzEbMBkGA1UECwwSVW5pdCBUZXN0IERpdmlz
9+
aW9uMRkwFwYDVQQDDBBjbGllbnQudGVzdC5jZXJ0MIGfMA0GCSqGSIb3DQEBAQUA
10+
A4GNADCBiQKBgQCzHp5Md/ALVxfxTQy2ZmKYKwzx8z5hQQT1lPzuLLR5tpWALhMz
11+
1t11nnMABzc0mUrtWQYQIt+skNnrna/snKhnFor9GABsPArtZPP+cdxvjr510okz
12+
X87bJjwD35wDmEEjJbpGVQl4MMmC+TVBDxXdVSJpS/Cx2DtsevBbrydsBwIDAQAB
13+
MA0GCSqGSIb3DQEBCwUAA4GBAIId1RjLsA5q3XRgMQs0zIez7bXjpnaNIfRVSZQm
14+
+xXZcDkGdIYG8zSjHM/oRotvMpA3vC03IplTO0HWbSNIywTtxuGoz2meyWu3hLUb
15+
wGT++dYEBzLkEZIi1bAYnSd14eLrrtkAbOf47pki0QSqGcIiwzwMV5dakziaUAcm
16+
jNUJ
17+
-----END CERTIFICATE-----

test/certs/client.key

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
Proc-Type: 4,ENCRYPTED
3+
DEK-Info: DES-EDE3-CBC,45F919D21278643B
4+
5+
6EzhPabgaJSsV6DPJRBRZFU0zhr6h8fXZTSu6ZtWVsovsc2mzfdpqtYsmFpY1Cdr
6+
066EVqkF0VDlWEvwhvdSRIdyDyc/9Hp75Lfevj0MZ9V7RaYJlLNtXOwYolBvfAAT
7+
p6c6Okr1GMUhUM6Y/mub7MJ4xQa6RFcnBrlfpUt7zrmfbrzeWdMSqIRCoxKiZy6T
8+
MP3qm8OnnwlsuCDgHXJWvTbQ4MQ1a7AzapLrX3fARM9SMS8I/tibh4f/ut+kUJbr
9+
tFfcfEokCqKDAbggdSdtURC112NuMv8niPkgr2C0mzijcxco59jMT9hZJHh+kAkP
10+
LUzwyFfdvsIgPbYYrlVOzgBCkXFUoy2prvRO9AxXjKHKWox9cC6Xq9s+3Au2OkVm
11+
WAbJcfogRDFRKM0T7OsC5FmwdFT6ITQCOttHSU9fIAWv0mVvyO9uR33NLTdyQg6r
12+
/LURXQa7xZ8rNdoxwqC88YG+L51mJFgw6T5h0brEbI0P0k8A3/rt8EHOkCgNOyQl
13+
mK+N8Wu+VcEHUpxWZJU651+qSvxLIYs9W50Kectrx+tr3OKE/Q/BMkJlld5T1/DH
14+
InJNf+TM0qyz0EgdCgkxQgYK4K71usLklbQX6L0Xuy6rDSmal/n/64HnvLFE444B
15+
59ljwXNJEN3tfhcLNKjBQE8IV4GlclN6RX/DF+45MRzXezIpn2rXZ0JhCAwtSbLC
16+
jEDzmRF5qW2iPEgZq4mURwwtTBMroKb7r+YwCQZvDAhgps1TujltsiTXFQ9rwR6q
17+
sAK9HztfRk1SJXuq3JXHAyneHbfl99EH08bc4TLwwX2s6dG0d8iH1w==
18+
-----END RSA PRIVATE KEY-----

test/test_hyper_SSLContext.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
Tests the hyper SSLContext.
4+
"""
5+
import os
6+
7+
import pytest
8+
9+
from hyper.compat import ssl
10+
try:
11+
from hyper.ssl_compat import SSLContext
12+
except ImportError:
13+
SSLContext = None
14+
15+
16+
TEST_DIR = os.path.abspath(os.path.dirname(__file__))
17+
TEST_CERTS_DIR = os.path.join(TEST_DIR, 'certs')
18+
CLIENT_CERT_FILE = os.path.join(TEST_CERTS_DIR, 'client.crt')
19+
CLIENT_KEY_FILE = os.path.join(TEST_CERTS_DIR, 'client.key')
20+
21+
22+
class TestHyperSSLContext(object):
23+
"""
24+
Tests hyper SSLContext
25+
"""
26+
27+
@pytest.mark.skipif(
28+
SSLContext is None,
29+
reason='requires PyOpenSSL'
30+
)
31+
def test_custom_context_with_cert_as_file(self):
32+
# Test using hyper's own SSLContext
33+
context = SSLContext(ssl.PROTOCOL_SSLv23)
34+
context.verify_mode = ssl.CERT_NONE
35+
context.check_hostname = False
36+
37+
# Test that we can load in a cert and key protected by a passphrase,
38+
# from files.
39+
context.load_cert_chain(
40+
certfile=CLIENT_CERT_FILE,
41+
keyfile=CLIENT_KEY_FILE,
42+
password='abc123'
43+
)

0 commit comments

Comments
 (0)