blob: 570fa7d2a76a6b9ed85f89b15c5596cb448b9291 [file] [log] [blame]
Jonathan Ballet6381da32011-07-20 16:43:38 +09001.. _openssl-ssl:
2
3:py:mod:`SSL` --- An interface to the SSL-specific parts of OpenSSL
4===================================================================
5
Jonathan Balletc9e066c2011-07-17 22:56:05 +09006.. py:module:: OpenSSL.SSL
Jonathan Ballet6381da32011-07-20 16:43:38 +09007 :synopsis: An interface to the SSL-specific parts of OpenSSL
Jonathan Balletc9e066c2011-07-17 22:56:05 +09008
Jonathan Balletc9e066c2011-07-17 22:56:05 +09009
10This module handles things specific to SSL. There are two objects defined:
11Context, Connection.
12
13.. py:data:: SSLv2_METHOD
Jonathan Ballet6381da32011-07-20 16:43:38 +090014 SSLv3_METHOD
15 SSLv23_METHOD
16 TLSv1_METHOD
Jean-Paul Calderone1461c492013-10-03 16:05:00 -040017 TLSv1_1_METHOD
18 TLSv1_2_METHOD
Jonathan Balletc9e066c2011-07-17 22:56:05 +090019
20 These constants represent the different SSL methods to use when creating a
Jean-Paul Calderone1461c492013-10-03 16:05:00 -040021 context object. If the underlying OpenSSL build is missing support for any
22 of these protocols, constructing a :py:class:`Context` using the
23 corresponding :py:const:`*_METHOD` will raise an exception.
Jonathan Balletc9e066c2011-07-17 22:56:05 +090024
25
26.. py:data:: VERIFY_NONE
Jonathan Ballet6381da32011-07-20 16:43:38 +090027 VERIFY_PEER
28 VERIFY_FAIL_IF_NO_PEER_CERT
Jonathan Balletc9e066c2011-07-17 22:56:05 +090029
30 These constants represent the verification mode used by the Context
31 object's :py:meth:`set_verify` method.
32
33
34.. py:data:: FILETYPE_PEM
Jonathan Ballet6381da32011-07-20 16:43:38 +090035 FILETYPE_ASN1
Jonathan Balletc9e066c2011-07-17 22:56:05 +090036
37 File type constants used with the :py:meth:`use_certificate_file` and
38 :py:meth:`use_privatekey_file` methods of Context objects.
39
40
41.. py:data:: OP_SINGLE_DH_USE
Jean-Paul Calderone1461c492013-10-03 16:05:00 -040042
43 Constant used with :py:meth:`set_options` of Context objects.
44
45 When this option is used, a new key will always be created when using
46 ephemeral Diffie-Hellman.
47
48
49.. py:data:: OP_EPHEMERAL_RSA
50
51 Constant used with :py:meth:`set_options` of Context objects.
52
53 When this option is used, ephemeral RSA keys will always be used when doing
54 RSA operations.
55
56
57.. py:data:: OP_NO_TICKET
58
59 Constant used with :py:meth:`set_options` of Context objects.
60
61 When this option is used, the session ticket extension will not be used.
62
63
64.. py:data:: OP_NO_COMPRESSION
65
66 Constant used with :py:meth:`set_options` of Context objects.
67
68 When this option is used, compression will not be used.
69
70
71.. py:data:: OP_NO_SSLv2
Jonathan Ballet6381da32011-07-20 16:43:38 +090072 OP_NO_SSLv3
73 OP_NO_TLSv1
Jean-Paul Calderone1461c492013-10-03 16:05:00 -040074 OP_NO_TLSv1_1
75 OP_NO_TLSv1_2
Jonathan Balletc9e066c2011-07-17 22:56:05 +090076
77 Constants used with :py:meth:`set_options` of Context objects.
78
Jean-Paul Calderone1461c492013-10-03 16:05:00 -040079 Each of these options disables one version of the SSL/TLS protocol. This
80 is interesting if you're using e.g. :py:const:`SSLv23_METHOD` to get an
81 SSLv2-compatible handshake, but don't want to use SSLv2. If the underlying
82 OpenSSL build is missing support for any of these protocols, the
83 :py:const:`OP_NO_*` constant may be undefined.
Jonathan Balletc9e066c2011-07-17 22:56:05 +090084
85
Jean-Paul Calderone21641542011-09-11 09:18:14 -040086.. py:data:: MODE_NO_COMPRESSION
87
88 Constant used with :py:meth:`set_mode` of Context objects to disable
89 automatic compression of application traffic.
90
91
Jonathan Balletc9e066c2011-07-17 22:56:05 +090092.. py:data:: SSLEAY_VERSION
Jonathan Ballet6381da32011-07-20 16:43:38 +090093 SSLEAY_CFLAGS
94 SSLEAY_BUILT_ON
95 SSLEAY_PLATFORM
96 SSLEAY_DIR
Jonathan Balletc9e066c2011-07-17 22:56:05 +090097
98 Constants used with :py:meth:`SSLeay_version` to specify what OpenSSL version
99 information to retrieve. See the man page for the :py:func:`SSLeay_version` C
100 API for details.
101
Jean-Paul Calderone1461c492013-10-03 16:05:00 -0400102
Jean-Paul Calderone8e8f90c2012-02-08 13:16:26 -0500103.. py:data:: SESS_CACHE_OFF
104 SESS_CACHE_CLIENT
105 SESS_CACHE_SERVER
106 SESS_CACHE_BOTH
107 SESS_CACHE_NO_AUTO_CLEAR
108 SESS_CACHE_NO_INTERNAL_LOOKUP
109 SESS_CACHE_NO_INTERNAL_STORE
110 SESS_CACHE_NO_INTERNAL
111
112 Constants used with :py:meth:`Context.set_session_cache_mode` to specify
113 the behavior of the session cache and potential session reuse. See the man
114 page for the :py:func:`SSL_CTX_set_session_cache_mode` C API for details.
115
116 .. versionadded:: 0.14
Jonathan Balletc9e066c2011-07-17 22:56:05 +0900117
Jean-Paul Calderone1461c492013-10-03 16:05:00 -0400118
Jonathan Balletc9e066c2011-07-17 22:56:05 +0900119.. py:data:: OPENSSL_VERSION_NUMBER
120
121 An integer giving the version number of the OpenSSL library used to build this
122 version of pyOpenSSL. See the man page for the :py:func:`SSLeay_version` C API
123 for details.
124
125
126.. py:function:: SSLeay_version(type)
127
128 Retrieve a string describing some aspect of the underlying OpenSSL version. The
129 type passed in should be one of the :py:const:`SSLEAY_*` constants defined in
130 this module.
131
132
133.. py:data:: ContextType
134
135 See :py:class:`Context`.
136
137
138.. py:class:: Context(method)
139
140 A class representing SSL contexts. Contexts define the parameters of one or
141 more SSL connections.
142
143 *method* should be :py:const:`SSLv2_METHOD`, :py:const:`SSLv3_METHOD`,
Jean-Paul Calderone1461c492013-10-03 16:05:00 -0400144 :py:const:`SSLv23_METHOD`, :py:const:`TLSv1_METHOD`, :py:const:`TLSv1_1_METHOD`,
145 or :py:const:`TLSv1_2_METHOD`.
Jonathan Balletc9e066c2011-07-17 22:56:05 +0900146
147
Jean-Paul Calderone6c896fe2012-02-16 08:10:04 -0500148.. py:class:: Session()
149
150 A class representing an SSL session. A session defines certain connection
151 parameters which may be re-used to speed up the setup of subsequent
152 connections.
153
154 .. versionadded:: 0.14
155
156
Jonathan Balletc9e066c2011-07-17 22:56:05 +0900157.. py:data:: ConnectionType
158
159 See :py:class:`Connection`.
160
161
162.. py:class:: Connection(context, socket)
163
164 A class representing SSL connections.
165
166 *context* should be an instance of :py:class:`Context` and *socket*
167 should be a socket [#connection-context-socket]_ object. *socket* may be
168 *None*; in this case, the Connection is created with a memory BIO: see
169 the :py:meth:`bio_read`, :py:meth:`bio_write`, and :py:meth:`bio_shutdown`
170 methods.
171
172.. py:exception:: Error
173
174 This exception is used as a base class for the other SSL-related
175 exceptions, but may also be raised directly.
176
177 Whenever this exception is raised directly, it has a list of error messages
178 from the OpenSSL error queue, where each item is a tuple *(lib, function,
179 reason)*. Here *lib*, *function* and *reason* are all strings, describing
180 where and what the problem is. See :manpage:`err(3)` for more information.
181
182
183.. py:exception:: ZeroReturnError
184
185 This exception matches the error return code
186 :py:data:`SSL_ERROR_ZERO_RETURN`, and is raised when the SSL Connection has
187 been closed. In SSL 3.0 and TLS 1.0, this only occurs if a closure alert has
188 occurred in the protocol, i.e. the connection has been closed cleanly. Note
189 that this does not necessarily mean that the transport layer (e.g. a socket)
190 has been closed.
191
192 It may seem a little strange that this is an exception, but it does match an
193 :py:data:`SSL_ERROR` code, and is very convenient.
194
195
196.. py:exception:: WantReadError
197
198 The operation did not complete; the same I/O method should be called again
199 later, with the same arguments. Any I/O method can lead to this since new
200 handshakes can occur at any time.
201
202 The wanted read is for **dirty** data sent over the network, not the
203 **clean** data inside the tunnel. For a socket based SSL connection,
204 **read** means data coming at us over the network. Until that read
205 succeeds, the attempted :py:meth:`OpenSSL.SSL.Connection.recv`,
206 :py:meth:`OpenSSL.SSL.Connection.send`, or
207 :py:meth:`OpenSSL.SSL.Connection.do_handshake` is prevented or incomplete. You
208 probably want to :py:meth:`select()` on the socket before trying again.
209
210
211.. py:exception:: WantWriteError
212
213 See :py:exc:`WantReadError`. The socket send buffer may be too full to
214 write more data.
215
216
217.. py:exception:: WantX509LookupError
218
219 The operation did not complete because an application callback has asked to be
220 called again. The I/O method should be called again later, with the same
221 arguments.
222
223 .. note:: This won't occur in this version, as there are no such
224 callbacks in this version.
225
226
227.. py:exception:: SysCallError
228
229 The :py:exc:`SysCallError` occurs when there's an I/O error and OpenSSL's
230 error queue does not contain any information. This can mean two things: An
231 error in the transport protocol, or an end of file that violates the protocol.
232 The parameter to the exception is always a pair *(errnum,
233 errstr)*.
234
235
236
237.. _openssl-context:
238
239Context objects
240---------------
241
242Context objects have the following methods:
243
244.. :py:class:: OpenSSL.SSL.Context
245
246.. py:method:: Context.check_privatekey()
247
248 Check if the private key (loaded with :py:meth:`use_privatekey`) matches the
249 certificate (loaded with :py:meth:`use_certificate`). Returns
250 :py:data:`None` if they match, raises :py:exc:`Error` otherwise.
251
252
253.. py:method:: Context.get_app_data()
254
255 Retrieve application data as set by :py:meth:`set_app_data`.
256
257
258.. py:method:: Context.get_cert_store()
259
260 Retrieve the certificate store (a X509Store object) that the context uses.
261 This can be used to add "trusted" certificates without using the.
262 :py:meth:`load_verify_locations` method.
263
264
265.. py:method:: Context.get_timeout()
266
267 Retrieve session timeout, as set by :py:meth:`set_timeout`. The default is 300
268 seconds.
269
270
271.. py:method:: Context.get_verify_depth()
272
273 Retrieve the Context object's verify depth, as set by
274 :py:meth:`set_verify_depth`.
275
276
277.. py:method:: Context.get_verify_mode()
278
279 Retrieve the Context object's verify mode, as set by :py:meth:`set_verify`.
280
281
282.. py:method:: Context.load_client_ca(pemfile)
283
284 Read a file with PEM-formatted certificates that will be sent to the client
285 when requesting a client certificate.
286
287
288.. py:method:: Context.set_client_ca_list(certificate_authorities)
289
290 Replace the current list of preferred certificate signers that would be
291 sent to the client when requesting a client certificate with the
292 *certificate_authorities* sequence of :py:class:`OpenSSL.crypto.X509Name`'s.
293
294 .. versionadded:: 0.10
295
296
297.. py:method:: Context.add_client_ca(certificate_authority)
298
299 Extract a :py:class:`OpenSSL.crypto.X509Name` from the *certificate_authority*
300 :py:class:`OpenSSL.crypto.X509` certificate and add it to the list of preferred
301 certificate signers sent to the client when requesting a client certificate.
302
303 .. versionadded:: 0.10
304
305
306.. py:method:: Context.load_verify_locations(pemfile, capath)
307
308 Specify where CA certificates for verification purposes are located. These
309 are trusted certificates. Note that the certificates have to be in PEM
310 format. If capath is passed, it must be a directory prepared using the
Jonathan Ballet6381da32011-07-20 16:43:38 +0900311 ``c_rehash`` tool included with OpenSSL. Either, but not both, of
Jonathan Balletc9e066c2011-07-17 22:56:05 +0900312 *pemfile* or *capath* may be :py:data:`None`.
313
314
315.. py:method:: Context.set_default_verify_paths()
316
317 Specify that the platform provided CA certificates are to be used for
318 verification purposes. This method may not work properly on OS X.
319
320
321.. py:method:: Context.load_tmp_dh(dhfile)
322
323 Load parameters for Ephemeral Diffie-Hellman from *dhfile*.
324
325
326.. py:method:: Context.set_app_data(data)
327
328 Associate *data* with this Context object. *data* can be retrieved
329 later using the :py:meth:`get_app_data` method.
330
331
332.. py:method:: Context.set_cipher_list(ciphers)
333
334 Set the list of ciphers to be used in this context. See the OpenSSL manual for
335 more information (e.g. :manpage:`ciphers(1)`)
336
337
338.. py:method:: Context.set_info_callback(callback)
339
340 Set the information callback to *callback*. This function will be called
341 from time to time during SSL handshakes.
342
Jonathan Ballet6381da32011-07-20 16:43:38 +0900343 *callback* should take three arguments: a Connection object and two integers.
344 The first integer specifies where in the SSL handshake the function was
345 called, and the other the return code from a (possibly failed) internal
Jonathan Balletc9e066c2011-07-17 22:56:05 +0900346 function call.
347
348
349.. py:method:: Context.set_options(options)
350
351 Add SSL options. Options you have set before are not cleared!
352 This method should be used with the :py:const:`OP_*` constants.
353
354
Jean-Paul Calderone21641542011-09-11 09:18:14 -0400355.. py:method:: Context.set_mode(mode)
356
357 Add SSL mode. Modes you have set before are not cleared! This method should
358 be used with the :py:const:`MODE_*` constants.
359
360
Jonathan Balletc9e066c2011-07-17 22:56:05 +0900361.. py:method:: Context.set_passwd_cb(callback[, userdata])
362
363 Set the passphrase callback to *callback*. This function will be called
364 when a private key with a passphrase is loaded. *callback* must accept
365 three positional arguments. First, an integer giving the maximum length of
366 the passphrase it may return. If the returned passphrase is longer than
367 this, it will be truncated. Second, a boolean value which will be true if
368 the user should be prompted for the passphrase twice and the callback should
369 verify that the two values supplied are equal. Third, the value given as the
370 *userdata* parameter to :py:meth:`set_passwd_cb`. If an error occurs,
371 *callback* should return a false value (e.g. an empty string).
372
373
Jean-Paul Calderone8e8f90c2012-02-08 13:16:26 -0500374.. py:method:: Context.set_session_cache_mode(mode)
375
376 Set the behavior of the session cache used by all connections using this
377 Context. The previously set mode is returned. See :py:const:`SESS_CACHE_*`
378 for details about particular modes.
379
380 .. versionadded:: 0.14
381
382
383.. py:method:: Context.get_session_cache_mode()
384
385 Get the current session cache mode.
386
387 .. versionadded:: 0.14
388
389
Jonathan Balletc9e066c2011-07-17 22:56:05 +0900390.. py:method:: Context.set_session_id(name)
391
392 Set the context *name* within which a session can be reused for this
393 Context object. This is needed when doing session resumption, because there is
394 no way for a stored session to know which Context object it is associated with.
395 *name* may be any binary data.
396
397
398.. py:method:: Context.set_timeout(timeout)
399
400 Set the timeout for newly created sessions for this Context object to
401 *timeout*. *timeout* must be given in (whole) seconds. The default
402 value is 300 seconds. See the OpenSSL manual for more information (e.g.
403 :manpage:`SSL_CTX_set_timeout(3)`).
404
405
406.. py:method:: Context.set_verify(mode, callback)
407
408 Set the verification flags for this Context object to *mode* and specify
409 that *callback* should be used for verification callbacks. *mode* should be
410 one of :py:const:`VERIFY_NONE` and :py:const:`VERIFY_PEER`. If
411 :py:const:`VERIFY_PEER` is used, *mode* can be OR:ed with
412 :py:const:`VERIFY_FAIL_IF_NO_PEER_CERT` and :py:const:`VERIFY_CLIENT_ONCE`
413 to further control the behaviour.
414
415 *callback* should take five arguments: A Connection object, an X509 object,
416 and three integer variables, which are in turn potential error number, error
417 depth and return code. *callback* should return true if verification passes
418 and false otherwise.
419
420
421.. py:method:: Context.set_verify_depth(depth)
422
423 Set the maximum depth for the certificate chain verification that shall be
424 allowed for this Context object.
425
426
427.. py:method:: Context.use_certificate(cert)
428
429 Use the certificate *cert* which has to be a X509 object.
430
431
432.. py:method:: Context.add_extra_chain_cert(cert)
433
434 Adds the certificate *cert*, which has to be a X509 object, to the
435 certificate chain presented together with the certificate.
436
437
438.. py:method:: Context.use_certificate_chain_file(file)
439
440 Load a certificate chain from *file* which must be PEM encoded.
441
442
443.. py:method:: Context.use_privatekey(pkey)
444
445 Use the private key *pkey* which has to be a PKey object.
446
447
448.. py:method:: Context.use_certificate_file(file[, format])
449
450 Load the first certificate found in *file*. The certificate must be in the
451 format specified by *format*, which is either :py:const:`FILETYPE_PEM` or
452 :py:const:`FILETYPE_ASN1`. The default is :py:const:`FILETYPE_PEM`.
453
454
455.. py:method:: Context.use_privatekey_file(file[, format])
456
457 Load the first private key found in *file*. The private key must be in the
458 format specified by *format*, which is either :py:const:`FILETYPE_PEM` or
459 :py:const:`FILETYPE_ASN1`. The default is :py:const:`FILETYPE_PEM`.
460
461
462.. py:method:: Context.set_tlsext_servername_callback(callback)
463
464 Specify a one-argument callable to use as the TLS extension server name
Jonathan Ballet6381da32011-07-20 16:43:38 +0900465 callback. When a connection using the server name extension is made using
466 this context, the callback will be invoked with the :py:class:`Connection`
467 instance.
Jonathan Balletc9e066c2011-07-17 22:56:05 +0900468
469 .. versionadded:: 0.13
470
471
Jean-Paul Calderone6c896fe2012-02-16 08:10:04 -0500472.. _openssl-session:
473
474Session objects
475---------------
476
477Session objects have no methods.
478
479
Jonathan Balletc9e066c2011-07-17 22:56:05 +0900480.. _openssl-connection:
481
482Connection objects
483------------------
484
485Connection objects have the following methods:
486
487.. py:method:: Connection.accept()
488
489 Call the :py:meth:`accept` method of the underlying socket and set up SSL on the
490 returned socket, using the Context object supplied to this Connection object at
491 creation. Returns a pair *(conn, address)*. where *conn* is the new
492 Connection object created, and *address* is as returned by the socket's
493 :py:meth:`accept`.
494
495
496.. py:method:: Connection.bind(address)
497
498 Call the :py:meth:`bind` method of the underlying socket.
499
500
501.. py:method:: Connection.close()
502
503 Call the :py:meth:`close` method of the underlying socket. Note: If you want
504 correct SSL closure, you need to call the :py:meth:`shutdown` method first.
505
506
507.. py:method:: Connection.connect(address)
508
509 Call the :py:meth:`connect` method of the underlying socket and set up SSL on the
510 socket, using the Context object supplied to this Connection object at
511 creation.
512
513
514.. py:method:: Connection.connect_ex(address)
515
516 Call the :py:meth:`connect_ex` method of the underlying socket and set up SSL on
517 the socket, using the Context object supplied to this Connection object at
518 creation. Note that if the :py:meth:`connect_ex` method of the socket doesn't
519 return 0, SSL won't be initialized.
520
521
522.. py:method:: Connection.do_handshake()
523
524 Perform an SSL handshake (usually called after :py:meth:`renegotiate` or one of
525 :py:meth:`set_accept_state` or :py:meth:`set_accept_state`). This can raise the
526 same exceptions as :py:meth:`send` and :py:meth:`recv`.
527
528
529.. py:method:: Connection.fileno()
530
531 Retrieve the file descriptor number for the underlying socket.
532
533
534.. py:method:: Connection.listen(backlog)
535
536 Call the :py:meth:`listen` method of the underlying socket.
537
538
539.. py:method:: Connection.get_app_data()
540
541 Retrieve application data as set by :py:meth:`set_app_data`.
542
543
544.. py:method:: Connection.get_cipher_list()
545
546 Retrieve the list of ciphers used by the Connection object. WARNING: This API
547 has changed. It used to take an optional parameter and just return a string,
548 but not it returns the entire list in one go.
549
550
551.. py:method:: Connection.get_client_ca_list()
552
553 Retrieve the list of preferred client certificate issuers sent by the server
554 as :py:class:`OpenSSL.crypto.X509Name` objects.
555
556 If this is a client :py:class:`Connection`, the list will be empty until the
557 connection with the server is established.
558
559 If this is a server :py:class:`Connection`, return the list of certificate
560 authorities that will be sent or has been sent to the client, as controlled
561 by this :py:class:`Connection`'s :py:class:`Context`.
562
563 .. versionadded:: 0.10
564
565
566.. py:method:: Connection.get_context()
567
568 Retrieve the Context object associated with this Connection.
569
570
571.. py:method:: Connection.set_context(context)
572
573 Specify a replacement Context object for this Connection.
574
575
576.. py:method:: Connection.get_peer_certificate()
577
578 Retrieve the other side's certificate (if any)
579
580
581.. py:method:: Connection.get_peer_cert_chain()
582
583 Retrieve the tuple of the other side's certificate chain (if any)
584
585
586.. py:method:: Connection.getpeername()
587
588 Call the :py:meth:`getpeername` method of the underlying socket.
589
590
591.. py:method:: Connection.getsockname()
592
593 Call the :py:meth:`getsockname` method of the underlying socket.
594
595
596.. py:method:: Connection.getsockopt(level, optname[, buflen])
597
598 Call the :py:meth:`getsockopt` method of the underlying socket.
599
600
601.. py:method:: Connection.pending()
602
603 Retrieve the number of bytes that can be safely read from the SSL buffer
604 (**not** the underlying transport buffer).
605
606
607.. py:method:: Connection.recv(bufsize)
608
609 Receive data from the Connection. The return value is a string representing the
610 data received. The maximum amount of data to be received at once, is specified
611 by *bufsize*.
612
613
614.. py:method:: Connection.bio_write(bytes)
615
616 If the Connection was created with a memory BIO, this method can be used to add
617 bytes to the read end of that memory BIO. The Connection can then read the
618 bytes (for example, in response to a call to :py:meth:`recv`).
619
620
621.. py:method:: Connection.renegotiate()
622
623 Renegotiate the SSL session. Call this if you wish to change cipher suites or
624 anything like that.
625
626
627.. py:method:: Connection.send(string)
628
629 Send the *string* data to the Connection.
630
631
632.. py:method:: Connection.bio_read(bufsize)
633
634 If the Connection was created with a memory BIO, this method can be used to
635 read bytes from the write end of that memory BIO. Many Connection methods will
636 add bytes which must be read in this manner or the buffer will eventually fill
637 up and the Connection will be able to take no further actions.
638
639
640.. py:method:: Connection.sendall(string)
641
642 Send all of the *string* data to the Connection. This calls :py:meth:`send`
643 repeatedly until all data is sent. If an error occurs, it's impossible to tell
644 how much data has been sent.
645
646
647.. py:method:: Connection.set_accept_state()
648
649 Set the connection to work in server mode. The handshake will be handled
650 automatically by read/write.
651
652
653.. py:method:: Connection.set_app_data(data)
654
655 Associate *data* with this Connection object. *data* can be retrieved
656 later using the :py:meth:`get_app_data` method.
657
658
659.. py:method:: Connection.set_connect_state()
660
661 Set the connection to work in client mode. The handshake will be handled
662 automatically by read/write.
663
664
665.. py:method:: Connection.setblocking(flag)
666
667 Call the :py:meth:`setblocking` method of the underlying socket.
668
669
670.. py:method:: Connection.setsockopt(level, optname, value)
671
672 Call the :py:meth:`setsockopt` method of the underlying socket.
673
674
675.. py:method:: Connection.shutdown()
676
677 Send the shutdown message to the Connection. Returns true if the shutdown
678 message exchange is completed and false otherwise (in which case you call
679 :py:meth:`recv` or :py:meth:`send` when the connection becomes
680 readable/writeable.
681
682
683.. py:method:: Connection.get_shutdown()
684
685 Get the shutdown state of the Connection. Returns a bitvector of either or
686 both of *SENT_SHUTDOWN* and *RECEIVED_SHUTDOWN*.
687
688
689.. py:method:: Connection.set_shutdown(state)
690
691 Set the shutdown state of the Connection. *state* is a bitvector of
692 either or both of *SENT_SHUTDOWN* and *RECEIVED_SHUTDOWN*.
693
694
695.. py:method:: Connection.sock_shutdown(how)
696
697 Call the :py:meth:`shutdown` method of the underlying socket.
698
699
700.. py:method:: Connection.bio_shutdown()
701
702 If the Connection was created with a memory BIO, this method can be used to
703 indicate that *end of file* has been reached on the read end of that memory
704 BIO.
705
706
707.. py:method:: Connection.state_string()
708
709 Retrieve a verbose string detailing the state of the Connection.
710
711
712.. py:method:: Connection.client_random()
713
714 Retrieve the random value used with the client hello message.
715
716
717.. py:method:: Connection.server_random()
718
719 Retrieve the random value used with the server hello message.
720
721
722.. py:method:: Connection.master_key()
723
724 Retrieve the value of the master key for this session.
725
726
727.. py:method:: Connection.want_read()
728
729 Checks if more data has to be read from the transport layer to complete an
730 operation.
731
732
733.. py:method:: Connection.want_write()
734
735 Checks if there is data to write to the transport layer to complete an
736 operation.
737
738
739.. py:method:: Connection.set_tlsext_host_name(name)
740
741 Specify the byte string to send as the server name in the client hello message.
742
743 .. versionadded:: 0.13
744
745
746.. py:method:: Connection.get_servername()
747
748 Get the value of the server name received in the client hello message.
749
750 .. versionadded:: 0.13
751
752
Jean-Paul Calderone6c896fe2012-02-16 08:10:04 -0500753.. py:method:: Connection.get_session()
754
755 Get a :py:class:`Session` instance representing the SSL session in use by
756 the connection, or :py:obj:`None` if there is no session.
757
758 .. versionadded:: 0.14
759
760
761.. py:method:: Connection.set_session(session)
762
763 Set a new SSL session (using a :py:class:`Session` instance) to be used by
764 the connection.
765
766 .. versionadded:: 0.14
767
Fedor Brunner2cffdbc2014-03-10 10:35:23 +0100768.. py:method:: Connection.get_cipher_name()
769
770 Obtain the name of the currently used cipher.
771
772 .. versionadded:: 0.15
773
774.. py:method:: Connection.get_cipher_bits()
775
776 Obtain the number of secret bits of the currently used cipher.
777
778 .. versionadded:: 0.15
779
780.. py:method:: Connection.get_cipher_version()
781
782 Obtain the protocol name of the currently used cipher.
783
784 .. versionadded:: 0.15
Jean-Paul Calderone6c896fe2012-02-16 08:10:04 -0500785
Jonathan Ballet6381da32011-07-20 16:43:38 +0900786.. Rubric:: Footnotes
787
Jonathan Balletc9e066c2011-07-17 22:56:05 +0900788.. [#connection-context-socket] Actually, all that is required is an object that
789 **behaves** like a socket, you could even use files, even though it'd be
790 tricky to get the handshakes right!