Skip to content

Commit d76ecc4

Browse files
alex-robbinspfalcon
authored andcommitted
ssl: Wrap ussl.wrap_socket().
Arguments whose values are the default are not passed to ussl, because many arguments are not accepted by current ussl implementations, even if the desired behavior is the same as when they are omitted.
1 parent a4a524e commit d76ecc4

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

ssl/ssl.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,28 @@
11
from ussl import *
2+
import ussl as _ussl
23

34
# Constants
45
for sym in "CERT_NONE", "CERT_OPTIONAL", "CERT_REQUIRED":
56
if sym not in globals():
67
globals()[sym] = object()
8+
9+
10+
def wrap_socket(sock, keyfile=None, certfile=None, server_side=False,
11+
cert_reqs=CERT_NONE, *, ca_certs=None, server_hostname=None):
12+
# TODO: More arguments accepted by CPython could also be handled here.
13+
# That would allow us to accept ca_certs as a positional argument, which
14+
# we should.
15+
kw = {}
16+
if keyfile is not None:
17+
kw["keyfile"] = keyfile
18+
if certfile is not None:
19+
kw["certfile"] = certfile
20+
if server_side is not False:
21+
kw["server_side"] = server_side
22+
if cert_reqs is not CERT_NONE:
23+
kw["cert_reqs"] = cert_reqs
24+
if ca_certs is not None:
25+
kw["ca_certs"] = ca_certs
26+
if server_hostname is not None:
27+
kw["server_hostname"] = server_hostname
28+
return _ussl.wrap_socket(sock, **kw)

0 commit comments

Comments
 (0)