summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/ssl.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/Lib/ssl.py b/Lib/ssl.py
index 6ec6af1..5ad9447 100644
--- a/Lib/ssl.py
+++ b/Lib/ssl.py
@@ -106,12 +106,26 @@ class sslsocket (socket):
self.ca_certs = ca_certs
def read(self, len=1024):
+
+ """Read up to LEN bytes and return them.
+ Return zero-length string on EOF."""
+
return self._sslobj.read(len)
def write(self, data):
+
+ """Write DATA to the underlying SSL channel. Returns
+ number of bytes of DATA actually transmitted."""
+
return self._sslobj.write(data)
def getpeercert(self):
+
+ """Returns a formatted version of the data in the
+ certificate provided by the other end of the SSL channel.
+ Return None if no certificate was provided, {} if a
+ certificate was provided, but not validated."""
+
return self._sslobj.peer_certificate()
def send (self, data, flags=0):
@@ -159,6 +173,10 @@ class sslsocket (socket):
return socket.recv_from(self, addr, buflen, flags)
def ssl_shutdown(self):
+
+ """Shuts down the SSL channel over this socket (if active),
+ without closing the socket connection."""
+
if self._sslobj:
self._sslobj.shutdown()
self._sslobj = None
@@ -172,6 +190,10 @@ class sslsocket (socket):
socket.close(self)
def connect(self, addr):
+
+ """Connects to remote ADDR, and then wraps the connection in
+ an SSL channel."""
+
# Here we assume that the socket is client-side, and not
# connected at the time of the call. We connect it, then wrap it.
if self._sslobj:
@@ -182,6 +204,11 @@ class sslsocket (socket):
self.ca_certs)
def accept(self):
+
+ """Accepts a new connection from a remote client, and returns
+ a tuple containing that new connection wrapped with a server-side
+ SSL channel, and the address of the remote client."""
+
newsock, addr = socket.accept(self)
return (sslsocket(newsock, True, self.keyfile, self.certfile,
self.cert_reqs, self.ssl_version,
@@ -191,6 +218,11 @@ class sslsocket (socket):
# some utility functions
def cert_time_to_seconds(cert_time):
+
+ """Takes a date-time string in standard ASN1_print form
+ ("MON DAY 24HOUR:MINUTE:SEC YEAR TIMEZONE") and return
+ a Python time value in seconds past the epoch."""
+
import time
return time.mktime(time.strptime(cert_time, "%b %d %H:%M:%S %Y GMT"))
@@ -198,5 +230,9 @@ def cert_time_to_seconds(cert_time):
def sslwrap_simple (sock, keyfile=None, certfile=None):
+ """A replacement for the old socket.ssl function. Designed
+ for compability with Python 2.5 and earlier. Will disappear in
+ Python 3.0."""
+
return _ssl.sslwrap(sock._sock, 0, keyfile, certfile, CERT_NONE,
PROTOCOL_SSLv23, None)