Skip to content

Commit

Permalink
Use SSLContext if available so we send SNI
Browse files Browse the repository at this point in the history
  • Loading branch information
jcristau committed Sep 13, 2018
1 parent b66212d commit a7ce7da
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 2 deletions.
11 changes: 10 additions & 1 deletion imaplib2/imaplib2.py
Original file line number Diff line number Diff line change
Expand Up @@ -545,7 +545,16 @@ def ssl_wrap_socket(self):

ssl_version = TLS_MAP[self.tls_level][self.ssl_version]

self.sock = ssl.wrap_socket(self.sock, self.keyfile, self.certfile, ca_certs=self.ca_certs, cert_reqs=cert_reqs, ssl_version=ssl_version)
if getattr(ssl, 'HAS_SNI', False):
ctx = ssl.SSLContext(ssl_version)
ctx.verify_mode = cert_reqs
if self.ca_certs is not None:
ctx.load_verify_locations(self.ca_certs)
if self.certfile or self.keyfile:
ctx.load_cert_chain(self.certfile, self.keyfile)
self.sock = ctx.wrap_socket(self.sock, server_hostname=self.host)
else:
self.sock = ssl.wrap_socket(self.sock, self.keyfile, self.certfile, ca_certs=self.ca_certs, cert_reqs=cert_reqs, ssl_version=ssl_version)
ssl_exc = ssl.SSLError
self.read_fd = self.sock.fileno()
except ImportError:
Expand Down
12 changes: 11 additions & 1 deletion imaplib2/imaplib2.py3
Original file line number Diff line number Diff line change
Expand Up @@ -492,7 +492,17 @@ class IMAP4(object):

ssl_version = TLS_MAP[self.tls_level][self.ssl_version]

self.sock = ssl.wrap_socket(self.sock, self.keyfile, self.certfile, ca_certs=self.ca_certs, cert_reqs=cert_reqs, ssl_version=ssl_version)
if getattr(ssl, 'HAS_SNI', False):
ctx = ssl.SSLContext(ssl_version)
ctx.verify_mode = cert_reqs
if self.ca_certs is not None:
ctx.load_verify_locations(self.ca_certs)
if self.certfile or self.keyfile:
ctx.load_cert_chain(self.certfile, self.keyfile)
self.sock = ctx.wrap_socket(self.sock, server_hostname=self.host)
else:
self.sock = ssl.wrap_socket(self.sock, self.keyfile, self.certfile, ca_certs=self.ca_certs, cert_reqs=cert_reqs, ssl_version=ssl_version)

ssl_exc = ssl.SSLError
self.read_fd = self.sock.fileno()
except ImportError:
Expand Down

0 comments on commit a7ce7da

Please sign in to comment.