add some document.

small refactoring
This commit is contained in:
liris
2015-04-14 09:34:47 +09:00
parent d1b643fc61
commit 59d564fbd1
2 changed files with 21 additions and 12 deletions

View File

@@ -4,6 +4,7 @@ ChangeLog
- 0.30.0
- fixed if client is behind proxy (#169)
- support SNI for python 2.7.9+ and 3.2+ (#172)
- 0.29.0

View File

@@ -118,6 +118,24 @@ def _open_socket(addrinfo_list, sockopt, timeout):
return sock
def _can_use_sni():
return sys.version_info[2] >= 9 or (six.PY3 and sys.version_info[2] >= 2)
def _wrap_sni_socket(sock, sslopt, hostname):
context = ssl.create_default_context(cafile=sslopt.get('ca_certs', None))
context.options = sslopt.get('ssl_version', context.options)
context.verify_mode = sslopt['cert_reqs']
if 'ciphers' in sslopt:
context.set_ciphers(sslopt['ciphers'])
return context.wrap_socket(
sock,
do_handshake_on_connect=sslopt.get('do_handshake_on_connect', True),
suppress_ragged_eofs=sslopt.get('suppress_ragged_eofs', True),
server_hostname=hostname,
)
def _ssl_socket(sock, user_sslopt, hostname):
sslopt = dict(cert_reqs=ssl.CERT_REQUIRED)
certPath = os.path.join(
@@ -127,18 +145,8 @@ def _ssl_socket(sock, user_sslopt, hostname):
sslopt.update(user_sslopt)
check_hostname = sslopt.pop('check_hostname', True)
if sys.version_info[2] >= 9 or (six.PY3 and sys.version_info[2] >= 2):
context = ssl.create_default_context(cafile=sslopt.get('ca_certs', None))
context.options = sslopt.get('ssl_version', context.options)
context.verify_mode = sslopt['cert_reqs']
if 'ciphers' in sslopt:
context.set_ciphers(sslopt['ciphers'])
sock = context.wrap_socket(
sock,
do_handshake_on_connect=sslopt.get('do_handshake_on_connect', True),
suppress_ragged_eofs=sslopt.get('suppress_ragged_eofs', True),
server_hostname=hostname,
)
if _can_use_sni:
sock = _wrap_sni_socket(sock, sslopt, hostname)
else:
sock = ssl.wrap_socket(sock, **sslopt)