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

Commit 632125d

Browse files
committed
Added test for setting cert on ssl_compat.SSLContext, with test data, fixed typo
1 parent 46f4b1b commit 632125d

File tree

4 files changed

+69
-1
lines changed

4 files changed

+69
-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: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
Tests the hyper SSLContext.
4+
"""
5+
import os
6+
7+
from hyper.compat import ssl
8+
from hyper.ssl_compat import SSLContext
9+
10+
11+
TEST_DIR = os.path.abspath(os.path.dirname(__file__))
12+
TEST_CERTS_DIR = os.path.join(TEST_DIR, 'certs')
13+
CLIENT_CERT_FILE = os.path.join(TEST_CERTS_DIR, 'client.crt')
14+
CLIENT_KEY_FILE = os.path.join(TEST_CERTS_DIR, 'client.key')
15+
16+
17+
class TestHyperSSLContext(object):
18+
"""
19+
Tests hyper SSLContext
20+
"""
21+
def test_custom_context_with_cert_as_file(self):
22+
# Test using hyper's own SSLContext
23+
context = SSLContext(ssl.PROTOCOL_SSLv23)
24+
context.verify_mode = ssl.CERT_NONE
25+
context.check_hostname = False
26+
27+
# Test that we can load in a cert and key protected by a passphrase,
28+
# from files.
29+
context.load_cert_chain(
30+
certfile=CLIENT_CERT_FILE,
31+
keyfile=CLIENT_KEY_FILE,
32+
password='abc123'
33+
)

0 commit comments

Comments
 (0)