summaryrefslogtreecommitdiffstats
path: root/Doc/library/ssl.rst
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2014-10-10 10:05:56 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2014-10-10 10:05:56 (GMT)
commit41f92c2818a2ea63a82a444547c10d7f88a30f1a (patch)
treec493e7d92620176943995817bb57e5af8600db2f /Doc/library/ssl.rst
parent851a6cc07107a67c4fc1365a75cf209926a4bda4 (diff)
downloadcpython-41f92c2818a2ea63a82a444547c10d7f88a30f1a.zip
cpython-41f92c2818a2ea63a82a444547c10d7f88a30f1a.tar.gz
cpython-41f92c2818a2ea63a82a444547c10d7f88a30f1a.tar.bz2
Issue #22564: ssl doc: document read(), write(), pending, server_side and
server_hostname methods and attributes of SSLSocket.
Diffstat (limited to 'Doc/library/ssl.rst')
-rw-r--r--Doc/library/ssl.rst54
1 files changed, 54 insertions, 0 deletions
diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst
index 3c9c60f..7d89ea6 100644
--- a/Doc/library/ssl.rst
+++ b/Doc/library/ssl.rst
@@ -782,6 +782,41 @@ the specification of normal, OS-level sockets. See especially the
SSL sockets also have the following additional methods and attributes:
+.. method:: SSLSocket.read(len=0, buffer=None)
+
+ Read up to *len* bytes of data from the SSL socket and return the result as
+ a ``bytes`` instance. If *buffer* is specified, then read into the buffer
+ instead, and return the number of bytes read.
+
+ Raise :exc:`SSLWantReadError` or :exc:`SSLWantWriteError` if the socket is
+ non-blocking and the read would block.
+
+ As at any time a re-negotiation is possible, a call to :meth:`read` can also
+ cause write operations.
+
+.. method:: SSLSocket.write(buf)
+
+ Write *buf* to the SSL socket and return the number of bytes written. The
+ *buf* argument must be an object supporting the buffer interface.
+
+ Raise :exc:`SSLWantReadError` or :exc:`SSLWantWriteError` if the socket is
+ non-blocking and the write would block.
+
+ As at any time a re-negotiation is possible, a call to :meth:`write` can
+ also cause read operations.
+
+.. note::
+
+ The :meth:`~SSLSocket.read` and :meth:`~SSLSocket.write` methods are the
+ low-level methods that read and write unencrypted, application-level data
+ and and decrypt/encrypt it to encrypted, wire-level data. These methods
+ require an active SSL connection, i.e. the handshake was completed and
+ :meth:`SSLSocket.unwrap` was not called.
+
+ Normally you should use the socket API methods like
+ :meth:`~socket.socket.recv` and :meth:`~socket.socket.send` instead of these
+ methods.
+
.. method:: SSLSocket.do_handshake()
Perform the SSL setup handshake.
@@ -904,6 +939,11 @@ SSL sockets also have the following additional methods and attributes:
returned socket should always be used for further communication with the
other side of the connection, rather than the original socket.
+.. method:: SSLSocket.pending()
+
+ Returns the number of already decrypted bytes available for read, pending on
+ the connection.
+
.. attribute:: SSLSocket.context
The :class:`SSLContext` object this SSL socket is tied to. If the SSL
@@ -913,6 +953,20 @@ SSL sockets also have the following additional methods and attributes:
.. versionadded:: 3.2
+.. attribute:: SSLSocket.server_side
+
+ A boolean which is ``True`` for server-side sockets and ``False`` for
+ client-side sockets.
+
+ .. versionadded:: 3.2
+
+.. attribute:: SSLSocket.server_hostname
+
+ Hostname of the server: :class:`str` type, or ``None`` for server-side
+ socket or if the hostname was not specified in the constructor.
+
+ .. versionadded:: 3.2
+
SSL Contexts
------------