From 9695e8a2b2fe9e09d60c336eaffbb57b0b995776 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Sun, 14 Aug 2011 18:10:06 -0400 Subject: Bump version number --- ChangeLog | 4 ++++ OpenSSL/version.py | 2 +- setup.py | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index dffd05d..068a5f2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2011-08-14 Jean-Paul Calderone + + * Release 0.13 + 2011-06-12 Jean-Paul Calderone * OpenSSL/crypto/pkey.c: Add the PKey.check method, mostly diff --git a/OpenSSL/version.py b/OpenSSL/version.py index b7255e9..2f1bed7 100644 --- a/OpenSSL/version.py +++ b/OpenSSL/version.py @@ -6,4 +6,4 @@ pyOpenSSL - A simple wrapper around the OpenSSL library """ -__version__ = '0.12' +__version__ = '0.13a1' diff --git a/setup.py b/setup.py index 73c88a0..a278927 100755 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ from distutils.errors import DistutilsFileError from distutils.command.build_ext import build_ext # XXX Deduplicate this -__version__ = '0.12' +__version__ = '0.13a1' crypto_src = ['OpenSSL/crypto/crypto.c', 'OpenSSL/crypto/x509.c', 'OpenSSL/crypto/x509name.c', 'OpenSSL/crypto/pkey.c', -- cgit v1.2.1 From 7fd9c565697f1a6a74ec71bb22c968fbec583f35 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Sun, 14 Aug 2011 18:19:17 -0400 Subject: Generate documentation for new version --- doc/html/building.html | 4 +- doc/html/contents.html | 24 +- doc/html/crl.html | 22 +- doc/html/index.html | 42 +- doc/html/internals.html | 6 +- doc/html/intro.html | 4 +- doc/html/openssl-509ext.html | 36 +- doc/html/openssl-connection.html | 108 ++- doc/html/openssl-context.html | 65 +- doc/html/openssl-crypto.html | 38 +- doc/html/openssl-netscape-spki.html | 26 +- doc/html/openssl-pkcs12.html | 16 +- doc/html/openssl-pkcs7.html | 16 +- doc/html/openssl-pkey.html | 30 +- doc/html/openssl-rand.html | 30 +- doc/html/openssl-ssl.html | 84 +- doc/html/openssl-x509.html | 75 +- doc/html/openssl-x509name.html | 36 +- doc/html/openssl-x509req.html | 30 +- doc/html/openssl-x509store.html | 18 +- doc/html/openssl.html | 36 +- doc/html/pyOpenSSL.how | 2 +- doc/html/pyOpenSSL.html | 42 +- doc/html/revoked.html | 26 +- doc/pyOpenSSL.ps | 1482 ++++++++++++++++++----------------- doc/pyOpenSSL.txt | 110 ++- 26 files changed, 1295 insertions(+), 1113 deletions(-) diff --git a/doc/html/building.html b/doc/html/building.html index 9fb0a8d..404fbf8 100644 --- a/doc/html/building.html +++ b/doc/html/building.html @@ -62,9 +62,9 @@ I have tested this on Debian Linux systems (woody and sid), Solaris 2.6 and Subsections diff --git a/doc/html/contents.html b/doc/html/contents.html index c006687..36d1c21 100644 --- a/doc/html/contents.html +++ b/doc/html/contents.html @@ -46,36 +46,36 @@ Contents diff --git a/doc/html/crl.html b/doc/html/crl.html index 4ce6acb..eb529d6 100644 --- a/doc/html/crl.html +++ b/doc/html/crl.html @@ -1,8 +1,8 @@ -3.1.11 CRL objects - +3.1.10 CRL objects + @@ -36,36 +36,36 @@ border="0" height="32" alt="" width="32"> -Previous: 3.1.10 NetscapeSPKI objects +Previous: 3.1.9 NetscapeSPKI objects Up: 3.1 crypto -Next: 3.1.12 Revoked objects +Next: 3.1.11 Revoked objects

-

  +

 
-3.1.11 CRL objects +3.1.10 CRL objects

CRL objects have the following methods:

-

add_revoked(revoked) +
add_revoked(revoked)
Add a Revoked object to the CRL, by value not reference.

-

export(cert, key[, type=FILETYPE_PEM][, days=100]) +
export(cert, key[, type=FILETYPE_PEM][, days=100])
Use cert and key to sign the CRL and return the CRL as a string. days is the number of days before the next CRL is due.

-

get_revoked() +
get_revoked()
Return a tuple of Revoked objects, by value not reference.
@@ -96,9 +96,9 @@ Return a tuple of Revoked objects, by value not reference. border="0" height="32" alt="" width="32"> -Previous: 3.1.10 NetscapeSPKI objects +Previous: 3.1.9 NetscapeSPKI objects Up: 3.1 crypto -Next: 3.1.12 Revoked objects +Next: 3.1.11 Revoked objects
Release 0.12. diff --git a/doc/html/index.html b/doc/html/index.html index c5d7e7a..41b6939 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -87,54 +87,52 @@ calling a corresponding function in the OpenSSL library. href="openssl-crypto.html">3.1 crypto -- Generic cryptographic module -
  • 3.2 rand -- An interface to the OpenSSL pseudo random number generator -
  • 3.3 SSL -- An interface to the SSL-specific parts of OpenSSL
    -
  • 4 Internals
    -
  • About this document ... diff --git a/doc/html/internals.html b/doc/html/internals.html index 3fe630b..8066a0c 100644 --- a/doc/html/internals.html +++ b/doc/html/internals.html @@ -59,11 +59,11 @@ accessing socket methods. This is what this chapter is about. Subsections diff --git a/doc/html/intro.html b/doc/html/intro.html index 7cb1cf1..7a7c445 100644 --- a/doc/html/intro.html +++ b/doc/html/intro.html @@ -55,7 +55,7 @@ was begun) was severely limited. Other OpenSSL wrappers for Python at the time were also limited, though in different ways. Unfortunately, Python's standard library SSL support has remained weak, although other packages (such as M2Crypto1) + HREF="#foot1246">1) have made great advances and now equal or exceed pyOpenSSL's functionality.

    @@ -67,7 +67,7 @@ and advance.



    Footnotes

    -
    ... +
    ... M2Crypto1
    See http://chandlerproject.org/Projects/MeTooCrypto diff --git a/doc/html/openssl-509ext.html b/doc/html/openssl-509ext.html index 5334adf..9e38090 100644 --- a/doc/html/openssl-509ext.html +++ b/doc/html/openssl-509ext.html @@ -1,8 +1,8 @@ -3.1.9 X509Extension objects - +3.1.8 X509Extension objects + @@ -36,16 +36,16 @@ border="0" height="32" alt="" width="32"> -Previous: 3.1.8 PKCS12 objects +Previous: 3.1.7 PKCS12 objects Up: 3.1 crypto -Next: 3.1.10 NetscapeSPKI objects +Next: 3.1.9 NetscapeSPKI objects

    -

      +

     
    -3.1.9 X509Extension objects +3.1.8 X509Extension objects

    @@ -60,7 +60,25 @@ Return the critical field of the extension object.

    get_short_name()
    -Return the short type name of the extension object. +Retrieve the short descriptive name for this extension. + +

    +The result is a byte string like ``basicConstraints''. + +New in version 0.12. + +

    + +

    +

    get_data() +
    +Retrieve the data for this extension. + +

    +The result is the ASN.1 encoded form of the extension data as a byte string. + +New in version 0.12. +

    @@ -89,9 +107,9 @@ Return the short type name of the extension object. border="0" height="32" alt="" width="32"> -Previous: 3.1.8 PKCS12 objects +Previous: 3.1.7 PKCS12 objects Up: 3.1 crypto -Next: 3.1.10 NetscapeSPKI objects +Next: 3.1.9 NetscapeSPKI objects


    Release 0.12. diff --git a/doc/html/openssl-connection.html b/doc/html/openssl-connection.html index 36441af..a5b657a 100644 --- a/doc/html/openssl-connection.html +++ b/doc/html/openssl-connection.html @@ -51,7 +51,7 @@ Connection objects have the following methods:

    -

    accept() +
    accept()
    Call the accept method of the underlying socket and set up SSL on the returned socket, using the Context object supplied to this Connection object at @@ -61,20 +61,20 @@ socket's accept.

    -

    bind(address) +
    bind(address)
    Call the bind method of the underlying socket.

    -

    close() +
    close()
    Call the close method of the underlying socket. Note: If you want correct SSL closure, you need to call the shutdown method first.

    -

    connect(address) +
    connect(address)
    Call the connect method of the underlying socket and set up SSL on the socket, using the Context object supplied to this Connection object at @@ -82,7 +82,7 @@ creation.

    -

    connect_ex(address) +
    connect_ex(address)
    Call the connect_ex method of the underlying socket and set up SSL on the socket, using the Context object supplied to this Connection object at @@ -91,7 +91,7 @@ return 0, SSL won't be initialized.

    -

    do_handshake() +
    do_handshake()
    Perform an SSL handshake (usually called after renegotiate or one of set_accept_state or set_accept_state). This can raise the @@ -99,25 +99,25 @@ same exceptions as send and recv

    -

    fileno() +
    fileno()
    Retrieve the file descriptor number for the underlying socket.

    -

    listen(backlog) +
    listen(backlog)
    Call the listen method of the underlying socket.

    -

    get_app_data() +
    get_app_data()
    Retrieve application data as set by set_app_data.

    -

    get_cipher_list() +
    get_cipher_list()
    Retrieve the list of ciphers used by the Connection object. WARNING: This API has changed. It used to take an optional parameter and just return a string, @@ -125,7 +125,7 @@ but not it returns the entire list in one go.

    -

    get_client_ca_list() +
    get_client_ca_list()
    Retrieve the list of preferred client certificate issuers sent by the server as OpenSSL.crypto.X509Name objects. @@ -146,44 +146,56 @@ by this Connection's Context.

    -

    get_context() +
    get_context()
    Retrieve the Context object associated with this Connection.

    -

    get_peer_certificate() +
    set_context(context) +
    +Specify a replacement Context object for this Connection. +
    + +

    +

    get_peer_certificate()
    Retrieve the other side's certificate (if any)

    -

    getpeername() +
    get_peer_cert_chain() +
    +Retrieve the tuple of the other side's certificate chain (if any) +
    + +

    +

    getpeername()
    Call the getpeername method of the underlying socket.

    -

    getsockname() +
    getsockname()
    Call the getsockname method of the underlying socket.

    -

    getsockopt(level, optname[, buflen]) +
    getsockopt(level, optname[, buflen])
    Call the getsockopt method of the underlying socket.

    -

    pending() +
    pending()
    Retrieve the number of bytes that can be safely read from the SSL buffer (not the underlying transport buffer).

    -

    recv(bufsize) +
    recv(bufsize)
    Receive data from the Connection. The return value is a string representing the data received. The maximum amount of data to be received at once, is specified @@ -191,7 +203,7 @@ by bufsize.

    -

    bio_write(bytes) +
    bio_write(bytes)
    If the Connection was created with a memory BIO, this method can be used to add bytes to the read end of that memory BIO. The Connection can then read the @@ -199,20 +211,20 @@ bytes (for example, in response to a call to recv).

    -

    renegotiate() +
    renegotiate()
    Renegotiate the SSL session. Call this if you wish to change cipher suites or anything like that.

    -

    send(string) +
    send(string)
    Send the string data to the Connection.

    -

    bio_read(bufsize) +
    bio_read(bufsize)
    If the Connection was created with a memory BIO, this method can be used to read bytes from the write end of that memory BIO. Many Connection methods will @@ -221,7 +233,7 @@ up and the Connection will be able to take no further actions.

    -

    sendall(string) +
    sendall(string)
    Send all of the string data to the Connection. This calls send repeatedly until all data is sent. If an error occurs, it's impossible to tell @@ -229,40 +241,40 @@ how much data has been sent.

    -

    set_accept_state() +
    set_accept_state()
    Set the connection to work in server mode. The handshake will be handled automatically by read/write.

    -

    set_app_data(data) +
    set_app_data(data)
    Associate data with this Connection object. data can be retrieved later using the get_app_data method.

    -

    set_connect_state() +
    set_connect_state()
    Set the connection to work in client mode. The handshake will be handled automatically by read/write.

    -

    setblocking(flag) +
    setblocking(flag)
    Call the setblocking method of the underlying socket.

    -

    setsockopt(level, optname, value) +
    setsockopt(level, optname, value)
    Call the setsockopt method of the underlying socket.

    -

    shutdown() +
    shutdown()
    Send the shutdown message to the Connection. Returns true if the shutdown message exchange is completed and false otherwise (in which case you call @@ -271,27 +283,27 @@ readable/writeable.

    -

    get_shutdown() +
    get_shutdown()
    Get the shutdown state of the Connection. Returns a bitvector of either or both of SENT_SHUTDOWN and RECEIVED_SHUTDOWN.

    -

    set_shutdown(state) +
    set_shutdown(state)
    Set the shutdown state of the Connection. state is a bitvector of either or both of SENT_SHUTDOWN and RECEIVED_SHUTDOWN.

    -

    sock_shutdown(how) +
    sock_shutdown(how)
    Call the shutdown method of the underlying socket.

    -

    bio_shutdown() +
    bio_shutdown()
    If the Connection was created with a memory BIO, this method can be used to indicate that ``end of file'' has been reached on the read end of that memory @@ -299,43 +311,61 @@ BIO.

    -

    state_string() +
    state_string()
    Retrieve a verbose string detailing the state of the Connection.

    -

    client_random() +
    client_random()
    Retrieve the random value used with the client hello message.

    -

    server_random() +
    server_random()
    Retrieve the random value used with the server hello message.

    -

    master_key() +
    master_key()
    Retrieve the value of the master key for this session.

    -

    want_read() +
    want_read()
    Checks if more data has to be read from the transport layer to complete an operation.

    -

    want_write() +
    want_write()
    Checks if there is data to write to the transport layer to complete an operation.
    +

    +

    set_tlsext_host_name(name) +
    +Specify the byte string to send as the server name in the client hello message. + +New in version 0.13. + +
    + +

    +

    get_servername() +
    +Get the value of the server name received in the client hello message. + +New in version 0.13. + +
    +

    -

      +

     
    -3.1.10 NetscapeSPKI objects +3.1.9 NetscapeSPKI objects

    NetscapeSPKI objects have the following methods:

    -

    b64_encode() +
    b64_encode()
    Return a base64-encoded string representation of the object.

    -

    get_pubkey() +
    get_pubkey()
    Return the public key of object.

    -

    set_pubkey(key) +
    set_pubkey(key)
    Set the public key of the object to key.

    -

    sign(key, digest_name) +
    sign(key, digest_name)
    Sign the NetscapeSPKI object using the given key and digest_name. digest_name must be a string describing a digest @@ -79,7 +79,7 @@ example, "md5" or "sha1".

    -

    verify(key) +
    verify(key)
    Verify the NetscapeSPKI object using the given key.
    @@ -110,9 +110,9 @@ Verify the NetscapeSPKI object using the given key. border="0" height="32" alt="" width="32"> -Previous: 3.1.9 X509Extension objects +Previous: 3.1.8 X509Extension objects Up: 3.1 crypto -Next: 3.1.11 CRL objects +Next: 3.1.10 CRL objects
    Release 0.12. diff --git a/doc/html/openssl-pkcs12.html b/doc/html/openssl-pkcs12.html index 60bb008..b8ea103 100644 --- a/doc/html/openssl-pkcs12.html +++ b/doc/html/openssl-pkcs12.html @@ -1,8 +1,8 @@ -3.1.8 PKCS12 objects - +3.1.7 PKCS12 objects + @@ -36,16 +36,16 @@ border="0" height="32" alt="" width="32"> -Previous: 3.1.7 PKCS7 objects +Previous: 3.1.6 PKCS7 objects Up: 3.1 crypto -Next: 3.1.9 X509Extension objects +Next: 3.1.8 X509Extension objects

    -

      +

     
    -3.1.8 PKCS12 objects +3.1.7 PKCS12 objects

    @@ -141,9 +141,9 @@ Replace or set private key portion of the PKCS12 structure border="0" height="32" alt="" width="32"> -Previous: 3.1.7 PKCS7 objects +Previous: 3.1.6 PKCS7 objects Up: 3.1 crypto -Next: 3.1.9 X509Extension objects +Next: 3.1.8 X509Extension objects


    Release 0.12. diff --git a/doc/html/openssl-pkcs7.html b/doc/html/openssl-pkcs7.html index cdf8644..739b80f 100644 --- a/doc/html/openssl-pkcs7.html +++ b/doc/html/openssl-pkcs7.html @@ -1,8 +1,8 @@ -3.1.7 PKCS7 objects - +3.1.6 PKCS7 objects + @@ -36,16 +36,16 @@ border="0" height="32" alt="" width="32"> -Previous: 3.1.6 PKey objects +Previous: 3.1.5 PKey objects Up: 3.1 crypto -Next: 3.1.8 PKCS12 objects +Next: 3.1.7 PKCS12 objects

    -

      +

     
    -3.1.7 PKCS7 objects +3.1.6 PKCS7 objects

    @@ -107,9 +107,9 @@ Get the type name of the PKCS7. border="0" height="32" alt="" width="32"> -Previous: 3.1.6 PKey objects +Previous: 3.1.5 PKey objects Up: 3.1 crypto -Next: 3.1.8 PKCS12 objects +Next: 3.1.7 PKCS12 objects


    Release 0.12. diff --git a/doc/html/openssl-pkey.html b/doc/html/openssl-pkey.html index f10cd19..491c882 100644 --- a/doc/html/openssl-pkey.html +++ b/doc/html/openssl-pkey.html @@ -1,8 +1,8 @@ -3.1.6 PKey objects - +3.1.5 PKey objects + @@ -36,40 +36,48 @@ border="0" height="32" alt="" width="32"> -Previous: 3.1.5 X509Store objects +Previous: 3.1.4 X509Store objects Up: 3.1 crypto -Next: 3.1.7 PKCS7 objects +Next: 3.1.6 PKCS7 objects

    -

      +

     
    -3.1.6 PKey objects +3.1.5 PKey objects

    The PKey object has the following methods:

    -

    bits() +
    bits()
    Return the number of bits of the key.

    -

    generate_key(type, bits) +
    generate_key(type, bits)
    Generate a public/private key pair of the type type (one of TYPE_RSA and TYPE_DSA) with the size bits.

    -

    type() +
    type()
    Return the type of the key.
    +

    +

    check() +
    +Check the consistency of this key, returning True if it is consistent and +raising an exception otherwise. This is only valid for RSA keys. See the +OpenSSL RSA_check_key man page for further limitations. +
    +

    diff --git a/doc/html/openssl-rand.html b/doc/html/openssl-rand.html index 46e7189..d268cbd 100644 --- a/doc/html/openssl-rand.html +++ b/doc/html/openssl-rand.html @@ -36,7 +36,7 @@ border="0" height="32" alt="" width="32"> -Previous: 3.1.12 Revoked objects +Previous: 3.1.11 Revoked objects Up: 3 OpenSSL Next: 3.3 SSL

    @@ -56,16 +56,16 @@ This module handles the OpenSSL pseudo random number generator (PRNG) and declares the following:

    -

    add(string, entropy) +
    add(string, entropy)
    Mix bytes from string into the PRNG state. The entropy argument is (the lower bound of) an estimate of how much randomness is contained in -string, measured in bytes. For more information, see e.g. string, measured in bytes. For more information, see e.g. RFC 1750.

    -

    bytes(num_bytes) +
    bytes(num_bytes)
    Get some random bytes from the PRNG as a string. @@ -74,7 +74,7 @@ This is a wrapper for the C function RAND_bytes.

    -

    cleanup() +
    cleanup()
    Erase the memory used by the PRNG. @@ -83,50 +83,50 @@ This is a wrapper for the C function RAND_cleanup.

    -

    egd(path[, bytes]) +
    egd(path[, bytes])
    Query the Entropy Gathering Daemon2 on socket path for bytes + HREF="#foot1272">2 on socket path for bytes bytes of random data and and uses add to seed the PRNG. The default value of bytes is 255.

    -

    load_file(path[, bytes]) +
    load_file(path[, bytes])
    Read bytes bytes (or all of it, if bytes is negative) of data from the file path to seed the PRNG. The default value of bytes is -1.

    -

    screen() +
    screen()
    Add the current contents of the screen to the PRNG state. Availability: Windows.

    -

    seed(string) +
    seed(string)
    This is equivalent to calling add with entropy as the length of the string.

    -

    status() +
    status()
    Returns true if the PRNG has been seeded with enough data, and false otherwise.

    -

    write_file(path) +
    write_file(path)
    Write a number of random bytes (currently 1024) to the file path. This file can then be used with load_file to seed the PRNG again.

    -

    exception Error +
    exception Error
    If the current RAND method supports any errors, this is raised when needed. The default method does not raise this when the entropy pool is depleted. @@ -142,7 +142,7 @@ for more information.



    Footnotes

    -
    ... Daemon... Daemon2
    See http://www.lothar.com/tech/crypto/ @@ -173,7 +173,7 @@ for more information. border="0" height="32" alt="" width="32"> -Previous: 3.1.12 Revoked objects +Previous: 3.1.11 Revoked objects Up: 3 OpenSSL Next: 3.3 SSL
    diff --git a/doc/html/openssl-ssl.html b/doc/html/openssl-ssl.html index a607e41..b51a15b 100644 --- a/doc/html/openssl-ssl.html +++ b/doc/html/openssl-ssl.html @@ -55,39 +55,39 @@ This module handles things specific to SSL. There are two objects defined: Context, Connection.

    -

    SSLv2_METHOD +
    SSLv2_METHOD
    -
    SSLv3_METHOD
    -
    SSLv23_METHOD
    -
    TLSv1_METHOD
    +
    SSLv3_METHOD
    +
    SSLv23_METHOD
    +
    TLSv1_METHOD
    These constants represent the different SSL methods to use when creating a context object.

    -

    VERIFY_NONE +
    VERIFY_NONE
    -
    VERIFY_PEER
    -
    VERIFY_FAIL_IF_NO_PEER_CERT
    +
    VERIFY_PEER
    +
    VERIFY_FAIL_IF_NO_PEER_CERT
    These constants represent the verification mode used by the Context object's set_verify method.

    -

    FILETYPE_PEM +
    FILETYPE_PEM
    -
    FILETYPE_ASN1
    +
    FILETYPE_ASN1
    File type constants used with the use_certificate_file and use_privatekey_file methods of Context objects.

    -

    OP_SINGLE_DH_USE +
    OP_SINGLE_DH_USE
    -
    OP_EPHEMERAL_RSA
    -
    OP_NO_SSLv2
    -
    OP_NO_SSLv3
    -
    OP_NO_TLSv1
    +
    OP_EPHEMERAL_RSA
    +
    OP_NO_SSLv2
    +
    OP_NO_SSLv3
    +
    OP_NO_TLSv1
    Constants used with set_options of Context objects. OP_SINGLE_DH_USE means to always create a new key when using ephemeral Diffie-Hellman. OP_EPHEMERAL_RSA means to always use ephemeral RSA keys @@ -98,13 +98,41 @@ handshake, but don't want to use SSLv2.

    -

    ContextType +
    SSLEAY_VERSION +
    +
    SSLEAY_CFLAGS
    +
    SSLEAY_BUILT_ON
    +
    SSLEAY_PLATFORM
    +
    SSLEAY_DIR
    +Constants used with SSLeay_version to specify what OpenSSL version +information to retrieve. See the man page for the SSLeay_version C +API for details. +
    + +

    +

    OPENSSL_VERSION_NUMBER +
    +An integer giving the version number of the OpenSSL library used to build this +version of pyOpenSSL. See the man page for the SSLeay_version C API +for details. +
    + +

    +

    SSLeay_version(type) +
    +Retrieve a string describing some aspect of the underlying OpenSSL version. The +type passed in should be one of the SSLEAY_* constants defined in +this module. +
    + +

    +

    ContextType
    See Context.

    -

    class Context(method) +
    class Context(method)
    A class representing SSL contexts. Contexts define the parameters of one or more SSL connections. @@ -115,27 +143,27 @@ more SSL connections.

    -

    ConnectionType +
    ConnectionType
    See Connection.

    -

    class Connection(context, socket) +
    class Connection(context, socket)
    A class representing SSL connections.

    context should be an instance of Context and socket should be a socket 3 object. socket may be + HREF="#foot1276">3 object. socket may be None; in this case, the Connection is created with a memory BIO: see the bio_read, bio_write, and bio_shutdown methods.

    -

    exception Error +
    exception Error
    This exception is used as a base class for the other SSL-related exceptions, but may also be raised directly. @@ -149,7 +177,7 @@ for more information.

    -

    exception ZeroReturnError +
    exception ZeroReturnError
    This exception matches the error return code SSL_ERROR_ZERO_RETURN, and is raised when the SSL Connection has been closed. In SSL 3.0 and TLS 1.0, this @@ -163,7 +191,7 @@ It may seem a little strange that this is an exception, but it does match an

    -

    exception WantReadError +
    exception WantReadError
    The operation did not complete; the same I/O method should be called again later, with the same arguments. Any I/O method can lead to this since new @@ -180,14 +208,14 @@ probably want to select() on the socket before trying ag

    -

    exception WantWriteError +
    exception WantWriteError
    See WantReadError. The socket send buffer may be too full to write more data.

    -

    exception WantX509LookupError +
    exception WantX509LookupError
    The operation did not complete because an application callback has asked to be called again. The I/O method should be called again later, with the same @@ -196,7 +224,7 @@ callbacks in this version.

    -

    exception SysCallError +
    exception SysCallError
    The SysCallError occurs when there's an I/O error and OpenSSL's error queue does not contain any information. This can mean two things: An @@ -208,7 +236,7 @@ The parameter to the exception is always a pair (errnum,



    Footnotes

    -
    ... socket... socket3
    Actually, all that is required is an object that behaves like a socket, you could even use files, even though @@ -221,9 +249,9 @@ it'd be tricky to get the handshakes right! Subsections diff --git a/doc/html/openssl-x509.html b/doc/html/openssl-x509.html index ab814a3..b40f9a5 100644 --- a/doc/html/openssl-x509.html +++ b/doc/html/openssl-x509.html @@ -1,14 +1,14 @@ -3.1.2 X509 objects - +3.1.1 X509 objects + - + @@ -16,7 +16,7 @@ -

      +

     
    -3.1.2 X509 objects +3.1.1 X509 objects

    X509 objects have the following methods:

    -

    get_issuer() +
    get_issuer()
    Return an X509Name object representing the issuer of the certificate.

    -

    get_pubkey() +
    get_pubkey()
    Return a PKey object representing the public key of the certificate.

    -

    get_serial_number() +
    get_serial_number()
    Return the certificate serial number.

    -

    get_subject() +
    get_signature_algorithm() +
    +Return the signature algorithm used in the certificate. If the algorithm is +undefined, raise ValueError. +
    + +

    +

    get_subject()
    Return an X509Name object representing the subject of the certificate.

    -

    get_version() +
    get_version()
    Return the certificate version.

    -

    get_notBefore() +
    get_notBefore()
    Return a string giving the time before which the certificate is not valid. The string is formatted as an ASN1 GENERALIZEDTIME: @@ -95,7 +102,7 @@ If no value exists for this field, None is returned.

    -

    get_notAfter() +
    get_notAfter()
    Return a string giving the time after which the certificate is not valid. The string is formatted as an ASN1 GENERALIZEDTIME: @@ -108,7 +115,7 @@ If no value exists for this field, None is returned.

    -

    set_notBefore(when) +
    set_notBefore(when)
    Change the time before which the certificate is not valid. when is a string formatted as an ASN1 GENERALIZEDTIME: @@ -120,7 +127,7 @@ string formatted as an ASN1 GENERALIZEDTIME:

    -

    set_notAfter(when) +
    set_notAfter(when)
    Change the time after which the certificate is not valid. when is a string formatted as an ASN1 GENERALIZEDTIME: @@ -132,69 +139,69 @@ string formatted as an ASN1 GENERALIZEDTIME:

    -

    gmtime_adj_notBefore(time) +
    gmtime_adj_notBefore(time)
    Adjust the timestamp (in GMT) when the certificate starts being valid.

    -

    gmtime_adj_notAfter(time) +
    gmtime_adj_notAfter(time)
    Adjust the timestamp (in GMT) when the certificate stops being valid.

    -

    has_expired() +
    has_expired()
    Checks the certificate's time stamp against current time. Returns true if the certificate has expired and false otherwise.

    -

    set_issuer(issuer) +
    set_issuer(issuer)
    Set the issuer of the certificate to issuer.

    -

    set_pubkey(pkey) +
    set_pubkey(pkey)
    Set the public key of the certificate to pkey.

    -

    set_serial_number(serialno) +
    set_serial_number(serialno)
    Set the serial number of the certificate to serialno.

    -

    set_subject(subject) +
    set_subject(subject)
    Set the subject of the certificate to subject.

    -

    set_version(version) +
    set_version(version)
    Set the certificate version to version.

    -

    sign(pkey, digest) +
    sign(pkey, digest)
    Sign the certificate, using the key pkey and the message digest algorithm identified by the string digest.

    -

    subject_name_hash() +
    subject_name_hash()
    Return the hash of the certificate subject.

    -

    digest(digest_name) +
    digest(digest_name)
    Return a digest of the certificate, using the digest_name method. digest_name must be a string describing a digest algorithm supported @@ -203,13 +210,13 @@ by OpenSSL (by EVP_get_digestbyname, specifically). For example,

    -

    add_extensions(extensions) +
    add_extensions(extensions)
    Add the extensions in the sequence extensions to the certificate.

    -

    get_extension_count() +
    get_extension_count()
    Return the number of extensions on this certificate. @@ -218,7 +225,7 @@ Return the number of extensions on this certificate.

    -

    get_extension(index) +
    get_extension(index)
    Retrieve the extension on this certificate at the given index. @@ -237,7 +244,7 @@ instance.


    -
    Previous Page
    -Previous: 3.1.1 X509Extension objects +Previous: 3.1 crypto Up: 3.1 crypto -Next: 3.1.3 X509Name objects +Next: 3.1.2 X509Name objects
    Release 0.12. diff --git a/doc/html/openssl-x509name.html b/doc/html/openssl-x509name.html index e5bbdec..8361ae0 100644 --- a/doc/html/openssl-x509name.html +++ b/doc/html/openssl-x509name.html @@ -1,8 +1,8 @@ -3.1.3 X509Name objects - +3.1.2 X509Name objects + @@ -36,36 +36,36 @@ border="0" height="32" alt="" width="32"> -Previous: 3.1.2 X509 objects +Previous: 3.1.1 X509 objects Up: 3.1 crypto -Next: 3.1.4 X509Req objects +Next: 3.1.3 X509Req objects

    -

      +

     
    -3.1.3 X509Name objects +3.1.2 X509Name objects

    X509Name objects have the following methods:

    -

    hash() +
    hash()
    Return an integer giving the first four bytes of the MD5 digest of the DER representation of the name.

    -

    der() +
    der()
    Return a string giving the DER representation of the name.

    -

    get_components() +
    get_components()
    Return a list of two-tuples of strings giving the components of the name.
    @@ -74,49 +74,49 @@ Return a list of two-tuples of strings giving the components of the name. X509Name objects have the following members:

    -

    countryName +
    countryName
    The country of the entity. C may be used as an alias for countryName.

    -

    stateOrProvinceName +
    stateOrProvinceName
    The state or province of the entity. ST may be used as an alias for stateOrProvinceName·

    -

    localityName +
    localityName
    The locality of the entity. L may be used as an alias for localityName.

    -

    organizationName +
    organizationName
    The organization name of the entity. O may be used as an alias for organizationName.

    -

    organizationalUnitName +
    organizationalUnitName
    The organizational unit of the entity. OU may be used as an alias for organizationalUnitName.

    -

    commonName +
    commonName
    The common name of the entity. CN may be used as an alias for commonName.

    -

    emailAddress +
    emailAddress
    The e-mail address of the entity.
    @@ -147,9 +147,9 @@ The e-mail address of the entity. border="0" height="32" alt="" width="32"> -Previous: 3.1.2 X509 objects +Previous: 3.1.1 X509 objects Up: 3.1 crypto -Next: 3.1.4 X509Req objects +Next: 3.1.3 X509Req objects
    Release 0.12. diff --git a/doc/html/openssl-x509req.html b/doc/html/openssl-x509req.html index 3625c27..37ac24f 100644 --- a/doc/html/openssl-x509req.html +++ b/doc/html/openssl-x509req.html @@ -1,8 +1,8 @@ -3.1.4 X509Req objects - +3.1.3 X509Req objects + @@ -36,61 +36,61 @@ border="0" height="32" alt="" width="32"> -Previous: 3.1.3 X509Name objects +Previous: 3.1.2 X509Name objects Up: 3.1 crypto -Next: 3.1.5 X509Store objects +Next: 3.1.4 X509Store objects

    -

      +

     
    -3.1.4 X509Req objects +3.1.3 X509Req objects

    X509Req objects have the following methods:

    -

    get_pubkey() +
    get_pubkey()
    Return a PKey object representing the public key of the certificate request.

    -

    get_subject() +
    get_subject()
    Return an X509Name object representing the subject of the certificate.

    -

    set_pubkey(pkey) +
    set_pubkey(pkey)
    Set the public key of the certificate request to pkey.

    -

    sign(pkey, digest) +
    sign(pkey, digest)
    Sign the certificate request, using the key pkey and the message digest algorithm identified by the string digest.

    -

    verify(pkey) +
    verify(pkey)
    Verify a certificate request using the public key pkey.

    -

    set_version(version) +
    set_version(version)
    Set the version (RFC 2459, 4.1.2.1) of the certificate request to version.

    -

    get_version() +
    get_version()
    Get the version (RFC 2459, 4.1.2.1) of the certificate request.
    @@ -121,9 +121,9 @@ Get the version (RFC 2459, 4.1.2.1) of the certificate request. border="0" height="32" alt="" width="32"> -Previous: 3.1.3 X509Name objects +Previous: 3.1.2 X509Name objects Up: 3.1 crypto -Next: 3.1.5 X509Store objects +Next: 3.1.4 X509Store objects
    Release 0.12. diff --git a/doc/html/openssl-x509store.html b/doc/html/openssl-x509store.html index 03d589e..e73d9ae 100644 --- a/doc/html/openssl-x509store.html +++ b/doc/html/openssl-x509store.html @@ -1,8 +1,8 @@ -3.1.5 X509Store objects - +3.1.4 X509Store objects + @@ -36,23 +36,23 @@ border="0" height="32" alt="" width="32"> -Previous: 3.1.4 X509Req objects +Previous: 3.1.3 X509Req objects Up: 3.1 crypto -Next: 3.1.6 PKey objects +Next: 3.1.5 PKey objects

    -

      +

     
    -3.1.5 X509Store objects +3.1.4 X509Store objects

    The X509Store object has currently just one method:

    -

    add_cert(cert) +
    add_cert(cert)
    Add the certificate cert to the certificate store.
    @@ -83,9 +83,9 @@ Add the certificate cert to the certificate store. border="0" height="32" alt="" width="32"> -Previous: 3.1.4 X509Req objects +Previous: 3.1.3 X509Req objects Up: 3.1 crypto -Next: 3.1.6 PKey objects +Next: 3.1.5 PKey objects
    Release 0.12. diff --git a/doc/html/openssl.html b/doc/html/openssl.html index 4ecc438..14bfeee 100644 --- a/doc/html/openssl.html +++ b/doc/html/openssl.html @@ -80,43 +80,41 @@ An interface to the SSL-specific parts of OpenSSL. Subsections diff --git a/doc/html/pyOpenSSL.how b/doc/html/pyOpenSSL.how index 2464192..3e1209b 100644 --- a/doc/html/pyOpenSSL.how +++ b/doc/html/pyOpenSSL.how @@ -1 +1 @@ -+++ perl /home/exarkun/Projects/pyOpenSSL/trunk/doc/tools/node2label.pl *.html ++++ perl /home/exarkun/Projects/pyOpenSSL/branches/release-0.13/doc/tools/node2label.pl *.html diff --git a/doc/html/pyOpenSSL.html b/doc/html/pyOpenSSL.html index c5d7e7a..41b6939 100644 --- a/doc/html/pyOpenSSL.html +++ b/doc/html/pyOpenSSL.html @@ -87,54 +87,52 @@ calling a corresponding function in the OpenSSL library. href="openssl-crypto.html">3.1 crypto -- Generic cryptographic module -
  • 3.2 rand -- An interface to the OpenSSL pseudo random number generator -
  • 3.3 SSL -- An interface to the SSL-specific parts of OpenSSL
    -
  • 4 Internals
    -
  • About this document ... diff --git a/doc/html/revoked.html b/doc/html/revoked.html index e2e5d9f..86e9e7a 100644 --- a/doc/html/revoked.html +++ b/doc/html/revoked.html @@ -1,8 +1,8 @@ -3.1.12 Revoked objects - +3.1.11 Revoked objects + @@ -35,49 +35,49 @@ border="0" height="32" alt="" width="32"> -Previous: 3.1.11 CRL objects +Previous: 3.1.10 CRL objects Up: 3.1 crypto Next: 3.2 rand

    -

      +

     
    -3.1.12 Revoked objects +3.1.11 Revoked objects

    Revoked objects have the following methods:

    -

    all_reasons() +
    all_reasons()
    Return a list of all supported reasons.

    -

    get_reason() +
    get_reason()
    Return the revocation reason as a str. Can be None, which differs from "Unspecified".

    -

    get_rev_date() +
    get_rev_date()
    Return the revocation date as a str. The string is formatted as an ASN1 GENERALIZEDTIME.

    -

    get_serial() +
    get_serial()
    Return a str containing a hex number of the serial of the revoked certificate.

    -

    set_reason(reason) +
    set_reason(reason)
    Set the revocation reason. reason must be None or a string, but the values are limited. @@ -85,14 +85,14 @@ Spaces and case are ignored. See all_reasons.

    -

    set_rev_date(date) +
    set_rev_date(date)
    Set the revocation date. The string is formatted as an ASN1 GENERALIZEDTIME.

    -

    set_serial(serial) +
    set_serial(serial)
    serial is a string containing a hex number of the serial of the revoked certificate.
    @@ -123,7 +123,7 @@ The string is formatted as an ASN1 GENERALIZEDTIME. border="0" height="32" alt="" width="32"> -Previous: 3.1.11 CRL objects +Previous: 3.1.10 CRL objects Up: 3.1 crypto Next: 3.2 rand
    diff --git a/doc/pyOpenSSL.ps b/doc/pyOpenSSL.ps index 3eef2c6..10a440e 100644 --- a/doc/pyOpenSSL.ps +++ b/doc/pyOpenSSL.ps @@ -1,8 +1,8 @@ %!PS-Adobe-2.0 -%%Creator: dvips(k) 5.96.1 Copyright 2007 Radical Eye Software +%%Creator: dvips(k) 5.98 Copyright 2009 Radical Eye Software %%Title: pyOpenSSL.dvi -%%CreationDate: Mon Apr 11 19:56:45 2011 -%%Pages: 18 +%%CreationDate: Sun Aug 14 18:16:42 2011 +%%Pages: 19 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentPaperSizes: a4 @@ -10,7 +10,7 @@ %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -N0 -o pyOpenSSL.ps pyOpenSSL %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2011.04.11:1956 +%DVIPSSource: TeX output 2011.08.14:1816 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -2396,147 +2396,145 @@ FF0001FFFFFC00007FFFF0000007FF000027377CB530>I<00000007C0000000000FC000 1E0000FFC0003C0000FFC0007C0000FFC000F80000FFC000FFFFFFFFFF80FFFFFFFFFF80 FFFFFFFFFF80FFFFFFFFFF80000001FFC000000001FFC000000001FFC000000001FFC000 000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000 -0003FFFFFF800003FFFFFF800003FFFFFF800003FFFFFF8029367DB530>I<3C00000000 -003E00000000003FE0000000003FFFFFFFFF803FFFFFFFFF803FFFFFFFFF803FFFFFFFFF -803FFFFFFFFF007FFFFFFFFE007FFFFFFFFC007FFFFFFFF8007FFFFFFFF0007FFFFFFFE0 -007FFFFFFFE0007C00000FC0007800001F80007800003F0000F800007E0000F00000FC00 -00F00000F80000F00001F80000F00003F00000000007E0000000000FC0000000000FC000 -0000001F80000000003F80000000007F00000000007F0000000000FE0000000000FE0000 -000001FE0000000001FC0000000003FC0000000003FC0000000007FC0000000007FC0000 -00000FFC000000000FF8000000000FF8000000001FF8000000001FF8000000001FF80000 -00001FF8000000001FF8000000003FF8000000003FF8000000003FF8000000003FF80000 -00003FF8000000003FF8000000003FF8000000003FF8000000003FF8000000001FF00000 -00000FE00000000007C000000029397BB730>55 D66 D73 -DI<0001FF8000 +000FFFF000003FFFFC0000FE01FF0001F8007F8003F0003FC007E0001FE007E0000FE00F +C0000FF00FC00007F01FC00007F01FC00007F01FE00007F01FF00007F01FF80007F01FFC +000FF01FFF000FE01FFFC00FE01FFFE01FC00FFFF83FC00FFFFE7F8007FFFFFE0007FFFF +FC0003FFFFF00001FFFFFC0000FFFFFF00007FFFFF80003FFFFFC000FFFFFFE003FDFFFF +F007F07FFFF80FE03FFFF81FC00FFFFC3F8003FFFC7F8000FFFE7F00007FFE7F00001FFE +FE000007FEFE000003FEFE000001FEFE000001FEFE000000FEFE000000FEFE000000FCFF +000000FC7F000001FC7F800001F83FC00003F83FE00007F01FF0000FE00FFE007FC003FF +FFFF0000FFFFFC00003FFFF0000003FF800027377CB530>56 D66 D73 D76 D<000000FFF800000000000FFFFF80000000007FFFFFF00000 -0001FFC01FFC00000007FF0007FF0000001FFC0001FFC000003FF000007FE000007FE000 -003FF00000FFC000001FF80001FF8000000FFC0003FF8000000FFE0007FF00000007FF00 -07FF00000007FF000FFE00000003FF800FFE00000003FF801FFC00000001FFC01FFC0000 -0001FFC03FFC00000001FFE03FFC00000001FFE03FFC00000001FFE07FF800000000FFF0 -7FF800000000FFF07FF800000000FFF07FF800000000FFF0FFF800000000FFF8FFF80000 -0000FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8 -FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF80000 -0000FFF8FFF800000000FFF87FF800000000FFF07FFC00000001FFF07FFC00000001FFF0 -7FFC00000001FFF03FFC00000001FFE03FFC00000001FFE03FFE00000003FFE01FFE0000 -0003FFC01FFE00000003FFC00FFF00000007FF8007FF00000007FF0007FF8000000FFF00 -03FFC000001FFE0001FFC000001FFC0000FFE000003FF800007FF000007FF000003FFC00 -01FFE000001FFF0007FFC0000007FFC01FFF00000001FFFFFFFC000000007FFFFFF00000 -00000FFFFF800000000000FFF80000003D3B7BB948>79 DI<0007 -FF000E00003FFFE01E0000FFFFF83E0003FFFFFE7E0007FC01FFFE000FF0001FFE001FE0 -000FFE003FC00003FE003F800001FE007F800000FE007F000000FE007F0000007E00FF00 -00007E00FF0000003E00FF0000003E00FF8000003E00FF8000001E00FFC000001E00FFE0 -00001E00FFF000000000FFFC000000007FFFE00000007FFFFE0000007FFFFFF000003FFF -FFFE00003FFFFFFF80001FFFFFFFC0000FFFFFFFF00007FFFFFFF80003FFFFFFFC0000FF -FFFFFE00003FFFFFFE00000FFFFFFF000001FFFFFF0000000FFFFF800000007FFF800000 -000FFFC000000003FFC000000001FFC000000000FFC0F00000007FC0F00000007FC0F000 -00007FC0F00000003FC0F00000003FC0F80000003FC0F80000003F80FC0000003F80FC00 -00007F80FE0000007F00FF0000007F00FF800000FE00FFE00001FC00FFF80003FC00FFFF -801FF800FCFFFFFFE000F83FFFFFC000F007FFFE0000E0007FF000002A3B7BB935>83 -D<003FFE00000003FFFFE000000FFFFFF800001FF00FFE00003FF003FF00003FF801FF80 -003FF800FFC0003FF800FFC0003FF8007FE0003FF8007FE0001FF0007FE0000FE0007FE0 -000380007FE0000000007FE0000000007FE00000003FFFE000000FFFFFE000007FFFFFE0 -0001FFF87FE00007FF807FE0000FFE007FE0003FF8007FE0003FF0007FE0007FE0007FE0 -00FFE0007FE000FFC0007FE000FFC0007FE000FFC0007FE000FFC0007FE000FFC000FFE0 -00FFE001FFE0007FE001FFE0003FF007FFF8001FFC1FBFFFC00FFFFE1FFFC003FFF80FFF -C0003FE003FFC02A257DA42E>97 D<0001FFC000000FFFFC00007FFFFF0000FF80FF8003 -FE00FFC007FC01FFC00FF801FFC01FF801FFC01FF001FFC03FF001FFC03FF000FF807FE0 -007F007FE0001C007FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000 -0000FFE0000000FFE0000000FFE0000000FFE00000007FE00000007FE00000007FF00000 -003FF00000003FF00001E01FF80001E01FF80003E00FFC0007C007FE00078003FF001F80 -00FFC07E00007FFFFC00000FFFF0000001FF800023257DA42A>99 -D<000000007F800000007FFF800000007FFF800000007FFF800000007FFF8000000003FF -8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF -8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF -8000000001FF8000000001FF8000000001FF800001FF81FF80000FFFF1FF80003FFFFDFF -8000FFC07FFF8003FF001FFF8007FC0007FF800FFC0003FF801FF80001FF801FF00001FF -803FF00001FF803FF00001FF807FE00001FF807FE00001FF807FE00001FF80FFE00001FF -80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF -80FFE00001FF80FFE00001FF80FFE00001FF807FE00001FF807FE00001FF807FF00001FF -803FF00001FF803FF00001FF801FF80003FF800FF80007FF8007FC000FFF8003FE001FFF -C001FF80FDFFFE007FFFF9FFFE001FFFE1FFFE0001FF01FFFE2F3A7DB935>I<0003FF80 -00001FFFF000007FFFFC0001FF83FE0003FE007F8007FC003F800FF8003FC01FF8001FE0 -1FF0001FE03FF0000FF03FF0000FF07FE0000FF07FE0000FF87FE00007F8FFE00007F8FF -E00007F8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFE0000000FFE0000000FFE0000000FFE0 -0000007FE00000007FE00000007FE00000003FF00000003FF00000781FF00000780FF800 -00F80FFC0000F007FC0003F001FF000FE000FFC07FC0007FFFFF00000FFFFC000001FFE0 -0025257DA42C>I<00001FF0000001FFFC000007FFFF00001FF87F80003FE0FF8000FFC1 -FFC000FFC1FFC001FF81FFC001FF81FFC003FF01FFC003FF00FF8003FF00FF8003FF003E -0003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000 -03FF000000FFFFFF0000FFFFFF0000FFFFFF0000FFFFFF000003FF00000003FF00000003 -FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF -00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00 +007FF800000000007FF800000000007FF800000000007FF800000000007FF80000078000 +7FF800000780007FF800000780007FF800000780007FF800000780007FF800000F80007F +F800000F00007FF800000F00007FF800000F00007FF800001F00007FF800001F00007FF8 +00003F00007FF800003F00007FF800007F00007FF80000FF00007FF80001FF00007FF800 +03FF00007FF8000FFE00007FF8007FFE00FFFFFFFFFFFE00FFFFFFFFFFFE00FFFFFFFFFF +FE00FFFFFFFFFFFE0031397DB839>76 D<000000FFF800000000000FFFFF80000000007F +FFFFF000000001FFC01FFC00000007FF0007FF0000001FFC0001FFC000003FF000007FE0 +00007FE000003FF00000FFC000001FF80001FF8000000FFC0003FF8000000FFE0007FF00 +000007FF0007FF00000007FF000FFE00000003FF800FFE00000003FF801FFC00000001FF +C01FFC00000001FFC03FFC00000001FFE03FFC00000001FFE03FFC00000001FFE07FF800 +000000FFF07FF800000000FFF07FF800000000FFF07FF800000000FFF0FFF800000000FF +F8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF800 +000000FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FF +F8FFF800000000FFF8FFF800000000FFF87FF800000000FFF07FFC00000001FFF07FFC00 +000001FFF07FFC00000001FFF03FFC00000001FFE03FFC00000001FFE03FFE00000003FF +E01FFE00000003FFC01FFE00000003FFC00FFF00000007FF8007FF00000007FF0007FF80 +00000FFF0003FFC000001FFE0001FFC000001FFC0000FFE000003FF800007FF000007FF0 +00003FFC0001FFE000001FFF0007FFC0000007FFC01FFF00000001FFFFFFFC000000007F +FFFFF0000000000FFFFF800000000000FFF80000003D3B7BB948>79 +DI<0007FF000E00003FFFE01E0000FFFFF83E0003FFFFFE7E0007 +FC01FFFE000FF0001FFE001FE0000FFE003FC00003FE003F800001FE007F800000FE007F +000000FE007F0000007E00FF0000007E00FF0000003E00FF0000003E00FF8000003E00FF +8000001E00FFC000001E00FFE000001E00FFF000000000FFFC000000007FFFE00000007F +FFFE0000007FFFFFF000003FFFFFFE00003FFFFFFF80001FFFFFFFC0000FFFFFFFF00007 +FFFFFFF80003FFFFFFFC0000FFFFFFFE00003FFFFFFE00000FFFFFFF000001FFFFFF0000 +000FFFFF800000007FFF800000000FFFC000000003FFC000000001FFC000000000FFC0F0 +0000007FC0F00000007FC0F00000007FC0F00000003FC0F00000003FC0F80000003FC0F8 +0000003F80FC0000003F80FC0000007F80FE0000007F00FF0000007F00FF800000FE00FF +E00001FC00FFF80003FC00FFFF801FF800FCFFFFFFE000F83FFFFFC000F007FFFE0000E0 +007FF000002A3B7BB935>83 D<003FFE00000003FFFFE000000FFFFFF800001FF00FFE00 +003FF003FF00003FF801FF80003FF800FFC0003FF800FFC0003FF8007FE0003FF8007FE0 +001FF0007FE0000FE0007FE0000380007FE0000000007FE0000000007FE00000003FFFE0 +00000FFFFFE000007FFFFFE00001FFF87FE00007FF807FE0000FFE007FE0003FF8007FE0 +003FF0007FE0007FE0007FE000FFE0007FE000FFC0007FE000FFC0007FE000FFC0007FE0 +00FFC0007FE000FFC000FFE000FFE001FFE0007FE001FFE0003FF007FFF8001FFC1FBFFF +C00FFFFE1FFFC003FFF80FFFC0003FE003FFC02A257DA42E>97 D<0001FFC000000FFFFC +00007FFFFF0000FF80FF8003FE00FFC007FC01FFC00FF801FFC01FF801FFC01FF001FFC0 +3FF001FFC03FF000FF807FE0007F007FE0001C007FE0000000FFE0000000FFE0000000FF +E0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00000007FE0 +0000007FE00000007FF00000003FF00000003FF00001E01FF80001E01FF80003E00FFC00 +07C007FE00078003FF001F8000FFC07E00007FFFFC00000FFFF0000001FF800023257DA4 +2A>99 D<000000007F800000007FFF800000007FFF800000007FFF800000007FFF800000 +0003FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF800000 +0001FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF800000 +0001FF8000000001FF8000000001FF8000000001FF800001FF81FF80000FFFF1FF80003F +FFFDFF8000FFC07FFF8003FF001FFF8007FC0007FF800FFC0003FF801FF80001FF801FF0 +0001FF803FF00001FF803FF00001FF807FE00001FF807FE00001FF807FE00001FF80FFE0 +0001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE0 +0001FF80FFE00001FF80FFE00001FF80FFE00001FF807FE00001FF807FE00001FF807FF0 +0001FF803FF00001FF803FF00001FF801FF80003FF800FF80007FF8007FC000FFF8003FE +001FFFC001FF80FDFFFE007FFFF9FFFE001FFFE1FFFE0001FF01FFFE2F3A7DB935>I<00 +03FF8000001FFFF000007FFFFC0001FF83FE0003FE007F8007FC003F800FF8003FC01FF8 +001FE01FF0001FE03FF0000FF03FF0000FF07FE0000FF07FE0000FF87FE00007F8FFE000 +07F8FFE00007F8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFE0000000FFE0000000FFE00000 +00FFE00000007FE00000007FE00000007FE00000003FF00000003FF00000781FF0000078 +0FF80000F80FFC0000F007FC0003F001FF000FE000FFC07FC0007FFFFF00000FFFFC0000 +01FFE00025257DA42C>I<00001FF0000001FFFC000007FFFF00001FF87F80003FE0FF80 +00FFC1FFC000FFC1FFC001FF81FFC001FF81FFC003FF01FFC003FF00FF8003FF00FF8003 +FF003E0003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF +00000003FF000000FFFFFF0000FFFFFF0000FFFFFF0000FFFFFF000003FF00000003FF00 000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF0000 -0003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE0000 -FFFFFE0000FFFFFE0000223A7DB91D>I<000000001F000007FE00FFC0007FFFE3FFC001 -FFFFFFEFE007FE07FF8FE00FF801FF1FE01FF000FF8FE03FF000FFCFE03FE0007FC7C03F -E0007FC0007FE0007FE0007FE0007FE0007FE0007FE0007FE0007FE0007FE0007FE0007F -E0007FE0003FE0007FC0003FE0007FC0003FF000FFC0001FF000FF80000FF801FF000007 -FE07FE00000FFFFFF800000F7FFFE000001E07FE0000001E00000000001E00000000003E -00000000003F00000000003F80000000001FC0000000001FFFFFF800001FFFFFFF80001F -FFFFFFE0000FFFFFFFF80007FFFFFFFC0003FFFFFFFE0007FFFFFFFE001FFFFFFFFF003F -C0000FFF007F000000FF80FF0000007F80FE0000007F80FE0000003F80FE0000003F80FE -0000003F80FF0000007F807F0000007F007F800000FF003FC00001FE001FF00007FC0007 -FE003FF00001FFFFFFC000007FFFFF00000007FFF000002B377DA530>I<00FF00000000 -FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF0000000003FF00000000 -03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000 -03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000 -03FF0000000003FF0000000003FF007FC00003FF03FFF80003FF0FFFFE0003FF1F03FF00 -03FF3C01FF8003FF7801FF8003FFF000FF8003FFE000FFC003FFC000FFC003FFC000FFC0 -03FF8000FFC003FF8000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0 -03FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0 -03FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0 -03FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFF -FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF303A7DB935>I<01F00007FC000FFE000FFE -001FFF001FFF001FFF001FFF001FFF000FFE000FFE0007FC0001F0000000000000000000 -0000000000000000000000000000000000000000FF007FFF007FFF007FFF007FFF0007FF -0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF +0003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000 +03FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003 +FF00000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFF +FE0000FFFFFE0000FFFFFE0000223A7DB91D>I<000000001F000007FE00FFC0007FFFE3 +FFC001FFFFFFEFE007FE07FF8FE00FF801FF1FE01FF000FF8FE03FF000FFCFE03FE0007F +C7C03FE0007FC0007FE0007FE0007FE0007FE0007FE0007FE0007FE0007FE0007FE0007F +E0007FE0007FE0003FE0007FC0003FE0007FC0003FF000FFC0001FF000FF80000FF801FF +000007FE07FE00000FFFFFF800000F7FFFE000001E07FE0000001E00000000001E000000 +00003E00000000003F00000000003F80000000001FC0000000001FFFFFF800001FFFFFFF +80001FFFFFFFE0000FFFFFFFF80007FFFFFFFC0003FFFFFFFE0007FFFFFFFE001FFFFFFF +FF003FC0000FFF007F000000FF80FF0000007F80FE0000007F80FE0000003F80FE000000 +3F80FE0000003F80FF0000007F807F0000007F007F800000FF003FC00001FE001FF00007 +FC0007FE003FF00001FFFFFFC000007FFFFF00000007FFF000002B377DA530>I<00FF00 +000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF0000000003FF00 +00000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00 +00000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00 +00000003FF0000000003FF0000000003FF007FC00003FF03FFF80003FF0FFFFE0003FF1F +03FF0003FF3C01FF8003FF7801FF8003FFF000FF8003FFE000FFC003FFC000FFC003FFC0 +00FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00 +00FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00 +00FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00 +00FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC +3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF303A7DB935>I<01F00007FC000FFE +000FFE001FFF001FFF001FFF001FFF001FFF000FFE000FFE0007FC0001F0000000000000 +0000000000000000000000000000000000000000000000FF007FFF007FFF007FFF007FFF +0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF 0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF -0003FF0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8153B7DBA1B>I<00FF00FFFF00FF -FF00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003 +0003FF0003FF0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8153B7DBA1B>I<00FF00FF +FF00FFFF00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003 FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003 FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003 FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003 -FF0003FF0003FF0003FF00FFFFFCFFFFFCFFFFFCFFFFFC163A7DB91B>108 +FF0003FF0003FF0003FF0003FF00FFFFFCFFFFFCFFFFFCFFFFFC163A7DB91B>108 D<00FE007FC000FFFE03FFF800FFFE0FFFFE00FFFE1F03FF00FFFE3C01FF8007FE7801FF 8003FEF000FF8003FFE000FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF @@ -4702,94 +4700,91 @@ ifelse end %%EndSetup %%Page: 1 1 -TeXDict begin 1 0 bop 0 83 3901 9 v 1890 430 a Ft(Python)64 -b(Op)5 b(enSSL)64 b(Manual)3394 599 y Fs(Release)34 b(0.12)2927 -953 y Fr(Jean-P)m(aul)i(Calderone)3386 1307 y Fq(April)27 -b(11,)g(2011)3014 1454 y Fp(exa)n(rkun@t)n(wistedmatrix.com)1781 -1650 y Fo(Abstract)208 1779 y Fn(This)32 b(mo)r(dule)f(is)h(a)g(rather) +TeXDict begin 1 0 bop 0 83 3901 9 v 1890 451 a Ft(Python)64 +b(Op)5 b(enSSL)64 b(Manual)3394 619 y Fs(Release)34 b(0.12)2927 +974 y Fr(Jean-P)m(aul)i(Calderone)3312 1328 y Fq(August)27 +b(14,)g(2011)3014 1475 y Fp(exa)n(rkun@t)n(wistedmatrix.com)1781 +1697 y Fo(Abstract)208 1841 y Fn(This)32 b(mo)r(dule)f(is)h(a)g(rather) g(thin)f(wrapp)r(er)h(around)g(\(a)g(subset)f(of)6 b(\))32 b(the)g(Op)r(enSSL)e(library)-6 b(.)52 b(With)32 b(thin)f(wrapp)r(er) -208 1870 y(I)d(mean)h(that)f(a)i(lot)f(of)h(the)f(ob)t(ject)h(metho)r +208 1932 y(I)d(mean)h(that)f(a)i(lot)f(of)h(the)f(ob)t(ject)h(metho)r (ds)e(do)h(nothing)g(more)g(than)g(calling)h(a)g(corresp)r(onding)g -(function)f(in)g(the)208 1961 y(Op)r(enSSL)24 b(library)-6 -b(.)0 2231 y Fr(Contents)0 2414 y Fm(1)77 b(In)m(tro)s(duction)3201 -b(2)0 2596 y(2)77 b(Building)30 b(and)i(Installing)2765 -b(2)125 2696 y Fq(2.1)83 b(Building)28 b(the)g(Mo)r(dule)g(on)f(a)g +(function)f(in)g(the)208 2024 y(Op)r(enSSL)24 b(library)-6 +b(.)0 2298 y Fr(Contents)0 2481 y Fm(1)77 b(In)m(tro)s(duction)3201 +b(2)0 2663 y(2)77 b(Building)30 b(and)i(Installing)2765 +b(2)125 2763 y Fq(2.1)83 b(Building)28 b(the)g(Mo)r(dule)g(on)f(a)g (Unix)h(System)87 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) -134 b(2)125 2796 y(2.2)83 b(Building)28 b(the)g(Mo)r(dule)g(on)f(a)g +134 b(2)125 2863 y(2.2)83 b(Building)28 b(the)g(Mo)r(dule)g(on)f(a)g (Windo)n(ws)g(System)59 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 -b(3)0 2978 y Fm(3)77 b Fl(OpenSSL)28 b Fm(\026)33 b(Python)f(in)m -(terface)h(to)e(Op)s(enSSL)2030 b(3)125 3078 y Fq(3.1)83 +b(3)0 3045 y Fm(3)77 b Fl(OpenSSL)28 b Fm(\026)33 b(Python)f(in)m +(terface)h(to)e(Op)s(enSSL)2030 b(3)125 3145 y Fq(3.1)83 b Fl(crypto)26 b Fq(\026)h(Generic)g(cryptographic)f(mo)r(dule)79 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(3)315 -3178 y(X509Extension)27 b(ob)5 b(jects)102 b(.)41 b(.)h(.)f(.)h(.)f(.)h -(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) -f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 -b(5)315 3277 y(X509)27 b(ob)5 b(jects)73 b(.)42 b(.)f(.)h(.)f(.)h(.)g -(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) -h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f -(.)h(.)f(.)h(.)134 b(5)315 3377 y(X509Name)27 b(ob)5 -b(jects)57 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h -(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) -h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(7)315 3476 -y(X509Req)27 b(ob)5 b(jects)60 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f -(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) -g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 -b(8)315 3576 y(X509Store)26 b(ob)5 b(jects)78 b(.)41 +3244 y(X509)27 b(ob)5 b(jects)73 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f +(.)h(.)134 b(5)315 3344 y(X509Name)27 b(ob)5 b(jects)57 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(7)315 3444 y(X509Req)27 +b(ob)5 b(jects)60 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 +b(7)315 3543 y(X509Store)26 b(ob)5 b(jects)78 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) -f(.)h(.)f(.)h(.)f(.)h(.)134 b(8)315 3676 y(PKey)28 b(ob)5 +f(.)h(.)f(.)h(.)f(.)h(.)134 b(8)315 3643 y(PKey)28 b(ob)5 b(jects)58 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 -b(8)315 3775 y(PK)n(CS7)27 b(ob)5 b(jects)59 b(.)41 b(.)h(.)f(.)h(.)g +b(8)315 3743 y(PK)n(CS7)27 b(ob)5 b(jects)59 b(.)41 b(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f -(.)h(.)f(.)h(.)134 b(8)315 3875 y(PK)n(CS12)27 b(ob)5 +(.)h(.)f(.)h(.)134 b(8)315 3842 y(PK)n(CS12)27 b(ob)5 b(jects)81 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(9)315 -3975 y(X509Extension)27 b(ob)5 b(jects)102 b(.)41 b(.)h(.)f(.)h(.)f(.)h +3942 y(X509Extension)27 b(ob)5 b(jects)102 b(.)41 b(.)h(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 -b(9)315 4074 y(Netscap)r(eSPKI)28 b(ob)5 b(jects)58 b(.)42 +b(9)315 4041 y(Netscap)r(eSPKI)28 b(ob)5 b(jects)58 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) -f(.)h(.)f(.)h(.)93 b(10)315 4174 y(CRL)28 b(ob)5 b(jects)87 +f(.)h(.)f(.)h(.)93 b(10)315 4141 y(CRL)28 b(ob)5 b(jects)87 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(10)315 -4273 y(Rev)n(ok)n(ed)27 b(ob)5 b(jects)83 b(.)42 b(.)f(.)h(.)g(.)f(.)h +4241 y(Rev)n(ok)n(ed)27 b(ob)5 b(jects)83 b(.)42 b(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f -(.)h(.)93 b(10)125 4373 y(3.2)83 b Fl(rand)26 b Fq(\026)i(An)g(in)n +(.)h(.)93 b(10)125 4340 y(3.2)83 b Fl(rand)26 b Fq(\026)i(An)g(in)n (terface)f(to)g(the)h(Op)r(enSSL)g(pseudo)f(random)g(n)n(um)n(b)r(er)g (generator)50 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 -b(11)125 4473 y(3.3)83 b Fl(SSL)27 b Fq(\026)g(An)i(in)n(terface)d(to)i +b(11)125 4440 y(3.3)83 b Fl(SSL)27 b Fq(\026)g(An)i(in)n(terface)d(to)i (the)g(SSL-sp)r(eci\034c)f(parts)g(of)h(Op)r(enSSL)64 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) -h(.)f(.)h(.)93 b(11)315 4572 y(Con)n(text)28 b(ob)5 b(jects)98 +h(.)f(.)h(.)93 b(11)315 4540 y(Con)n(text)28 b(ob)5 b(jects)98 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f -(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(13)315 4672 y(Connection)27 +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(13)315 4639 y(Connection)27 b(ob)5 b(jects)108 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(15)0 -4855 y Fm(4)77 b(In)m(ternals)3310 b(17)125 4954 y Fq(4.1)83 +4822 y Fm(4)77 b(In)m(ternals)3310 b(18)125 4921 y Fq(4.1)83 b(Exceptions)i(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 -b(17)125 5054 y(4.2)83 b(Callbac)n(ks)68 b(.)42 b(.)f(.)h(.)f(.)h(.)f +b(18)125 5021 y(4.2)83 b(Callbac)n(ks)68 b(.)42 b(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f -(.)h(.)f(.)h(.)f(.)h(.)93 b(18)125 5154 y(4.3)83 b(A)n(cessing)27 +(.)h(.)f(.)h(.)f(.)h(.)93 b(18)125 5121 y(4.3)83 b(A)n(cessing)27 b(So)r(c)n(k)n(et)g(Metho)r(ds)82 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) -h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(18)p -0 5300 V eop end +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(19)p +0 5268 V eop end %%Page: 2 2 TeXDict begin 2 1 bop 0 85 a Fr(1)114 b(Intro)s(duction)0 314 y Fq(The)41 b(reason)e(p)n(yOp)r(enSSL)i(w)n(as)e(created)h(is)h @@ -5005,229 +5000,234 @@ b(giving)e(the)i(data)f(to)h(whic)n(h)f(the)h(signature)208 b Fq(instance)27 b(naming)g(the)g(message)e(digest)i(t)n(yp)r(e)g(of)g (the)h(signature,)e(for)g(example)g Fl(\020sha1\021)p Fq(.)208 3170 y(New)h(in)h(v)n(ersion)e(0.11.)0 3433 -y Ff(X509Extension)f(objects)0 3634 y Fq(X509Extension)h(ob)5 -b(jects)27 b(ha)n(v)n(e)g(the)h(follo)n(wing)e(metho)r(ds:)0 -3781 y Fl(get_short_name\(\))208 3880 y Fq(Retriev)n(e)g(the)i(short)f -(descriptiv)n(e)g(name)g(for)g(this)h(extension.)208 -4013 y(The)f(result)g(is)h(a)f(b)n(yte)h(string)e(lik)n(e)i -Fl(\020basicConstrain)o(ts)o(\021)p Fq(.)68 b(New)27 -b(in)h(v)n(ersion)e(0.12.)0 4160 y Fl(get_data\(\))208 -4260 y Fq(Retriev)n(e)g(the)i(data)f(for)g(this)h(extension.)208 -4392 y(The)f(result)g(is)h(the)g(ASN.1)g(enco)r(ded)f(form)g(of)h(the)g -(extension)f(data)g(as)g(a)g(b)n(yte)g(string.)74 b(New)27 -b(in)h(v)n(ersion)e(0.12.)0 4655 y Ff(X509)h(objects)0 -4856 y Fq(X509)f(ob)5 b(jects)27 b(ha)n(v)n(e)g(the)h(follo)n(wing)e -(metho)r(ds:)0 5003 y Fl(get_issuer\(\))208 5102 y Fq(Return)h(an)h -(X509Name)e(ob)5 b(ject)27 b(represen)n(ting)f(the)i(issuer)f(of)g(the) -h(certi\034cate.)0 5249 y Fl(get_pubkey\(\))208 5349 -y Fq(Return)f(a)g(PKey)h(ob)5 b(ject)27 b(represen)n(ting)f(the)i -(public)g(k)n(ey)f(of)g(the)h(certi\034cate.)p 0 5549 -3901 4 v 0 5649 a Ff(3.1)82 b Fl(crypto)25 b Ff(\026)j(Generic)g -(cryptographic)e(mo)r(dule)2234 b(5)p eop end +y Ff(X509)h(objects)0 3634 y Fq(X509)f(ob)5 b(jects)27 +b(ha)n(v)n(e)g(the)h(follo)n(wing)e(metho)r(ds:)0 3781 +y Fl(get_issuer\(\))208 3880 y Fq(Return)h(an)h(X509Name)e(ob)5 +b(ject)27 b(represen)n(ting)f(the)i(issuer)f(of)g(the)h(certi\034cate.) +0 4027 y Fl(get_pubkey\(\))208 4127 y Fq(Return)f(a)g(PKey)h(ob)5 +b(ject)27 b(represen)n(ting)f(the)i(public)g(k)n(ey)f(of)g(the)h +(certi\034cate.)0 4274 y Fl(get_serial_numbe)o(r\()o(\))208 +4373 y Fq(Return)f(the)h(certi\034cate)f(serial)g(n)n(um)n(b)r(er.)0 +4520 y Fl(get_signature_al)o(go)o(rit)o(hm)o(\(\))208 +4620 y Fq(Return)c(the)g(signature)f(algorithm)g(used)h(in)g(the)h +(certi\034cate.)35 b(If)23 b(the)h(algorithm)e(is)h(unde\034ned,)h +(raise)e Fl(ValueError)p Fq(.)0 4767 y Fl(get_subject\(\))208 +4866 y Fq(Return)27 b(an)h(X509Name)e(ob)5 b(ject)27 +b(represen)n(ting)f(the)i(sub)5 b(ject)28 b(of)f(the)h(certi\034cate.)0 +5013 y Fl(get_version\(\))208 5113 y Fq(Return)f(the)h(certi\034cate)f +(v)n(ersion.)0 5260 y Fl(get_notBefore\(\))208 5359 y +Fq(Return)f(a)h(string)f(giving)f(the)j(time)f(b)r(efore)f(whic)n(h)h +(the)g(certi\034cate)f(is)g(not)h(v)-5 b(alid.)37 b(The)26 +b(string)g(is)h(formatted)f(as)g(an)p 0 5549 3901 4 v +0 5649 a Ff(3.1)82 b Fl(crypto)25 b Ff(\026)j(Generic)g(cryptographic)e +(mo)r(dule)2234 b(5)p eop end %%Page: 6 6 -TeXDict begin 6 5 bop 0 83 a Fl(get_serial_numbe)o(r\()o(\))208 -183 y Fq(Return)27 b(the)h(certi\034cate)f(serial)g(n)n(um)n(b)r(er.)0 -330 y Fl(get_subject\(\))208 429 y Fq(Return)g(an)h(X509Name)e(ob)5 -b(ject)27 b(represen)n(ting)f(the)i(sub)5 b(ject)28 b(of)f(the)h -(certi\034cate.)0 576 y Fl(get_version\(\))208 676 y -Fq(Return)f(the)h(certi\034cate)f(v)n(ersion.)0 823 y -Fl(get_notBefore\(\))208 922 y Fq(Return)f(a)h(string)f(giving)f(the)j -(time)f(b)r(efore)f(whic)n(h)h(the)g(certi\034cate)f(is)g(not)h(v)-5 -b(alid.)37 b(The)26 b(string)g(is)h(formatted)f(as)g(an)208 -1022 y(ASN1)h(GENERALIZEDTIME:)1110 1246 y Fi(YYYYMMDDhhmmssZ)1110 -1337 y(YYYYMMDDhhmmss+hhmm)1110 1429 y(YYYYMMDDhhmmss-hhmm)208 -1585 y Fq(If)h(no)f(v)-5 b(alue)27 b(exists)g(for)g(this)h(\034eld,)g -Fl(None)e Fq(is)i(returned.)0 1732 y Fl(get_notAfter\(\))208 -1832 y Fq(Return)h(a)g(string)g(giving)g(the)g(time)h(after)f(whic)n(h) -h(the)g(certi\034cate)e(is)i(not)f(v)-5 b(alid.)43 b(The)29 -b(string)g(is)g(formatted)h(as)e(an)208 1932 y(ASN1)f(GENERALIZEDTIME:) -1110 2156 y Fi(YYYYMMDDhhmmssZ)1110 2247 y(YYYYMMDDhhmmss+hhmm)1110 -2338 y(YYYYMMDDhhmmss-hhmm)208 2495 y Fq(If)h(no)f(v)-5 +TeXDict begin 6 5 bop 208 83 a Fq(ASN1)27 b(GENERALIZEDTIME:)1110 +307 y Fi(YYYYMMDDhhmmssZ)1110 399 y(YYYYMMDDhhmmss+hhmm)1110 +490 y(YYYYMMDDhhmmss-hhmm)208 647 y Fq(If)h(no)f(v)-5 b(alue)27 b(exists)g(for)g(this)h(\034eld,)g Fl(None)e -Fq(is)i(returned.)0 2642 y Fl(set_notBefore\()p Fc(when)6 -b Fl(\))208 2742 y Fq(Change)35 b(the)i(time)f(b)r(efore)g(whic)n(h)g +Fq(is)i(returned.)0 794 y Fl(get_notAfter\(\))208 893 +y Fq(Return)h(a)g(string)g(giving)g(the)g(time)h(after)f(whic)n(h)h +(the)g(certi\034cate)e(is)i(not)f(v)-5 b(alid.)43 b(The)29 +b(string)g(is)g(formatted)h(as)e(an)208 993 y(ASN1)f(GENERALIZEDTIME:) +1110 1217 y Fi(YYYYMMDDhhmmssZ)1110 1308 y(YYYYMMDDhhmmss+hhmm)1110 +1400 y(YYYYMMDDhhmmss-hhmm)208 1556 y Fq(If)h(no)f(v)-5 +b(alue)27 b(exists)g(for)g(this)h(\034eld,)g Fl(None)e +Fq(is)i(returned.)0 1703 y Fl(set_notBefore\()p Fc(when)6 +b Fl(\))208 1803 y Fq(Change)35 b(the)i(time)f(b)r(efore)g(whic)n(h)g (the)h(certi\034cate)f(is)g(not)g(v)-5 b(alid.)63 b Fc(when)43 b Fq(is)36 b(a)g(string)f(formatted)h(as)g(an)g(ASN1)208 -2841 y(GENERALIZEDTIME:)1110 3065 y Fi(YYYYMMDDhhmmssZ)1110 -3157 y(YYYYMMDDhhmmss+hhmm)1110 3248 y(YYYYMMDDhhmmss-hhmm)0 -3453 y Fl(set_notAfter\()p Fc(when)6 b Fl(\))208 3552 +1902 y(GENERALIZEDTIME:)1110 2127 y Fi(YYYYMMDDhhmmssZ)1110 +2218 y(YYYYMMDDhhmmss+hhmm)1110 2309 y(YYYYMMDDhhmmss-hhmm)0 +2514 y Fl(set_notAfter\()p Fc(when)6 b Fl(\))208 2613 y Fq(Change)38 b(the)h(time)h(after)e(whic)n(h)h(the)h(certi\034cate)e (is)h(not)g(v)-5 b(alid.)71 b Fc(when)46 b Fq(is)39 b(a)g(string)f -(formatted)h(as)f(an)h(ASN1)208 3652 y(GENERALIZEDTIME:)1110 -3876 y Fi(YYYYMMDDhhmmssZ)1110 3967 y(YYYYMMDDhhmmss+hhmm)1110 -4059 y(YYYYMMDDhhmmss-hhmm)0 4263 y Fl(gmtime_adj_notBe)o(fo)o(re\()o -Fc(time)6 b Fl(\))208 4363 y Fq(A)n(djust)28 b(the)g(timestamp)g(\(in)g +(formatted)h(as)f(an)h(ASN1)208 2713 y(GENERALIZEDTIME:)1110 +2937 y Fi(YYYYMMDDhhmmssZ)1110 3029 y(YYYYMMDDhhmmss+hhmm)1110 +3120 y(YYYYMMDDhhmmss-hhmm)0 3324 y Fl(gmtime_adj_notBe)o(fo)o(re\()o +Fc(time)6 b Fl(\))208 3424 y Fq(A)n(djust)28 b(the)g(timestamp)g(\(in)g (GMT\))g(when)g(the)f(certi\034cate)g(starts)g(b)r(eing)h(v)-5 -b(alid.)0 4510 y Fl(gmtime_adj_notAf)o(te)o(r\()p Fc(t)o(ime)6 -b Fl(\))208 4609 y Fq(A)n(djust)28 b(the)g(timestamp)g(\(in)g(GMT\))g +b(alid.)0 3571 y Fl(gmtime_adj_notAf)o(te)o(r\()p Fc(t)o(ime)6 +b Fl(\))208 3671 y Fq(A)n(djust)28 b(the)g(timestamp)g(\(in)g(GMT\))g (when)g(the)f(certi\034cate)g(stops)g(b)r(eing)h(v)-5 -b(alid.)0 4756 y Fl(has_expired\(\))208 4856 y Fq(Chec)n(ks)32 +b(alid.)0 3817 y Fl(has_expired\(\))208 3917 y Fq(Chec)n(ks)32 b(the)h(certi\034cate's)f(time)i(stamp)f(against)f(curren)n(t)g(time.) 54 b(Returns)33 b(true)g(if)g(the)h(certi\034cate)e(has)h(expired)208 -4955 y(and)27 b(false)g(otherwise.)0 5102 y Fl(set_issuer\()p -Fc(issuer)9 b Fl(\))208 5202 y Fq(Set)28 b(the)f(issuer)g(of)h(the)g -(certi\034cate)f(to)g Fc(issuer)9 b Fq(.)0 5349 y Fl(set_pubkey\()p -Fc(pkey)e Fl(\))p 0 5549 3901 4 v 0 5649 a Ff(6)2239 +4017 y(and)27 b(false)g(otherwise.)0 4164 y Fl(set_issuer\()p +Fc(issuer)9 b Fl(\))208 4263 y Fq(Set)28 b(the)f(issuer)g(of)h(the)g +(certi\034cate)f(to)g Fc(issuer)9 b Fq(.)0 4410 y Fl(set_pubkey\()p +Fc(pkey)e Fl(\))208 4510 y Fq(Set)28 b(the)f(public)h(k)n(ey)f(of)h +(the)g(certi\034cate)f(to)g Fc(pkey)7 b Fq(.)0 4656 y +Fl(set_serial_numbe)o(r\()o Fc(serialno)e Fl(\))208 4756 +y Fq(Set)28 b(the)f(serial)g(n)n(um)n(b)r(er)g(of)h(the)g +(certi\034cate)f(to)g Fc(serialno)5 b Fq(.)0 4903 y Fl(set_subject\()p +Fc(subje)l(ct)j Fl(\))208 5003 y Fq(Set)28 b(the)f(sub)5 +b(ject)28 b(of)g(the)g(certi\034cate)f(to)g Fc(subje)l(ct)8 +b Fq(.)0 5149 y Fl(set_version\()p Fc(version)e Fl(\))208 +5249 y Fq(Set)28 b(the)f(certi\034cate)g(v)n(ersion)f(to)i +Fc(version)6 b Fq(.)0 5396 y Fl(sign\()p Fc(pkey,)29 +b(digest)8 b Fl(\))p 0 5549 3901 4 v 0 5649 a Ff(6)2239 b(3)83 b Fl(OpenSSL)24 b Ff(\026)k(Python)f(interface)h(to)f(Op)r (enSSL)p eop end %%Page: 7 7 -TeXDict begin 7 6 bop 208 83 a Fq(Set)28 b(the)f(public)h(k)n(ey)f(of)h -(the)g(certi\034cate)f(to)g Fc(pkey)7 b Fq(.)0 230 y -Fl(set_serial_numbe)o(r\()o Fc(serialno)e Fl(\))208 330 -y Fq(Set)28 b(the)f(serial)g(n)n(um)n(b)r(er)g(of)h(the)g -(certi\034cate)f(to)g Fc(serialno)5 b Fq(.)0 476 y Fl(set_subject\()p -Fc(subje)l(ct)j Fl(\))208 576 y Fq(Set)28 b(the)f(sub)5 -b(ject)28 b(of)g(the)g(certi\034cate)f(to)g Fc(subje)l(ct)8 -b Fq(.)0 723 y Fl(set_version\()p Fc(version)e Fl(\))208 -823 y Fq(Set)28 b(the)f(certi\034cate)g(v)n(ersion)f(to)i -Fc(version)6 b Fq(.)0 969 y Fl(sign\()p Fc(pkey,)29 b(digest)8 -b Fl(\))208 1069 y Fq(Sign)22 b(the)h(certi\034cate,)f(using)g(the)h(k) -n(ey)g Fc(pkey)31 b Fq(and)22 b(the)h(message)e(digest)h(algorithm)f -(iden)n(ti\034ed)i(b)n(y)f(the)h(string)f Fc(digest)8 -b Fq(.)0 1216 y Fl(subject_name_has)o(h\()o(\))208 1316 -y Fq(Return)27 b(the)h(hash)f(of)h(the)g(certi\034cate)f(sub)5 -b(ject.)0 1462 y Fl(digest\()p Fc(digest_name)h Fl(\))208 -1562 y Fq(Return)38 b(a)f(digest)h(of)g(the)g(certi\034cate,)i(using)e +TeXDict begin 7 6 bop 208 83 a Fq(Sign)22 b(the)h(certi\034cate,)f +(using)g(the)h(k)n(ey)g Fc(pkey)31 b Fq(and)22 b(the)h(message)e +(digest)h(algorithm)f(iden)n(ti\034ed)i(b)n(y)f(the)h(string)f +Fc(digest)8 b Fq(.)0 230 y Fl(subject_name_has)o(h\()o(\))208 +330 y Fq(Return)27 b(the)h(hash)f(of)h(the)g(certi\034cate)f(sub)5 +b(ject.)0 476 y Fl(digest\()p Fc(digest_name)h Fl(\))208 +576 y Fq(Return)38 b(a)f(digest)h(of)g(the)g(certi\034cate,)i(using)e (the)g Fc(digest_name)45 b Fq(metho)r(d.)69 b Fc(digest_name)45 -b Fq(m)n(ust)38 b(b)r(e)g(a)g(string)208 1662 y(describing)28 +b Fq(m)n(ust)38 b(b)r(e)g(a)g(string)208 676 y(describing)28 b(a)i(digest)f(algorithm)f(supp)r(orted)i(b)n(y)f(Op)r(enSSL)h(\(b)n(y) g(EVP_get_digestb)n(yname,)f(sp)r(eci\034cally\).)43 -b(F)-7 b(or)208 1761 y(example,)27 b Fl("md5")e Fq(or)i -Fl("sha1")p Fq(.)0 1908 y Fl(add_extensions\()p Fc(ex)o(tensions)7 -b Fl(\))208 2008 y Fq(A)n(dd)27 b(the)h(extensions)f(in)h(the)g +b(F)-7 b(or)208 775 y(example,)27 b Fl("md5")e Fq(or)i +Fl("sha1")p Fq(.)0 922 y Fl(add_extensions\()p Fc(ex)o(tensions)7 +b Fl(\))208 1022 y Fq(A)n(dd)27 b(the)h(extensions)f(in)h(the)g (sequence)f Fc(extensions)34 b Fq(to)27 b(the)h(certi\034cate.)0 -2155 y Fl(get_extension_co)o(un)o(t\(\))208 2254 y Fq(Return)f(the)h(n) +1169 y Fl(get_extension_co)o(un)o(t\(\))208 1268 y Fq(Return)f(the)h(n) n(um)n(b)r(er)f(of)h(extensions)f(on)g(this)h(certi\034cate.)73 -b(New)28 b(in)g(v)n(ersion)e(0.12.)0 2401 y Fl(get_extension\()p -Fc(index)10 b Fl(\))208 2501 y Fq(Retriev)n(e)26 b(the)i(extension)f +b(New)28 b(in)g(v)n(ersion)e(0.12.)0 1415 y Fl(get_extension\()p +Fc(index)10 b Fl(\))208 1515 y Fq(Retriev)n(e)26 b(the)i(extension)f (on)h(this)f(certi\034cate)g(at)h(the)g(giv)n(en)f(index.)208 -2634 y(Extensions)35 b(on)h(a)f(certi\034cate)g(are)g(k)n(ept)h(in)g +1648 y(Extensions)35 b(on)h(a)f(certi\034cate)g(are)g(k)n(ept)h(in)g (order.)60 b(The)35 b(index)h(parameter)e(selects)i(whic)n(h)f -(extension)h(will)g(b)r(e)208 2733 y(returned.)g(The)28 +(extension)h(will)g(b)r(e)208 1747 y(returned.)g(The)28 b(returned)f(ob)5 b(ject)27 b(will)h(b)r(e)g(an)f(X509Extension)f -(instance.)74 b(New)28 b(in)f(v)n(ersion)f(0.12.)0 2996 -y Ff(X509Name)g(objects)0 3197 y Fq(X509Name)g(ob)5 b(jects)27 -b(ha)n(v)n(e)g(the)h(follo)n(wing)e(metho)r(ds:)0 3344 -y Fl(hash\(\))208 3443 y Fq(Return)e(an)g(in)n(teger)f(giving)g(the)i +(instance.)74 b(New)28 b(in)f(v)n(ersion)f(0.12.)0 2010 +y Ff(X509Name)g(objects)0 2211 y Fq(X509Name)g(ob)5 b(jects)27 +b(ha)n(v)n(e)g(the)h(follo)n(wing)e(metho)r(ds:)0 2358 +y Fl(hash\(\))208 2457 y Fq(Return)e(an)g(in)n(teger)f(giving)g(the)i (\034rst)f(four)g(b)n(ytes)f(of)h(the)h(MD5)f(digest)g(of)g(the)h(DER)g -(represen)n(tation)e(of)h(the)g(name.)0 3590 y Fl(der\(\))208 -3690 y Fq(Return)j(a)g(string)g(giving)g(the)h(DER)h(represen)n(tation) -c(of)j(the)g(name.)0 3837 y Fl(get_components\(\))208 -3936 y Fq(Return)f(a)g(list)h(of)g(t)n(w)n(o-tuples)e(of)i(strings)e +(represen)n(tation)e(of)h(the)g(name.)0 2604 y Fl(der\(\))208 +2704 y Fq(Return)j(a)g(string)g(giving)g(the)h(DER)h(represen)n(tation) +c(of)j(the)g(name.)0 2851 y Fl(get_components\(\))208 +2950 y Fq(Return)f(a)g(list)h(of)g(t)n(w)n(o-tuples)e(of)i(strings)e (giving)h(the)h(comp)r(onen)n(ts)f(of)h(the)g(name.)0 -4083 y(X509Name)e(ob)5 b(jects)27 b(ha)n(v)n(e)g(the)h(follo)n(wing)e -(mem)n(b)r(ers:)0 4230 y Fl(countryName)208 4330 y Fq(The)h(coun)n(try) +3097 y(X509Name)e(ob)5 b(jects)27 b(ha)n(v)n(e)g(the)h(follo)n(wing)e +(mem)n(b)r(ers:)0 3244 y Fl(countryName)208 3344 y Fq(The)h(coun)n(try) g(of)g(the)h(en)n(tit)n(y)-7 b(.)37 b Fl(C)27 b Fq(ma)n(y)g(b)r(e)h (used)g(as)f(an)g(alias)f(for)h Fl(countryName)p Fq(.)0 -4476 y Fl(stateOrProvinceN)o(am)o(e)208 4576 y Fq(The)g(state)h(or)e +3490 y Fl(stateOrProvinceN)o(am)o(e)208 3590 y Fq(The)g(state)h(or)e (pro)n(vince)g(of)i(the)g(en)n(tit)n(y)-7 b(.)37 b Fl(ST)27 b Fq(ma)n(y)f(b)r(e)i(used)g(as)f(an)g(alias)g(for)g -Fl(stateOrProvince)o(Na)o(me)p Fq(\267)0 4723 y Fl(localityName)208 -4823 y Fq(The)g(lo)r(calit)n(y)g(of)h(the)f(en)n(tit)n(y)-7 +Fl(stateOrProvince)o(Na)o(me)p Fq(\267)0 3737 y Fl(localityName)208 +3837 y Fq(The)g(lo)r(calit)n(y)g(of)h(the)f(en)n(tit)n(y)-7 b(.)37 b Fl(L)28 b Fq(ma)n(y)e(b)r(e)i(used)g(as)f(an)g(alias)g(for)g -Fl(localityName)p Fq(.)0 4969 y Fl(organizationName)208 -5069 y Fq(The)g(organization)e(name)j(of)f(the)h(en)n(tit)n(y)-7 +Fl(localityName)p Fq(.)0 3983 y Fl(organizationName)208 +4083 y Fq(The)g(organization)e(name)j(of)f(the)h(en)n(tit)n(y)-7 b(.)37 b Fl(O)27 b Fq(ma)n(y)g(b)r(e)h(used)g(as)e(an)i(alias)e(for)h -Fl(organizationName)p Fq(.)0 5216 y Fl(organizationalUn)o(it)o(Nam)o(e) -208 5316 y Fq(The)g(organizational)e(unit)j(of)g(the)g(en)n(tit)n(y)-7 +Fl(organizationName)p Fq(.)0 4230 y Fl(organizationalUn)o(it)o(Nam)o(e) +208 4330 y Fq(The)g(organizational)e(unit)j(of)g(the)g(en)n(tit)n(y)-7 b(.)36 b Fl(OU)27 b Fq(ma)n(y)g(b)r(e)h(used)g(as)f(an)g(alias)f(for)h -Fl(organizationalUni)o(tN)o(am)o(e)p Fq(.)p 0 5549 3901 -4 v 0 5649 a Ff(3.1)82 b Fl(crypto)25 b Ff(\026)j(Generic)g -(cryptographic)e(mo)r(dule)2234 b(7)p eop end -%%Page: 8 8 -TeXDict begin 8 7 bop 0 83 a Fl(commonName)208 183 y -Fq(The)27 b(common)g(name)h(of)f(the)h(en)n(tit)n(y)-7 +Fl(organizationalUni)o(tN)o(am)o(e)p Fq(.)0 4476 y Fl(commonName)208 +4576 y Fq(The)g(common)g(name)h(of)f(the)h(en)n(tit)n(y)-7 b(.)37 b Fl(CN)27 b Fq(ma)n(y)f(b)r(e)i(used)g(as)f(an)g(alias)g(for)g -Fl(commonName)p Fq(.)0 330 y Fl(emailAddress)208 429 +Fl(commonName)p Fq(.)0 4723 y Fl(emailAddress)208 4823 y Fq(The)g(e-mail)g(address)f(of)i(the)g(en)n(tit)n(y)-7 -b(.)0 692 y Ff(X509Req)26 b(objects)0 893 y Fq(X509Req)g(ob)5 -b(jects)27 b(ha)n(v)n(e)g(the)h(follo)n(wing)e(metho)r(ds:)0 -1040 y Fl(get_pubkey\(\))208 1139 y Fq(Return)h(a)g(PKey)h(ob)5 -b(ject)27 b(represen)n(ting)f(the)i(public)g(k)n(ey)f(of)g(the)h -(certi\034cate)f(request.)0 1286 y Fl(get_subject\(\))208 -1386 y Fq(Return)g(an)h(X509Name)e(ob)5 b(ject)27 b(represen)n(ting)f -(the)i(sub)5 b(ject)28 b(of)f(the)h(certi\034cate.)0 -1532 y Fl(set_pubkey\()p Fc(pkey)7 b Fl(\))208 1632 y -Fq(Set)28 b(the)f(public)h(k)n(ey)f(of)h(the)g(certi\034cate)f(request) -g(to)g Fc(pkey)7 b Fq(.)0 1779 y Fl(sign\()p Fc(pkey,)29 -b(digest)8 b Fl(\))208 1879 y Fq(Sign)36 b(the)g(certi\034cate)g -(request,)h(using)f(the)g(k)n(ey)h Fc(pkey)45 b Fq(and)36 -b(the)g(message)f(digest)g(algorithm)g(iden)n(ti\034ed)i(b)n(y)f(the) -208 1978 y(string)28 b Fc(digest)8 b Fq(.)0 2125 y Fl(verify\()p -Fc(pkey)f Fl(\))208 2225 y Fq(V)-7 b(erify)27 b(a)g(certi\034cate)g -(request)g(using)g(the)h(public)g(k)n(ey)g Fc(pkey)7 -b Fq(.)0 2372 y Fl(set_version\()p Fc(version)f Fl(\))208 -2471 y Fq(Set)28 b(the)f(v)n(ersion)f(\(RF)n(C)i(2459,)e(4.1.2.1\))g -(of)i(the)g(certi\034cate)f(request)f(to)i Fc(version)6 -b Fq(.)0 2618 y Fl(get_version\(\))208 2718 y Fq(Get)28 -b(the)f(v)n(ersion)f(\(RF)n(C)i(2459,)e(4.1.2.1\))g(of)i(the)g -(certi\034cate)f(request.)0 2981 y Ff(X509Sto)n(re)f(objects)0 -3181 y Fq(The)i(X509Store)d(ob)5 b(ject)28 b(has)f(curren)n(tly)f(just) -i(one)g(metho)r(d:)0 3328 y Fl(add_cert\()p Fc(c)l(ert)8 -b Fl(\))208 3428 y Fq(A)n(dd)27 b(the)h(certi\034cate)f +b(.)0 5086 y Ff(X509Req)26 b(objects)0 5286 y Fq(X509Req)g(ob)5 +b(jects)27 b(ha)n(v)n(e)g(the)h(follo)n(wing)e(metho)r(ds:)p +0 5549 3901 4 v 0 5649 a Ff(3.1)82 b Fl(crypto)25 b Ff(\026)j(Generic)g +(cryptographic)e(mo)r(dule)2234 b(7)p eop end +%%Page: 8 8 +TeXDict begin 8 7 bop 0 83 a Fl(get_pubkey\(\))208 183 +y Fq(Return)27 b(a)g(PKey)h(ob)5 b(ject)27 b(represen)n(ting)f(the)i +(public)g(k)n(ey)f(of)g(the)h(certi\034cate)f(request.)0 +330 y Fl(get_subject\(\))208 429 y Fq(Return)g(an)h(X509Name)e(ob)5 +b(ject)27 b(represen)n(ting)f(the)i(sub)5 b(ject)28 b(of)f(the)h +(certi\034cate.)0 576 y Fl(set_pubkey\()p Fc(pkey)7 b +Fl(\))208 676 y Fq(Set)28 b(the)f(public)h(k)n(ey)f(of)h(the)g +(certi\034cate)f(request)g(to)g Fc(pkey)7 b Fq(.)0 823 +y Fl(sign\()p Fc(pkey,)29 b(digest)8 b Fl(\))208 922 +y Fq(Sign)36 b(the)g(certi\034cate)g(request,)h(using)f(the)g(k)n(ey)h +Fc(pkey)45 b Fq(and)36 b(the)g(message)f(digest)g(algorithm)g(iden)n +(ti\034ed)i(b)n(y)f(the)208 1022 y(string)28 b Fc(digest)8 +b Fq(.)0 1169 y Fl(verify\()p Fc(pkey)f Fl(\))208 1268 +y Fq(V)-7 b(erify)27 b(a)g(certi\034cate)g(request)g(using)g(the)h +(public)g(k)n(ey)g Fc(pkey)7 b Fq(.)0 1415 y Fl(set_version\()p +Fc(version)f Fl(\))208 1515 y Fq(Set)28 b(the)f(v)n(ersion)f(\(RF)n(C)i +(2459,)e(4.1.2.1\))g(of)i(the)g(certi\034cate)f(request)f(to)i +Fc(version)6 b Fq(.)0 1662 y Fl(get_version\(\))208 1761 +y Fq(Get)28 b(the)f(v)n(ersion)f(\(RF)n(C)i(2459,)e(4.1.2.1\))g(of)i +(the)g(certi\034cate)f(request.)0 2024 y Ff(X509Sto)n(re)f(objects)0 +2225 y Fq(The)i(X509Store)d(ob)5 b(ject)28 b(has)f(curren)n(tly)f(just) +i(one)g(metho)r(d:)0 2372 y Fl(add_cert\()p Fc(c)l(ert)8 +b Fl(\))208 2471 y Fq(A)n(dd)27 b(the)h(certi\034cate)f Fc(c)l(ert)36 b Fq(to)27 b(the)h(certi\034cate)f(store.)0 -3691 y Ff(PKey)g(objects)0 3891 y Fq(The)h(PKey)f(ob)5 +2734 y Ff(PKey)g(objects)0 2935 y Fq(The)h(PKey)f(ob)5 b(ject)27 b(has)g(the)h(follo)n(wing)f(metho)r(ds:)0 -4038 y Fl(bits\(\))208 4138 y Fq(Return)g(the)h(n)n(um)n(b)r(er)f(of)h -(bits)g(of)f(the)h(k)n(ey)-7 b(.)0 4285 y Fl(generate_key\()p -Fc(typ)l(e,)25 b(bits)7 b Fl(\))208 4384 y Fq(Generate)22 +3082 y Fl(bits\(\))208 3181 y Fq(Return)g(the)h(n)n(um)n(b)r(er)f(of)h +(bits)g(of)f(the)h(k)n(ey)-7 b(.)0 3328 y Fl(generate_key\()p +Fc(typ)l(e,)25 b(bits)7 b Fl(\))208 3428 y Fq(Generate)22 b(a)h(public/priv)-5 b(ate)23 b(k)n(ey)f(pair)h(of)g(the)h(t)n(yp)r(e)f Fc(typ)l(e)30 b Fq(\(one)23 b(of)30 b Fl(TYPE_RSA)19 b Fq(and)24 b Fl(TYPE_DSA)p Fq(\))c(with)j(the)h(size)f -Fc(bits)7 b Fq(.)0 4531 y Fl(type\(\))208 4631 y Fq(Return)27 -b(the)h(t)n(yp)r(e)g(of)f(the)h(k)n(ey)-7 b(.)0 4894 -y Ff(PK)n(CS7)27 b(objects)0 5094 y Fq(PK)n(CS7)g(ob)5 +Fc(bits)7 b Fq(.)0 3575 y Fl(type\(\))208 3674 y Fq(Return)27 +b(the)h(t)n(yp)r(e)g(of)f(the)h(k)n(ey)-7 b(.)0 3821 +y Fl(check\(\))208 3921 y Fq(Chec)n(k)25 b(the)h(consistency)f(of)g +(this)h(k)n(ey)-7 b(,)26 b(returning)f(T)-7 b(rue)25 +b(if)h(it)h(is)e(consisten)n(t)g(and)h(raising)e(an)i(exception)f +(otherwise.)208 4020 y(This)i(is)g(only)h(v)-5 b(alid)27 +b(for)g(RSA)h(k)n(eys.)36 b(See)28 b(the)g(Op)r(enSSL)f(RSA_c)n(hec)n +(k_k)n(ey)f(man)h(page)g(for)g(further)g(limitations.)0 +4283 y Ff(PK)n(CS7)g(objects)0 4484 y Fq(PK)n(CS7)g(ob)5 b(jects)27 b(ha)n(v)n(e)f(the)i(follo)n(wing)f(metho)r(ds:)0 -5241 y Fl(type_is_signed\(\))208 5341 y Fq(FIXME)p 0 -5549 3901 4 v 0 5649 a Ff(8)2239 b(3)83 b Fl(OpenSSL)24 -b Ff(\026)k(Python)f(interface)h(to)f(Op)r(enSSL)p eop -end +4631 y Fl(type_is_signed\(\))208 4730 y Fq(FIXME)0 4877 +y Fl(type_is_envelope)o(d\()o(\))208 4977 y Fq(FIXME)0 +5124 y Fl(type_is_signedAn)o(dE)o(nve)o(lo)o(pe)o(d\(\))208 +5223 y Fq(FIXME)p 0 5549 3901 4 v 0 5649 a Ff(8)2239 +b(3)83 b Fl(OpenSSL)24 b Ff(\026)k(Python)f(interface)h(to)f(Op)r +(enSSL)p eop end %%Page: 9 9 -TeXDict begin 9 8 bop 0 83 a Fl(type_is_envelope)o(d\()o(\))208 -183 y Fq(FIXME)0 330 y Fl(type_is_signedAn)o(dE)o(nve)o(lo)o(pe)o -(d\(\))208 429 y Fq(FIXME)0 576 y Fl(type_is_data\(\))208 -676 y Fq(FIXME)0 823 y Fl(get_type_name\(\))208 922 y +TeXDict begin 9 8 bop 0 83 a Fl(type_is_data\(\))208 +183 y Fq(FIXME)0 330 y Fl(get_type_name\(\))208 429 y Fq(Get)28 b(the)f(t)n(yp)r(e)h(name)g(of)f(the)h(PK)n(CS7.)0 -1185 y Ff(PK)n(CS12)e(objects)0 1386 y Fq(PK)n(CS12)g(ob)5 +692 y Ff(PK)n(CS12)e(objects)0 893 y Fq(PK)n(CS12)g(ob)5 b(jects)28 b(ha)n(v)n(e)e(the)i(follo)n(wing)e(metho)r(ds:)0 -1547 y Fl(export\()p Fb([)p Fc(p)l(assphr)l(ase=None)16 +1054 y Fl(export\()p Fb([)p Fc(p)l(assphr)l(ase=None)16 b Fb(][)p Fc(,)29 b(iter=2048)c Fb(][)p Fc(,)k(maciter=1)24 -b Fb(])p Fl(\))208 1646 y Fq(Returns)j(a)g(PK)n(CS12)g(ob)5 -b(ject)27 b(as)g(a)g(string.)208 1779 y(The)g(optional)g +b Fb(])p Fl(\))208 1154 y Fq(Returns)j(a)g(PK)n(CS12)g(ob)5 +b(ject)27 b(as)g(a)g(string.)208 1286 y(The)g(optional)g Fc(p)l(assphr)l(ase)35 b Fq(m)n(ust)28 b(b)r(e)g(a)f(string)g(not)h(a)f -(callbac)n(k.)208 1912 y(See)g(also)g(the)h(man)f(page)g(for)g(the)h(C) -f(function)h Fl(PKCS12_create)p Fq(.)0 2059 y Fl(get_ca_certifica)o(te) -o(s\(\))208 2159 y Fq(Return)i(CA)h(certi\034cates)f(within)h(the)g(PK) +(callbac)n(k.)208 1419 y(See)g(also)g(the)h(man)f(page)g(for)g(the)h(C) +f(function)h Fl(PKCS12_create)p Fq(.)0 1566 y Fl(get_ca_certifica)o(te) +o(s\(\))208 1666 y Fq(Return)i(CA)h(certi\034cates)f(within)h(the)g(PK) n(CS12)f(ob)5 b(ject)30 b(as)g(a)h(tuple.)46 b(Returns)31 b Fl(None)e Fq(if)i(no)f(CA)h(certi\034cates)f(are)208 -2258 y(presen)n(t.)0 2405 y Fl(get_certificate\()o(\))208 -2505 y Fq(Return)d(certi\034cate)g(p)r(ortion)g(of)h(the)g(PK)n(CS12)e -(structure.)0 2652 y Fl(get_friendlyname)o(\(\))208 2751 +1765 y(presen)n(t.)0 1912 y Fl(get_certificate\()o(\))208 +2012 y Fq(Return)d(certi\034cate)g(p)r(ortion)g(of)h(the)g(PK)n(CS12)e +(structure.)0 2159 y Fl(get_friendlyname)o(\(\))208 2258 y Fq(Return)h(friendlyName)h(p)r(ortion)f(of)g(the)h(PK)n(CS12)f -(structure.)0 2898 y Fl(get_privatekey\(\))208 2998 y +(structure.)0 2405 y Fl(get_privatekey\(\))208 2505 y Fq(Return)g(priv)-5 b(ate)27 b(k)n(ey)g(p)r(ortion)g(of)h(the)g(PK)n -(CS12)e(structure)0 3145 y Fl(set_ca_certifica)o(te)o(s\()p -Fc(c)-5 b(ac)l(erts)7 b Fl(\))208 3244 y Fq(Replace)27 +(CS12)e(structure)0 2652 y Fl(set_ca_certifica)o(te)o(s\()p +Fc(c)-5 b(ac)l(erts)7 b Fl(\))208 2751 y Fq(Replace)27 b(or)f(set)i(the)g(CA)g(certi\034cates)e(within)j(the)f(PK)n(CS12)e(ob) 5 b(ject)27 b(with)h(the)g(sequence)f Fc(c)l(ac)l(erts)7 -b Fq(.)208 3377 y(Set)28 b Fc(c)l(ac)l(erts)34 b Fq(to)27 +b Fq(.)208 2884 y(Set)28 b Fc(c)l(ac)l(erts)34 b Fq(to)27 b Fl(None)f Fq(to)i(remo)n(v)n(e)e(all)h(CA)h(certi\034cates.)0 -3524 y Fl(set_certificate\()o Fc(c)l(ert)8 b Fl(\))208 -3624 y Fq(Replace)27 b(or)f(set)i(the)g(certi\034cate)f(p)r(ortion)g -(of)g(the)h(PK)n(CS12)f(structure.)0 3770 y Fl(set_friendlyname)o(\()p -Fc(n)o(ame)6 b Fl(\))208 3870 y Fq(Replace)27 b(or)f(set)i(the)g +3031 y Fl(set_certificate\()o Fc(c)l(ert)8 b Fl(\))208 +3131 y Fq(Replace)27 b(or)f(set)i(the)g(certi\034cate)f(p)r(ortion)g +(of)g(the)h(PK)n(CS12)f(structure.)0 3277 y Fl(set_friendlyname)o(\()p +Fc(n)o(ame)6 b Fl(\))208 3377 y Fq(Replace)27 b(or)f(set)i(the)g (friendlyName)f(p)r(ortion)g(of)h(the)g(PK)n(CS12)e(structure.)0 -4017 y Fl(set_privatekey\()p Fc(pkey)7 b Fl(\))208 4117 +3524 y Fl(set_privatekey\()p Fc(pkey)7 b Fl(\))208 3624 y Fq(Replace)27 b(or)f(set)i(priv)-5 b(ate)27 b(k)n(ey)g(p)r(ortion)g -(of)h(the)g(PK)n(CS12)e(structure)0 4380 y Ff(X509Extension)f(objects)0 -4580 y Fq(X509Extension)h(ob)5 b(jects)27 b(ha)n(v)n(e)g(sev)n(eral)f -(metho)r(ds:)0 4727 y Fl(get_critical\(\))208 4827 y +(of)h(the)g(PK)n(CS12)e(structure)0 3887 y Ff(X509Extension)f(objects)0 +4087 y Fq(X509Extension)h(ob)5 b(jects)27 b(ha)n(v)n(e)g(sev)n(eral)f +(metho)r(ds:)0 4234 y Fl(get_critical\(\))208 4334 y Fq(Return)h(the)h(critical)f(\034eld)h(of)f(the)h(extension)f(ob)5 -b(ject.)0 4973 y Fl(get_short_name\(\))208 5073 y Fq(Return)27 -b(the)h(short)f(t)n(yp)r(e)h(name)f(of)h(the)g(extension)f(ob)5 -b(ject.)p 0 5549 3901 4 v 0 5649 a Ff(3.1)82 b Fl(crypto)25 -b Ff(\026)j(Generic)g(cryptographic)e(mo)r(dule)2234 -b(9)p eop end +b(ject.)0 4480 y Fl(get_short_name\(\))208 4580 y Fq(Retriev)n(e)26 +b(the)i(short)f(descriptiv)n(e)g(name)g(for)g(this)h(extension.)208 +4713 y(The)f(result)g(is)h(a)f(b)n(yte)h(string)e(lik)n(e)i +Fl(\020basicConstrain)o(ts)o(\021)p Fq(.)68 b(New)27 +b(in)h(v)n(ersion)e(0.12.)0 4860 y Fl(get_data\(\))208 +4959 y Fq(Retriev)n(e)g(the)i(data)f(for)g(this)h(extension.)208 +5092 y(The)f(result)g(is)h(the)g(ASN.1)g(enco)r(ded)f(form)g(of)h(the)g +(extension)f(data)g(as)g(a)g(b)n(yte)g(string.)74 b(New)27 +b(in)h(v)n(ersion)e(0.12.)p 0 5549 3901 4 v 0 5649 a +Ff(3.1)82 b Fl(crypto)25 b Ff(\026)j(Generic)g(cryptographic)e(mo)r +(dule)2234 b(9)p eop end %%Page: 10 10 TeXDict begin 10 9 bop 0 83 a Ff(Netscap)r(eSPKI)27 b(objects)0 283 y Fq(Netscap)r(eSPKI)h(ob)5 b(jects)27 b(ha)n(v)n(e)f(the)i(follo)n @@ -5382,566 +5382,608 @@ Fl(OP_NO_TLSv1)14 b Fq(means)19 b(to)g(disable)f(those)208 b(is)g(in)n(teresting)g(if)g(y)n(ou're)f(using)g(e.g.)41 b Fl(SSLv23_METHOD)24 b Fq(to)29 b(get)g(an)f(SSLv2-compatible)208 1672 y(handshak)n(e,)e(but)i(don't)g(w)n(an)n(t)f(to)g(use)h(SSLv2.)0 -1819 y Fl(ContextType)208 1918 y Fq(See)f Fl(Context)p -Fq(.)0 2065 y Fm(class)k Fl(Context\()p Fc(metho)l(d)9 -b Fl(\))208 2165 y Fq(A)27 b(class)g(represen)n(ting)f(SSL)i(con)n -(texts.)36 b(Con)n(texts)27 b(de\034ne)h(the)g(parameters)d(of)j(one)f -(or)g(more)f(SSL)i(connections.)208 2298 y Fc(metho)l(d)36 -b Fq(should)28 b(b)r(e)g Fl(SSLv2_METHOD)p Fq(,)22 b -Fl(SSLv3_METHOD)p Fq(,)h Fl(SSLv23_METHOD)f Fq(or)27 -b Fl(TLSv1_METHOD)p Fq(.)0 2445 y Fl(ConnectionType)208 -2544 y Fq(See)g Fl(Connection)p Fq(.)0 2691 y Fm(class)k -Fl(Connection\()p Fc(c)l(ontext,)25 b(so)l(cket)8 b Fl(\))208 -2791 y Fq(A)27 b(class)g(represen)n(ting)f(SSL)i(connections.)208 -2924 y Fc(c)l(ontext)44 b Fq(should)37 b(b)r(e)g(an)g(instance)g(of)44 -b Fl(Context)34 b Fq(and)j Fc(so)l(cket)46 b Fq(should)37 -b(b)r(e)g(a)g(so)r(c)n(k)n(et)2978 2893 y Fk(3)3053 2924 -y Fq(ob)5 b(ject.)66 b Fc(so)l(cket)45 b Fq(ma)n(y)37 -b(b)r(e)208 3023 y Fc(None)6 b Fq(;)27 b(in)h(this)g(case,)e(the)i -(Connection)f(is)g(created)g(with)h(a)f(memory)g(BIO:)f(see)h(the)h -Fl(bio_read)p Fq(,)c Fl(bio_write)p Fq(,)g(and)208 3123 -y Fl(bio_shutdown)e Fq(metho)r(ds.)0 3270 y Fm(exception)32 -b Fl(Error)208 3369 y Fq(This)i(exception)g(is)h(used)f(as)g(a)h(base)e -(class)h(for)g(the)h(other)f(SSL-related)g(exceptions,)i(but)f(ma)n(y)f -(also)f(b)r(e)i(raised)208 3469 y(directly)-7 b(.)208 -3602 y(Whenev)n(er)36 b(this)h(exception)g(is)g(raised)f(directly)-7 -b(,)40 b(it)d(has)g(a)f(list)i(of)f(error)e(messages)g(from)i(the)h(Op) -r(enSSL)f(error)208 3701 y(queue,)k(where)d(eac)n(h)f(item)i(is)g(a)f -(tuple)h Fl(\()p Fc(lib)5 b Fl(,)44 b Fc(function)6 b -Fl(,)43 b Fc(r)l(e)l(ason)6 b Fl(\))p Fq(.)70 b(Here)38 -b Fc(lib)5 b Fq(,)43 b Fc(function)h Fq(and)39 b Fc(r)l(e)l(ason)45 -b Fq(are)37 b(all)208 3801 y(strings,)26 b(describing)h(where)g(and)g -(what)h(the)g(problem)f(is.)36 b(See)28 b Fc(err)p Fq(\(3\))g(for)f -(more)g(information.)0 3948 y Fm(exception)32 b Fl(ZeroReturnError)208 -4048 y Fq(This)g(exception)g(matc)n(hes)g(the)h(error)d(return)i(co)r -(de)h Fl(SSL_ERROR_ZERO_)o(RE)o(TUR)o(N)p Fq(,)26 b(and)33 -b(is)f(raised)f(when)i(the)g(SSL)208 4147 y(Connection)c(has)g(b)r(een) -h(closed.)43 b(In)29 b(SSL)h(3.0)f(and)h(TLS)g(1.0,)f(this)h(only)f(o)r -(ccurs)g(if)h(a)g(closure)e(alert)h(has)g(o)r(ccurred)208 -4247 y(in)g(the)g(proto)r(col,)f(i.e.)41 b(the)29 b(connection)f(has)g -(b)r(een)i(closed)e(cleanly)-7 b(.)40 b(Note)29 b(that)g(this)g(do)r -(es)f(not)h(necessarily)e(mean)208 4346 y(that)g(the)h(transp)r(ort)f -(la)n(y)n(er)f(\(e.g.)36 b(a)28 b(so)r(c)n(k)n(et\))e(has)h(b)r(een)h -(closed.)208 4479 y(It)k(ma)n(y)f(seem)h(a)f(little)i(strange)e(that)h -(this)g(is)g(an)g(exception,)g(but)h(it)f(do)r(es)g(matc)n(h)g(an)f -Fl(SSL_ERROR)e Fq(co)r(de,)j(and)g(is)208 4579 y(v)n(ery)26 -b(con)n(v)n(enien)n(t.)0 4726 y Fm(exception)32 b Fl(WantReadError)208 -4825 y Fq(The)i(op)r(eration)e(did)j(not)f(complete;)j(the)d(same)g +1819 y Fl(SSLEAY_VERSION)0 1918 y(SSLEAY_CFLAGS)0 2018 +y(SSLEAY_BUILT_ON)0 2118 y(SSLEAY_PLATFORM)0 2217 y(SSLEAY_DIR)208 +2317 y Fq(Constan)n(ts)i(used)h(with)g Fl(SSLeay_version)25 +b Fq(to)31 b(sp)r(ecify)g(what)g(Op)r(enSSL)h(v)n(ersion)d(information) +h(to)h(retriev)n(e.)46 b(See)208 2417 y(the)28 b(man)f(page)g(for)g +(the)h Fl(SSLeay_version)21 b Fq(C)28 b(API)g(for)f(details.)0 +2563 y Fl(OPENSSL_VERSION_)o(NU)o(MBE)o(R)208 2663 y +Fq(An)d(in)n(teger)f(giving)g(the)h(v)n(ersion)e(n)n(um)n(b)r(er)i(of)f +(the)i(Op)r(enSSL)f(library)e(used)i(to)g(build)g(this)g(v)n(ersion)e +(of)i(p)n(yOp)r(enSSL.)208 2763 y(See)j(the)h(man)g(page)e(for)h(the)h +Fl(SSLeay_version)22 b Fq(C)28 b(API)g(for)f(details.)0 +2910 y Fl(SSLeay_version\()p Fc(t)o(yp)l(e)6 b Fl(\))208 +3009 y Fq(Retriev)n(e)20 b(a)i(string)f(describing)f(some)i(asp)r(ect)f +(of)h(the)g(underlying)f(Op)r(enSSL)h(v)n(ersion.)33 +b(The)22 b(t)n(yp)r(e)g(passed)e(in)i(should)208 3109 +y(b)r(e)28 b(one)f(of)g(the)h Fl(SSLEAY_*)c Fq(constan)n(ts)j +(de\034ned)h(in)g(this)g(mo)r(dule.)0 3256 y Fl(ContextType)208 +3355 y Fq(See)f Fl(Context)p Fq(.)0 3502 y Fm(class)k +Fl(Context\()p Fc(metho)l(d)9 b Fl(\))208 3602 y Fq(A)27 +b(class)g(represen)n(ting)f(SSL)i(con)n(texts.)36 b(Con)n(texts)27 +b(de\034ne)h(the)g(parameters)d(of)j(one)f(or)g(more)f(SSL)i +(connections.)208 3735 y Fc(metho)l(d)36 b Fq(should)28 +b(b)r(e)g Fl(SSLv2_METHOD)p Fq(,)22 b Fl(SSLv3_METHOD)p +Fq(,)h Fl(SSLv23_METHOD)f Fq(or)27 b Fl(TLSv1_METHOD)p +Fq(.)0 3881 y Fl(ConnectionType)208 3981 y Fq(See)g Fl(Connection)p +Fq(.)0 4128 y Fm(class)k Fl(Connection\()p Fc(c)l(ontext,)25 +b(so)l(cket)8 b Fl(\))208 4228 y Fq(A)27 b(class)g(represen)n(ting)f +(SSL)i(connections.)208 4360 y Fc(c)l(ontext)44 b Fq(should)37 +b(b)r(e)g(an)g(instance)g(of)44 b Fl(Context)34 b Fq(and)j +Fc(so)l(cket)46 b Fq(should)37 b(b)r(e)g(a)g(so)r(c)n(k)n(et)2978 +4330 y Fk(3)3053 4360 y Fq(ob)5 b(ject.)66 b Fc(so)l(cket)45 +b Fq(ma)n(y)37 b(b)r(e)208 4460 y Fc(None)6 b Fq(;)27 +b(in)h(this)g(case,)e(the)i(Connection)f(is)g(created)g(with)h(a)f +(memory)g(BIO:)f(see)h(the)h Fl(bio_read)p Fq(,)c Fl(bio_write)p +Fq(,)g(and)208 4560 y Fl(bio_shutdown)e Fq(metho)r(ds.)0 +4707 y Fm(exception)32 b Fl(Error)208 4806 y Fq(This)i(exception)g(is)h +(used)f(as)g(a)h(base)e(class)h(for)g(the)h(other)f(SSL-related)g +(exceptions,)i(but)f(ma)n(y)f(also)f(b)r(e)i(raised)208 +4906 y(directly)-7 b(.)208 5039 y(Whenev)n(er)36 b(this)h(exception)g +(is)g(raised)f(directly)-7 b(,)40 b(it)d(has)g(a)f(list)i(of)f(error)e +(messages)g(from)i(the)h(Op)r(enSSL)f(error)208 5138 +y(queue,)k(where)d(eac)n(h)f(item)i(is)g(a)f(tuple)h +Fl(\()p Fc(lib)5 b Fl(,)44 b Fc(function)6 b Fl(,)43 +b Fc(r)l(e)l(ason)6 b Fl(\))p Fq(.)70 b(Here)38 b Fc(lib)5 +b Fq(,)43 b Fc(function)h Fq(and)39 b Fc(r)l(e)l(ason)45 +b Fq(are)37 b(all)p 0 5208 1560 4 v 92 5261 a Fh(3)127 +5285 y Fg(A)n(ctually)-6 b(,)25 b(all)e(that)j(is)d(required)j(is)e(an) +g(ob)t(ject)h(that)h Fa(b)l(ehaves)e Fg(lik)n(e)g(a)h(so)r(c)n(k)n(et,) +g(y)n(ou)g(could)g(ev)n(en)g(use)f(\034les,)g(ev)n(en)i(though)f(it'd)f +(b)r(e)h(tric)n(ky)g(to)0 5363 y(get)g(the)f(handshak)n(es)h(righ)n(t!) +p 0 5549 3901 4 v 0 5649 a Ff(12)2197 b(3)83 b Fl(OpenSSL)24 +b Ff(\026)k(Python)f(interface)h(to)f(Op)r(enSSL)p eop +end +%%Page: 13 13 +TeXDict begin 13 12 bop 208 83 a Fq(strings,)26 b(describing)h(where)g +(and)g(what)h(the)g(problem)f(is.)36 b(See)28 b Fc(err)p +Fq(\(3\))g(for)f(more)g(information.)0 230 y Fm(exception)32 +b Fl(ZeroReturnError)208 330 y Fq(This)g(exception)g(matc)n(hes)g(the)h +(error)d(return)i(co)r(de)h Fl(SSL_ERROR_ZERO_)o(RE)o(TUR)o(N)p +Fq(,)26 b(and)33 b(is)f(raised)f(when)i(the)g(SSL)208 +429 y(Connection)c(has)g(b)r(een)h(closed.)43 b(In)29 +b(SSL)h(3.0)f(and)h(TLS)g(1.0,)f(this)h(only)f(o)r(ccurs)g(if)h(a)g +(closure)e(alert)h(has)g(o)r(ccurred)208 529 y(in)g(the)g(proto)r(col,) +f(i.e.)41 b(the)29 b(connection)f(has)g(b)r(een)i(closed)e(cleanly)-7 +b(.)40 b(Note)29 b(that)g(this)g(do)r(es)f(not)h(necessarily)e(mean)208 +628 y(that)g(the)h(transp)r(ort)f(la)n(y)n(er)f(\(e.g.)36 +b(a)28 b(so)r(c)n(k)n(et\))e(has)h(b)r(een)h(closed.)208 +758 y(It)k(ma)n(y)f(seem)h(a)f(little)i(strange)e(that)h(this)g(is)g +(an)g(exception,)g(but)h(it)f(do)r(es)g(matc)n(h)g(an)f +Fl(SSL_ERROR)e Fq(co)r(de,)j(and)g(is)208 858 y(v)n(ery)26 +b(con)n(v)n(enien)n(t.)0 1005 y Fm(exception)32 b Fl(WantReadError)208 +1104 y Fq(The)i(op)r(eration)e(did)j(not)f(complete;)j(the)d(same)g (I/O)f(metho)r(d)h(should)g(b)r(e)g(called)g(again)f(later,)i(with)f -(the)h(same)208 4925 y(argumen)n(ts.)g(An)n(y)28 b(I/O)e(metho)r(d)i +(the)h(same)208 1204 y(argumen)n(ts.)g(An)n(y)28 b(I/O)e(metho)r(d)i (can)f(lead)h(to)f(this)h(since)f(new)h(handshak)n(es)e(can)h(o)r(ccur) -g(at)g(an)n(y)g(time.)208 5058 y(The)44 b(w)n(an)n(ted)h(read)f(is)g +g(at)g(an)n(y)g(time.)208 1334 y(The)44 b(w)n(an)n(ted)h(read)f(is)g (for)h Fc(dirty)g Fq(data)g(sen)n(t)f(o)n(v)n(er)f(the)j(net)n(w)n (ork,)h(not)e(the)h Fc(cle)l(an)f Fq(data)f(inside)h(the)g(tunnel.)208 -5157 y(F)-7 b(or)39 b(a)i(so)r(c)n(k)n(et)e(based)h(SSL)h(connection,)i +1433 y(F)-7 b(or)39 b(a)i(so)r(c)n(k)n(et)e(based)h(SSL)h(connection,)i Fc(r)l(e)l(ad)e Fq(means)f(data)g(coming)g(at)g(us)h(o)n(v)n(er)e(the)i -(net)n(w)n(ork.)74 b(Un)n(til)41 b(that)p 0 5227 1560 -4 v 92 5280 a Fh(3)127 5304 y Fg(A)n(ctually)-6 b(,)25 -b(all)e(that)j(is)d(required)j(is)e(an)g(ob)t(ject)h(that)h -Fa(b)l(ehaves)e Fg(lik)n(e)g(a)h(so)r(c)n(k)n(et,)g(y)n(ou)g(could)g -(ev)n(en)g(use)f(\034les,)g(ev)n(en)i(though)f(it'd)f(b)r(e)h(tric)n -(ky)g(to)0 5383 y(get)g(the)f(handshak)n(es)h(righ)n(t!)p -0 5549 3901 4 v 0 5649 a Ff(12)2197 b(3)83 b Fl(OpenSSL)24 -b Ff(\026)k(Python)f(interface)h(to)f(Op)r(enSSL)p eop -end -%%Page: 13 13 -TeXDict begin 13 12 bop 208 83 a Fq(read)38 b(succeeds,)k(the)d -(attempted)h Fl(OpenSSL.SSL.Conn)o(ect)o(io)o(n.)o(rec)o(v)p +(net)n(w)n(ork.)74 b(Un)n(til)41 b(that)208 1533 y(read)d(succeeds,)k +(the)d(attempted)h Fl(OpenSSL.SSL.Conn)o(ect)o(io)o(n.)o(rec)o(v)p Fq(,)c Fl(OpenSSL.SSL.Conn)o(ec)o(tio)o(n.)o(se)o(nd)p -Fq(,)g(or)208 183 y Fl(OpenSSL.SSL.Con)o(ne)o(ct)o(ion)o(.d)o(o_h)o(an) -o(ds)o(hak)o(e)15 b Fq(is)22 b(prev)n(en)n(ted)e(or)h(incomplete.)35 -b(Y)-7 b(ou)22 b(probably)e(w)n(an)n(t)h(to)g Fl(select\(\))208 -282 y Fq(on)27 b(the)h(so)r(c)n(k)n(et)e(b)r(efore)h(trying)g(again.)0 -429 y Fm(exception)32 b Fl(WantWriteError)208 529 y Fq(See)27 -b Fl(WantReadError)p Fq(.)32 b(The)27 b(so)r(c)n(k)n(et)g(send)g -(bu\033er)h(ma)n(y)f(b)r(e)h(to)r(o)f(full)h(to)g(write)f(more)g(data.) -0 676 y Fm(exception)32 b Fl(WantX509LookupE)o(rr)o(or)208 -775 y Fq(The)24 b(op)r(eration)g(did)h(not)g(complete)f(b)r(ecause)g +Fq(,)g(or)208 1632 y Fl(OpenSSL.SSL.Con)o(ne)o(ct)o(ion)o(.d)o(o_h)o +(an)o(ds)o(hak)o(e)15 b Fq(is)22 b(prev)n(en)n(ted)e(or)h(incomplete.) +35 b(Y)-7 b(ou)22 b(probably)e(w)n(an)n(t)h(to)g Fl(select\(\))208 +1732 y Fq(on)27 b(the)h(so)r(c)n(k)n(et)e(b)r(efore)h(trying)g(again.)0 +1879 y Fm(exception)32 b Fl(WantWriteError)208 1979 y +Fq(See)27 b Fl(WantReadError)p Fq(.)32 b(The)27 b(so)r(c)n(k)n(et)g +(send)g(bu\033er)h(ma)n(y)f(b)r(e)h(to)r(o)f(full)h(to)g(write)f(more)g +(data.)0 2125 y Fm(exception)32 b Fl(WantX509LookupE)o(rr)o(or)208 +2225 y Fq(The)24 b(op)r(eration)g(did)h(not)g(complete)f(b)r(ecause)g (an)h(application)f(callbac)n(k)f(has)h(ask)n(ed)g(to)g(b)r(e)h(called) -g(again.)34 b(The)25 b(I/O)208 875 y(metho)r(d)f(should)h(b)r(e)f +g(again.)34 b(The)25 b(I/O)208 2325 y(metho)r(d)f(should)h(b)r(e)f (called)g(again)g(later,)g(with)h(the)g(same)e(argumen)n(ts.)35 b(Note:)g(This)24 b(w)n(on't)h(o)r(ccur)e(in)i(this)g(v)n(ersion,)208 -975 y(as)h(there)i(are)e(no)i(suc)n(h)f(callbac)n(ks)f(in)i(this)f(v)n -(ersion.)0 1121 y Fm(exception)32 b Fl(SysCallError)208 -1221 y Fq(The)25 b Fl(SysCallError)20 b Fq(o)r(ccurs)k(when)i(there's)e +2424 y(as)h(there)i(are)e(no)i(suc)n(h)f(callbac)n(ks)f(in)i(this)f(v)n +(ersion.)0 2571 y Fm(exception)32 b Fl(SysCallError)208 +2671 y Fq(The)25 b Fl(SysCallError)20 b Fq(o)r(ccurs)k(when)i(there's)e (an)h(I/O)g(error)e(and)i(Op)r(enSSL's)g(error)e(queue)i(do)r(es)g(not) -g(con)n(tain)g(an)n(y)208 1321 y(information.)59 b(This)36 +g(con)n(tain)g(an)n(y)208 2770 y(information.)59 b(This)36 b(can)f(mean)g(t)n(w)n(o)g(things:)52 b(An)36 b(error)d(in)j(the)g (transp)r(ort)e(proto)r(col,)i(or)f(an)g(end)h(of)f(\034le)h(that)208 -1420 y(violates)26 b(the)i(proto)r(col.)36 b(The)27 b(parameter)f(to)i +2870 y(violates)26 b(the)i(proto)r(col.)36 b(The)27 b(parameter)f(to)i (the)g(exception)f(is)g(alw)n(a)n(ys)f(a)h(pair)g Fl(\()p Fc(errnum)6 b Fl(,)42 b Fc(errstr)9 b Fl(\))p Fq(.)0 -1683 y Ff(Context)27 b(objects)0 1884 y Fq(Con)n(text)g(ob)5 +3130 y Ff(Context)27 b(objects)0 3331 y Fq(Con)n(text)g(ob)5 b(jects)27 b(ha)n(v)n(e)g(the)h(follo)n(wing)e(metho)r(ds:)0 -2031 y Fl(check_privatekey)o(\(\))208 2147 y Fq(Chec)n(k)k(if)i(the)g +3478 y Fl(check_privatekey)o(\(\))208 3594 y Fq(Chec)n(k)k(if)i(the)g (priv)-5 b(ate)31 b(k)n(ey)f(\(loaded)h(with)h Fl(use_privatekey)p Fb([)p Fl(_)o(fi)o(le)11 b Fb(])p Fq(\))26 b(matc)n(hes)k(the)i -(certi\034cate)f(\(loaded)g(with)208 2275 y Fl(use_certificate)o +(certi\034cate)f(\(loaded)g(with)208 3722 y Fl(use_certificate)o Fb([)p Fl(_)o(fil)o(e)11 b Fb(])p Fq(\).)31 b(Returns)d Fl(None)e Fq(if)i(they)f(matc)n(h,)h(raises)e Fl(Error)g -Fq(otherwise.)0 2421 y Fl(get_app_data\(\))208 2521 y +Fq(otherwise.)0 3869 y Fl(get_app_data\(\))208 3968 y Fq(Retriev)n(e)g(application)h(data)g(as)g(set)h(b)n(y)g -Fl(set_app_data)p Fq(.)0 2668 y Fl(get_cert_store\(\))208 -2768 y Fq(Retriev)n(e)34 b(the)i(certi\034cate)f(store)f(\(a)h +Fl(set_app_data)p Fq(.)0 4115 y Fl(get_cert_store\(\))208 +4215 y Fq(Retriev)n(e)34 b(the)i(certi\034cate)f(store)f(\(a)h (X509Store)f(ob)5 b(ject\))35 b(that)h(the)f(con)n(text)g(uses.)60 -b(This)35 b(can)g(b)r(e)h(used)f(to)g(add)208 2867 y("trusted")26 +b(This)35 b(can)g(b)r(e)h(used)f(to)g(add)208 4314 y("trusted")26 b(certi\034cates)h(without)h(using)f(the.)37 b Fl(load_verify_loca)o -(tio)o(ns)o(\(\))21 b Fq(metho)r(d.)0 3014 y Fl(get_timeout\(\))208 -3114 y Fq(Retriev)n(e)26 b(session)h(timeout,)h(as)f(set)g(b)n(y)i +(tio)o(ns)o(\(\))21 b Fq(metho)r(d.)0 4461 y Fl(get_timeout\(\))208 +4561 y Fq(Retriev)n(e)26 b(session)h(timeout,)h(as)f(set)g(b)n(y)i Fl(set_timeout)p Fq(.)j(The)c(default)g(is)f(300)f(seconds.)0 -3261 y Fl(get_verify_depth)o(\(\))208 3360 y Fq(Retriev)n(e)g(the)i +4708 y Fl(get_verify_depth)o(\(\))208 4807 y Fq(Retriev)n(e)g(the)i (Con)n(text)f(ob)5 b(ject's)28 b(v)n(erify)e(depth,)j(as)d(set)i(b)n(y) -g Fl(set_verify_depth)p Fq(.)0 3507 y Fl(get_verify_mode\()o(\))208 -3607 y Fq(Retriev)n(e)e(the)i(Con)n(text)f(ob)5 b(ject's)28 +g Fl(set_verify_depth)p Fq(.)0 4954 y Fl(get_verify_mode\()o(\))208 +5054 y Fq(Retriev)n(e)e(the)i(Con)n(text)f(ob)5 b(ject's)28 b(v)n(erify)e(mo)r(de,)i(as)f(set)h(b)n(y)g Fl(set_verify)p -Fq(.)0 3754 y Fl(load_client_ca\()p Fc(p)l(em\034le)6 -b Fl(\))208 3853 y Fq(Read)33 b(a)g(\034le)h(with)g(PEM-formatted)g +Fq(.)0 5201 y Fl(load_client_ca\()p Fc(p)l(em\034le)6 +b Fl(\))208 5300 y Fq(Read)33 b(a)g(\034le)h(with)g(PEM-formatted)g (certi\034cates)f(that)h(will)g(b)r(e)g(sen)n(t)f(to)h(the)g(clien)n(t) -f(when)h(requesting)f(a)g(clien)n(t)208 3953 y(certi\034cate.)0 -4100 y Fl(set_client_ca_li)o(st)o(\()p Fc(c)l(erti\034c)l(ate_au)o -(thorities)7 b Fl(\))208 4199 y Fq(Replace)23 b(the)h(curren)n(t)g -(list)g(of)g(preferred)f(certi\034cate)g(signers)g(that)h(w)n(ould)f(b) -r(e)i(sen)n(t)f(to)g(the)g(clien)n(t)g(when)g(requesting)208 -4299 y(a)j(clien)n(t)g(certi\034cate)g(with)h(the)g Fc(c)l(erti\034c)l -(ate_authorities)35 b Fq(sequence)27 b(of)34 b Fl(OpenSSL.crypto.X5)o -(09)o(Na)o(me)p Fq(s)o(.)208 4432 y(New)27 b(in)h(v)n(ersion)e(0.10.)0 -4579 y Fl(add_client_ca\()p Fc(c)l(erti\034c)l(ate_aut)o(hority)7 -b Fl(\))208 4678 y Fq(Extract)22 b(a)g Fl(OpenSSL.crypto.X)o(50)o(9Na)o +f(when)h(requesting)f(a)g(clien)n(t)208 5400 y(certi\034cate.)p +0 5549 3901 4 v 0 5649 a Ff(3.3)82 b Fl(SSL)26 b Ff(\026)i(An)g +(interface)g(to)f(the)g(SSL-sp)r(eci\034c)h(pa)n(rts)f(of)h(Op)r(enSSL) +1611 b(13)p eop end +%%Page: 14 14 +TeXDict begin 14 13 bop 0 83 a Fl(set_client_ca_li)o(st)o(\()p +Fc(c)l(erti\034c)l(ate_au)o(thorities)7 b Fl(\))208 183 +y Fq(Replace)23 b(the)h(curren)n(t)g(list)g(of)g(preferred)f +(certi\034cate)g(signers)g(that)h(w)n(ould)f(b)r(e)i(sen)n(t)f(to)g +(the)g(clien)n(t)g(when)g(requesting)208 282 y(a)j(clien)n(t)g +(certi\034cate)g(with)h(the)g Fc(c)l(erti\034c)l(ate_authorities)35 +b Fq(sequence)27 b(of)34 b Fl(OpenSSL.crypto.X5)o(09)o(Na)o(me)p +Fq(s)o(.)208 415 y(New)27 b(in)h(v)n(ersion)e(0.10.)0 +562 y Fl(add_client_ca\()p Fc(c)l(erti\034c)l(ate_aut)o(hority)7 +b Fl(\))208 662 y Fq(Extract)22 b(a)g Fl(OpenSSL.crypto.X)o(50)o(9Na)o (me)16 b Fq(from)22 b(the)h Fc(c)l(erti\034c)l(ate_authority)30 b Fl(OpenSSL.crypto.X)o(509)16 b Fq(certi\034cate)208 -4778 y(and)k(add)g(it)h(to)f(the)h(list)f(of)h(preferred)e +761 y(and)k(add)g(it)h(to)f(the)h(list)f(of)h(preferred)e (certi\034cate)h(signers)f(sen)n(t)h(to)g(the)h(clien)n(t)f(when)h -(requesting)e(a)h(clien)n(t)h(certi\034cate.)208 4911 -y(New)27 b(in)h(v)n(ersion)e(0.10.)0 5058 y Fl(load_verify_loca)o(ti)o +(requesting)e(a)h(clien)n(t)h(certi\034cate.)208 894 +y(New)27 b(in)h(v)n(ersion)e(0.10.)0 1041 y Fl(load_verify_loca)o(ti)o (ons)o(\()p Fc(p)l(em\034le,)e(c)l(ap)l(ath)6 b Fl(\))208 -5157 y Fq(Sp)r(ecify)24 b(where)f(CA)g(certi\034cates)g(for)g(v)n +1141 y Fq(Sp)r(ecify)24 b(where)f(CA)g(certi\034cates)g(for)g(v)n (eri\034cation)f(purp)r(oses)h(are)f(lo)r(cated.)35 b(These)23 -b(are)g(trusted)g(certi\034cates.)35 b(Note)208 5257 +b(are)g(trusted)g(certi\034cates.)35 b(Note)208 1240 y(that)c(the)g(certi\034cates)f(ha)n(v)n(e)f(to)i(b)r(e)g(in)g(PEM)h (format.)46 b(If)31 b(capath)f(is)h(passed,)f(it)i(m)n(ust)e(b)r(e)i(a) -e(directory)f(prepared)208 5356 y(using)i(the)h Fl(c_rehash)c +e(directory)f(prepared)208 1340 y(using)i(the)h Fl(c_rehash)c Fq(to)r(ol)j(included)h(with)g(Op)r(enSSL.)g(Either,)h(but)f(not)g(b)r (oth,)h(of)38 b Fc(p)l(em\034le)g Fq(or)31 b Fc(c)l(ap)l(ath)39 -b Fq(ma)n(y)31 b(b)r(e)p 0 5549 3901 4 v 0 5649 a Ff(3.3)82 -b Fl(SSL)26 b Ff(\026)i(An)g(interface)g(to)f(the)g(SSL-sp)r(eci\034c)h -(pa)n(rts)f(of)h(Op)r(enSSL)1611 b(13)p eop end -%%Page: 14 14 -TeXDict begin 14 13 bop 208 83 a Fl(None)p Fq(.)0 230 +b Fq(ma)n(y)31 b(b)r(e)208 1439 y Fl(None)p Fq(.)0 1586 y Fl(set_default_veri)o(fy)o(_pa)o(th)o(s\()o(\))208 -330 y Fq(Sp)r(ecify)20 b(that)h(the)g(platform)f(pro)n(vided)f(CA)h +1686 y Fq(Sp)r(ecify)20 b(that)h(the)g(platform)f(pro)n(vided)f(CA)h (certi\034cates)g(are)f(to)h(b)r(e)h(used)f(for)g(v)n(eri\034cation)f -(purp)r(oses.)33 b(This)21 b(metho)r(d)208 429 y(ma)n(y)26 -b(not)i(w)n(ork)e(prop)r(erly)h(on)g(OS)g(X.)0 576 y -Fl(load_tmp_dh\()p Fc(dh\034le)6 b Fl(\))208 676 y Fq(Load)26 +(purp)r(oses.)33 b(This)21 b(metho)r(d)208 1786 y(ma)n(y)26 +b(not)i(w)n(ork)e(prop)r(erly)h(on)g(OS)g(X.)0 1932 y +Fl(load_tmp_dh\()p Fc(dh\034le)6 b Fl(\))208 2032 y Fq(Load)26 b(parameters)g(for)h(Ephemeral)g(Di\036e-Hellman)h(from)g -Fc(dh\034le)6 b Fq(.)0 823 y Fl(set_app_data\()p Fc(data)g -Fl(\))208 922 y Fq(Asso)r(ciate)25 b Fc(data)33 b Fq(with)27 +Fc(dh\034le)6 b Fq(.)0 2179 y Fl(set_app_data\()p Fc(data)g +Fl(\))208 2279 y Fq(Asso)r(ciate)25 b Fc(data)33 b Fq(with)27 b(this)f(Con)n(text)f(ob)5 b(ject.)36 b Fc(data)e Fq(can)25 b(b)r(e)i(retriev)n(ed)d(later)i(using)f(the)i Fl(get_app_data)21 -b Fq(metho)r(d.)0 1069 y Fl(set_cipher_list\()o Fc(ciphers)7 -b Fl(\))208 1169 y Fq(Set)28 b(the)g(list)h(of)f(ciphers)f(to)h(b)r(e)g +b Fq(metho)r(d.)0 2425 y Fl(set_cipher_list\()o Fc(ciphers)7 +b Fl(\))208 2525 y Fq(Set)28 b(the)g(list)h(of)f(ciphers)f(to)h(b)r(e)g (used)g(in)g(this)h(con)n(text.)37 b(See)28 b(the)h(Op)r(enSSL)f(man)n -(ual)f(for)h(more)f(information)g(\(e.g.)208 1268 y(ciphers\(1\)\))0 -1415 y Fl(set_info_callbac)o(k\()o Fc(c)l(al)t(lb)l(ack)9 -b Fl(\))208 1515 y Fq(Set)33 b(the)f(information)g(callbac)n(k)f(to)i +(ual)f(for)h(more)f(information)g(\(e.g.)208 2625 y(ciphers\(1\)\))0 +2772 y Fl(set_info_callbac)o(k\()o Fc(c)l(al)t(lb)l(ack)9 +b Fl(\))208 2871 y Fq(Set)33 b(the)f(information)g(callbac)n(k)f(to)i Fc(c)l(al)t(lb)l(ack)9 b Fq(.)54 b(This)32 b(function)h(will)g(b)r(e)g (called)f(from)g(time)h(to)g(time)g(during)f(SSL)208 -1614 y(handshak)n(es.)49 b Fc(c)l(al)t(lb)l(ack)43 b +2971 y(handshak)n(es.)49 b Fc(c)l(al)t(lb)l(ack)43 b Fq(should)32 b(tak)n(e)g(three)g(argumen)n(ts:)45 b(a)32 b(Connection)g(ob)5 b(ject)32 b(and)g(t)n(w)n(o)g(in)n(tegers.)50 -b(The)32 b(\034rst)208 1714 y(in)n(teger)f(sp)r(eci\034es)g(where)h(in) +b(The)32 b(\034rst)208 3070 y(in)n(teger)f(sp)r(eci\034es)g(where)h(in) g(the)g(SSL)g(handshak)n(e)f(the)h(function)h(w)n(as)e(called,)h(and)g -(the)g(other)g(the)g(return)f(co)r(de)208 1814 y(from)c(a)g(\(p)r +(the)g(other)g(the)g(return)f(co)r(de)208 3170 y(from)c(a)g(\(p)r (ossibly)g(failed\))h(in)n(ternal)f(function)h(call.)0 -1961 y Fl(set_options\()p Fc(options)7 b Fl(\))208 2060 +3317 y Fl(set_options\()p Fc(options)7 b Fl(\))208 3417 y Fq(A)n(dd)28 b(SSL)h(options.)38 b(Options)28 b(y)n(ou)f(ha)n(v)n(e)g (set)i(b)r(efore)f(are)f(not)h(cleared!)38 b(This)28 b(metho)r(d)h(should)f(b)r(e)h(used)f(with)h(the)208 -2160 y Fl(OP_*)d Fq(constan)n(ts.)0 2307 y Fl(set_passwd_cb\()p +3516 y Fl(OP_*)d Fq(constan)n(ts.)0 3663 y Fl(set_passwd_cb\()p Fc(c)l(al)t(lb)l(ack)9 b Fb([)p Fc(,)25 b(user)l(data)19 -b Fb(])p Fl(\))208 2406 y Fq(Set)42 b(the)g(passphrase)f(callbac)n(k)f +b Fb(])p Fl(\))208 3763 y Fq(Set)42 b(the)g(passphrase)f(callbac)n(k)f (to)i Fc(c)l(al)t(lb)l(ack)9 b Fq(.)82 b(This)42 b(function)h(will)f(b) r(e)g(called)g(when)g(a)g(priv)-5 b(ate)42 b(k)n(ey)f(with)h(a)208 -2506 y(passphrase)32 b(is)i(loaded.)56 b Fc(c)l(al)t(lb)l(ack)45 +3862 y(passphrase)32 b(is)i(loaded.)56 b Fc(c)l(al)t(lb)l(ack)45 b Fq(m)n(ust)34 b(accept)g(three)g(p)r(ositional)f(argumen)n(ts.)56 -b(First,)35 b(an)f(in)n(teger)f(giving)h(the)208 2606 +b(First,)35 b(an)f(in)n(teger)f(giving)h(the)208 3962 y(maxim)n(um)e(length)i(of)f(the)g(passphrase)f(it)h(ma)n(y)g(return.) 53 b(If)33 b(the)h(returned)e(passphrase)g(is)h(longer)f(than)h(this,)i -(it)208 2705 y(will)29 b(b)r(e)h(truncated.)43 b(Second,)30 +(it)208 4062 y(will)29 b(b)r(e)h(truncated.)43 b(Second,)30 b(a)f(b)r(o)r(olean)g(v)-5 b(alue)29 b(whic)n(h)h(will)g(b)r(e)g(true)f (if)h(the)g(user)f(should)g(b)r(e)h(prompted)g(for)f(the)208 -2805 y(passphrase)k(t)n(wice)h(and)h(the)g(callbac)n(k)f(should)g(v)n +4161 y(passphrase)k(t)n(wice)h(and)h(the)g(callbac)n(k)f(should)g(v)n (erify)h(that)g(the)g(t)n(w)n(o)f(v)-5 b(alues)35 b(supplied)g(are)f -(equal.)58 b(Third,)37 b(the)208 2904 y(v)-5 b(alue)27 +(equal.)58 b(Third,)37 b(the)208 4261 y(v)-5 b(alue)27 b(giv)n(en)g(as)g(the)h Fc(user)l(data)35 b Fq(parameter)26 b(to)h Fl(set_passwd_cb)p Fq(.)32 b(If)c(an)g(error)d(o)r(ccurs,)i Fc(c)l(al)t(lb)l(ack)39 b Fq(should)27 b(return)g(a)208 -3004 y(false)g(v)-5 b(alue)27 b(\(e.g.)37 b(an)27 b(empt)n(y)h -(string\).)0 3151 y Fl(set_session_id\()p Fc(n)o(ame)6 -b Fl(\))208 3251 y Fq(Set)33 b(the)h(con)n(text)f Fc(name)39 +4360 y(false)g(v)-5 b(alue)27 b(\(e.g.)37 b(an)27 b(empt)n(y)h +(string\).)0 4507 y Fl(set_session_id\()p Fc(n)o(ame)6 +b Fl(\))208 4607 y Fq(Set)33 b(the)h(con)n(text)f Fc(name)39 b Fq(within)34 b(whic)n(h)f(a)g(session)f(can)h(b)r(e)h(reused)e(for)h (this)g(Con)n(text)g(ob)5 b(ject.)54 b(This)33 b(is)g(needed)208 -3350 y(when)e(doing)g(session)g(resumption,)h(b)r(ecause)g(there)f(is)h +4707 y(when)e(doing)g(session)g(resumption,)h(b)r(ecause)g(there)f(is)h (no)f(w)n(a)n(y)g(for)g(a)g(stored)g(session)f(to)i(kno)n(w)f(whic)n(h) -g(Con)n(text)208 3450 y(ob)5 b(ject)27 b(it)h(is)f(asso)r(ciated)g +g(Con)n(text)208 4806 y(ob)5 b(ject)27 b(it)h(is)f(asso)r(ciated)g (with.)37 b Fc(name)d Fq(ma)n(y)27 b(b)r(e)h(an)n(y)e(binary)h(data.)0 -3597 y Fl(set_timeout\()p Fc(time)l(out)8 b Fl(\))208 -3696 y Fq(Set)29 b(the)g(timeout)h(for)e(newly)h(created)f(sessions)g +4953 y Fl(set_timeout\()p Fc(time)l(out)8 b Fl(\))208 +5053 y Fq(Set)29 b(the)g(timeout)h(for)e(newly)h(created)f(sessions)g (for)h(this)g(Con)n(text)g(ob)5 b(ject)28 b(to)h Fc(time)l(out)8 b Fq(.)41 b Fc(time)l(out)36 b Fq(m)n(ust)29 b(b)r(e)h(giv)n(en)208 -3796 y(in)f(\(whole\))f(seconds.)40 b(The)29 b(default)g(v)-5 +5152 y(in)f(\(whole\))f(seconds.)40 b(The)29 b(default)g(v)-5 b(alue)28 b(is)h(300)e(seconds.)40 b(See)29 b(the)g(Op)r(enSSL)g(man)n -(ual)f(for)g(more)g(information)208 3896 y(\(e.g.)36 -b(SSL_CTX_set_timeout\(3\)\).)0 4042 y Fl(set_verify\()p -Fc(mo)l(de,)26 b(c)l(al)t(lb)l(ack)9 b Fl(\))208 4142 -y Fq(Set)36 b(the)h(v)n(eri\034cation)e(\035ags)g(for)h(this)h(Con)n -(text)f(ob)5 b(ject)36 b(to)g Fc(mo)l(de)44 b Fq(and)36 -b(sp)r(ecify)g(that)h Fc(c)l(al)t(lb)l(ack)47 b Fq(should)36 -b(b)r(e)h(used)208 4242 y(for)30 b(v)n(eri\034cation)g(callbac)n(ks.)45 -b Fc(mo)l(de)38 b Fq(should)31 b(b)r(e)h(one)e(of)38 +(ual)f(for)g(more)g(information)208 5252 y(\(e.g.)36 +b(SSL_CTX_set_timeout\(3\)\).)0 5399 y Fl(set_verify\()p +Fc(mo)l(de,)26 b(c)l(al)t(lb)l(ack)9 b Fl(\))p 0 5549 +3901 4 v 0 5649 a Ff(14)2197 b(3)83 b Fl(OpenSSL)24 b +Ff(\026)k(Python)f(interface)h(to)f(Op)r(enSSL)p eop +end +%%Page: 15 15 +TeXDict begin 15 14 bop 208 83 a Fq(Set)36 b(the)h(v)n(eri\034cation)e +(\035ags)g(for)h(this)h(Con)n(text)f(ob)5 b(ject)36 b(to)g +Fc(mo)l(de)44 b Fq(and)36 b(sp)r(ecify)g(that)h Fc(c)l(al)t(lb)l(ack)47 +b Fq(should)36 b(b)r(e)h(used)208 183 y(for)30 b(v)n(eri\034cation)g +(callbac)n(ks.)45 b Fc(mo)l(de)38 b Fq(should)31 b(b)r(e)h(one)e(of)38 b Fl(VERIFY_NONE)26 b Fq(and)31 b Fl(VERIFY_PEER)p Fq(.)c(If)38 -b Fl(VERIFY_PEER)26 b Fq(is)208 4341 y(used,)j Fc(mo)l(de)36 +b Fl(VERIFY_PEER)26 b Fq(is)208 282 y(used,)j Fc(mo)l(de)36 b Fq(can)29 b(b)r(e)g(OR:ed)g(with)g Fl(VERIFY_FAIL_IF_NO)o(_P)o(EE)o (R_C)o(ER)o(T)23 b Fq(and)29 b Fl(VERIFY_CLIENT_O)o(NCE)22 -b Fq(to)29 b(further)208 4441 y(con)n(trol)23 b(the)j(b)r(eha)n(viour.) +b Fq(to)29 b(further)208 382 y(con)n(trol)23 b(the)j(b)r(eha)n(viour.) 34 b Fc(c)l(al)t(lb)l(ack)i Fq(should)25 b(tak)n(e)f(\034v)n(e)h (argumen)n(ts:)34 b(A)25 b(Connection)g(ob)5 b(ject,)25 -b(an)g(X509)f(ob)5 b(ject,)25 b(and)208 4541 y(three)e(in)n(teger)g(v) --5 b(ariables,)23 b(whic)n(h)h(are)f(in)h(turn)g(p)r(oten)n(tial)g -(error)d(n)n(um)n(b)r(er,)k(error)c(depth)k(and)f(return)f(co)r(de.)35 -b Fc(c)l(al)t(lb)l(ack)208 4640 y Fq(should)27 b(return)g(true)g(if)h -(v)n(eri\034cation)f(passes)f(and)h(false)h(otherwise.)0 -4787 y Fl(set_verify_depth)o(\()p Fc(depth)6 b Fl(\))208 -4887 y Fq(Set)36 b(the)g(maxim)n(um)f(depth)h(for)g(the)g -(certi\034cate)f(c)n(hain)g(v)n(eri\034cation)f(that)i(shall)f(b)r(e)h -(allo)n(w)n(ed)e(for)i(this)f(Con)n(text)208 4986 y(ob)5 -b(ject.)0 5133 y Fl(use_certificate\()o Fc(c)l(ert)j -Fl(\))208 5233 y Fq(Use)27 b(the)h(certi\034cate)f Fc(c)l(ert)35 -b Fq(whic)n(h)28 b(has)f(to)g(b)r(e)h(a)f(X509)g(ob)5 -b(ject.)0 5380 y Fl(add_extra_chain_)o(ce)o(rt\()o Fc(c)l(ert)j -Fl(\))p 0 5549 3901 4 v 0 5649 a Ff(14)2197 b(3)83 b -Fl(OpenSSL)24 b Ff(\026)k(Python)f(interface)h(to)f(Op)r(enSSL)p -eop end -%%Page: 15 15 -TeXDict begin 15 14 bop 208 83 a Fq(A)n(dds)32 b(the)h(certi\034cate)f -Fc(c)l(ert)8 b Fq(,)34 b(whic)n(h)f(has)f(to)g(b)r(e)i(a)e(X509)f(ob)5 +b(an)g(X509)f(ob)5 b(ject,)25 b(and)208 482 y(three)e(in)n(teger)g(v)-5 +b(ariables,)23 b(whic)n(h)h(are)f(in)h(turn)g(p)r(oten)n(tial)g(error)d +(n)n(um)n(b)r(er,)k(error)c(depth)k(and)f(return)f(co)r(de.)35 +b Fc(c)l(al)t(lb)l(ack)208 581 y Fq(should)27 b(return)g(true)g(if)h(v) +n(eri\034cation)f(passes)f(and)h(false)h(otherwise.)0 +728 y Fl(set_verify_depth)o(\()p Fc(depth)6 b Fl(\))208 +828 y Fq(Set)36 b(the)g(maxim)n(um)f(depth)h(for)g(the)g(certi\034cate) +f(c)n(hain)g(v)n(eri\034cation)f(that)i(shall)f(b)r(e)h(allo)n(w)n(ed)e +(for)i(this)f(Con)n(text)208 927 y(ob)5 b(ject.)0 1074 +y Fl(use_certificate\()o Fc(c)l(ert)j Fl(\))208 1174 +y Fq(Use)27 b(the)h(certi\034cate)f Fc(c)l(ert)35 b Fq(whic)n(h)28 +b(has)f(to)g(b)r(e)h(a)f(X509)g(ob)5 b(ject.)0 1321 y +Fl(add_extra_chain_)o(ce)o(rt\()o Fc(c)l(ert)j Fl(\))208 +1420 y Fq(A)n(dds)32 b(the)h(certi\034cate)f Fc(c)l(ert)8 +b Fq(,)34 b(whic)n(h)f(has)f(to)g(b)r(e)i(a)e(X509)f(ob)5 b(ject,)34 b(to)f(the)g(certi\034cate)f(c)n(hain)g(presen)n(ted)g -(together)208 183 y(with)c(the)g(certi\034cate.)0 330 +(together)208 1520 y(with)c(the)g(certi\034cate.)0 1667 y Fl(use_certificate_)o(ch)o(ain)o(_f)o(il)o(e\()p Fc(\034)o(le)6 -b Fl(\))208 429 y Fq(Load)26 b(a)h(certi\034cate)g(c)n(hain)g(from)h +b Fl(\))208 1766 y Fq(Load)26 b(a)h(certi\034cate)g(c)n(hain)g(from)h Fc(\034le)34 b Fq(whic)n(h)27 b(m)n(ust)h(b)r(e)g(PEM)g(enco)r(ded.)0 -576 y Fl(use_privatekey\()p Fc(pkey)7 b Fl(\))208 676 +1913 y Fl(use_privatekey\()p Fc(pkey)7 b Fl(\))208 2013 y Fq(Use)27 b(the)h(priv)-5 b(ate)27 b(k)n(ey)h Fc(pkey)36 b Fq(whic)n(h)28 b(has)f(to)g(b)r(e)h(a)f(PKey)h(ob)5 -b(ject.)0 837 y Fl(use_certificate_)o(fi)o(le\()o Fc(\034le)h -Fb([)p Fc(,)24 b(format)d Fb(])p Fl(\))208 937 y Fq(Load)i(the)h +b(ject.)0 2174 y Fl(use_certificate_)o(fi)o(le\()o Fc(\034le)h +Fb([)p Fc(,)24 b(format)d Fb(])p Fl(\))208 2274 y Fq(Load)i(the)h (\034rst)g(certi\034cate)f(found)h(in)h Fc(\034le)6 b Fq(.)36 b(The)24 b(certi\034cate)f(m)n(ust)h(b)r(e)h(in)f(the)g(format) g(sp)r(eci\034ed)g(b)n(y)h Fc(format)8 b Fq(,)25 b(whic)n(h)208 -1036 y(is)i(either)g Fl(FILETYPE_PEM)c Fq(or)k Fl(FILETYPE_ASN1)p +2373 y(is)i(either)g Fl(FILETYPE_PEM)c Fq(or)k Fl(FILETYPE_ASN1)p Fq(.)k(The)d(default)g(is)f Fl(FILETYPE_PEM)p Fq(.)0 -1183 y Fl(use_privatekey_f)o(il)o(e\()p Fc(\034)o(le)6 -b Fb([)p Fc(,)25 b(format)20 b Fb(])p Fl(\))208 1283 +2520 y Fl(use_privatekey_f)o(il)o(e\()p Fc(\034)o(le)6 +b Fb([)p Fc(,)25 b(format)20 b Fb(])p Fl(\))208 2620 y Fq(Load)31 b(the)h(\034rst)g(priv)-5 b(ate)31 b(k)n(ey)g(found)i(in)f Fc(\034le)6 b Fq(.)50 b(The)32 b(priv)-5 b(ate)32 b(k)n(ey)f(m)n(ust)h (b)r(e)g(in)h(the)f(format)f(sp)r(eci\034ed)i(b)n(y)f -Fc(format)8 b Fq(,)208 1382 y(whic)n(h)27 b(is)g(either)h +Fc(format)8 b Fq(,)208 2720 y(whic)n(h)27 b(is)g(either)h Fl(FILETYPE_PEM)22 b Fq(or)27 b Fl(FILETYPE_ASN1)p Fq(.)32 -b(The)27 b(default)h(is)g Fl(FILETYPE_PEM)p Fq(.)0 1645 -y Ff(Connection)e(objects)0 1846 y Fq(Connection)h(ob)5 +b(The)27 b(default)h(is)g Fl(FILETYPE_PEM)p Fq(.)0 2866 +y Fl(set_tlsext_serve)o(rn)o(ame)o(_c)o(al)o(lba)o(ck)o(\()p +Fc(c)l(al)t(lb)l(ack)9 b Fl(\))208 2966 y Fq(Sp)r(ecify)25 +b(a)f(one-argumen)n(t)f(callable)h(to)g(use)h(as)f(the)h(TLS)f +(extension)h(serv)n(er)d(name)j(callbac)n(k.)34 b(When)25 +b(a)g(connection)208 3066 y(using)37 b(the)h(serv)n(er)e(name)h +(extension)g(is)h(made)f(using)g(this)h(con)n(text,)i(the)e(callbac)n +(k)f(will)g(b)r(e)h(in)n(v)n(ok)n(ed)f(with)h(the)208 +3165 y Fl(Connection)23 b Fq(instance.)73 b(New)28 b(in)g(v)n(ersion)e +(0.13.)0 3428 y Ff(Connection)g(objects)0 3629 y Fq(Connection)h(ob)5 b(jects)27 b(ha)n(v)n(e)f(the)i(follo)n(wing)f(metho)r(ds:)0 -1993 y Fl(accept\(\))208 2092 y Fq(Call)33 b(the)g Fl(accept)e +3776 y Fl(accept\(\))208 3875 y Fq(Call)33 b(the)g Fl(accept)e Fq(metho)r(d)j(of)f(the)h(underlying)f(so)r(c)n(k)n(et)f(and)h(set)h (up)g(SSL)f(on)g(the)h(returned)f(so)r(c)n(k)n(et,)h(using)f(the)208 -2192 y(Con)n(text)22 b(ob)5 b(ject)22 b(supplied)h(to)f(this)h +3975 y(Con)n(text)22 b(ob)5 b(ject)22 b(supplied)h(to)f(this)h (Connection)f(ob)5 b(ject)22 b(at)h(creation.)34 b(Returns)22 b(a)g(pair)g Fl(\()p Fc(c)l(onn)6 b Fl(,)43 b Fc(addr)l(ess)7 -b Fl(\))p Fq(.)36 b(where)208 2292 y Fc(c)l(onn)d Fq(is)28 +b Fl(\))p Fq(.)36 b(where)208 4074 y Fc(c)l(onn)d Fq(is)28 b(the)g(new)f(Connection)g(ob)5 b(ject)28 b(created,)e(and)i Fc(addr)l(ess)35 b Fq(is)28 b(as)f(returned)g(b)n(y)g(the)h(so)r(c)n(k) -n(et's)e Fl(accept)p Fq(.)0 2438 y Fl(bind\()p Fc(addr)l(ess)7 -b Fl(\))208 2538 y Fq(Call)27 b(the)h Fl(bind)e Fq(metho)r(d)i(of)f -(the)h(underlying)f(so)r(c)n(k)n(et.)0 2685 y Fl(close\(\))208 -2784 y Fq(Call)i(the)h Fl(close)e Fq(metho)r(d)i(of)g(the)g(underlying) +n(et's)e Fl(accept)p Fq(.)0 4221 y Fl(bind\()p Fc(addr)l(ess)7 +b Fl(\))208 4321 y Fq(Call)27 b(the)h Fl(bind)e Fq(metho)r(d)i(of)f +(the)h(underlying)f(so)r(c)n(k)n(et.)0 4468 y Fl(close\(\))208 +4567 y Fq(Call)i(the)h Fl(close)e Fq(metho)r(d)i(of)g(the)g(underlying) f(so)r(c)n(k)n(et.)43 b(Note:)e(If)31 b(y)n(ou)e(w)n(an)n(t)g(correct)f -(SSL)i(closure,)f(y)n(ou)g(need)h(to)208 2884 y(call)d(the)h -Fl(shutdown)c Fq(metho)r(d)k(\034rst.)0 3031 y Fl(connect\()p -Fc(addr)l(ess)7 b Fl(\))208 3131 y Fq(Call)31 b(the)h +(SSL)i(closure,)f(y)n(ou)g(need)h(to)208 4667 y(call)d(the)h +Fl(shutdown)c Fq(metho)r(d)k(\034rst.)0 4814 y Fl(connect\()p +Fc(addr)l(ess)7 b Fl(\))208 4914 y Fq(Call)31 b(the)h Fl(connect)e Fq(metho)r(d)i(of)g(the)g(underlying)g(so)r(c)n(k)n(et)e (and)i(set)g(up)g(SSL)h(on)e(the)i(so)r(c)n(k)n(et,)f(using)f(the)h -(Con)n(text)208 3230 y(ob)5 b(ject)27 b(supplied)h(to)f(this)h -(Connection)f(ob)5 b(ject)27 b(at)h(creation.)0 3377 -y Fl(connect_ex\()p Fc(addr)l(ess)7 b Fl(\))208 3477 +(Con)n(text)208 5013 y(ob)5 b(ject)27 b(supplied)h(to)f(this)h +(Connection)f(ob)5 b(ject)27 b(at)h(creation.)0 5160 +y Fl(connect_ex\()p Fc(addr)l(ess)7 b Fl(\))208 5260 y Fq(Call)24 b(the)g Fl(connect_ex)c Fq(metho)r(d)25 b(of)f(the)h(underlying)f(so)r(c)n(k)n(et)f(and)h(set)g(up)h(SSL)f(on)g (the)h(so)r(c)n(k)n(et,)f(using)g(the)g(Con)n(text)208 -3576 y(ob)5 b(ject)35 b(supplied)g(to)h(this)f(Connection)g(ob)5 +5359 y(ob)5 b(ject)35 b(supplied)g(to)h(this)f(Connection)g(ob)5 b(ject)36 b(at)f(creation.)59 b(Note)36 b(that)f(if)h(the)g -Fl(connect_ex)31 b Fq(metho)r(d)36 b(of)g(the)208 3676 -y(so)r(c)n(k)n(et)26 b(do)r(esn't)i(return)f(0,)g(SSL)h(w)n(on't)f(b)r -(e)h(initialized.)0 3823 y Fl(do_handshake\(\))208 3922 -y Fq(P)n(erform)49 b(an)h(SSL)g(handshak)n(e)f(\(usually)h(called)g -(after)f Fl(renegotiate)d Fq(or)j(one)h(of)57 b Fl(set_accept_stat)o(e) -44 b Fq(or)208 4022 y Fl(set_accept_stat)o(e)p Fq(\).)31 +Fl(connect_ex)31 b Fq(metho)r(d)36 b(of)g(the)p 0 5549 +3901 4 v 0 5649 a Ff(3.3)82 b Fl(SSL)26 b Ff(\026)i(An)g(interface)g +(to)f(the)g(SSL-sp)r(eci\034c)h(pa)n(rts)f(of)h(Op)r(enSSL)1611 +b(15)p eop end +%%Page: 16 16 +TeXDict begin 16 15 bop 208 83 a Fq(so)r(c)n(k)n(et)26 +b(do)r(esn't)i(return)f(0,)g(SSL)h(w)n(on't)f(b)r(e)h(initialized.)0 +230 y Fl(do_handshake\(\))208 330 y Fq(P)n(erform)49 +b(an)h(SSL)g(handshak)n(e)f(\(usually)h(called)g(after)f +Fl(renegotiate)d Fq(or)j(one)h(of)57 b Fl(set_accept_stat)o(e)44 +b Fq(or)208 429 y Fl(set_accept_stat)o(e)p Fq(\).)31 b(This)d(can)f(raise)f(the)i(same)f(exceptions)g(as)g -Fl(send)f Fq(and)h Fl(recv)p Fq(.)0 4169 y Fl(fileno\(\))208 -4269 y Fq(Retriev)n(e)f(the)i(\034le)g(descriptor)e(n)n(um)n(b)r(er)i -(for)f(the)h(underlying)e(so)r(c)n(k)n(et.)0 4415 y Fl(listen\()p -Fc(b)l(acklo)l(g)7 b Fl(\))208 4515 y Fq(Call)27 b(the)h +Fl(send)f Fq(and)h Fl(recv)p Fq(.)0 576 y Fl(fileno\(\))208 +676 y Fq(Retriev)n(e)f(the)i(\034le)g(descriptor)e(n)n(um)n(b)r(er)i +(for)f(the)h(underlying)e(so)r(c)n(k)n(et.)0 823 y Fl(listen\()p +Fc(b)l(acklo)l(g)7 b Fl(\))208 922 y Fq(Call)27 b(the)h Fl(listen)d Fq(metho)r(d)j(of)f(the)h(underlying)f(so)r(c)n(k)n(et.)0 -4662 y Fl(get_app_data\(\))208 4762 y Fq(Retriev)n(e)f(application)h -(data)g(as)g(set)h(b)n(y)g Fl(set_app_data)p Fq(.)0 4908 -y Fl(get_cipher_list\()o(\))208 5008 y Fq(Retriev)n(e)23 +1069 y Fl(get_app_data\(\))208 1169 y Fq(Retriev)n(e)f(application)h +(data)g(as)g(set)h(b)n(y)g Fl(set_app_data)p Fq(.)0 1316 +y Fl(get_cipher_list\()o(\))208 1415 y Fq(Retriev)n(e)23 b(the)h(list)g(of)g(ciphers)g(used)g(b)n(y)f(the)i(Connection)e(ob)5 b(ject.)36 b(W)-9 b(ARNING:)25 b(This)f(API)h(has)e(c)n(hanged.)35 -b(It)24 b(used)208 5108 y(to)j(tak)n(e)g(an)g(optional)g(parameter)f +b(It)24 b(used)208 1515 y(to)j(tak)n(e)g(an)g(optional)g(parameter)f (and)h(just)h(return)g(a)f(string,)g(but)h(not)f(it)h(returns)f(the)h -(en)n(tire)f(list)h(in)g(one)f(go.)0 5255 y Fl(get_client_ca_li)o(st)o -(\(\))208 5354 y Fq(Retriev)n(e)e(the)i(list)g(of)f(preferred)g(clien)n +(en)n(tire)f(list)h(in)g(one)f(go.)0 1662 y Fl(get_client_ca_li)o(st)o +(\(\))208 1761 y Fq(Retriev)n(e)e(the)i(list)g(of)f(preferred)g(clien)n (t)g(certi\034cate)g(issuers)g(sen)n(t)g(b)n(y)g(the)h(serv)n(er)e(as)h -Fl(OpenSSL.crypto.)o(X50)o(9N)o(am)o(e)p 0 5549 3901 -4 v 0 5649 a Ff(3.3)82 b Fl(SSL)26 b Ff(\026)i(An)g(interface)g(to)f -(the)g(SSL-sp)r(eci\034c)h(pa)n(rts)f(of)h(Op)r(enSSL)1611 -b(15)p eop end -%%Page: 16 16 -TeXDict begin 16 15 bop 208 83 a Fq(ob)5 b(jects.)208 -216 y(If)25 b(this)g(is)f(a)h(clien)n(t)f Fl(Connection)p -Fq(,)e(the)j(list)g(will)g(b)r(e)g(empt)n(y)f(un)n(til)h(the)h -(connection)e(with)h(the)g(serv)n(er)e(is)h(established.)208 -349 y(If)33 b(this)g(is)g(a)f(serv)n(er)g Fl(Connection)p +Fl(OpenSSL.crypto.)o(X50)o(9N)o(am)o(e)208 1861 y Fq(ob)5 +b(jects.)208 1994 y(If)25 b(this)g(is)f(a)h(clien)n(t)f +Fl(Connection)p Fq(,)e(the)j(list)g(will)g(b)r(e)g(empt)n(y)f(un)n(til) +h(the)h(connection)e(with)h(the)g(serv)n(er)e(is)h(established.)208 +2127 y(If)33 b(this)g(is)g(a)f(serv)n(er)g Fl(Connection)p Fq(,)e(return)i(the)h(list)h(of)e(certi\034cate)h(authorities)f(that)h -(will)g(b)r(e)h(sen)n(t)e(or)g(has)h(b)r(een)208 448 +(will)g(b)r(e)h(sen)n(t)e(or)g(has)h(b)r(een)208 2226 y(sen)n(t)27 b(to)g(the)h(clien)n(t,)g(as)f(con)n(trolled)f(b)n(y)h (this)h Fl(Connection)p Fq('s)c Fl(Context)p Fq(.)208 -581 y(New)j(in)h(v)n(ersion)e(0.10.)0 728 y Fl(get_context\(\))208 -828 y Fq(Retriev)n(e)g(the)i(Con)n(text)f(ob)5 b(ject)28 -b(asso)r(ciated)e(with)i(this)g(Connection.)0 975 y Fl -(get_peer_certifi)o(ca)o(te\()o(\))208 1074 y Fq(Retriev)n(e)e(the)i -(other)f(side's)g(certi\034cate)g(\(if)i(an)n(y\))0 1221 -y Fl(getpeername\(\))208 1321 y Fq(Call)e(the)h Fl(getpeername)23 -b Fq(metho)r(d)28 b(of)f(the)h(underlying)f(so)r(c)n(k)n(et.)0 -1468 y Fl(getsockname\(\))208 1567 y Fq(Call)g(the)h +2359 y(New)j(in)h(v)n(ersion)e(0.10.)0 2506 y Fl(get_context\(\))208 +2606 y Fq(Retriev)n(e)g(the)i(Con)n(text)f(ob)5 b(ject)28 +b(asso)r(ciated)e(with)i(this)g(Connection.)0 2752 y +Fl(set_context\()p Fc(c)l(ontext)8 b Fl(\))208 2852 y +Fq(Sp)r(ecify)28 b(a)f(replacemen)n(t)g(Con)n(text)g(ob)5 +b(ject)27 b(for)g(this)h(Connection.)0 2999 y Fl(get_peer_certifi)o(ca) +o(te\()o(\))208 3099 y Fq(Retriev)n(e)e(the)i(other)f(side's)g +(certi\034cate)g(\(if)i(an)n(y\))0 3245 y Fl(get_peer_cert_ch)o(ai)o +(n\(\))208 3345 y Fq(Retriev)n(e)d(the)i(tuple)g(of)g(the)g(other)f +(side's)g(certi\034cate)g(c)n(hain)g(\(if)h(an)n(y\))0 +3492 y Fl(getpeername\(\))208 3591 y Fq(Call)f(the)h +Fl(getpeername)23 b Fq(metho)r(d)28 b(of)f(the)h(underlying)f(so)r(c)n +(k)n(et.)0 3738 y Fl(getsockname\(\))208 3838 y Fq(Call)g(the)h Fl(getsockname)23 b Fq(metho)r(d)28 b(of)f(the)h(underlying)f(so)r(c)n -(k)n(et.)0 1731 y Fl(getsockopt\()p Fc(level,)f(optname)6 -b Fb([)p Fc(,)31 b(bu\035en)18 b Fb(])p Fl(\))208 1830 +(k)n(et.)0 4002 y Fl(getsockopt\()p Fc(level,)f(optname)6 +b Fb([)p Fc(,)31 b(bu\035en)18 b Fb(])p Fl(\))208 4101 y Fq(Call)27 b(the)h Fl(getsockopt)23 b Fq(metho)r(d)28 -b(of)g(the)g(underlying)f(so)r(c)n(k)n(et.)0 1977 y Fl(pending\(\))208 -2077 y Fq(Retriev)n(e)22 b(the)h(n)n(um)n(b)r(er)g(of)g(b)n(ytes)g +b(of)g(the)g(underlying)f(so)r(c)n(k)n(et.)0 4248 y Fl(pending\(\))208 +4348 y Fq(Retriev)n(e)22 b(the)h(n)n(um)n(b)r(er)g(of)g(b)n(ytes)g (that)h(can)e(b)r(e)i(safely)f(read)f(from)h(the)g(SSL)h(bu\033er)f(\() -p Fc(not)g Fq(the)h(underlying)e(transp)r(ort)208 2176 -y(bu\033er\).)0 2323 y Fl(recv\()p Fc(bufsize)6 b Fl(\))208 -2423 y Fq(Receiv)n(e)30 b(data)h(from)g(the)h(Connection.)47 +p Fc(not)g Fq(the)h(underlying)e(transp)r(ort)208 4447 +y(bu\033er\).)0 4594 y Fl(recv\()p Fc(bufsize)6 b Fl(\))208 +4694 y Fq(Receiv)n(e)30 b(data)h(from)g(the)h(Connection.)47 b(The)31 b(return)g(v)-5 b(alue)31 b(is)h(a)e(string)h(represen)n(ting) -f(the)h(data)g(receiv)n(ed.)47 b(The)208 2523 y(maxim)n(um)27 +f(the)h(data)g(receiv)n(ed.)47 b(The)208 4793 y(maxim)n(um)27 b(amoun)n(t)g(of)g(data)h(to)f(b)r(e)h(receiv)n(ed)e(at)i(once,)f(is)g -(sp)r(eci\034ed)h(b)n(y)h Fc(bufsize)6 b Fq(.)0 2669 -y Fl(bio_write\()p Fc(bytes)h Fl(\))208 2769 y Fq(If)27 +(sp)r(eci\034ed)h(b)n(y)h Fc(bufsize)6 b Fq(.)0 4940 +y Fl(bio_write\()p Fc(bytes)h Fl(\))208 5040 y Fq(If)27 b(the)h(Connection)f(w)n(as)f(created)h(with)g(a)g(memory)g(BIO,)g (this)g(metho)r(d)h(can)f(b)r(e)h(used)f(to)g(add)g(b)n(ytes)g(to)g -(the)h(read)208 2869 y(end)g(of)g(that)g(memory)f(BIO.)g(The)h +(the)h(read)208 5140 y(end)g(of)g(that)g(memory)f(BIO.)g(The)h (Connection)g(can)f(then)i(read)e(the)h(b)n(ytes)g(\(for)f(example,)h -(in)g(resp)r(onse)f(to)h(a)f(call)208 2968 y(to)g Fl(recv)p -Fq(\).)0 3115 y Fl(renegotiate\(\))208 3215 y Fq(Renegotiate)f(the)i -(SSL)g(session.)36 b(Call)27 b(this)h(if)g(y)n(ou)f(wish)g(to)h(c)n -(hange)e(cipher)h(suites)h(or)e(an)n(ything)h(lik)n(e)g(that.)0 -3362 y Fl(send\()p Fc(string)7 b Fl(\))208 3461 y Fq(Send)27 +(in)g(resp)r(onse)f(to)h(a)f(call)208 5239 y(to)g Fl(recv)p +Fq(\).)0 5386 y Fl(renegotiate\(\))p 0 5549 3901 4 v +0 5649 a Ff(16)2197 b(3)83 b Fl(OpenSSL)24 b Ff(\026)k(Python)f +(interface)h(to)f(Op)r(enSSL)p eop end +%%Page: 17 17 +TeXDict begin 17 16 bop 208 83 a Fq(Renegotiate)26 b(the)i(SSL)g +(session.)36 b(Call)27 b(this)h(if)g(y)n(ou)f(wish)g(to)h(c)n(hange)e +(cipher)h(suites)h(or)e(an)n(ything)h(lik)n(e)g(that.)0 +230 y Fl(send\()p Fc(string)7 b Fl(\))208 330 y Fq(Send)27 b(the)h Fc(string)35 b Fq(data)27 b(to)h(the)g(Connection.)0 -3608 y Fl(bio_read\()p Fc(bufsize)6 b Fl(\))208 3708 -y Fq(If)31 b(the)g(Connection)g(w)n(as)f(created)g(with)i(a)e(memory)g +476 y Fl(bio_read\()p Fc(bufsize)6 b Fl(\))208 576 y +Fq(If)31 b(the)g(Connection)g(w)n(as)f(created)g(with)i(a)e(memory)g (BIO,)h(this)g(metho)r(d)g(can)g(b)r(e)h(used)e(to)h(read)f(b)n(ytes)h -(from)g(the)208 3807 y(write)d(end)g(of)g(that)h(memory)e(BIO.)h(Man)n +(from)g(the)208 676 y(write)d(end)g(of)g(that)h(memory)e(BIO.)h(Man)n (y)f(Connection)h(metho)r(ds)h(will)f(add)g(b)n(ytes)g(whic)n(h)g(m)n -(ust)g(b)r(e)h(read)e(in)i(this)208 3907 y(manner)c(or)h(the)g -(bu\033er)h(will)f(ev)n(en)n(tually)f(\034ll)i(up)g(and)f(the)g -(Connection)g(will)g(b)r(e)h(able)f(to)g(tak)n(e)g(no)g(further)g -(actions.)0 4054 y Fl(sendall\()p Fc(string)7 b Fl(\))208 -4154 y Fq(Send)30 b(all)f(of)h(the)g Fc(string)37 b Fq(data)29 -b(to)g(the)h(Connection.)43 b(This)30 b(calls)f Fl(send)f -Fq(rep)r(eatedly)h(un)n(til)h(all)f(data)h(is)f(sen)n(t.)43 -b(If)30 b(an)208 4253 y(error)25 b(o)r(ccurs,)i(it's)h(imp)r(ossible)f -(to)g(tell)h(ho)n(w)f(m)n(uc)n(h)h(data)f(has)g(b)r(een)h(sen)n(t.)0 -4400 y Fl(set_accept_state)o(\(\))208 4500 y Fq(Set)20 -b(the)g(connection)f(to)h(w)n(ork)e(in)i(serv)n(er)e(mo)r(de.)34 -b(The)20 b(handshak)n(e)f(will)h(b)r(e)g(handled)g(automatically)e(b)n -(y)i(read/write.)0 4647 y Fl(set_app_data\()p Fc(data)6 -b Fl(\))208 4746 y Fq(Asso)r(ciate)39 b Fc(data)47 b -Fq(with)40 b(this)g(Connection)g(ob)5 b(ject.)73 b Fc(data)47 -b Fq(can)39 b(b)r(e)i(retriev)n(ed)d(later)h(using)h(the)g -Fl(get_app_data)208 4846 y Fq(metho)r(d.)0 4993 y Fl(set_connect_stat)o -(e\()o(\))208 5092 y Fq(Set)21 b(the)g(connection)g(to)g(w)n(ork)e(in)i +(ust)g(b)r(e)h(read)e(in)i(this)208 775 y(manner)c(or)h(the)g(bu\033er) +h(will)f(ev)n(en)n(tually)f(\034ll)i(up)g(and)f(the)g(Connection)g +(will)g(b)r(e)h(able)f(to)g(tak)n(e)g(no)g(further)g(actions.)0 +922 y Fl(sendall\()p Fc(string)7 b Fl(\))208 1022 y Fq(Send)30 +b(all)f(of)h(the)g Fc(string)37 b Fq(data)29 b(to)g(the)h(Connection.) +43 b(This)30 b(calls)f Fl(send)f Fq(rep)r(eatedly)h(un)n(til)h(all)f +(data)h(is)f(sen)n(t.)43 b(If)30 b(an)208 1121 y(error)25 +b(o)r(ccurs,)i(it's)h(imp)r(ossible)f(to)g(tell)h(ho)n(w)f(m)n(uc)n(h)h +(data)f(has)g(b)r(een)h(sen)n(t.)0 1268 y Fl(set_accept_state)o(\(\)) +208 1368 y Fq(Set)20 b(the)g(connection)f(to)h(w)n(ork)e(in)i(serv)n +(er)e(mo)r(de.)34 b(The)20 b(handshak)n(e)f(will)h(b)r(e)g(handled)g +(automatically)e(b)n(y)i(read/write.)0 1515 y Fl(set_app_data\()p +Fc(data)6 b Fl(\))208 1614 y Fq(Asso)r(ciate)39 b Fc(data)47 +b Fq(with)40 b(this)g(Connection)g(ob)5 b(ject.)73 b +Fc(data)47 b Fq(can)39 b(b)r(e)i(retriev)n(ed)d(later)h(using)h(the)g +Fl(get_app_data)208 1714 y Fq(metho)r(d.)0 1861 y Fl(set_connect_stat)o +(e\()o(\))208 1961 y Fq(Set)21 b(the)g(connection)g(to)g(w)n(ork)e(in)i (clien)n(t)g(mo)r(de.)35 b(The)21 b(handshak)n(e)f(will)h(b)r(e)g -(handled)g(automatically)f(b)n(y)h(read/write.)0 5239 -y Fl(setblocking\()p Fc(\035ag)7 b Fl(\))208 5339 y Fq(Call)27 +(handled)g(automatically)f(b)n(y)h(read/write.)0 2107 +y Fl(setblocking\()p Fc(\035ag)7 b Fl(\))208 2207 y Fq(Call)27 b(the)h Fl(setblocking)23 b Fq(metho)r(d)28 b(of)f(the)h(underlying)f -(so)r(c)n(k)n(et.)p 0 5549 3901 4 v 0 5649 a Ff(16)2197 -b(3)83 b Fl(OpenSSL)24 b Ff(\026)k(Python)f(interface)h(to)f(Op)r -(enSSL)p eop end -%%Page: 17 17 -TeXDict begin 17 16 bop 0 83 a Fl(setsockopt\()p Fc(level,)26 -b(optname,)31 b(value)6 b Fl(\))208 183 y Fq(Call)27 -b(the)h Fl(setsockopt)23 b Fq(metho)r(d)28 b(of)g(the)g(underlying)f -(so)r(c)n(k)n(et.)0 330 y Fl(shutdown\(\))208 429 y Fq(Send)35 -b(the)h(sh)n(utdo)n(wn)f(message)f(to)h(the)h(Connection.)60 -b(Returns)35 b(true)g(if)h(the)g(sh)n(utdo)n(wn)e(message)g(exc)n -(hange)g(is)208 529 y(completed)25 b(and)g(false)h(otherwise)e(\(in)i -(whic)n(h)g(case)e(y)n(ou)h(call)g Fl(recv\(\))e Fq(or)i -Fl(send\(\))e Fq(when)j(the)g(connection)f(b)r(ecomes)208 -628 y(readable/writeable.)0 775 y Fl(get_shutdown\(\))208 -875 y Fq(Get)70 b(the)g(sh)n(utdo)n(wn)f(state)g(of)h(the)g -(Connection.)162 b(Returns)69 b(a)h(bitv)n(ector)e(of)i(either)f(or)g -(b)r(oth)h(of)208 975 y Fc(SENT_SHUTDO)n(WN)39 b Fq(and)27 -b Fc(RECEIVED_SHUTDO)n(WN)14 b Fq(.)0 1121 y Fl(set_shutdown\()p -Fc(state)6 b Fl(\))208 1221 y Fq(Set)21 b(the)g(sh)n(utdo)n(wn)g(state) -g(of)g(the)g(Connection.)34 b Fc(state)27 b Fq(is)21 -b(a)g(bitv)n(ector)f(of)h(either)g(or)f(b)r(oth)i(of)27 -b Fc(SENT_SHUTDO)n(WN)208 1321 y Fq(and)g Fc(RECEIVED_SHUTDO)n(WN)14 -b Fq(.)0 1468 y Fl(sock_shutdown\()p Fc(how)9 b Fl(\))208 -1567 y Fq(Call)27 b(the)h Fl(shutdown)c Fq(metho)r(d)k(of)g(the)g -(underlying)e(so)r(c)n(k)n(et.)0 1714 y Fl(bio_shutdown\(\))208 -1814 y Fq(If)j(the)h(Connection)f(w)n(as)f(created)g(with)i(a)f(memory) -f(BIO,)h(this)h(metho)r(d)f(can)g(b)r(e)h(used)f(to)g(indicate)g(that)h -(\020end)f(of)208 1913 y(\034le\021)34 b(has)27 b(b)r(een)h(reac)n(hed) -e(on)h(the)h(read)f(end)h(of)f(that)h(memory)f(BIO.)0 -2060 y Fl(state_string\(\))208 2160 y Fq(Retriev)n(e)f(a)i(v)n(erb)r -(ose)e(string)g(detailing)i(the)g(state)f(of)h(the)f(Connection.)0 -2307 y Fl(client_random\(\))208 2406 y Fq(Retriev)n(e)f(the)i(random)f -(v)-5 b(alue)27 b(used)h(with)g(the)g(clien)n(t)f(hello)h(message.)0 -2553 y Fl(server_random\(\))208 2653 y Fq(Retriev)n(e)e(the)i(random)f +(so)r(c)n(k)n(et.)0 2354 y Fl(setsockopt\()p Fc(level,)f(optname,)31 +b(value)6 b Fl(\))208 2454 y Fq(Call)27 b(the)h Fl(setsockopt)23 +b Fq(metho)r(d)28 b(of)g(the)g(underlying)f(so)r(c)n(k)n(et.)0 +2600 y Fl(shutdown\(\))208 2700 y Fq(Send)35 b(the)h(sh)n(utdo)n(wn)f +(message)f(to)h(the)h(Connection.)60 b(Returns)35 b(true)g(if)h(the)g +(sh)n(utdo)n(wn)e(message)g(exc)n(hange)g(is)208 2800 +y(completed)25 b(and)g(false)h(otherwise)e(\(in)i(whic)n(h)g(case)e(y)n +(ou)h(call)g Fl(recv\(\))e Fq(or)i Fl(send\(\))e Fq(when)j(the)g +(connection)f(b)r(ecomes)208 2899 y(readable/writeable.)0 +3046 y Fl(get_shutdown\(\))208 3146 y Fq(Get)70 b(the)g(sh)n(utdo)n(wn) +f(state)g(of)h(the)g(Connection.)162 b(Returns)69 b(a)h(bitv)n(ector)e +(of)i(either)f(or)g(b)r(oth)h(of)208 3245 y Fc(SENT_SHUTDO)n(WN)39 +b Fq(and)27 b Fc(RECEIVED_SHUTDO)n(WN)14 b Fq(.)0 3392 +y Fl(set_shutdown\()p Fc(state)6 b Fl(\))208 3492 y Fq(Set)21 +b(the)g(sh)n(utdo)n(wn)g(state)g(of)g(the)g(Connection.)34 +b Fc(state)27 b Fq(is)21 b(a)g(bitv)n(ector)f(of)h(either)g(or)f(b)r +(oth)i(of)27 b Fc(SENT_SHUTDO)n(WN)208 3591 y Fq(and)g +Fc(RECEIVED_SHUTDO)n(WN)14 b Fq(.)0 3738 y Fl(sock_shutdown\()p +Fc(how)9 b Fl(\))208 3838 y Fq(Call)27 b(the)h Fl(shutdown)c +Fq(metho)r(d)k(of)g(the)g(underlying)e(so)r(c)n(k)n(et.)0 +3985 y Fl(bio_shutdown\(\))208 4084 y Fq(If)j(the)h(Connection)f(w)n +(as)f(created)g(with)i(a)f(memory)f(BIO,)h(this)h(metho)r(d)f(can)g(b)r +(e)h(used)f(to)g(indicate)g(that)h(\020end)f(of)208 4184 +y(\034le\021)34 b(has)27 b(b)r(een)h(reac)n(hed)e(on)h(the)h(read)f +(end)h(of)f(that)h(memory)f(BIO.)0 4331 y Fl(state_string\(\))208 +4431 y Fq(Retriev)n(e)f(a)i(v)n(erb)r(ose)e(string)g(detailing)i(the)g +(state)f(of)h(the)f(Connection.)0 4577 y Fl(client_random\(\))208 +4677 y Fq(Retriev)n(e)f(the)i(random)f(v)-5 b(alue)27 +b(used)h(with)g(the)g(clien)n(t)f(hello)h(message.)0 +4824 y Fl(server_random\(\))208 4924 y Fq(Retriev)n(e)e(the)i(random)f (v)-5 b(alue)27 b(used)h(with)g(the)g(serv)n(er)e(hello)h(message.)0 -2800 y Fl(master_key\(\))208 2899 y Fq(Retriev)n(e)f(the)i(v)-5 +5070 y Fl(master_key\(\))208 5170 y Fq(Retriev)n(e)f(the)i(v)-5 b(alue)28 b(of)f(the)h(master)f(k)n(ey)g(for)g(this)h(session.)0 -3046 y Fl(want_read\(\))208 3146 y Fq(Chec)n(ks)e(if)i(more)f(data)g +5317 y Fl(want_read\(\))p 0 5549 3901 4 v 0 5649 a Ff(3.3)82 +b Fl(SSL)26 b Ff(\026)i(An)g(interface)g(to)f(the)g(SSL-sp)r(eci\034c)h +(pa)n(rts)f(of)h(Op)r(enSSL)1611 b(17)p eop end +%%Page: 18 18 +TeXDict begin 18 17 bop 208 83 a Fq(Chec)n(ks)26 b(if)i(more)f(data)g (has)g(to)h(b)r(e)g(read)e(from)i(the)f(transp)r(ort)g(la)n(y)n(er)f -(to)h(complete)h(an)f(op)r(eration.)0 3293 y Fl(want_write\(\))208 -3392 y Fq(Chec)n(ks)f(if)i(there)g(is)f(data)g(to)h(write)f(to)g(the)h +(to)h(complete)h(an)f(op)r(eration.)0 230 y Fl(want_write\(\))208 +330 y Fq(Chec)n(ks)f(if)i(there)g(is)f(data)g(to)h(write)f(to)g(the)h (transp)r(ort)f(la)n(y)n(er)f(to)h(complete)h(an)f(op)r(eration.)0 -3714 y Fr(4)114 b(Internals)0 3943 y Fq(W)-7 b(e)25 b(ran)g(in)n(to)f -(three)h(main)g(problems)f(dev)n(eloping)g(this:)36 b(Exceptions,)25 +476 y Fl(set_tlsext_host_)o(na)o(me\()o Fc(name)6 b Fl(\))208 +576 y Fq(Sp)r(ecify)28 b(the)g(b)n(yte)f(string)g(to)g(send)h(as)f(the) +h(serv)n(er)e(name)h(in)h(the)g(clien)n(t)f(hello)h(message.)72 +b(New)28 b(in)f(v)n(ersion)f(0.13.)0 723 y Fl(get_servername\(\))208 +823 y Fq(Get)i(the)f(v)-5 b(alue)28 b(of)f(the)h(serv)n(er)e(name)h +(receiv)n(ed)g(in)h(the)g(clien)n(t)f(hello)h(message.)72 +b(New)28 b(in)f(v)n(ersion)f(0.13.)0 1144 y Fr(4)114 +b(Internals)0 1373 y Fq(W)-7 b(e)25 b(ran)g(in)n(to)f(three)h(main)g +(problems)f(dev)n(eloping)g(this:)36 b(Exceptions,)25 b(callbac)n(ks)f(and)h(accessing)e(so)r(c)n(k)n(et)h(metho)r(ds.)36 -b(This)0 4043 y(is)27 b(what)h(this)g(c)n(hapter)e(is)i(ab)r(out.)0 -4322 y Fj(4.1)97 b(Exceptions)0 4523 y Fq(W)-7 b(e)52 +b(This)0 1473 y(is)27 b(what)h(this)g(c)n(hapter)e(is)i(ab)r(out.)0 +1753 y Fj(4.1)97 b(Exceptions)0 1953 y Fq(W)-7 b(e)52 b(realized)f(early)g(that)h(most)g(of)g(the)g(exceptions)f(w)n(ould)h (b)r(e)g(raised)f(b)n(y)h(the)g(I/O)f(functions)h(of)g(Op)r(enSSL,)0 -4622 y(so)d(it)i(felt)f(natural)f(to)h(mimic)g(Op)r(enSSL's)g(error)e +2053 y(so)d(it)i(felt)f(natural)f(to)h(mimic)g(Op)r(enSSL's)g(error)e (co)r(de)i(system,)55 b(translating)48 b(them)j(in)n(to)e(Python)i -(exceptions.)0 4722 y(This)30 b(naturally)e(giv)n(es)h(us)h(the)g +(exceptions.)0 2152 y(This)30 b(naturally)e(giv)n(es)h(us)h(the)g (exceptions)f Fl(SSL.ZeroReturnEr)o(ro)o(r)p Fq(,)24 b Fl(SSL.WantReadError)o Fq(,)h Fl(SSL.WantWriteEr)o(ro)o(r)p -Fq(,)0 4822 y Fl(SSL.WantX509Look)o(up)o(Err)o(or)c Fq(and)27 -b Fl(SSL.SysCallError)p Fq(.)0 4969 y(F)-7 b(or)27 b(more)g -(information)g(ab)r(out)g(this,)h(see)f(section)g(3.3.)p -0 5549 3901 4 v 3817 5649 a Ff(17)p eop end -%%Page: 18 18 -TeXDict begin 18 17 bop 0 83 a Fj(4.2)97 b(Callbacks)0 -283 y Fq(There)34 b(are)f(a)h(n)n(um)n(b)r(er)g(of)h(problems)e(with)i -(callbac)n(ks.)56 b(First)34 b(of)g(all,)i(Op)r(enSSL)f(is)f(written)h -(as)e(a)h(C)h(library)-7 b(,)34 b(it's)h(not)0 383 y(mean)n(t)26 -b(to)g(ha)n(v)n(e)e(Python)j(callbac)n(ks,)d(so)i(a)f(w)n(a)n(y)g -(around)g(that)h(is)g(needed.)36 b(Another)26 b(problem)f(is)h(thread)g -(supp)r(ort.)36 b(A)26 b(lot)0 483 y(of)h(the)g(Op)r(enSSL)g(I/O)e -(functions)i(can)g(blo)r(c)n(k)f(if)h(the)g(so)r(c)n(k)n(et)f(is)g(in)h -(blo)r(c)n(king)f(mo)r(de,)h(and)g(then)g(y)n(ou)f(w)n(an)n(t)g(other)g -(Python)0 582 y(threads)i(to)g(b)r(e)h(able)g(to)f(do)h(other)f -(things.)40 b(The)28 b(real)g(trouble)g(is)h(if)g(y)n(ou'v)n(e)e -(released)h(the)h(global)e(CPython)i(in)n(terpreter)0 -682 y(lo)r(c)n(k)e(to)h(do)f(a)h(p)r(oten)n(tially)f(blo)r(c)n(king)g -(op)r(eration,)g(and)h(the)g(op)r(eration)f(calls)g(a)g(callbac)n(k.)36 -b(Then)28 b(w)n(e)g(m)n(ust)g(tak)n(e)f(the)h(GIL)0 782 -y(bac)n(k,)f(since)g(calling)g(Python)h(APIs)g(without)g(holding)f(it)h -(is)g(not)f(allo)n(w)n(ed.)0 929 y(There)d(are)f(t)n(w)n(o)g(solutions) -h(to)g(the)h(\034rst)f(problem,)g(b)r(oth)h(of)f(whic)n(h)g(are)f -(necessary)-7 b(.)34 b(The)25 b(\034rst)f(solution)f(to)h(use)h(is)f -(if)g(the)h(C)0 1028 y(callbac)n(k)i(allo)n(ws)f(\021userdata\021)33 +Fq(,)0 2252 y Fl(SSL.WantX509Look)o(up)o(Err)o(or)c Fq(and)27 +b Fl(SSL.SysCallError)p Fq(.)0 2399 y(F)-7 b(or)27 b(more)g +(information)g(ab)r(out)g(this,)h(see)f(section)g(3.3.)0 +2678 y Fj(4.2)97 b(Callbacks)0 2879 y Fq(There)34 b(are)f(a)h(n)n(um)n +(b)r(er)g(of)h(problems)e(with)i(callbac)n(ks.)56 b(First)34 +b(of)g(all,)i(Op)r(enSSL)f(is)f(written)h(as)e(a)h(C)h(library)-7 +b(,)34 b(it's)h(not)0 2979 y(mean)n(t)26 b(to)g(ha)n(v)n(e)e(Python)j +(callbac)n(ks,)d(so)i(a)f(w)n(a)n(y)g(around)g(that)h(is)g(needed.)36 +b(Another)26 b(problem)f(is)h(thread)g(supp)r(ort.)36 +b(A)26 b(lot)0 3078 y(of)h(the)g(Op)r(enSSL)g(I/O)e(functions)i(can)g +(blo)r(c)n(k)f(if)h(the)g(so)r(c)n(k)n(et)f(is)g(in)h(blo)r(c)n(king)f +(mo)r(de,)h(and)g(then)g(y)n(ou)f(w)n(an)n(t)g(other)g(Python)0 +3178 y(threads)i(to)g(b)r(e)h(able)g(to)f(do)h(other)f(things.)40 +b(The)28 b(real)g(trouble)g(is)h(if)g(y)n(ou'v)n(e)e(released)h(the)h +(global)e(CPython)i(in)n(terpreter)0 3277 y(lo)r(c)n(k)e(to)h(do)f(a)h +(p)r(oten)n(tially)f(blo)r(c)n(king)g(op)r(eration,)g(and)h(the)g(op)r +(eration)f(calls)g(a)g(callbac)n(k.)36 b(Then)28 b(w)n(e)g(m)n(ust)g +(tak)n(e)f(the)h(GIL)0 3377 y(bac)n(k,)f(since)g(calling)g(Python)h +(APIs)g(without)g(holding)f(it)h(is)g(not)f(allo)n(w)n(ed.)0 +3524 y(There)d(are)f(t)n(w)n(o)g(solutions)h(to)g(the)h(\034rst)f +(problem,)g(b)r(oth)h(of)f(whic)n(h)g(are)f(necessary)-7 +b(.)34 b(The)25 b(\034rst)f(solution)f(to)h(use)h(is)f(if)g(the)h(C)0 +3624 y(callbac)n(k)i(allo)n(ws)f(\021userdata\021)33 b(to)28 b(b)r(e)h(passed)e(to)h(it)g(\(an)g(arbitrary)e(p)r(oin)n(ter)i (normally\).)37 b(This)28 b(is)g(great!)37 b(W)-7 b(e)28 -b(can)g(set)g(our)0 1128 y(Python)i(function)g(ob)5 b(ject)29 +b(can)g(set)g(our)0 3723 y(Python)i(function)g(ob)5 b(ject)29 b(as)f(the)i(real)f(userdata)f(and)h(em)n(ulate)g(userdata)f(for)h(the) h(Python)f(function)h(in)g(another)e(w)n(a)n(y)-7 b(.)0 -1227 y(The)24 b(other)g(solution)g(can)g(b)r(e)h(used)g(if)g(an)f(ob)5 +3823 y(The)24 b(other)g(solution)g(can)g(b)r(e)h(used)g(if)g(an)f(ob)5 b(ject)24 b(with)h(an)f(\021app_data\021)29 b(system)c(alw)n(a)n(ys)d (is)j(passed)e(to)h(the)h(callbac)n(k.)35 b(F)-7 b(or)0 -1327 y(example,)26 b(the)h(SSL)f(ob)5 b(ject)26 b(in)h(Op)r(enSSL)f +3922 y(example,)26 b(the)h(SSL)f(ob)5 b(ject)26 b(in)h(Op)r(enSSL)f (has)g(app_data)f(functions)i(and)f(in)h(e.g.)36 b(the)26 b(v)n(eri\034cation)f(callbac)n(ks,)g(y)n(ou)g(can)0 -1427 y(retriev)n(e)i(the)i(related)f(SSL)h(ob)5 b(ject.)39 +4022 y(retriev)n(e)i(the)i(related)f(SSL)h(ob)5 b(ject.)39 b(What)29 b(w)n(e)g(do)f(is)g(to)h(set)f(our)g(wrapp)r(er)g Fl(Connection)c Fq(ob)5 b(ject)28 b(as)g(app_data)g(for)g(the)0 -1526 y(SSL)g(ob)5 b(ject,)27 b(and)h(w)n(e)f(can)g(easily)g(\034nd)h -(the)g(Python)g(callbac)n(k.)0 1673 y(The)23 b(other)g(problem)g(is)g +4122 y(SSL)g(ob)5 b(ject,)27 b(and)h(w)n(e)f(can)g(easily)g(\034nd)h +(the)g(Python)g(callbac)n(k.)0 4269 y(The)23 b(other)g(problem)g(is)g (solv)n(ed)f(using)h(thread)g(lo)r(cal)g(v)-5 b(ariables.)34 b(Whenev)n(er)22 b(the)i(GIL)g(is)f(released)f(b)r(efore)h(calling)f -(in)n(to)h(an)0 1773 y(Op)r(enSSL)j(API,)g(the)g(PyThreadState)f(p)r +(in)n(to)h(an)0 4368 y(Op)r(enSSL)j(API,)g(the)g(PyThreadState)f(p)r (oin)n(ter)g(returned)g(b)n(y)h Fl(PyEval_SaveState)19 b Fq(is)25 b(stored)g(in)g(a)g(global)g(thread)g(lo)r(cal)0 -1872 y(v)-5 b(ariable)27 b(\(using)g(Python's)h(o)n(wn)f(TLS)h(API,)g +4468 y(v)-5 b(ariable)27 b(\(using)g(Python's)h(o)n(wn)f(TLS)h(API,)g Fl(PyThread_set_key_)o(va)o(lue)o Fq(\).)k(When)c(it)g(is)g(necessary)e -(to)h(re-acquire)f(the)0 1972 y(GIL,)c(either)g(after)g(the)h(Op)r +(to)h(re-acquire)f(the)0 4567 y(GIL,)c(either)g(after)g(the)h(Op)r (enSSL)f(API)h(returns)e(or)h(in)g(a)g(C)g(callbac)n(k)f(in)n(v)n(ok)n (ed)f(b)n(y)i(that)h(Op)r(enSSL)f(API,)h(the)g(v)-5 b(alue)22 -b(of)g(the)0 2072 y(thread)32 b(lo)r(cal)f(v)-5 b(ariable)32 +b(of)g(the)0 4667 y(thread)32 b(lo)r(cal)f(v)-5 b(ariable)32 b(is)g(retriev)n(ed)f(\()p Fl(PyThread_get_key)o(_va)o(lu)o(e)p Fq(\))26 b(and)33 b(used)f(to)g(re-acquire)e(the)j(GIL.)f(This)h(allo)n -(ws)0 2171 y(Python)f(threads)e(to)h(execute)h(while)f(Op)r(enSSL)g +(ws)0 4767 y(Python)f(threads)e(to)h(execute)h(while)f(Op)r(enSSL)g (APIs)h(are)f(running)f(and)i(allo)n(ws)e(use)h(of)g(an)n(y)f -(particular)g(p)n(yOp)r(enSSL)0 2271 y(ob)5 b(ject)29 +(particular)g(p)n(yOp)r(enSSL)0 4866 y(ob)5 b(ject)29 b(from)f(an)n(y)g(Python)i(thread,)e(since)h(there)g(is)g(no)f(p)r (er-thread)g(state)h(asso)r(ciated)f(with)h(an)n(y)f(of)h(these)g(ob)5 -b(jects)28 b(and)0 2371 y(since)f(Op)r(enSSL)h(is)g(threadsafe)e(\(as)h +b(jects)28 b(and)0 4966 y(since)f(Op)r(enSSL)h(is)g(threadsafe)e(\(as)h (long)g(as)g(prop)r(erly)g(initialized,)g(as)g(p)n(yOp)r(enSSL)h -(initializes)f(it\).)0 2650 y Fj(4.3)97 b(A)m(cessing)35 -b(So)s(ck)m(et)e(Metho)s(ds)0 2851 y Fq(W)-7 b(e)27 b(quic)n(kly)e(sa)n +(initializes)f(it\).)p 0 5549 3901 4 v 0 5649 a Ff(18)3368 +b(4)83 b(Internals)p eop end +%%Page: 19 19 +TeXDict begin 19 18 bop 0 83 a Fj(4.3)97 b(A)m(cessing)35 +b(So)s(ck)m(et)e(Metho)s(ds)0 283 y Fq(W)-7 b(e)27 b(quic)n(kly)e(sa)n (w)h(the)g(b)r(ene\034t)h(of)g(wrapping)e(so)r(c)n(k)n(et)g(metho)r(ds) h(in)h(the)g Fl(SSL.Connection)20 b Fq(class,)26 b(for)g(an)g(easy)f -(transition)0 2950 y(in)n(to)e(using)f(SSL.)h(The)g(problem)f(here)h -(is)f(that)h(the)h Fl(socket)c Fq(mo)r(dule)j(lac)n(ks)f(a)g(C)h(API,)h -(and)e(all)h(the)g(metho)r(ds)g(are)f(declared)0 3050 +(transition)0 383 y(in)n(to)e(using)f(SSL.)h(The)g(problem)f(here)h(is) +f(that)h(the)h Fl(socket)c Fq(mo)r(dule)j(lac)n(ks)f(a)g(C)h(API,)h +(and)e(all)h(the)g(metho)r(ds)g(are)f(declared)0 483 y(static.)36 b(One)27 b(approac)n(h)d(w)n(ould)i(b)r(e)h(to)f(ha)n(v)n (e)g Fl(OpenSSL)d Fq(as)j(a)g(submo)r(dule)h(to)f(the)h Fl(socket)d Fq(mo)r(dule,)j(placing)f(all)g(the)h(co)r(de)0 -3149 y(in)j(`)p Fp(so)r(ck)n(etmo)r(dule.c)p Fq(',)h(but)f(this)g(is)g +582 y(in)j(`)p Fp(so)r(ck)n(etmo)r(dule.c)p Fq(',)h(but)f(this)g(is)g (ob)n(viously)e(not)i(a)f(go)r(o)r(d)g(solution,)h(since)g(y)n(ou)f (migh)n(t)g(not)h(w)n(an)n(t)f(to)h(imp)r(ort)g(tonnes)f(of)0 -3249 y(extra)f(stu\033)h(y)n(ou're)e(not)i(going)e(to)i(use)f(when)h +682 y(extra)f(stu\033)h(y)n(ou're)e(not)i(going)e(to)i(use)f(when)h (imp)r(orting)f(the)i Fl(socket)c Fq(mo)r(dule.)40 b(The)29 -b(other)f(approac)n(h)e(is)j(to)f(someho)n(w)0 3349 y(get)33 +b(other)f(approac)n(h)e(is)j(to)f(someho)n(w)0 782 y(get)33 b(a)g(p)r(oin)n(ter)g(to)h(the)f(metho)r(d)h(to)g(b)r(e)f(called,)i (either)e(the)h(C)g(function,)h(or)e(a)g(callable)f(Python)i(ob)5 -b(ject.)54 b(This)34 b(is)f(not)0 3448 y(really)26 b(a)i(go)r(o)r(d)f +b(ject.)54 b(This)34 b(is)f(not)0 881 y(really)26 b(a)i(go)r(o)r(d)f (solution)g(either,)g(since)g(there's)h(a)f(lot)g(of)h(lo)r(okups)f(in) -n(v)n(olv)n(ed.)0 3595 y(The)h(w)n(a)n(y)f(it)h(w)n(orks)e(is)i(that)h +n(v)n(olv)n(ed.)0 1028 y(The)h(w)n(a)n(y)f(it)h(w)n(orks)e(is)i(that)h (y)n(ou)e(ha)n(v)n(e)g(to)g(supply)h(a)g(\020)7 b Fl(socket)p Fq(-lik)n(e\021)31 b(transp)r(ort)c(ob)5 b(ject)28 b(to)f(the)i -Fl(SSL.Connection)p Fq(.)j(The)0 3695 y(only)24 b(requiremen)n(t)f(of)i +Fl(SSL.Connection)p Fq(.)j(The)0 1128 y(only)24 b(requiremen)n(t)f(of)i (this)f(ob)5 b(ject)24 b(is)h(that)f(it)h(has)f(a)g Fl(fileno\(\))d Fq(metho)r(d)k(that)f(returns)g(a)g(\034le)g(descriptor)f(that's)i(v)-5 -b(alid)24 b(at)0 3794 y(the)g(C)g(lev)n(el)f(\(i.e.)36 +b(alid)24 b(at)0 1227 y(the)g(C)g(lev)n(el)f(\(i.e.)36 b(y)n(ou)23 b(can)h(use)f(the)i(system)e(calls)g(read)g(and)h(write\).) 35 b(If)25 b(y)n(ou)e(w)n(an)n(t)g(to)h(use)f(the)h Fl(connect\(\))c -Fq(or)j Fl(accept\(\))0 3894 y Fq(metho)r(ds)29 b(of)h(the)f +Fq(or)j Fl(accept\(\))0 1327 y Fq(metho)r(ds)29 b(of)h(the)f Fl(SSL.Connection)24 b Fq(ob)5 b(ject,)29 b(the)h(transp)r(ort)e(ob)5 b(ject)29 b(has)f(to)h(supply)h(suc)n(h)f(metho)r(ds)g(to)r(o.)41 -b(Apart)29 b(from)0 3994 y(them,)c(an)n(y)e(metho)r(d)h(lo)r(okups)f +b(Apart)29 b(from)0 1427 y(them,)c(an)n(y)e(metho)r(d)h(lo)r(okups)f (in)h(the)f Fl(SSL.Connection)18 b Fq(ob)5 b(ject)24 b(that)f(fail)h(are)f(passed)f(on)i(to)f(the)h(underlying)f(transp)r -(ort)0 4093 y(ob)5 b(ject.)0 4240 y(F)-7 b(uture)25 b(c)n(hanges)f +(ort)0 1526 y(ob)5 b(ject.)0 1673 y(F)-7 b(uture)25 b(c)n(hanges)f (migh)n(t)h(b)r(e)g(to)g(allo)n(w)f(Python-lev)n(el)g(transp)r(ort)g (ob)5 b(jects,)25 b(that)g(instead)g(of)g(ha)n(ving)g -Fl(fileno\(\))d Fq(metho)r(ds,)0 4340 y(ha)n(v)n(e)h +Fl(fileno\(\))d Fq(metho)r(ds,)0 1773 y(ha)n(v)n(e)h Fl(read\(\))g Fq(and)h Fl(write\(\))e Fq(metho)r(ds,)k(so)e(more)f(adv) -5 b(anced)24 b(features)h(of)f(Python)h(can)g(b)r(e)g(used.)35 -b(This)25 b(w)n(ould)f(probably)0 4439 y(en)n(tail)36 +b(This)25 b(w)n(ould)f(probably)0 1872 y(en)n(tail)36 b(some)g(sort)g(of)g(Op)r(enSSL)h(\020BIOs\021,)g(but)g(con)n(v)n (erting)e(Python)i(strings)e(bac)n(k)h(and)g(forth)g(is)h(exp)r(ensiv)n -(e,)h(so)e(this)0 4539 y(shouldn't)f(b)r(e)h(used)f(unless)g(necessary) +(e,)h(so)e(this)0 1972 y(shouldn't)f(b)r(e)h(used)f(unless)g(necessary) -7 b(.)57 b(Other)35 b(nice)g(things)g(w)n(ould)g(b)r(e)g(to)g(b)r(e)h (able)e(to)h(pass)g(in)g(di\033eren)n(t)g(transp)r(ort)0 -4639 y(ob)5 b(jects)41 b(for)g(reading)f(and)h(writing,)j(but)e(then)g +2072 y(ob)5 b(jects)41 b(for)g(reading)f(and)h(writing,)j(but)e(then)g (the)g Fl(fileno\(\))c Fq(metho)r(d)k(of)47 b Fl(SSL.Connection)36 -b Fq(b)r(ecomes)41 b(virtually)0 4738 y(useless.)36 b(Also,)27 +b Fq(b)r(ecomes)41 b(virtually)0 2171 y(useless.)36 b(Also,)27 b(should)h(the)g(metho)r(d)g(resolution)e(b)r(e)i(used)g(on)f(the)h (read-transp)r(ort)d(or)i(the)h(write-transp)r(ort?)p -0 5549 3901 4 v 0 5649 a Ff(18)3368 b(4)83 b(Internals)p -eop end +0 5549 3901 4 v 0 5649 a Ff(4.3)82 b(A)n(cessing)26 b(So)r(ck)n(et)h +(Metho)r(ds)2744 b(19)p eop end %%Trailer userdict /end-hook known{end-hook}if diff --git a/doc/pyOpenSSL.txt b/doc/pyOpenSSL.txt index 6e5acee..1c22be3 100644 --- a/doc/pyOpenSSL.txt +++ b/doc/pyOpenSSL.txt @@ -268,24 +268,7 @@ setup.py --help ``sha1''. New in version 0.11. - 3.1.1 X509Extension objects - - X509Extension objects have the following methods: - - get_short_name() - Retrieve the short descriptive name for this extension. - - The result is a byte string like ``basicConstraints''. New in - version 0.12. - - get_data() - Retrieve the data for this extension. - - The result is the ASN.1 encoded form of the extension data as a - byte string. New in version 0.12. - - - 3.1.2 X509 objects + 3.1.1 X509 objects X509 objects have the following methods: @@ -300,6 +283,10 @@ setup.py --help get_serial_number() Return the certificate serial number. + get_signature_algorithm() + Return the signature algorithm used in the certificate. If the + algorithm is undefined, raise ValueError. + get_subject() Return an X509Name object representing the subject of the certificate. @@ -399,7 +386,7 @@ setup.py --help object will be an X509Extension instance. New in version 0.12. - 3.1.3 X509Name objects + 3.1.2 X509Name objects X509Name objects have the following methods: @@ -422,7 +409,7 @@ setup.py --help stateOrProvinceName The state or province of the entity. ST may be used as an alias - for stateOrProvinceName· + for stateOrProvinceName· localityName The locality of the entity. L may be used as an alias for @@ -444,7 +431,7 @@ setup.py --help The e-mail address of the entity. - 3.1.4 X509Req objects + 3.1.3 X509Req objects X509Req objects have the following methods: @@ -474,7 +461,7 @@ setup.py --help Get the version (RFC 2459, 4.1.2.1) of the certificate request. - 3.1.5 X509Store objects + 3.1.4 X509Store objects The X509Store object has currently just one method: @@ -482,7 +469,7 @@ setup.py --help Add the certificate cert to the certificate store. - 3.1.6 PKey objects + 3.1.5 PKey objects The PKey object has the following methods: @@ -496,8 +483,14 @@ setup.py --help type() Return the type of the key. + check() + Check the consistency of this key, returning True if it is + consistent and raising an exception otherwise. This is only + valid for RSA keys. See the OpenSSL RSA_check_key man page for + further limitations. + - 3.1.7 PKCS7 objects + 3.1.6 PKCS7 objects PKCS7 objects have the following methods: @@ -517,7 +510,7 @@ setup.py --help Get the type name of the PKCS7. - 3.1.8 PKCS12 objects + 3.1.7 PKCS12 objects PKCS12 objects have the following methods: @@ -557,7 +550,7 @@ setup.py --help Replace or set private key portion of the PKCS12 structure - 3.1.9 X509Extension objects + 3.1.8 X509Extension objects X509Extension objects have several methods: @@ -565,10 +558,19 @@ setup.py --help Return the critical field of the extension object. get_short_name() - Return the short type name of the extension object. + Retrieve the short descriptive name for this extension. + The result is a byte string like ``basicConstraints''. New in + version 0.12. - 3.1.10 NetscapeSPKI objects + get_data() + Retrieve the data for this extension. + + The result is the ASN.1 encoded form of the extension data as a + byte string. New in version 0.12. + + + 3.1.9 NetscapeSPKI objects NetscapeSPKI objects have the following methods: @@ -591,7 +593,7 @@ setup.py --help Verify the NetscapeSPKI object using the given key. - 3.1.11 CRL objects + 3.1.10 CRL objects CRL objects have the following methods: @@ -606,7 +608,7 @@ setup.py --help Return a tuple of Revoked objects, by value not reference. - 3.1.12 Revoked objects + 3.1.11 Revoked objects Revoked objects have the following methods: @@ -746,6 +748,29 @@ setup.py --help SSLv23_METHOD to get an SSLv2-compatible handshake, but don't want to use SSLv2. + SSLEAY_VERSION + + SSLEAY_CFLAGS + + SSLEAY_BUILT_ON + + SSLEAY_PLATFORM + + SSLEAY_DIR + Constants used with SSLeay_version to specify what OpenSSL + version information to retrieve. See the man page for the + SSLeay_version C API for details. + + OPENSSL_VERSION_NUMBER + An integer giving the version number of the OpenSSL library used + to build this version of pyOpenSSL. See the man page for the + SSLeay_version C API for details. + + SSLeay_version(type) + Retrieve a string describing some aspect of the underlying + OpenSSL version. The type passed in should be one of the + SSLEAY_* constants defined in this module. + ContextType See Context. @@ -967,6 +992,12 @@ setup.py --help be in the format specified by format, which is either FILETYPE_PEM or FILETYPE_ASN1. The default is FILETYPE_PEM. + set_tlsext_servername_callback(callback) + Specify a one-argument callable to use as the TLS extension + server name callback. When a connection using the server name + extension is made using this context, the callback will be + invoked with the Connection instance. New in version 0.13. + 3.3.2 Connection objects @@ -1034,9 +1065,16 @@ setup.py --help get_context() Retrieve the Context object associated with this Connection. + set_context(context) + Specify a replacement Context object for this Connection. + get_peer_certificate() Retrieve the other side's certificate (if any) + get_peer_cert_chain() + Retrieve the tuple of the other side's certificate chain (if + any) + getpeername() Call the getpeername method of the underlying socket. @@ -1140,6 +1178,14 @@ setup.py --help Checks if there is data to write to the transport layer to complete an operation. + set_tlsext_host_name(name) + Specify the byte string to send as the server name in the client + hello message. New in version 0.13. + + get_servername() + Get the value of the server name received in the client hello + message. New in version 0.13. + 4 Internals @@ -1235,8 +1281,8 @@ setup.py --help This document was generated using the LaTeX2HTML translator. - LaTeX2HTML is Copyright © 1993, 1994, 1995, 1996, 1997, Nikos Drakos, - Computer Based Learning Unit, University of Leeds, and Copyright © + LaTeX2HTML is Copyright © 1993, 1994, 1995, 1996, 1997, Nikos Drakos, + Computer Based Learning Unit, University of Leeds, and Copyright © 1997, 1998, Ross Moore, Mathematics Department, Macquarie University, Sydney. -- cgit v1.2.1 From 954b778eb1d3c0e2249e6e89f4826a720fcdcba5 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Sun, 14 Aug 2011 19:02:58 -0400 Subject: Bump the third instance of the version number --- doc/pyOpenSSL.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/pyOpenSSL.tex b/doc/pyOpenSSL.tex index 6a49748..99e3479 100644 --- a/doc/pyOpenSSL.tex +++ b/doc/pyOpenSSL.tex @@ -2,7 +2,7 @@ \title{Python OpenSSL Manual} -\release{0.12} +\release{0.13} \author{Jean-Paul Calderone} \authoraddress{\email{exarkun@twistedmatrix.com}} -- cgit v1.2.1 From 5e99f440d1a8cd00f11ef569a98ba6a18a8ccd37 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Fri, 2 Sep 2011 11:08:10 -0400 Subject: Bump the version to the final release version --- OpenSSL/version.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSSL/version.py b/OpenSSL/version.py index 2f1bed7..be51903 100644 --- a/OpenSSL/version.py +++ b/OpenSSL/version.py @@ -6,4 +6,4 @@ pyOpenSSL - A simple wrapper around the OpenSSL library """ -__version__ = '0.13a1' +__version__ = '0.13' diff --git a/setup.py b/setup.py index a278927..2aa649e 100755 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ from distutils.errors import DistutilsFileError from distutils.command.build_ext import build_ext # XXX Deduplicate this -__version__ = '0.13a1' +__version__ = '0.13' crypto_src = ['OpenSSL/crypto/crypto.c', 'OpenSSL/crypto/x509.c', 'OpenSSL/crypto/x509name.c', 'OpenSSL/crypto/pkey.c', -- cgit v1.2.1 From b557e98ddba211beca85681eb02b342ea2c064e9 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Fri, 2 Sep 2011 11:35:12 -0400 Subject: Regenerate the documentation for the new version --- doc/html/about.html | 2 +- doc/html/building-unix.html | 2 +- doc/html/building-windows.html | 2 +- doc/html/building.html | 2 +- doc/html/callbacks.html | 2 +- doc/html/contents.html | 2 +- doc/html/crl.html | 2 +- doc/html/exceptions.html | 2 +- doc/html/index.html | 2 +- doc/html/internals.html | 2 +- doc/html/intro.html | 2 +- doc/html/openssl-509ext.html | 2 +- doc/html/openssl-connection.html | 2 +- doc/html/openssl-context.html | 2 +- doc/html/openssl-crypto.html | 2 +- doc/html/openssl-netscape-spki.html | 2 +- doc/html/openssl-pkcs12.html | 2 +- doc/html/openssl-pkcs7.html | 2 +- doc/html/openssl-pkey.html | 2 +- doc/html/openssl-rand.html | 2 +- doc/html/openssl-ssl.html | 2 +- doc/html/openssl-x509.html | 2 +- doc/html/openssl-x509name.html | 2 +- doc/html/openssl-x509req.html | 2 +- doc/html/openssl-x509store.html | 2 +- doc/html/openssl.html | 2 +- doc/html/pyOpenSSL.html | 2 +- doc/html/revoked.html | 2 +- doc/html/socket-methods.html | 2 +- doc/pyOpenSSL.ps | 120 ++++++++++++++++++------------------ doc/pyOpenSSL.txt | 2 +- 31 files changed, 90 insertions(+), 90 deletions(-) diff --git a/doc/html/about.html b/doc/html/about.html index ae0996e..6b23ba9 100644 --- a/doc/html/about.html +++ b/doc/html/about.html @@ -96,7 +96,7 @@ About this document ... Previous: 4.3 Acessing Socket Methods Up: Python OpenSSL Manual
    -Release 0.12. +Release 0.13. diff --git a/doc/html/building-unix.html b/doc/html/building-unix.html index a9376fe..d0a7a05 100644 --- a/doc/html/building-unix.html +++ b/doc/html/building-unix.html @@ -117,7 +117,7 @@ to find out more about how to use the script. Up: 2 Building and Installing Next: 2.2 Building the Module
    -Release 0.12. +Release 0.13. diff --git a/doc/html/building-windows.html b/doc/html/building-windows.html index 018c7e8..e594751 100644 --- a/doc/html/building-windows.html +++ b/doc/html/building-windows.html @@ -109,7 +109,7 @@ to get more information. Up: 2 Building and Installing Next: 3 OpenSSL
    -Release 0.12. +Release 0.13. diff --git a/doc/html/building.html b/doc/html/building.html index 404fbf8..5d97ac0 100644 --- a/doc/html/building.html +++ b/doc/html/building.html @@ -97,7 +97,7 @@ I have tested this on Debian Linux systems (woody and sid), Solaris 2.6 and Up: Python OpenSSL Manual Next: 2.1 Building the Module
    -Release 0.12. +Release 0.13. diff --git a/doc/html/callbacks.html b/doc/html/callbacks.html index 0275e75..35c9ccb 100644 --- a/doc/html/callbacks.html +++ b/doc/html/callbacks.html @@ -113,7 +113,7 @@ threadsafe (as long as properly initialized, as pyOpenSSL initializes it). Up: 4 Internals Next: 4.3 Acessing Socket Methods
    -Release 0.12. +Release 0.13. diff --git a/doc/html/contents.html b/doc/html/contents.html index 36d1c21..1a791ad 100644 --- a/doc/html/contents.html +++ b/doc/html/contents.html @@ -106,7 +106,7 @@ Contents Up: Python OpenSSL Manual Next: 1 Introduction
    -Release 0.12. +Release 0.13. diff --git a/doc/html/crl.html b/doc/html/crl.html index eb529d6..7e50385 100644 --- a/doc/html/crl.html +++ b/doc/html/crl.html @@ -100,7 +100,7 @@ Return a tuple of Revoked objects, by value not reference. Up: 3.1 crypto Next: 3.1.11 Revoked objects
    -Release 0.12. +Release 0.13. diff --git a/doc/html/exceptions.html b/doc/html/exceptions.html index 038d546..c53a351 100644 --- a/doc/html/exceptions.html +++ b/doc/html/exceptions.html @@ -89,7 +89,7 @@ For more information about this, see section Up: 4 Internals Next: 4.2 Callbacks
    -Release 0.12. +Release 0.13. diff --git a/doc/html/index.html b/doc/html/index.html index 41b6939..2070a80 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -163,7 +163,7 @@ calling a corresponding function in the OpenSSL library. Next: Contents
    -Release 0.12. +Release 0.13. diff --git a/doc/html/internals.html b/doc/html/internals.html index 8066a0c..b0b26a4 100644 --- a/doc/html/internals.html +++ b/doc/html/internals.html @@ -96,7 +96,7 @@ accessing socket methods. This is what this chapter is about. Up: Python OpenSSL Manual Next: 4.1 Exceptions
    -Release 0.12. +Release 0.13. diff --git a/doc/html/intro.html b/doc/html/intro.html index 7a7c445..0575d42 100644 --- a/doc/html/intro.html +++ b/doc/html/intro.html @@ -102,7 +102,7 @@ M2CryptoUp: Python OpenSSL Manual Next: 2 Building and Installing
    -Release 0.12. +Release 0.13. diff --git a/doc/html/openssl-509ext.html b/doc/html/openssl-509ext.html index 9e38090..ea1f3c9 100644 --- a/doc/html/openssl-509ext.html +++ b/doc/html/openssl-509ext.html @@ -111,7 +111,7 @@ The result is the ASN.1 encoded form of the extension data as a byte string. Up: 3.1 crypto Next: 3.1.9 NetscapeSPKI objects
    -Release 0.12. +Release 0.13. diff --git a/doc/html/openssl-connection.html b/doc/html/openssl-connection.html index a5b657a..c4f7d88 100644 --- a/doc/html/openssl-connection.html +++ b/doc/html/openssl-connection.html @@ -396,7 +396,7 @@ Get the value of the server name received in the client hello message. Up: 3.3 SSL Next: 4 Internals
    -Release 0.12. +Release 0.13. diff --git a/doc/html/openssl-context.html b/doc/html/openssl-context.html index c70d132..9e37cae 100644 --- a/doc/html/openssl-context.html +++ b/doc/html/openssl-context.html @@ -317,7 +317,7 @@ context, the callback will be invoked with the Connection instance. Up: 3.3 SSL Next: 3.3.2 Connection objects
    -Release 0.12. +Release 0.13. diff --git a/doc/html/openssl-crypto.html b/doc/html/openssl-crypto.html index 4a76e9f..36f76f0 100644 --- a/doc/html/openssl-crypto.html +++ b/doc/html/openssl-crypto.html @@ -351,7 +351,7 @@ message digest type of the signature, for example ``sha1''. Up: 3 OpenSSL Next: 3.1.1 X509 objects
    -Release 0.12. +Release 0.13. diff --git a/doc/html/openssl-netscape-spki.html b/doc/html/openssl-netscape-spki.html index 0878fd0..f9abd3b 100644 --- a/doc/html/openssl-netscape-spki.html +++ b/doc/html/openssl-netscape-spki.html @@ -114,7 +114,7 @@ Verify the NetscapeSPKI object using the given key. Up: 3.1 crypto Next: 3.1.10 CRL objects
    -Release 0.12. +Release 0.13. diff --git a/doc/html/openssl-pkcs12.html b/doc/html/openssl-pkcs12.html index b8ea103..f887ba4 100644 --- a/doc/html/openssl-pkcs12.html +++ b/doc/html/openssl-pkcs12.html @@ -145,7 +145,7 @@ Replace or set private key portion of the PKCS12 structure Up: 3.1 crypto Next: 3.1.8 X509Extension objects
    -Release 0.12. +Release 0.13. diff --git a/doc/html/openssl-pkcs7.html b/doc/html/openssl-pkcs7.html index 739b80f..a0a2b9d 100644 --- a/doc/html/openssl-pkcs7.html +++ b/doc/html/openssl-pkcs7.html @@ -111,7 +111,7 @@ Get the type name of the PKCS7. Up: 3.1 crypto Next: 3.1.7 PKCS12 objects
    -Release 0.12. +Release 0.13. diff --git a/doc/html/openssl-pkey.html b/doc/html/openssl-pkey.html index 491c882..5ce9380 100644 --- a/doc/html/openssl-pkey.html +++ b/doc/html/openssl-pkey.html @@ -108,7 +108,7 @@ OpenSSL RSA_check_key man page for further limitations. Up: 3.1 crypto Next: 3.1.6 PKCS7 objects
    -Release 0.12. +Release 0.13. diff --git a/doc/html/openssl-rand.html b/doc/html/openssl-rand.html index d268cbd..2ff4982 100644 --- a/doc/html/openssl-rand.html +++ b/doc/html/openssl-rand.html @@ -177,7 +177,7 @@ for more information. Up: 3 OpenSSL Next: 3.3 SSL
    -Release 0.12. +Release 0.13. diff --git a/doc/html/openssl-ssl.html b/doc/html/openssl-ssl.html index b51a15b..bd0c5b7 100644 --- a/doc/html/openssl-ssl.html +++ b/doc/html/openssl-ssl.html @@ -284,7 +284,7 @@ it'd be tricky to get the handshakes right! Up: 3 OpenSSL Next: 3.3.1 Context objects
    -Release 0.12. +Release 0.13. diff --git a/doc/html/openssl-x509.html b/doc/html/openssl-x509.html index b40f9a5..a81503a 100644 --- a/doc/html/openssl-x509.html +++ b/doc/html/openssl-x509.html @@ -268,7 +268,7 @@ instance. Up: 3.1 crypto Next: 3.1.2 X509Name objects
    -Release 0.12. +Release 0.13. diff --git a/doc/html/openssl-x509name.html b/doc/html/openssl-x509name.html index 8361ae0..e7e532d 100644 --- a/doc/html/openssl-x509name.html +++ b/doc/html/openssl-x509name.html @@ -151,7 +151,7 @@ The e-mail address of the entity. Up: 3.1 crypto Next: 3.1.3 X509Req objects
    -Release 0.12. +Release 0.13. diff --git a/doc/html/openssl-x509req.html b/doc/html/openssl-x509req.html index 37ac24f..89c8f46 100644 --- a/doc/html/openssl-x509req.html +++ b/doc/html/openssl-x509req.html @@ -125,7 +125,7 @@ Get the version (RFC 2459, 4.1.2.1) of the certificate request. Up: 3.1 crypto Next: 3.1.4 X509Store objects
    -Release 0.12. +Release 0.13. diff --git a/doc/html/openssl-x509store.html b/doc/html/openssl-x509store.html index e73d9ae..bfb57bc 100644 --- a/doc/html/openssl-x509store.html +++ b/doc/html/openssl-x509store.html @@ -87,7 +87,7 @@ Add the certificate cert to the certificate store. Up: 3.1 crypto Next: 3.1.5 PKey objects
    -Release 0.12. +Release 0.13. diff --git a/doc/html/openssl.html b/doc/html/openssl.html index 14bfeee..4fb8c4f 100644 --- a/doc/html/openssl.html +++ b/doc/html/openssl.html @@ -147,7 +147,7 @@ An interface to the SSL-specific parts of OpenSSL. Up: Python OpenSSL Manual Next: 3.1 crypto
    -Release 0.12. +Release 0.13. diff --git a/doc/html/pyOpenSSL.html b/doc/html/pyOpenSSL.html index 41b6939..2070a80 100644 --- a/doc/html/pyOpenSSL.html +++ b/doc/html/pyOpenSSL.html @@ -163,7 +163,7 @@ calling a corresponding function in the OpenSSL library. Next: Contents
    -Release 0.12. +Release 0.13. diff --git a/doc/html/revoked.html b/doc/html/revoked.html index 86e9e7a..a423465 100644 --- a/doc/html/revoked.html +++ b/doc/html/revoked.html @@ -127,7 +127,7 @@ The string is formatted as an ASN1 GENERALIZEDTIME. Up: 3.1 crypto Next: 3.2 rand
    -Release 0.12. +Release 0.13. diff --git a/doc/html/socket-methods.html b/doc/html/socket-methods.html index 46ecc01..07a081f 100644 --- a/doc/html/socket-methods.html +++ b/doc/html/socket-methods.html @@ -111,7 +111,7 @@ read-transport or the write-transport? Up: 4 Internals Next: About this document ...
    -Release 0.12. +Release 0.13. diff --git a/doc/pyOpenSSL.ps b/doc/pyOpenSSL.ps index 10a440e..31be028 100644 --- a/doc/pyOpenSSL.ps +++ b/doc/pyOpenSSL.ps @@ -1,7 +1,7 @@ %!PS-Adobe-2.0 %%Creator: dvips(k) 5.98 Copyright 2009 Radical Eye Software %%Title: pyOpenSSL.dvi -%%CreationDate: Sun Aug 14 18:16:42 2011 +%%CreationDate: Fri Sep 2 11:28:54 2011 %%Pages: 19 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 @@ -10,7 +10,7 @@ %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -N0 -o pyOpenSSL.ps pyOpenSSL %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2011.08.14:1816 +%DVIPSSource: TeX output 2011.09.02:1128 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -4133,61 +4133,61 @@ F00000000FF00000001FE00000001FE00000001FE00000001FE00000003FC00000003FC0 00007F80000000FF00000000FF00000000FF00000000FF00000000FF00000001FE000000 01FE00000001FE00000001FE00000003FC00000003FC00000003FC00000003FC00000003 FC00000007F800007FFFFFFF807FFFFFFF807FFFFFFF807FFFFFFF80FFFFFFFF00FFFFFF -FF00224377C231>I<0000001FF000000000FFFE00000003FFFF8000000FFFFFE000001F -FFFFF000003FFFFFF800007FC07FF80000FE000FFC0001FC0007FE0003F80003FE0007F0 -0001FE0007E00001FF000FC00000FF001FC00000FF001F800000FF003F000000FF003F00 -0000FF003E000000FF001E000000FF001E000000FF000C000000FF0004000000FF000000 -0000FE0000000001FE0000000001FE0000000001FC0000000003FC0000000003F8000000 -0007F8000000000FF0000000000FE0000000001FE0000000003FC0000000007F80000000 -00FF0000000001FE0000000003FC0000000007F8000000000FF0000000001FE000000000 -3F80000000007F0000000000FE0000000003FC0000000007F0000000000FE0000000001F -C0000000007F8000000000FE0000000001FC0000000003F80000000007F0000000000FE0 -000000003F80000000007F0000000000FE0000000001FC0000000003F80000000007E000 -0000001FC0000000003F80000000007FFFFFFFFE007FFFFFFFFE007FFFFFFFFE007FFFFF -FFFE00FFFFFFFFFC00FFFFFFFFFC0030437BC231>I<0001FFFFFFF000000003FFFFFFFE -00000003FFFFFFFFC0000003FFFFFFFFF0000003FFFFFFFFF8000007FFFFFFFFFC000007 -F800007FFE000007F800000FFF000007F8000003FF800007F8000000FF80000FF0000000 -7FC0000FF00000007FC0000FF00000003FE0000FF00000003FE0000FF00000003FE0001F -E00000001FE0001FE00000001FE0001FE00000001FE0001FE00000003FE0001FE0000000 -3FC0003FC00000003FC0003FC00000007FC0003FC00000007F80003FC0000000FF80007F -80000001FF00007F80000003FE00007F80000007FE00007F8000000FFC00007F8000003F -F80000FF000000FFF00000FF00000FFFC00000FFFFFFFFFF800000FFFFFFFFFE000000FF -FFFFFFF8000001FFFFFFFFE0000001FFFFFFFF00000001FFFFFFFC00000001FE0001FC00 -000003FC0001FE00000003FC0001FE00000003FC0000FE00000003FC0000FF00000003FC -00007F00000007F800007F80000007F800007F80000007F800003F80000007F800003FC0 -000007F800003FC000000FF000001FC000000FF000001FE000000FF000001FE000000FF0 -00000FF000000FF000000FF000001FE000000FF000001FE0000007F800001FE0000007F8 -00001FE0000003F800003FC0000003FC00003FC0000003FC00003FC0000001FC00003FC0 -000001FE00003FC0000001FE00007F80000000FF00007F80000000FF00007F80000000FF -00007F800000007F80007F800000007F8000FF000000007F8000FF000000003FC0003B45 -77C43F>82 D<00000FFC000000FFFF800003FFFFC0001FFFFFF0003FFFFFF8003FFFFFF8 -007FE00FFC007F0003FE00780003FE00600001FE00000001FE00000001FF00000000FF00 -000000FF00000000FF00000001FE00000001FE00000001FE00000001FE00000001FE0000 -0003FC00000FFFFC0001FFFFFC000FFFFFFC003FFFFFFC00FFFFFFF803FFFC07F807FF80 -07F80FFC0007F81FF00007F83FC0000FF03F80000FF07F00000FF07F00000FF0FE00001F -E0FE00001FE0FE00003FE0FF00003FE0FF0000FFE0FF8003FFC07FF01FFFC07FFFFFFFC0 -7FFFFFFFC03FFFFF3FC01FFFFC7F800FFFE07F8003FE000000282F7AAD2F>97 -D<000007F80000003FFE000000FFFF800003FFFFC00007FFFFE0000FFFFFF0003FF81FF0 -007FC007F800FF8003F800FE0001F801FC0001F803F80000FC07F00000FC07F00000FC0F -E00000FC0FC000007C1FC000007C1F8000007C3FFFFFFFFC3FFFFFFFF83FFFFFFFF87FFF -FFFFF87FFFFFFFF87FFFFFFFF87E00000000FE00000000FE00000000FE00000000FE0000 -0000FE00000000FE00000000FE00000000FE000000007F000000007F000000007F000000 -007F800000403FC00001C03FE00007C01FF0003F800FFC01FF800FFFFFFF8007FFFFFF00 -03FFFFFC0000FFFFF000003FFF8000000FFC0000262F79AD2B>101 -D<0001FE0001FE0001FE0001FE0001FE0003FC0003FC0003FC0003FC0007F80007F80007 -F80007F80007F8000FF0000FF0000FF0000FF0000FF0001FE0001FE0001FE0001FE0001F -E0003FC0003FC0003FC0003FC0007F80007F80007F80007F80007F8000FF0000FF0000FF -0000FF0000FF0001FE0001FE0001FE0001FE0003FC0003FC0003FC0003FC0003FC0007F8 -0007F80007F80007F80007F8000FF0000FF0000FF0000FF0000FF0001FE0001FE0001FE0 -001FE0003FC0003FC0003FC0003FC0003FC0007F80007F80007F80007F80007F8000FF00 -00FF0000174979C817>108 D<00001FF8000000FFFF000003FFFFC0000FFFFFF0001FFF -FFF8003FFFFFF0007FC01FF000FF0003F000FE0000E001FC00006001FC00000003F80000 -0003F800000003F800000003F800000003FC00000003FC00000003FE00000003FFE00000 -01FFFE000001FFFFC00000FFFFF000007FFFF800003FFFFC00001FFFFE000007FFFF0000 -00FFFF00000007FF80000001FF800000007F800000007F800000003F800000003F800000 -003F800000007F000000007F002000007F00300000FE007C0001FE007F0003FC007FE01F -F800FFFFFFF000FFFFFFE0007FFFFFC0001FFFFF800007FFFE0000007FE00000252F7CAD -25>115 D E +FF00224377C231>I<0000001FF000000000FFFE00000007FFFF8000001FFFFFC000003F +FFFFE00000FFFFFFF00001FFE03FF80003FF000FF80007FC0007FC000FF00003FC001FC0 +0003FC001F800003FC000F000003FC000E000003FC0006000003FC0004000003FC000000 +0003FC0000000007F80000000007F8000000000FF8000000000FF0000000001FE0000000 +001FE0000000003FC0000000007F8000000000FF8000000003FF000000000FFE00000000 +7FF80000003FFFF00000003FFFE00000003FFF800000007FFF800000007FFFE00000007F +FFF0000000000FFC0000000003FE0000000001FE0000000000FF0000000000FF80000000 +007F80000000007FC0000000007FC0000000007FC0000000007FC0000000007FC0000000 +007FC0000000007FC0000000007FC0000000007FC000000000FF8000000000FF80000000 +00FF8020000001FF0060000001FF0070000003FE0078000003FE00F8000007FC00FC0000 +0FF800FE00001FF0007F80003FF0003FE000FFE0001FFC03FFC0001FFFFFFF000007FFFF +FE000003FFFFF8000001FFFFF00000007FFF8000000007FC0000002E457AC231>51 +D<0001FFFFFFF000000003FFFFFFFE00000003FFFFFFFFC0000003FFFFFFFFF0000003FF +FFFFFFF8000007FFFFFFFFFC000007F800007FFE000007F800000FFF000007F8000003FF +800007F8000000FF80000FF00000007FC0000FF00000007FC0000FF00000003FE0000FF0 +0000003FE0000FF00000003FE0001FE00000001FE0001FE00000001FE0001FE00000001F +E0001FE00000003FE0001FE00000003FC0003FC00000003FC0003FC00000007FC0003FC0 +0000007F80003FC0000000FF80007F80000001FF00007F80000003FE00007F80000007FE +00007F8000000FFC00007F8000003FF80000FF000000FFF00000FF00000FFFC00000FFFF +FFFFFF800000FFFFFFFFFE000000FFFFFFFFF8000001FFFFFFFFE0000001FFFFFFFF0000 +0001FFFFFFFC00000001FE0001FC00000003FC0001FE00000003FC0001FE00000003FC00 +00FE00000003FC0000FF00000003FC00007F00000007F800007F80000007F800007F8000 +0007F800003F80000007F800003FC0000007F800003FC000000FF000001FC000000FF000 +001FE000000FF000001FE000000FF000000FF000000FF000000FF000001FE000000FF000 +001FE0000007F800001FE0000007F800001FE0000003F800003FC0000003FC00003FC000 +0003FC00003FC0000001FC00003FC0000001FE00003FC0000001FE00007F80000000FF00 +007F80000000FF00007F80000000FF00007F800000007F80007F800000007F8000FF0000 +00007F8000FF000000003FC0003B4577C43F>82 D<00000FFC000000FFFF800003FFFFC0 +001FFFFFF0003FFFFFF8003FFFFFF8007FE00FFC007F0003FE00780003FE00600001FE00 +000001FE00000001FF00000000FF00000000FF00000000FF00000001FE00000001FE0000 +0001FE00000001FE00000001FE00000003FC00000FFFFC0001FFFFFC000FFFFFFC003FFF +FFFC00FFFFFFF803FFFC07F807FF8007F80FFC0007F81FF00007F83FC0000FF03F80000F +F07F00000FF07F00000FF0FE00001FE0FE00001FE0FE00003FE0FF00003FE0FF0000FFE0 +FF8003FFC07FF01FFFC07FFFFFFFC07FFFFFFFC03FFFFF3FC01FFFFC7F800FFFE07F8003 +FE000000282F7AAD2F>97 D<000007F80000003FFE000000FFFF800003FFFFC00007FFFF +E0000FFFFFF0003FF81FF0007FC007F800FF8003F800FE0001F801FC0001F803F80000FC +07F00000FC07F00000FC0FE00000FC0FC000007C1FC000007C1F8000007C3FFFFFFFFC3F +FFFFFFF83FFFFFFFF87FFFFFFFF87FFFFFFFF87FFFFFFFF87E00000000FE00000000FE00 +000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000007F0000 +00007F000000007F000000007F800000403FC00001C03FE00007C01FF0003F800FFC01FF +800FFFFFFF8007FFFFFF0003FFFFFC0000FFFFF000003FFF8000000FFC0000262F79AD2B +>101 D<0001FE0001FE0001FE0001FE0001FE0003FC0003FC0003FC0003FC0007F80007 +F80007F80007F80007F8000FF0000FF0000FF0000FF0000FF0001FE0001FE0001FE0001F +E0001FE0003FC0003FC0003FC0003FC0007F80007F80007F80007F80007F8000FF0000FF +0000FF0000FF0000FF0001FE0001FE0001FE0001FE0003FC0003FC0003FC0003FC0003FC +0007F80007F80007F80007F80007F8000FF0000FF0000FF0000FF0000FF0001FE0001FE0 +001FE0001FE0003FC0003FC0003FC0003FC0003FC0007F80007F80007F80007F80007F80 +00FF0000FF0000174979C817>108 D<00001FF8000000FFFF000003FFFFC0000FFFFFF0 +001FFFFFF8003FFFFFF0007FC01FF000FF0003F000FE0000E001FC00006001FC00000003 +F800000003F800000003F800000003F800000003FC00000003FC00000003FE00000003FF +E0000001FFFE000001FFFFC00000FFFFF000007FFFF800003FFFFC00001FFFFE000007FF +FF000000FFFF00000007FF80000001FF800000007F800000007F800000003F800000003F +800000003F800000007F000000007F002000007F00300000FE007C0001FE007F0003FC00 +7FE01FF800FFFFFFF000FFFFFFE0007FFFFFC0001FFFFF800007FFFE0000007FE0000025 +2F7CAD25>115 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Ft ecss2488 24.88 15 /Ft 15 122 df[