Merge 0.13 release branch
diff --git a/ChangeLog b/ChangeLog
index dffd05d..4f92b03 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-09-02  Jean-Paul Calderone  <exarkun@twistedmatrix.com>
+
+	* Release 0.13
+
 2011-06-12  Jean-Paul Calderone  <exarkun@twistedmatrix.com>
 
 	* OpenSSL/crypto/pkey.c: Add the PKey.check method, mostly
diff --git a/OpenSSL/version.py b/OpenSSL/version.py
index b7255e9..be51903 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.13'
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 @@
 <b class="navlabel">Previous:</b> <a class="sectref" href="socket-methods.html">4.3 Acessing Socket Methods</A>
 <b class="navlabel">Up:</b> <a class="sectref" HREF="pyOpenSSL.html">Python OpenSSL Manual</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
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 @@
 <b class="navlabel">Up:</b> <a class="sectref" href="building.html">2 Building and Installing</A>
 <b class="navlabel">Next:</b> <a class="sectref" href="building-windows.html">2.2 Building the Module</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
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 @@
 <b class="navlabel">Up:</b> <a class="sectref" href="building.html">2 Building and Installing</A>
 <b class="navlabel">Next:</b> <a class="sectref" href="openssl.html">3 OpenSSL  </A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/building.html b/doc/html/building.html
index 9fb0a8d..5d97ac0 100644
--- a/doc/html/building.html
+++ b/doc/html/building.html
@@ -62,9 +62,9 @@
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
 
 <UL CLASS="ChildLinks">
-<LI><A NAME="tex2html80"
+<LI><A NAME="tex2html79"
   href="building-unix.html">2.1 Building the Module on a Unix System </A>
-<LI><A NAME="tex2html81"
+<LI><A NAME="tex2html80"
   href="building-windows.html">2.2 Building the Module on a Windows System </A>
 </UL>
 <!--End of Table of Child-Links-->
@@ -97,7 +97,7 @@
 <b class="navlabel">Up:</b> <a class="sectref" HREF="pyOpenSSL.html">Python OpenSSL Manual</A>
 <b class="navlabel">Next:</b> <a class="sectref" href="building-unix.html">2.1 Building the Module</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
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 @@
 <b class="navlabel">Up:</b> <a class="sectref" href="internals.html">4 Internals</A>
 <b class="navlabel">Next:</b> <a class="sectref" href="socket-methods.html">4.3 Acessing Socket Methods</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/contents.html b/doc/html/contents.html
index c006687..1a791ad 100644
--- a/doc/html/contents.html
+++ b/doc/html/contents.html
@@ -46,36 +46,36 @@
 <!--Table of Contents-->
 
 <UL CLASS="TofC">
-<LI><A NAME="tex2html46"
+<LI><A NAME="tex2html45"
   href="intro.html">1 Introduction </A>
-<LI><A NAME="tex2html47"
+<LI><A NAME="tex2html46"
   href="building.html">2 Building and Installing </A>
 <UL>
-<LI><A NAME="tex2html48"
+<LI><A NAME="tex2html47"
   href="building-unix.html">2.1 Building the Module on a Unix System </A>
-<LI><A NAME="tex2html49"
+<LI><A NAME="tex2html48"
   href="building-windows.html">2.2 Building the Module on a Windows System </A>
 </UL>
 <BR>
-<LI><A NAME="tex2html50"
+<LI><A NAME="tex2html49"
   href="openssl.html">3 OpenSSL -- Python interface to OpenSSL </A>
 <UL>
-<LI><A NAME="tex2html51"
+<LI><A NAME="tex2html50"
   href="openssl-crypto.html">3.1 crypto -- Generic cryptographic module </A>
-<LI><A NAME="tex2html52"
+<LI><A NAME="tex2html51"
   href="openssl-rand.html">3.2 rand -- An interface to the OpenSSL pseudo random number generator </A>
-<LI><A NAME="tex2html53"
+<LI><A NAME="tex2html52"
   href="openssl-ssl.html">3.3 SSL -- An interface to the SSL-specific parts of OpenSSL </A>
 </UL>
 <BR>
-<LI><A NAME="tex2html54"
+<LI><A NAME="tex2html53"
   href="internals.html">4 Internals </A>
 <UL>
-<LI><A NAME="tex2html55"
+<LI><A NAME="tex2html54"
   href="exceptions.html">4.1 Exceptions </A>
-<LI><A NAME="tex2html56"
+<LI><A NAME="tex2html55"
   href="callbacks.html">4.2 Callbacks </A>
-<LI><A NAME="tex2html57"
+<LI><A NAME="tex2html56"
   href="socket-methods.html">4.3 Acessing Socket Methods </A>
 </UL></UL>
 <!--End of Table of Contents-->
@@ -106,7 +106,7 @@
 <b class="navlabel">Up:</b> <a class="sectref" HREF="pyOpenSSL.html">Python OpenSSL Manual</A>
 <b class="navlabel">Next:</b> <a class="sectref" href="intro.html">1 Introduction</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/crl.html b/doc/html/crl.html
index 4ce6acb..7e50385 100644
--- a/doc/html/crl.html
+++ b/doc/html/crl.html
@@ -1,8 +1,8 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html>
 <head>
-<title>3.1.11 CRL objects </title>
-<META NAME="description" CONTENT="3.1.11 CRL objects ">
+<title>3.1.10 CRL objects </title>
+<META NAME="description" CONTENT="3.1.10 CRL objects ">
 <META NAME="keywords" CONTENT="pyOpenSSL">
 <META NAME="resource-type" CONTENT="document">
 <META NAME="distribution" CONTENT="global">
@@ -36,36 +36,36 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-netscape-spki.html">3.1.10 NetscapeSPKI objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-netscape-spki.html">3.1.9 NetscapeSPKI objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="revoked.html">3.1.12 Revoked objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="revoked.html">3.1.11 Revoked objects</A>
 <br><hr>
 </DIV>
 <!--End of Navigation Panel-->
 
-<H3><A NAME="SECTION0004111000000000000000">&nbsp;</A>
+<H3><A NAME="SECTION0004110000000000000000">&nbsp;</A>
 <BR>
-3.1.11 CRL objects 
+3.1.10 CRL objects 
 </H3>
 
 <P>
 CRL objects have the following methods:
 
 <P>
-<dl><dt><b><a name='l2h-106'><tt class='method'>add_revoked</tt></a></b>(<var>revoked</var>)
+<dl><dt><b><a name='l2h-107'><tt class='method'>add_revoked</tt></a></b>(<var>revoked</var>)
 <dd>
 Add a Revoked object to the CRL, by value not reference.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-107'><tt class='method'>export</tt></a></b>(<var>cert, key</var><big>[</big><var>, type=FILETYPE_PEM</var><big>]</big><big>[</big><var>, days=100</var><big>]</big>)
+<dl><dt><b><a name='l2h-108'><tt class='method'>export</tt></a></b>(<var>cert, key</var><big>[</big><var>, type=FILETYPE_PEM</var><big>]</big><big>[</big><var>, days=100</var><big>]</big>)
 <dd>
 Use <var>cert</var> and <var>key</var> to sign the CRL and return the CRL as a string.
 <var>days</var> is the number of days before the next CRL is due.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-108'><tt class='method'>get_revoked</tt></a></b>()
+<dl><dt><b><a name='l2h-109'><tt class='method'>get_revoked</tt></a></b>()
 <dd>
 Return a tuple of Revoked objects, by value not reference.
 </dl>
@@ -96,11 +96,11 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-netscape-spki.html">3.1.10 NetscapeSPKI objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-netscape-spki.html">3.1.9 NetscapeSPKI objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="revoked.html">3.1.12 Revoked objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="revoked.html">3.1.11 Revoked objects</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
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 @@
 <b class="navlabel">Up:</b> <a class="sectref" href="internals.html">4 Internals</A>
 <b class="navlabel">Next:</b> <a class="sectref" href="callbacks.html">4.2 Callbacks</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/index.html b/doc/html/index.html
index c5d7e7a..2070a80 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -87,54 +87,52 @@
   href="openssl-crypto.html">3.1 <tt class="module">crypto</tt> -- Generic cryptographic module </A>
 <UL>
 <LI><A NAME="tex2html15"
-  href="openssl-x509ext.html">3.1.1 X509Extension objects </A>
+  href="openssl-x509.html">3.1.1 X509 objects </A>
 <LI><A NAME="tex2html16"
-  href="openssl-x509.html">3.1.2 X509 objects </A>
+  href="openssl-x509name.html">3.1.2 X509Name objects </A>
 <LI><A NAME="tex2html17"
-  href="openssl-x509name.html">3.1.3 X509Name objects </A>
+  href="openssl-x509req.html">3.1.3 X509Req objects </A>
 <LI><A NAME="tex2html18"
-  href="openssl-x509req.html">3.1.4 X509Req objects </A>
+  href="openssl-x509store.html">3.1.4 X509Store objects </A>
 <LI><A NAME="tex2html19"
-  href="openssl-x509store.html">3.1.5 X509Store objects </A>
+  href="openssl-pkey.html">3.1.5 PKey objects </A>
 <LI><A NAME="tex2html20"
-  href="openssl-pkey.html">3.1.6 PKey objects </A>
+  href="openssl-pkcs7.html">3.1.6 PKCS7 objects </A>
 <LI><A NAME="tex2html21"
-  href="openssl-pkcs7.html">3.1.7 PKCS7 objects </A>
+  href="openssl-pkcs12.html">3.1.7 PKCS12 objects </A>
 <LI><A NAME="tex2html22"
-  href="openssl-pkcs12.html">3.1.8 PKCS12 objects </A>
+  href="openssl-509ext.html">3.1.8 X509Extension objects </A>
 <LI><A NAME="tex2html23"
-  href="openssl-509ext.html">3.1.9 X509Extension objects </A>
+  href="openssl-netscape-spki.html">3.1.9 NetscapeSPKI objects </A>
 <LI><A NAME="tex2html24"
-  href="openssl-netscape-spki.html">3.1.10 NetscapeSPKI objects </A>
+  href="crl.html">3.1.10 CRL objects </A>
 <LI><A NAME="tex2html25"
-  href="crl.html">3.1.11 CRL objects </A>
-<LI><A NAME="tex2html26"
-  href="revoked.html">3.1.12 Revoked objects </A>
+  href="revoked.html">3.1.11 Revoked objects </A>
 </UL>
-<LI><A NAME="tex2html27"
+<LI><A NAME="tex2html26"
   href="openssl-rand.html">3.2 <tt class="module">rand</tt> -- An interface to the OpenSSL pseudo random number generator </A>
-<LI><A NAME="tex2html28"
+<LI><A NAME="tex2html27"
   href="openssl-ssl.html">3.3 <tt class="module">SSL</tt> -- An interface to the SSL-specific parts of OpenSSL </A>
 <UL>
-<LI><A NAME="tex2html29"
+<LI><A NAME="tex2html28"
   href="openssl-context.html">3.3.1 Context objects </A>
-<LI><A NAME="tex2html30"
+<LI><A NAME="tex2html29"
   href="openssl-connection.html">3.3.2 Connection objects </A>
 </UL>
 </UL>
 <BR>
-<LI><A NAME="tex2html31"
+<LI><A NAME="tex2html30"
   href="internals.html">4 Internals </A>
 <UL>
-<LI><A NAME="tex2html32"
+<LI><A NAME="tex2html31"
   href="exceptions.html">4.1 Exceptions </A>
-<LI><A NAME="tex2html33"
+<LI><A NAME="tex2html32"
   href="callbacks.html">4.2 Callbacks </A>
-<LI><A NAME="tex2html34"
+<LI><A NAME="tex2html33"
   href="socket-methods.html">4.3 Acessing Socket Methods </A>
 </UL>
 <BR>
-<LI><A NAME="tex2html35"
+<LI><A NAME="tex2html34"
   href="about.html">About this document ...</A>
 </UL>
 <!--End of Table of Child-Links-->
@@ -165,7 +163,7 @@
 </tr></table>
 <b class="navlabel">Next:</b> <a class="sectref" href="contents.html">Contents</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/internals.html b/doc/html/internals.html
index 3fe630b..b0b26a4 100644
--- a/doc/html/internals.html
+++ b/doc/html/internals.html
@@ -59,11 +59,11 @@
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
 
 <UL CLASS="ChildLinks">
-<LI><A NAME="tex2html336"
+<LI><A NAME="tex2html322"
   href="exceptions.html">4.1 Exceptions </A>
-<LI><A NAME="tex2html337"
+<LI><A NAME="tex2html323"
   href="callbacks.html">4.2 Callbacks </A>
-<LI><A NAME="tex2html338"
+<LI><A NAME="tex2html324"
   href="socket-methods.html">4.3 Acessing Socket Methods </A>
 </UL>
 <!--End of Table of Child-Links-->
@@ -96,7 +96,7 @@
 <b class="navlabel">Up:</b> <a class="sectref" HREF="pyOpenSSL.html">Python OpenSSL Manual</A>
 <b class="navlabel">Next:</b> <a class="sectref" href="exceptions.html">4.1 Exceptions</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/intro.html b/doc/html/intro.html
index 7cb1cf1..0575d42 100644
--- a/doc/html/intro.html
+++ b/doc/html/intro.html
@@ -55,7 +55,7 @@
 were also limited, though in different ways.  Unfortunately, Python's standard
 library SSL support has remained weak, although other packages (such as
 M2Crypto<A NAME="tex2html1"
-  HREF="#foot1200"><SUP>1</SUP></A>)
+  HREF="#foot1246"><SUP>1</SUP></A>)
 have made great advances and now equal or exceed pyOpenSSL's functionality.
 
 <P>
@@ -67,7 +67,7 @@
 <P>
 <BR><HR><H4>Footnotes</H4>
 <DL>
-<DT><A NAME="foot1200">...
+<DT><A NAME="foot1246">...
 M2Crypto</A><A
  href="intro.html#tex2html1"><SUP>1</SUP></A></DT>
 <DD>See <a class="url" href="http://chandlerproject.org/Projects/MeTooCrypto">http://chandlerproject.org/Projects/MeTooCrypto</a>
@@ -102,7 +102,7 @@
 <b class="navlabel">Up:</b> <a class="sectref" HREF="pyOpenSSL.html">Python OpenSSL Manual</A>
 <b class="navlabel">Next:</b> <a class="sectref" href="building.html">2 Building and Installing</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/openssl-509ext.html b/doc/html/openssl-509ext.html
index 5334adf..ea1f3c9 100644
--- a/doc/html/openssl-509ext.html
+++ b/doc/html/openssl-509ext.html
@@ -1,8 +1,8 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html>
 <head>
-<title>3.1.9 X509Extension objects </title>
-<META NAME="description" CONTENT="3.1.9 X509Extension objects ">
+<title>3.1.8 X509Extension objects </title>
+<META NAME="description" CONTENT="3.1.8 X509Extension objects ">
 <META NAME="keywords" CONTENT="pyOpenSSL">
 <META NAME="resource-type" CONTENT="document">
 <META NAME="distribution" CONTENT="global">
@@ -36,16 +36,16 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-pkcs12.html">3.1.8 PKCS12 objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-pkcs12.html">3.1.7 PKCS12 objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-netscape-spki.html">3.1.10 NetscapeSPKI objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-netscape-spki.html">3.1.9 NetscapeSPKI objects</A>
 <br><hr>
 </DIV>
 <!--End of Navigation Panel-->
 
-<H3><A NAME="SECTION000419000000000000000">&nbsp;</A>
+<H3><A NAME="SECTION000418000000000000000">&nbsp;</A>
 <BR>
-3.1.9 X509Extension objects 
+3.1.8 X509Extension objects 
 </H3>
 
 <P>
@@ -60,7 +60,25 @@
 <P>
 <dl><dt><b><a name='l2h-100'><tt class='method'>get_short_name</tt></a></b>()
 <dd>
-Return the short type name of the extension object.
+Retrieve the short descriptive name for this extension.
+
+<P>
+The result is a byte string like <code>``basicConstraints''</code>.
+
+<span class='versionnote'>New in version 0.12.</span>
+
+</dl>
+
+<P>
+<dl><dt><b><a name='l2h-101'><tt class='method'>get_data</tt></a></b>()
+<dd>
+Retrieve the data for this extension.
+
+<P>
+The result is the ASN.1 encoded form of the extension data as a byte string.
+
+<span class='versionnote'>New in version 0.12.</span>
+
 </dl>
 
 <P>
@@ -89,11 +107,11 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-pkcs12.html">3.1.8 PKCS12 objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-pkcs12.html">3.1.7 PKCS12 objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-netscape-spki.html">3.1.10 NetscapeSPKI objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-netscape-spki.html">3.1.9 NetscapeSPKI objects</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/openssl-connection.html b/doc/html/openssl-connection.html
index 36441af..c4f7d88 100644
--- a/doc/html/openssl-connection.html
+++ b/doc/html/openssl-connection.html
@@ -51,7 +51,7 @@
 Connection objects have the following methods:
 
 <P>
-<dl><dt><b><a name='l2h-179'><tt class='method'>accept</tt></a></b>()
+<dl><dt><b><a name='l2h-188'><tt class='method'>accept</tt></a></b>()
 <dd>
 Call the <tt class="method">accept</tt> 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 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-180'><tt class='method'>bind</tt></a></b>(<var>address</var>)
+<dl><dt><b><a name='l2h-189'><tt class='method'>bind</tt></a></b>(<var>address</var>)
 <dd>
 Call the <tt class="method">bind</tt> method of the underlying socket.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-181'><tt class='method'>close</tt></a></b>()
+<dl><dt><b><a name='l2h-190'><tt class='method'>close</tt></a></b>()
 <dd>
 Call the <tt class="method">close</tt> method of the underlying socket. Note: If you want
 correct SSL closure, you need to call the <tt class="method">shutdown</tt> method first.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-182'><tt class='method'>connect</tt></a></b>(<var>address</var>)
+<dl><dt><b><a name='l2h-191'><tt class='method'>connect</tt></a></b>(<var>address</var>)
 <dd>
 Call the <tt class="method">connect</tt> 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 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-183'><tt class='method'>connect_ex</tt></a></b>(<var>address</var>)
+<dl><dt><b><a name='l2h-192'><tt class='method'>connect_ex</tt></a></b>(<var>address</var>)
 <dd>
 Call the <tt class="method">connect_ex</tt> 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 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-184'><tt class='method'>do_handshake</tt></a></b>()
+<dl><dt><b><a name='l2h-193'><tt class='method'>do_handshake</tt></a></b>()
 <dd>
 Perform an SSL handshake (usually called after <tt class="method">renegotiate</tt> or one of
 <tt class="method">set_accept_state</tt> or <tt class="method">set_accept_state</tt>). This can raise the
@@ -99,25 +99,25 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-185'><tt class='method'>fileno</tt></a></b>()
+<dl><dt><b><a name='l2h-194'><tt class='method'>fileno</tt></a></b>()
 <dd>
 Retrieve the file descriptor number for the underlying socket.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-186'><tt class='method'>listen</tt></a></b>(<var>backlog</var>)
+<dl><dt><b><a name='l2h-195'><tt class='method'>listen</tt></a></b>(<var>backlog</var>)
 <dd>
 Call the <tt class="method">listen</tt> method of the underlying socket.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-187'><tt class='method'>get_app_data</tt></a></b>()
+<dl><dt><b><a name='l2h-196'><tt class='method'>get_app_data</tt></a></b>()
 <dd>
 Retrieve application data as set by <tt class="method">set_app_data</tt>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-188'><tt class='method'>get_cipher_list</tt></a></b>()
+<dl><dt><b><a name='l2h-197'><tt class='method'>get_cipher_list</tt></a></b>()
 <dd>
 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 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-189'><tt class='method'>get_client_ca_list</tt></a></b>()
+<dl><dt><b><a name='l2h-198'><tt class='method'>get_client_ca_list</tt></a></b>()
 <dd>
 Retrieve the list of preferred client certificate issuers sent by the server
 as <tt class="class">OpenSSL.crypto.X509Name</tt> objects.
@@ -146,44 +146,56 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-190'><tt class='method'>get_context</tt></a></b>()
+<dl><dt><b><a name='l2h-199'><tt class='method'>get_context</tt></a></b>()
 <dd>
 Retrieve the Context object associated with this Connection.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-191'><tt class='method'>get_peer_certificate</tt></a></b>()
+<dl><dt><b><a name='l2h-200'><tt class='method'>set_context</tt></a></b>(<var>context</var>)
+<dd>
+Specify a replacement Context object for this Connection.
+</dl>
+
+<P>
+<dl><dt><b><a name='l2h-201'><tt class='method'>get_peer_certificate</tt></a></b>()
 <dd>
 Retrieve the other side's certificate (if any)
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-192'><tt class='method'>getpeername</tt></a></b>()
+<dl><dt><b><a name='l2h-202'><tt class='method'>get_peer_cert_chain</tt></a></b>()
+<dd>
+Retrieve the tuple of the other side's certificate chain (if any)
+</dl>
+
+<P>
+<dl><dt><b><a name='l2h-203'><tt class='method'>getpeername</tt></a></b>()
 <dd>
 Call the <tt class="method">getpeername</tt> method of the underlying socket.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-193'><tt class='method'>getsockname</tt></a></b>()
+<dl><dt><b><a name='l2h-204'><tt class='method'>getsockname</tt></a></b>()
 <dd>
 Call the <tt class="method">getsockname</tt> method of the underlying socket.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-194'><tt class='method'>getsockopt</tt></a></b>(<var>level, optname</var><big>[</big><var>, buflen</var><big>]</big>)
+<dl><dt><b><a name='l2h-205'><tt class='method'>getsockopt</tt></a></b>(<var>level, optname</var><big>[</big><var>, buflen</var><big>]</big>)
 <dd>
 Call the <tt class="method">getsockopt</tt> method of the underlying socket.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-195'><tt class='method'>pending</tt></a></b>()
+<dl><dt><b><a name='l2h-206'><tt class='method'>pending</tt></a></b>()
 <dd>
 Retrieve the number of bytes that can be safely read from the SSL buffer
 (<i>not</i> the underlying transport buffer).
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-196'><tt class='method'>recv</tt></a></b>(<var>bufsize</var>)
+<dl><dt><b><a name='l2h-207'><tt class='method'>recv</tt></a></b>(<var>bufsize</var>)
 <dd>
 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 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-197'><tt class='method'>bio_write</tt></a></b>(<var>bytes</var>)
+<dl><dt><b><a name='l2h-208'><tt class='method'>bio_write</tt></a></b>(<var>bytes</var>)
 <dd>
 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 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-198'><tt class='method'>renegotiate</tt></a></b>()
+<dl><dt><b><a name='l2h-209'><tt class='method'>renegotiate</tt></a></b>()
 <dd>
 Renegotiate the SSL session. Call this if you wish to change cipher suites or
 anything like that.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-199'><tt class='method'>send</tt></a></b>(<var>string</var>)
+<dl><dt><b><a name='l2h-210'><tt class='method'>send</tt></a></b>(<var>string</var>)
 <dd>
 Send the <var>string</var> data to the Connection.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-200'><tt class='method'>bio_read</tt></a></b>(<var>bufsize</var>)
+<dl><dt><b><a name='l2h-211'><tt class='method'>bio_read</tt></a></b>(<var>bufsize</var>)
 <dd>
 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 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-201'><tt class='method'>sendall</tt></a></b>(<var>string</var>)
+<dl><dt><b><a name='l2h-212'><tt class='method'>sendall</tt></a></b>(<var>string</var>)
 <dd>
 Send all of the <var>string</var> data to the Connection. This calls <tt class="method">send</tt>
 repeatedly until all data is sent. If an error occurs, it's impossible to tell
@@ -229,40 +241,40 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-202'><tt class='method'>set_accept_state</tt></a></b>()
+<dl><dt><b><a name='l2h-213'><tt class='method'>set_accept_state</tt></a></b>()
 <dd>
 Set the connection to work in server mode. The handshake will be handled
 automatically by read/write.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-203'><tt class='method'>set_app_data</tt></a></b>(<var>data</var>)
+<dl><dt><b><a name='l2h-214'><tt class='method'>set_app_data</tt></a></b>(<var>data</var>)
 <dd>
 Associate <var>data</var> with this Connection object. <var>data</var> can be retrieved
 later using the <tt class="method">get_app_data</tt> method.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-204'><tt class='method'>set_connect_state</tt></a></b>()
+<dl><dt><b><a name='l2h-215'><tt class='method'>set_connect_state</tt></a></b>()
 <dd>
 Set the connection to work in client mode. The handshake will be handled
 automatically by read/write.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-205'><tt class='method'>setblocking</tt></a></b>(<var>flag</var>)
+<dl><dt><b><a name='l2h-216'><tt class='method'>setblocking</tt></a></b>(<var>flag</var>)
 <dd>
 Call the <tt class="method">setblocking</tt> method of the underlying socket.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-206'><tt class='method'>setsockopt</tt></a></b>(<var>level, optname, value</var>)
+<dl><dt><b><a name='l2h-217'><tt class='method'>setsockopt</tt></a></b>(<var>level, optname, value</var>)
 <dd>
 Call the <tt class="method">setsockopt</tt> method of the underlying socket.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-207'><tt class='method'>shutdown</tt></a></b>()
+<dl><dt><b><a name='l2h-218'><tt class='method'>shutdown</tt></a></b>()
 <dd>
 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 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-208'><tt class='method'>get_shutdown</tt></a></b>()
+<dl><dt><b><a name='l2h-219'><tt class='method'>get_shutdown</tt></a></b>()
 <dd>
 Get the shutdown state of the Connection.  Returns a bitvector of either or
 both of <var>SENT_SHUTDOWN</var> and <var>RECEIVED_SHUTDOWN</var>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-209'><tt class='method'>set_shutdown</tt></a></b>(<var>state</var>)
+<dl><dt><b><a name='l2h-220'><tt class='method'>set_shutdown</tt></a></b>(<var>state</var>)
 <dd>
 Set the shutdown state of the Connection.  <var>state</var> is a bitvector of
 either or both of <var>SENT_SHUTDOWN</var> and <var>RECEIVED_SHUTDOWN</var>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-210'><tt class='method'>sock_shutdown</tt></a></b>(<var>how</var>)
+<dl><dt><b><a name='l2h-221'><tt class='method'>sock_shutdown</tt></a></b>(<var>how</var>)
 <dd>
 Call the <tt class="method">shutdown</tt> method of the underlying socket.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-211'><tt class='method'>bio_shutdown</tt></a></b>()
+<dl><dt><b><a name='l2h-222'><tt class='method'>bio_shutdown</tt></a></b>()
 <dd>
 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,44 +311,62 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-212'><tt class='method'>state_string</tt></a></b>()
+<dl><dt><b><a name='l2h-223'><tt class='method'>state_string</tt></a></b>()
 <dd>
 Retrieve a verbose string detailing the state of the Connection.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-213'><tt class='method'>client_random</tt></a></b>()
+<dl><dt><b><a name='l2h-224'><tt class='method'>client_random</tt></a></b>()
 <dd>
 Retrieve the random value used with the client hello message.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-214'><tt class='method'>server_random</tt></a></b>()
+<dl><dt><b><a name='l2h-225'><tt class='method'>server_random</tt></a></b>()
 <dd>
 Retrieve the random value used with the server hello message.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-215'><tt class='method'>master_key</tt></a></b>()
+<dl><dt><b><a name='l2h-226'><tt class='method'>master_key</tt></a></b>()
 <dd>
 Retrieve the value of the master key for this session.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-216'><tt class='method'>want_read</tt></a></b>()
+<dl><dt><b><a name='l2h-227'><tt class='method'>want_read</tt></a></b>()
 <dd>
 Checks if more data has to be read from the transport layer to complete an
 operation.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-217'><tt class='method'>want_write</tt></a></b>()
+<dl><dt><b><a name='l2h-228'><tt class='method'>want_write</tt></a></b>()
 <dd>
 Checks if there is data to write to the transport layer to complete an
 operation.
 </dl>
 
 <P>
+<dl><dt><b><a name='l2h-229'><tt class='method'>set_tlsext_host_name</tt></a></b>(<var>name</var>)
+<dd>
+Specify the byte string to send as the server name in the client hello message.
+
+<span class='versionnote'>New in version 0.13.</span>
+
+</dl>
+
+<P>
+<dl><dt><b><a name='l2h-230'><tt class='method'>get_servername</tt></a></b>()
+<dd>
+Get the value of the server name received in the client hello message.
+
+<span class='versionnote'>New in version 0.13.</span>
+
+</dl>
+
+<P>
 
 <DIV CLASS="navigation">
 <p><hr>
@@ -366,7 +396,7 @@
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-ssl.html">3.3 SSL  </A>
 <b class="navlabel">Next:</b> <a class="sectref" href="internals.html">4 Internals</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/openssl-context.html b/doc/html/openssl-context.html
index c42e56f..9e37cae 100644
--- a/doc/html/openssl-context.html
+++ b/doc/html/openssl-context.html
@@ -52,7 +52,7 @@
 Context objects have the following methods:
 
 <P>
-<dl><dt><b><a name='l2h-152'><tt class='method'>check_privatekey</tt></a></b>()
+<dl><dt><b><a name='l2h-160'><tt class='method'>check_privatekey</tt></a></b>()
 <dd>
 Check if the private key (loaded with <tt class="method">use_privatekey<big>[</big>_file<big>]</big></tt>)
 matches the certificate (loaded with <tt class="method">use_certificate<big>[</big>_file<big>]</big></tt>).
@@ -60,13 +60,13 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-153'><tt class='method'>get_app_data</tt></a></b>()
+<dl><dt><b><a name='l2h-161'><tt class='method'>get_app_data</tt></a></b>()
 <dd>
 Retrieve application data as set by <tt class="method">set_app_data</tt>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-154'><tt class='method'>get_cert_store</tt></a></b>()
+<dl><dt><b><a name='l2h-162'><tt class='method'>get_cert_store</tt></a></b>()
 <dd>
 Retrieve the certificate store (a X509Store object) that the context uses.
 This can be used to add "trusted" certificates without using the.
@@ -74,34 +74,34 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-155'><tt class='method'>get_timeout</tt></a></b>()
+<dl><dt><b><a name='l2h-163'><tt class='method'>get_timeout</tt></a></b>()
 <dd>
 Retrieve session timeout, as set by <tt class="method">set_timeout</tt>. The default is 300
 seconds.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-156'><tt class='method'>get_verify_depth</tt></a></b>()
+<dl><dt><b><a name='l2h-164'><tt class='method'>get_verify_depth</tt></a></b>()
 <dd>
 Retrieve the Context object's verify depth, as set by
 <tt class="method">set_verify_depth</tt>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-157'><tt class='method'>get_verify_mode</tt></a></b>()
+<dl><dt><b><a name='l2h-165'><tt class='method'>get_verify_mode</tt></a></b>()
 <dd>
 Retrieve the Context object's verify mode, as set by <tt class="method">set_verify</tt>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-158'><tt class='method'>load_client_ca</tt></a></b>(<var>pemfile</var>)
+<dl><dt><b><a name='l2h-166'><tt class='method'>load_client_ca</tt></a></b>(<var>pemfile</var>)
 <dd>
 Read a file with PEM-formatted certificates that will be sent to the client
 when requesting a client certificate.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-159'><tt class='method'>set_client_ca_list</tt></a></b>(<var>certificate_authorities</var>)
+<dl><dt><b><a name='l2h-167'><tt class='method'>set_client_ca_list</tt></a></b>(<var>certificate_authorities</var>)
 <dd>
 Replace the current list of preferred certificate signers that would be
 sent to the client when requesting a client certificate with the
@@ -114,7 +114,7 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-160'><tt class='method'>add_client_ca</tt></a></b>(<var>certificate_authority</var>)
+<dl><dt><b><a name='l2h-168'><tt class='method'>add_client_ca</tt></a></b>(<var>certificate_authority</var>)
 <dd>
 Extract a <tt class="class">OpenSSL.crypto.X509Name</tt> from the <var>certificate_authority</var>
 <tt class="class">OpenSSL.crypto.X509</tt> certificate and add it to the list of preferred
@@ -127,7 +127,7 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-161'><tt class='method'>load_verify_locations</tt></a></b>(<var>pemfile, capath</var>)
+<dl><dt><b><a name='l2h-169'><tt class='method'>load_verify_locations</tt></a></b>(<var>pemfile, capath</var>)
 <dd>
 Specify where CA certificates for verification purposes are located. These
 are trusted certificates. Note that the certificates have to be in PEM
@@ -137,34 +137,34 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-162'><tt class='method'>set_default_verify_paths</tt></a></b>()
+<dl><dt><b><a name='l2h-170'><tt class='method'>set_default_verify_paths</tt></a></b>()
 <dd>
 Specify that the platform provided CA certificates are to be used for
 verification purposes.  This method may not work properly on OS X.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-163'><tt class='method'>load_tmp_dh</tt></a></b>(<var>dhfile</var>)
+<dl><dt><b><a name='l2h-171'><tt class='method'>load_tmp_dh</tt></a></b>(<var>dhfile</var>)
 <dd>
 Load parameters for Ephemeral Diffie-Hellman from <var>dhfile</var>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-164'><tt class='method'>set_app_data</tt></a></b>(<var>data</var>)
+<dl><dt><b><a name='l2h-172'><tt class='method'>set_app_data</tt></a></b>(<var>data</var>)
 <dd>
 Associate <var>data</var> with this Context object. <var>data</var> can be retrieved
 later using the <tt class="method">get_app_data</tt> method.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-165'><tt class='method'>set_cipher_list</tt></a></b>(<var>ciphers</var>)
+<dl><dt><b><a name='l2h-173'><tt class='method'>set_cipher_list</tt></a></b>(<var>ciphers</var>)
 <dd>
 Set the list of ciphers to be used in this context. See the OpenSSL manual for
 more information (e.g. ciphers(1))
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-166'><tt class='method'>set_info_callback</tt></a></b>(<var>callback</var>)
+<dl><dt><b><a name='l2h-174'><tt class='method'>set_info_callback</tt></a></b>(<var>callback</var>)
 <dd>
 Set the information callback to <var>callback</var>. This function will be called
 from time to time during SSL handshakes.
@@ -175,14 +175,14 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-167'><tt class='method'>set_options</tt></a></b>(<var>options</var>)
+<dl><dt><b><a name='l2h-175'><tt class='method'>set_options</tt></a></b>(<var>options</var>)
 <dd>
 Add SSL options. Options you have set before are not cleared!
 This method should be used with the <tt class="constant">OP_*</tt> constants.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-168'><tt class='method'>set_passwd_cb</tt></a></b>(<var>callback</var><big>[</big><var>, userdata</var><big>]</big>)
+<dl><dt><b><a name='l2h-176'><tt class='method'>set_passwd_cb</tt></a></b>(<var>callback</var><big>[</big><var>, userdata</var><big>]</big>)
 <dd>
 Set the passphrase callback to <var>callback</var>. This function will be called
 when a private key with a passphrase is loaded. <var>callback</var> must accept
@@ -196,7 +196,7 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-169'><tt class='method'>set_session_id</tt></a></b>(<var>name</var>)
+<dl><dt><b><a name='l2h-177'><tt class='method'>set_session_id</tt></a></b>(<var>name</var>)
 <dd>
 Set the context <var>name</var> within which a session can be reused for this
 Context object. This is needed when doing session resumption, because there is
@@ -205,7 +205,7 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-170'><tt class='method'>set_timeout</tt></a></b>(<var>timeout</var>)
+<dl><dt><b><a name='l2h-178'><tt class='method'>set_timeout</tt></a></b>(<var>timeout</var>)
 <dd>
 Set the timeout for newly created sessions for this Context object to
 <var>timeout</var>. <var>timeout</var> must be given in (whole) seconds. The default
@@ -214,7 +214,7 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-171'><tt class='method'>set_verify</tt></a></b>(<var>mode, callback</var>)
+<dl><dt><b><a name='l2h-179'><tt class='method'>set_verify</tt></a></b>(<var>mode, callback</var>)
 <dd>
 Set the verification flags for this Context object to <var>mode</var> and specify
 that <var>callback</var> should be used for verification callbacks. <var>mode</var>
@@ -229,39 +229,39 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-172'><tt class='method'>set_verify_depth</tt></a></b>(<var>depth</var>)
+<dl><dt><b><a name='l2h-180'><tt class='method'>set_verify_depth</tt></a></b>(<var>depth</var>)
 <dd>
 Set the maximum depth for the certificate chain verification that shall be
 allowed for this Context object.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-173'><tt class='method'>use_certificate</tt></a></b>(<var>cert</var>)
+<dl><dt><b><a name='l2h-181'><tt class='method'>use_certificate</tt></a></b>(<var>cert</var>)
 <dd>
 Use the certificate <var>cert</var> which has to be a X509 object.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-174'><tt class='method'>add_extra_chain_cert</tt></a></b>(<var>cert</var>)
+<dl><dt><b><a name='l2h-182'><tt class='method'>add_extra_chain_cert</tt></a></b>(<var>cert</var>)
 <dd>
 Adds the certificate <var>cert</var>, which has to be a X509 object, to the
 certificate chain presented together with the certificate.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-175'><tt class='method'>use_certificate_chain_file</tt></a></b>(<var>file</var>)
+<dl><dt><b><a name='l2h-183'><tt class='method'>use_certificate_chain_file</tt></a></b>(<var>file</var>)
 <dd>
 Load a certificate chain from <var>file</var> which must be PEM encoded.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-176'><tt class='method'>use_privatekey</tt></a></b>(<var>pkey</var>)
+<dl><dt><b><a name='l2h-184'><tt class='method'>use_privatekey</tt></a></b>(<var>pkey</var>)
 <dd>
 Use the private key <var>pkey</var> which has to be a PKey object.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-177'><tt class='method'>use_certificate_file</tt></a></b>(<var>file</var><big>[</big><var>, format</var><big>]</big>)
+<dl><dt><b><a name='l2h-185'><tt class='method'>use_certificate_file</tt></a></b>(<var>file</var><big>[</big><var>, format</var><big>]</big>)
 <dd>
 Load the first certificate found in <var>file</var>. The certificate must be in the
 format specified by <var>format</var>, which is either <tt class="constant">FILETYPE_PEM</tt> or
@@ -269,7 +269,7 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-178'><tt class='method'>use_privatekey_file</tt></a></b>(<var>file</var><big>[</big><var>, format</var><big>]</big>)
+<dl><dt><b><a name='l2h-186'><tt class='method'>use_privatekey_file</tt></a></b>(<var>file</var><big>[</big><var>, format</var><big>]</big>)
 <dd>
 Load the first private key found in <var>file</var>. The private key must be in the
 format specified by <var>format</var>, which is either <tt class="constant">FILETYPE_PEM</tt> or
@@ -277,6 +277,17 @@
 </dl>
 
 <P>
+<dl><dt><b><a name='l2h-187'><tt class='method'>set_tlsext_servername_callback</tt></a></b>(<var>callback</var>)
+<dd>
+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 <code>Connection</code> instance.
+
+<span class='versionnote'>New in version 0.13.</span>
+
+</dl>
+
+<P>
 
 <DIV CLASS="navigation">
 <p><hr>
@@ -306,7 +317,7 @@
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-ssl.html">3.3 SSL  </A>
 <b class="navlabel">Next:</b> <a class="sectref" href="openssl-connection.html">3.3.2 Connection objects</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/openssl-crypto.html b/doc/html/openssl-crypto.html
index 7fc909f..36f76f0 100644
--- a/doc/html/openssl-crypto.html
+++ b/doc/html/openssl-crypto.html
@@ -10,7 +10,7 @@
 <LINK REL="next" href="openssl-rand.html">
 <LINK REL="previous" href="openssl.html">
 <LINK REL="up" href="openssl.html">
-<LINK REL="next" href="openssl-x509ext.html">
+<LINK REL="next" href="openssl-x509.html">
 </head>
 <body>
 <DIV CLASS="navigation">
@@ -22,7 +22,7 @@
 <td><A href="openssl.html"><img src="up.gif"
   border="0" height="32"
   alt="Up One Level" width="32"></A></td>
-<td><A href="openssl-x509ext.html"><img src="next.gif"
+<td><A href="openssl-x509.html"><img src="next.gif"
   border="0" height="32"
   alt="Next Page" width="32"></A></td>
 <td align="center" width="100%">Python OpenSSL Manual</td>
@@ -38,7 +38,7 @@
 </tr></table>
 <b class="navlabel">Previous:</b> <a class="sectref" href="openssl.html">3 OpenSSL  </A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl.html">3 OpenSSL  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-x509ext.html">3.1.1 X509Extension objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-x509.html">3.1.1 X509 objects</A>
 <br><hr>
 </DIV>
 <!--End of Navigation Panel-->
@@ -298,30 +298,28 @@
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
 
 <UL CLASS="ChildLinks">
+<LI><A NAME="tex2html139"
+  href="openssl-x509.html">3.1.1 X509 objects </A>
+<LI><A NAME="tex2html140"
+  href="openssl-x509name.html">3.1.2 X509Name objects </A>
 <LI><A NAME="tex2html141"
-  href="openssl-x509ext.html">3.1.1 X509Extension objects </A>
+  href="openssl-x509req.html">3.1.3 X509Req objects </A>
 <LI><A NAME="tex2html142"
-  href="openssl-x509.html">3.1.2 X509 objects </A>
+  href="openssl-x509store.html">3.1.4 X509Store objects </A>
 <LI><A NAME="tex2html143"
-  href="openssl-x509name.html">3.1.3 X509Name objects </A>
+  href="openssl-pkey.html">3.1.5 PKey objects </A>
 <LI><A NAME="tex2html144"
-  href="openssl-x509req.html">3.1.4 X509Req objects </A>
+  href="openssl-pkcs7.html">3.1.6 PKCS7 objects </A>
 <LI><A NAME="tex2html145"
-  href="openssl-x509store.html">3.1.5 X509Store objects </A>
+  href="openssl-pkcs12.html">3.1.7 PKCS12 objects </A>
 <LI><A NAME="tex2html146"
-  href="openssl-pkey.html">3.1.6 PKey objects </A>
+  href="openssl-509ext.html">3.1.8 X509Extension objects </A>
 <LI><A NAME="tex2html147"
-  href="openssl-pkcs7.html">3.1.7 PKCS7 objects </A>
+  href="openssl-netscape-spki.html">3.1.9 NetscapeSPKI objects </A>
 <LI><A NAME="tex2html148"
-  href="openssl-pkcs12.html">3.1.8 PKCS12 objects </A>
+  href="crl.html">3.1.10 CRL objects </A>
 <LI><A NAME="tex2html149"
-  href="openssl-509ext.html">3.1.9 X509Extension objects </A>
-<LI><A NAME="tex2html150"
-  href="openssl-netscape-spki.html">3.1.10 NetscapeSPKI objects </A>
-<LI><A NAME="tex2html151"
-  href="crl.html">3.1.11 CRL objects </A>
-<LI><A NAME="tex2html152"
-  href="revoked.html">3.1.12 Revoked objects </A>
+  href="revoked.html">3.1.11 Revoked objects </A>
 </UL>
 <!--End of Table of Child-Links-->
 
@@ -335,7 +333,7 @@
 <td><A href="openssl.html"><img src="up.gif"
   border="0" height="32"
   alt="Up One Level" width="32"></A></td>
-<td><A href="openssl-x509ext.html"><img src="next.gif"
+<td><A href="openssl-x509.html"><img src="next.gif"
   border="0" height="32"
   alt="Next Page" width="32"></A></td>
 <td align="center" width="100%">Python OpenSSL Manual</td>
@@ -351,9 +349,9 @@
 </tr></table>
 <b class="navlabel">Previous:</b> <a class="sectref" href="openssl.html">3 OpenSSL  </A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl.html">3 OpenSSL  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-x509ext.html">3.1.1 X509Extension objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-x509.html">3.1.1 X509 objects</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/openssl-netscape-spki.html b/doc/html/openssl-netscape-spki.html
index d4cfcc0..f9abd3b 100644
--- a/doc/html/openssl-netscape-spki.html
+++ b/doc/html/openssl-netscape-spki.html
@@ -1,8 +1,8 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html>
 <head>
-<title>3.1.10 NetscapeSPKI objects </title>
-<META NAME="description" CONTENT="3.1.10 NetscapeSPKI objects ">
+<title>3.1.9 NetscapeSPKI objects </title>
+<META NAME="description" CONTENT="3.1.9 NetscapeSPKI objects ">
 <META NAME="keywords" CONTENT="pyOpenSSL">
 <META NAME="resource-type" CONTENT="document">
 <META NAME="distribution" CONTENT="global">
@@ -36,41 +36,41 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-509ext.html">3.1.9 X509Extension objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-509ext.html">3.1.8 X509Extension objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="crl.html">3.1.11 CRL objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="crl.html">3.1.10 CRL objects</A>
 <br><hr>
 </DIV>
 <!--End of Navigation Panel-->
 
-<H3><A NAME="SECTION0004110000000000000000">&nbsp;</A>
+<H3><A NAME="SECTION000419000000000000000">&nbsp;</A>
 <BR>
-3.1.10 NetscapeSPKI objects 
+3.1.9 NetscapeSPKI objects 
 </H3>
 
 <P>
 NetscapeSPKI objects have the following methods:
 
 <P>
-<dl><dt><b><a name='l2h-101'><tt class='method'>b64_encode</tt></a></b>()
+<dl><dt><b><a name='l2h-102'><tt class='method'>b64_encode</tt></a></b>()
 <dd>
 Return a base64-encoded string representation of the object.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-102'><tt class='method'>get_pubkey</tt></a></b>()
+<dl><dt><b><a name='l2h-103'><tt class='method'>get_pubkey</tt></a></b>()
 <dd>
 Return the public key of object.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-103'><tt class='method'>set_pubkey</tt></a></b>(<var>key</var>)
+<dl><dt><b><a name='l2h-104'><tt class='method'>set_pubkey</tt></a></b>(<var>key</var>)
 <dd>
 Set the public key of the object to <var>key</var>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-104'><tt class='method'>sign</tt></a></b>(<var>key, digest_name</var>)
+<dl><dt><b><a name='l2h-105'><tt class='method'>sign</tt></a></b>(<var>key, digest_name</var>)
 <dd>
 Sign the NetscapeSPKI object using the given <var>key</var> and
 <var>digest_name</var>.  <var>digest_name</var> must be a string describing a digest
@@ -79,7 +79,7 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-105'><tt class='method'>verify</tt></a></b>(<var>key</var>)
+<dl><dt><b><a name='l2h-106'><tt class='method'>verify</tt></a></b>(<var>key</var>)
 <dd>
 Verify the NetscapeSPKI object using the given <var>key</var>.
 </dl>
@@ -110,11 +110,11 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-509ext.html">3.1.9 X509Extension objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-509ext.html">3.1.8 X509Extension objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="crl.html">3.1.11 CRL objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="crl.html">3.1.10 CRL objects</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/openssl-pkcs12.html b/doc/html/openssl-pkcs12.html
index 60bb008..f887ba4 100644
--- a/doc/html/openssl-pkcs12.html
+++ b/doc/html/openssl-pkcs12.html
@@ -1,8 +1,8 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html>
 <head>
-<title>3.1.8 PKCS12 objects </title>
-<META NAME="description" CONTENT="3.1.8 PKCS12 objects ">
+<title>3.1.7 PKCS12 objects </title>
+<META NAME="description" CONTENT="3.1.7 PKCS12 objects ">
 <META NAME="keywords" CONTENT="pyOpenSSL">
 <META NAME="resource-type" CONTENT="document">
 <META NAME="distribution" CONTENT="global">
@@ -36,16 +36,16 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-pkcs7.html">3.1.7 PKCS7 objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-pkcs7.html">3.1.6 PKCS7 objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-509ext.html">3.1.9 X509Extension objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-509ext.html">3.1.8 X509Extension objects</A>
 <br><hr>
 </DIV>
 <!--End of Navigation Panel-->
 
-<H3><A NAME="SECTION000418000000000000000">&nbsp;</A>
+<H3><A NAME="SECTION000417000000000000000">&nbsp;</A>
 <BR>
-3.1.8 PKCS12 objects 
+3.1.7 PKCS12 objects 
 </H3>
 
 <P>
@@ -141,11 +141,11 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-pkcs7.html">3.1.7 PKCS7 objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-pkcs7.html">3.1.6 PKCS7 objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-509ext.html">3.1.9 X509Extension objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-509ext.html">3.1.8 X509Extension objects</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/openssl-pkcs7.html b/doc/html/openssl-pkcs7.html
index cdf8644..a0a2b9d 100644
--- a/doc/html/openssl-pkcs7.html
+++ b/doc/html/openssl-pkcs7.html
@@ -1,8 +1,8 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html>
 <head>
-<title>3.1.7 PKCS7 objects </title>
-<META NAME="description" CONTENT="3.1.7 PKCS7 objects ">
+<title>3.1.6 PKCS7 objects </title>
+<META NAME="description" CONTENT="3.1.6 PKCS7 objects ">
 <META NAME="keywords" CONTENT="pyOpenSSL">
 <META NAME="resource-type" CONTENT="document">
 <META NAME="distribution" CONTENT="global">
@@ -36,16 +36,16 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-pkey.html">3.1.6 PKey objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-pkey.html">3.1.5 PKey objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-pkcs12.html">3.1.8 PKCS12 objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-pkcs12.html">3.1.7 PKCS12 objects</A>
 <br><hr>
 </DIV>
 <!--End of Navigation Panel-->
 
-<H3><A NAME="SECTION000417000000000000000">&nbsp;</A>
+<H3><A NAME="SECTION000416000000000000000">&nbsp;</A>
 <BR>
-3.1.7 PKCS7 objects 
+3.1.6 PKCS7 objects 
 </H3>
 
 <P>
@@ -107,11 +107,11 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-pkey.html">3.1.6 PKey objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-pkey.html">3.1.5 PKey objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-pkcs12.html">3.1.8 PKCS12 objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-pkcs12.html">3.1.7 PKCS12 objects</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/openssl-pkey.html b/doc/html/openssl-pkey.html
index f10cd19..5ce9380 100644
--- a/doc/html/openssl-pkey.html
+++ b/doc/html/openssl-pkey.html
@@ -1,8 +1,8 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html>
 <head>
-<title>3.1.6 PKey objects </title>
-<META NAME="description" CONTENT="3.1.6 PKey objects ">
+<title>3.1.5 PKey objects </title>
+<META NAME="description" CONTENT="3.1.5 PKey objects ">
 <META NAME="keywords" CONTENT="pyOpenSSL">
 <META NAME="resource-type" CONTENT="document">
 <META NAME="distribution" CONTENT="global">
@@ -36,41 +36,49 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509store.html">3.1.5 X509Store objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509store.html">3.1.4 X509Store objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-pkcs7.html">3.1.7 PKCS7 objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-pkcs7.html">3.1.6 PKCS7 objects</A>
 <br><hr>
 </DIV>
 <!--End of Navigation Panel-->
 
-<H3><A NAME="SECTION000416000000000000000">&nbsp;</A>
+<H3><A NAME="SECTION000415000000000000000">&nbsp;</A>
 <BR>
-3.1.6 PKey objects 
+3.1.5 PKey objects 
 </H3>
 
 <P>
 The PKey object has the following methods:
 
 <P>
-<dl><dt><b><a name='l2h-82'><tt class='method'>bits</tt></a></b>()
+<dl><dt><b><a name='l2h-81'><tt class='method'>bits</tt></a></b>()
 <dd>
 Return the number of bits of the key.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-83'><tt class='method'>generate_key</tt></a></b>(<var>type, bits</var>)
+<dl><dt><b><a name='l2h-82'><tt class='method'>generate_key</tt></a></b>(<var>type, bits</var>)
 <dd>
 Generate a public/private key pair of the type <var>type</var> (one of
 <tt class="constant">TYPE_RSA</tt> and <tt class="constant">TYPE_DSA</tt>) with the size <var>bits</var>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-84'><tt class='method'>type</tt></a></b>()
+<dl><dt><b><a name='l2h-83'><tt class='method'>type</tt></a></b>()
 <dd>
 Return the type of the key.
 </dl>
 
 <P>
+<dl><dt><b><a name='l2h-84'><tt class='method'>check</tt></a></b>()
+<dd>
+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.
+</dl>
+
+<P>
 
 <DIV CLASS="navigation">
 <p><hr>
@@ -96,11 +104,11 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509store.html">3.1.5 X509Store objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509store.html">3.1.4 X509Store objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-pkcs7.html">3.1.7 PKCS7 objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-pkcs7.html">3.1.6 PKCS7 objects</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/openssl-rand.html b/doc/html/openssl-rand.html
index 46e7189..2ff4982 100644
--- a/doc/html/openssl-rand.html
+++ b/doc/html/openssl-rand.html
@@ -36,7 +36,7 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="revoked.html">3.1.12 Revoked objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="revoked.html">3.1.11 Revoked objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl.html">3 OpenSSL  </A>
 <b class="navlabel">Next:</b> <a class="sectref" href="openssl-ssl.html">3.3 SSL  </A>
 <br><hr>
@@ -56,16 +56,16 @@
 declares the following:
 
 <P>
-<dl><dt><b><a name='l2h-117'><tt class='function'>add</tt></a></b>(<var>string, entropy</var>)
+<dl><dt><b><a name='l2h-118'><tt class='function'>add</tt></a></b>(<var>string, entropy</var>)
 <dd>
 Mix bytes from <var>string</var> into the PRNG state. The <var>entropy</var> argument is
 (the lower bound of) an estimate of how much randomness is contained in
-<var>string</var>, measured in bytes. For more information, see e.g. <a class="rfc" name="rfcref-2324"
+<var>string</var>, measured in bytes. For more information, see e.g. <a class="rfc" name="rfcref-2374"
 href="http://www.ietf.org/rfc/rfc1750.txt">RFC 1750</a>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-118'><tt class='function'>bytes</tt></a></b>(<var>num_bytes</var>)
+<dl><dt><b><a name='l2h-119'><tt class='function'>bytes</tt></a></b>(<var>num_bytes</var>)
 <dd>
 Get some random bytes from the PRNG as a string.
 
@@ -74,7 +74,7 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-119'><tt class='function'>cleanup</tt></a></b>()
+<dl><dt><b><a name='l2h-120'><tt class='function'>cleanup</tt></a></b>()
 <dd>
 Erase the memory used by the PRNG.
 
@@ -83,50 +83,50 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-120'><tt class='function'>egd</tt></a></b>(<var>path</var><big>[</big><var>, bytes</var><big>]</big>)
+<dl><dt><b><a name='l2h-121'><tt class='function'>egd</tt></a></b>(<var>path</var><big>[</big><var>, bytes</var><big>]</big>)
 <dd>
 Query the Entropy Gathering Daemon<A NAME="tex2html2"
-  HREF="#foot1227"><SUP>2</SUP></A> on socket <var>path</var> for <var>bytes</var>
+  HREF="#foot1272"><SUP>2</SUP></A> on socket <var>path</var> for <var>bytes</var>
 bytes of random data and and uses <tt class="function">add</tt> to seed the PRNG. The default
 value of <var>bytes</var> is 255.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-121'><tt class='function'>load_file</tt></a></b>(<var>path</var><big>[</big><var>, bytes</var><big>]</big>)
+<dl><dt><b><a name='l2h-122'><tt class='function'>load_file</tt></a></b>(<var>path</var><big>[</big><var>, bytes</var><big>]</big>)
 <dd>
 Read <var>bytes</var> bytes (or all of it, if <var>bytes</var> is negative) of data from
 the file <var>path</var> to seed the PRNG. The default value of <var>bytes</var> is -1.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-122'><tt class='function'>screen</tt></a></b>()
+<dl><dt><b><a name='l2h-123'><tt class='function'>screen</tt></a></b>()
 <dd>
 Add the current contents of the screen to the PRNG state.
 Availability: Windows.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-123'><tt class='function'>seed</tt></a></b>(<var>string</var>)
+<dl><dt><b><a name='l2h-124'><tt class='function'>seed</tt></a></b>(<var>string</var>)
 <dd>
 This is equivalent to calling <tt class="function">add</tt> with <var>entropy</var> as the length
 of the string.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-124'><tt class='function'>status</tt></a></b>()
+<dl><dt><b><a name='l2h-125'><tt class='function'>status</tt></a></b>()
 <dd>
 Returns true if the PRNG has been seeded with enough data, and false otherwise.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-125'><tt class='function'>write_file</tt></a></b>(<var>path</var>)
+<dl><dt><b><a name='l2h-126'><tt class='function'>write_file</tt></a></b>(<var>path</var>)
 <dd>
 Write a number of random bytes (currently 1024) to the file <var>path</var>. This
 file can then be used with <tt class="function">load_file</tt> to seed the PRNG again.
 </dl>
 
 <P>
-<dl><dt><b>exception <a name='l2h-126'><tt class='exception'>Error</tt></a></b>
+<dl><dt><b>exception <a name='l2h-127'><tt class='exception'>Error</tt></a></b>
 <dd>
 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 @@
 <P>
 <BR><HR><H4>Footnotes</H4>
 <DL>
-<DT><A NAME="foot1227">... Daemon</A><A
+<DT><A NAME="foot1272">... Daemon</A><A
  href="openssl-rand.html#tex2html2"><SUP>2</SUP></A></DT>
 <DD>See
 <a class="url" href="http://www.lothar.com/tech/crypto/">http://www.lothar.com/tech/crypto/</a>
@@ -173,11 +173,11 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="revoked.html">3.1.12 Revoked objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="revoked.html">3.1.11 Revoked objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl.html">3 OpenSSL  </A>
 <b class="navlabel">Next:</b> <a class="sectref" href="openssl-ssl.html">3.3 SSL  </A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/openssl-ssl.html b/doc/html/openssl-ssl.html
index a607e41..bd0c5b7 100644
--- a/doc/html/openssl-ssl.html
+++ b/doc/html/openssl-ssl.html
@@ -55,39 +55,39 @@
 Context, Connection.
 
 <P>
-<dl><dt><b><a name='l2h-128'><tt>SSLv2_METHOD</tt></a></b>
+<dl><dt><b><a name='l2h-129'><tt>SSLv2_METHOD</tt></a></b>
 <dd>
-<dt><b><a name='l2h-142'><tt>SSLv3_METHOD</tt></a></b><dd>
-<dt><b><a name='l2h-143'><tt>SSLv23_METHOD</tt></a></b><dd>
-<dt><b><a name='l2h-144'><tt>TLSv1_METHOD</tt></a></b><dd>
+<dt><b><a name='l2h-146'><tt>SSLv3_METHOD</tt></a></b><dd>
+<dt><b><a name='l2h-147'><tt>SSLv23_METHOD</tt></a></b><dd>
+<dt><b><a name='l2h-148'><tt>TLSv1_METHOD</tt></a></b><dd>
 These constants represent the different SSL methods to use when creating a
 context object.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-129'><tt>VERIFY_NONE</tt></a></b>
+<dl><dt><b><a name='l2h-130'><tt>VERIFY_NONE</tt></a></b>
 <dd>
-<dt><b><a name='l2h-145'><tt>VERIFY_PEER</tt></a></b><dd>
-<dt><b><a name='l2h-146'><tt>VERIFY_FAIL_IF_NO_PEER_CERT</tt></a></b><dd>
+<dt><b><a name='l2h-149'><tt>VERIFY_PEER</tt></a></b><dd>
+<dt><b><a name='l2h-150'><tt>VERIFY_FAIL_IF_NO_PEER_CERT</tt></a></b><dd>
 These constants represent the verification mode used by the Context
 object's <tt class="method">set_verify</tt> method.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-130'><tt>FILETYPE_PEM</tt></a></b>
+<dl><dt><b><a name='l2h-131'><tt>FILETYPE_PEM</tt></a></b>
 <dd>
-<dt><b><a name='l2h-147'><tt>FILETYPE_ASN1</tt></a></b><dd>
+<dt><b><a name='l2h-151'><tt>FILETYPE_ASN1</tt></a></b><dd>
 File type constants used with the <tt class="method">use_certificate_file</tt> and
 <tt class="method">use_privatekey_file</tt> methods of Context objects.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-131'><tt>OP_SINGLE_DH_USE</tt></a></b>
+<dl><dt><b><a name='l2h-132'><tt>OP_SINGLE_DH_USE</tt></a></b>
 <dd>
-<dt><b><a name='l2h-148'><tt>OP_EPHEMERAL_RSA</tt></a></b><dd>
-<dt><b><a name='l2h-149'><tt>OP_NO_SSLv2</tt></a></b><dd>
-<dt><b><a name='l2h-150'><tt>OP_NO_SSLv3</tt></a></b><dd>
-<dt><b><a name='l2h-151'><tt>OP_NO_TLSv1</tt></a></b><dd>
+<dt><b><a name='l2h-152'><tt>OP_EPHEMERAL_RSA</tt></a></b><dd>
+<dt><b><a name='l2h-153'><tt>OP_NO_SSLv2</tt></a></b><dd>
+<dt><b><a name='l2h-154'><tt>OP_NO_SSLv3</tt></a></b><dd>
+<dt><b><a name='l2h-155'><tt>OP_NO_TLSv1</tt></a></b><dd>
 Constants used with <tt class="method">set_options</tt> of Context objects.
 <tt class="constant">OP_SINGLE_DH_USE</tt> means to always create a new key when using ephemeral
 Diffie-Hellman. <tt class="constant">OP_EPHEMERAL_RSA</tt> means to always use ephemeral RSA keys
@@ -98,13 +98,41 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-132'><tt>ContextType</tt></a></b>
+<dl><dt><b><a name='l2h-133'><tt>SSLEAY_VERSION</tt></a></b>
+<dd>
+<dt><b><a name='l2h-156'><tt>SSLEAY_CFLAGS</tt></a></b><dd>
+<dt><b><a name='l2h-157'><tt>SSLEAY_BUILT_ON</tt></a></b><dd>
+<dt><b><a name='l2h-158'><tt>SSLEAY_PLATFORM</tt></a></b><dd>
+<dt><b><a name='l2h-159'><tt>SSLEAY_DIR</tt></a></b><dd>
+Constants used with <tt class="method">SSLeay_version</tt> to specify what OpenSSL version
+information to retrieve.  See the man page for the <tt class="function">SSLeay_version</tt> C
+API for details.
+</dl>
+
+<P>
+<dl><dt><b><a name='l2h-134'><tt>OPENSSL_VERSION_NUMBER</tt></a></b>
+<dd>
+An integer giving the version number of the OpenSSL library used to build this
+version of pyOpenSSL.  See the man page for the <tt class="function">SSLeay_version</tt> C API
+for details.
+</dl>
+
+<P>
+<dl><dt><b><a name='l2h-135'><tt class='function'>SSLeay_version</tt></a></b>(<var>type</var>)
+<dd>
+Retrieve a string describing some aspect of the underlying OpenSSL version.  The
+type passed in should be one of the <tt class="constant">SSLEAY_*</tt> constants defined in
+this module.
+</dl>
+
+<P>
+<dl><dt><b><a name='l2h-136'><tt>ContextType</tt></a></b>
 <dd>
 See <tt class="class">Context</tt>.
 </dl>
 
 <P>
-<dl><dt><b>class <a name='l2h-133'><tt class='class'>Context</tt></a></b>(<var>method</var>)
+<dl><dt><b>class <a name='l2h-137'><tt class='class'>Context</tt></a></b>(<var>method</var>)
 <dd>
 A class representing SSL contexts.  Contexts define the parameters of one or
 more SSL connections.
@@ -115,27 +143,27 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-134'><tt>ConnectionType</tt></a></b>
+<dl><dt><b><a name='l2h-138'><tt>ConnectionType</tt></a></b>
 <dd>
 See <tt class="class">Connection</tt>.
 </dl>
 
 <P>
-<dl><dt><b>class <a name='l2h-135'><tt class='class'>Connection</tt></a></b>(<var>context, socket</var>)
+<dl><dt><b>class <a name='l2h-139'><tt class='class'>Connection</tt></a></b>(<var>context, socket</var>)
 <dd>
 A class representing SSL connections.
 
 <P>
 <var>context</var> should be an instance of <tt class="class">Context</tt> and <var>socket</var>
 should be a socket <A NAME="tex2html4"
-  HREF="#foot1231"><SUP>3</SUP></A> object.  <var>socket</var> may be
+  HREF="#foot1276"><SUP>3</SUP></A> object.  <var>socket</var> may be
 <var>None</var>; in this case, the Connection is created with a memory BIO: see
 the <tt class="method">bio_read</tt>, <tt class="method">bio_write</tt>, and <tt class="method">bio_shutdown</tt>
 methods.
 </dl>
 
 <P>
-<dl><dt><b>exception <a name='l2h-136'><tt class='exception'>Error</tt></a></b>
+<dl><dt><b>exception <a name='l2h-140'><tt class='exception'>Error</tt></a></b>
 <dd>
 This exception is used as a base class for the other SSL-related
 exceptions, but may also be raised directly.
@@ -149,7 +177,7 @@
 </dl>
 
 <P>
-<dl><dt><b>exception <a name='l2h-137'><tt class='exception'>ZeroReturnError</tt></a></b>
+<dl><dt><b>exception <a name='l2h-141'><tt class='exception'>ZeroReturnError</tt></a></b>
 <dd>
 This exception matches the error return code <code>SSL_ERROR_ZERO_RETURN</code>, and
 is raised when the SSL Connection has been closed. In SSL 3.0 and TLS 1.0, this
@@ -163,7 +191,7 @@
 </dl>
 
 <P>
-<dl><dt><b>exception <a name='l2h-138'><tt class='exception'>WantReadError</tt></a></b>
+<dl><dt><b>exception <a name='l2h-142'><tt class='exception'>WantReadError</tt></a></b>
 <dd>
 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 @@
 </dl>
 
 <P>
-<dl><dt><b>exception <a name='l2h-139'><tt class='exception'>WantWriteError</tt></a></b>
+<dl><dt><b>exception <a name='l2h-143'><tt class='exception'>WantWriteError</tt></a></b>
 <dd>
 See <tt class="exception">WantReadError</tt>.  The socket send buffer may be too full to
 write more data.
 </dl>
 
 <P>
-<dl><dt><b>exception <a name='l2h-140'><tt class='exception'>WantX509LookupError</tt></a></b>
+<dl><dt><b>exception <a name='l2h-144'><tt class='exception'>WantX509LookupError</tt></a></b>
 <dd>
 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 @@
 </dl>
 
 <P>
-<dl><dt><b>exception <a name='l2h-141'><tt class='exception'>SysCallError</tt></a></b>
+<dl><dt><b>exception <a name='l2h-145'><tt class='exception'>SysCallError</tt></a></b>
 <dd>
 The <tt class="exception">SysCallError</tt> 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 @@
 <P>
 <BR><HR><H4>Footnotes</H4>
 <DL>
-<DT><A NAME="foot1231">... socket</A><A
+<DT><A NAME="foot1276">... socket</A><A
  href="openssl-ssl.html#tex2html4"><SUP>3</SUP></A></DT>
 <DD>Actually, all that is required is an object
 that <i>behaves</i> like a socket, you could even use files, even though
@@ -221,9 +249,9 @@
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
 
 <UL CLASS="ChildLinks">
-<LI><A NAME="tex2html303"
+<LI><A NAME="tex2html289"
   href="openssl-context.html">3.3.1 Context objects </A>
-<LI><A NAME="tex2html304"
+<LI><A NAME="tex2html290"
   href="openssl-connection.html">3.3.2 Connection objects </A>
 </UL>
 <!--End of Table of Child-Links-->
@@ -256,7 +284,7 @@
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl.html">3 OpenSSL  </A>
 <b class="navlabel">Next:</b> <a class="sectref" href="openssl-context.html">3.3.1 Context objects</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/openssl-x509.html b/doc/html/openssl-x509.html
index ab814a3..a81503a 100644
--- a/doc/html/openssl-x509.html
+++ b/doc/html/openssl-x509.html
@@ -1,14 +1,14 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html>
 <head>
-<title>3.1.2 X509 objects </title>
-<META NAME="description" CONTENT="3.1.2 X509 objects ">
+<title>3.1.1 X509 objects </title>
+<META NAME="description" CONTENT="3.1.1 X509 objects ">
 <META NAME="keywords" CONTENT="pyOpenSSL">
 <META NAME="resource-type" CONTENT="document">
 <META NAME="distribution" CONTENT="global">
 <link rel="STYLESHEET" href="pyOpenSSL.css">
 <LINK REL="next" href="openssl-x509name.html">
-<LINK REL="previous" href="openssl-x509ext.html">
+<LINK REL="previous" href="openssl-crypto.html">
 <LINK REL="up" href="openssl-crypto.html">
 <LINK REL="next" href="openssl-x509name.html">
 </head>
@@ -16,7 +16,7 @@
 <DIV CLASS="navigation">
 <table align="center" width="100%" cellpadding="0" cellspacing="2">
 <tr>
-<td><A href="openssl-x509ext.html"><img src="previous.gif"
+<td><A href="openssl-crypto.html"><img src="previous.gif"
   border="0" height="32"
   alt="Previous Page" width="32"></A></td>
 <td><A href="openssl-crypto.html"><img src="up.gif"
@@ -36,53 +36,60 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509ext.html">3.1.1 X509Extension objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-x509name.html">3.1.3 X509Name objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-x509name.html">3.1.2 X509Name objects</A>
 <br><hr>
 </DIV>
 <!--End of Navigation Panel-->
 
-<H3><A NAME="SECTION000412000000000000000">&nbsp;</A>
+<H3><A NAME="SECTION000411000000000000000">&nbsp;</A>
 <BR>
-3.1.2 X509 objects 
+3.1.1 X509 objects 
 </H3>
 
 <P>
 X509 objects have the following methods:
 
 <P>
-<dl><dt><b><a name='l2h-41'><tt class='method'>get_issuer</tt></a></b>()
+<dl><dt><b><a name='l2h-39'><tt class='method'>get_issuer</tt></a></b>()
 <dd>
 Return an X509Name object representing the issuer of the certificate.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-42'><tt class='method'>get_pubkey</tt></a></b>()
+<dl><dt><b><a name='l2h-40'><tt class='method'>get_pubkey</tt></a></b>()
 <dd>
 Return a PKey object representing the public key of the certificate.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-43'><tt class='method'>get_serial_number</tt></a></b>()
+<dl><dt><b><a name='l2h-41'><tt class='method'>get_serial_number</tt></a></b>()
 <dd>
 Return the certificate serial number.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-44'><tt class='method'>get_subject</tt></a></b>()
+<dl><dt><b><a name='l2h-42'><tt class='method'>get_signature_algorithm</tt></a></b>()
+<dd>
+Return the signature algorithm used in the certificate.  If the algorithm is
+undefined, raise <code>ValueError</code>.
+</dl>
+
+<P>
+<dl><dt><b><a name='l2h-43'><tt class='method'>get_subject</tt></a></b>()
 <dd>
 Return an X509Name object representing the subject of the certificate.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-45'><tt class='method'>get_version</tt></a></b>()
+<dl><dt><b><a name='l2h-44'><tt class='method'>get_version</tt></a></b>()
 <dd>
 Return the certificate version.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-46'><tt class='method'>get_notBefore</tt></a></b>()
+<dl><dt><b><a name='l2h-45'><tt class='method'>get_notBefore</tt></a></b>()
 <dd>
 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 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-47'><tt class='method'>get_notAfter</tt></a></b>()
+<dl><dt><b><a name='l2h-46'><tt class='method'>get_notAfter</tt></a></b>()
 <dd>
 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 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-48'><tt class='method'>set_notBefore</tt></a></b>(<var>when</var>)
+<dl><dt><b><a name='l2h-47'><tt class='method'>set_notBefore</tt></a></b>(<var>when</var>)
 <dd>
 Change the time before which the certificate is not valid.  <var>when</var> is a
 string formatted as an ASN1 GENERALIZEDTIME:
@@ -120,7 +127,7 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-49'><tt class='method'>set_notAfter</tt></a></b>(<var>when</var>)
+<dl><dt><b><a name='l2h-48'><tt class='method'>set_notAfter</tt></a></b>(<var>when</var>)
 <dd>
 Change the time after which the certificate is not valid.  <var>when</var> is a
 string formatted as an ASN1 GENERALIZEDTIME:
@@ -132,69 +139,69 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-50'><tt class='method'>gmtime_adj_notBefore</tt></a></b>(<var>time</var>)
+<dl><dt><b><a name='l2h-49'><tt class='method'>gmtime_adj_notBefore</tt></a></b>(<var>time</var>)
 <dd>
 Adjust the timestamp (in GMT) when the certificate starts being valid.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-51'><tt class='method'>gmtime_adj_notAfter</tt></a></b>(<var>time</var>)
+<dl><dt><b><a name='l2h-50'><tt class='method'>gmtime_adj_notAfter</tt></a></b>(<var>time</var>)
 <dd>
 Adjust the timestamp (in GMT) when the certificate stops being valid.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-52'><tt class='method'>has_expired</tt></a></b>()
+<dl><dt><b><a name='l2h-51'><tt class='method'>has_expired</tt></a></b>()
 <dd>
 Checks the certificate's time stamp against current time. Returns true if the
 certificate has expired and false otherwise.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-53'><tt class='method'>set_issuer</tt></a></b>(<var>issuer</var>)
+<dl><dt><b><a name='l2h-52'><tt class='method'>set_issuer</tt></a></b>(<var>issuer</var>)
 <dd>
 Set the issuer of the certificate to <var>issuer</var>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-54'><tt class='method'>set_pubkey</tt></a></b>(<var>pkey</var>)
+<dl><dt><b><a name='l2h-53'><tt class='method'>set_pubkey</tt></a></b>(<var>pkey</var>)
 <dd>
 Set the public key of the certificate to <var>pkey</var>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-55'><tt class='method'>set_serial_number</tt></a></b>(<var>serialno</var>)
+<dl><dt><b><a name='l2h-54'><tt class='method'>set_serial_number</tt></a></b>(<var>serialno</var>)
 <dd>
 Set the serial number of the certificate to <var>serialno</var>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-56'><tt class='method'>set_subject</tt></a></b>(<var>subject</var>)
+<dl><dt><b><a name='l2h-55'><tt class='method'>set_subject</tt></a></b>(<var>subject</var>)
 <dd>
 Set the subject of the certificate to <var>subject</var>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-57'><tt class='method'>set_version</tt></a></b>(<var>version</var>)
+<dl><dt><b><a name='l2h-56'><tt class='method'>set_version</tt></a></b>(<var>version</var>)
 <dd>
 Set the certificate version to <var>version</var>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-58'><tt class='method'>sign</tt></a></b>(<var>pkey, digest</var>)
+<dl><dt><b><a name='l2h-57'><tt class='method'>sign</tt></a></b>(<var>pkey, digest</var>)
 <dd>
 Sign the certificate, using the key <var>pkey</var> and the message digest algorithm
 identified by the string <var>digest</var>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-59'><tt class='method'>subject_name_hash</tt></a></b>()
+<dl><dt><b><a name='l2h-58'><tt class='method'>subject_name_hash</tt></a></b>()
 <dd>
 Return the hash of the certificate subject.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-60'><tt class='method'>digest</tt></a></b>(<var>digest_name</var>)
+<dl><dt><b><a name='l2h-59'><tt class='method'>digest</tt></a></b>(<var>digest_name</var>)
 <dd>
 Return a digest of the certificate, using the <var>digest_name</var> method.
 <var>digest_name</var> must be a string describing a digest algorithm supported
@@ -203,13 +210,13 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-61'><tt class='method'>add_extensions</tt></a></b>(<var>extensions</var>)
+<dl><dt><b><a name='l2h-60'><tt class='method'>add_extensions</tt></a></b>(<var>extensions</var>)
 <dd>
 Add the extensions in the sequence <var>extensions</var> to the certificate.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-62'><tt class='method'>get_extension_count</tt></a></b>()
+<dl><dt><b><a name='l2h-61'><tt class='method'>get_extension_count</tt></a></b>()
 <dd>
 Return the number of extensions on this certificate.
 
@@ -218,7 +225,7 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-63'><tt class='method'>get_extension</tt></a></b>(<var>index</var>)
+<dl><dt><b><a name='l2h-62'><tt class='method'>get_extension</tt></a></b>(<var>index</var>)
 <dd>
 Retrieve the extension on this certificate at the given index.
 
@@ -237,7 +244,7 @@
 <p><hr>
 <table align="center" width="100%" cellpadding="0" cellspacing="2">
 <tr>
-<td><A href="openssl-x509ext.html"><img src="previous.gif"
+<td><A href="openssl-crypto.html"><img src="previous.gif"
   border="0" height="32"
   alt="Previous Page" width="32"></A></td>
 <td><A href="openssl-crypto.html"><img src="up.gif"
@@ -257,11 +264,11 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509ext.html">3.1.1 X509Extension objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-x509name.html">3.1.3 X509Name objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-x509name.html">3.1.2 X509Name objects</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/openssl-x509name.html b/doc/html/openssl-x509name.html
index e5bbdec..e7e532d 100644
--- a/doc/html/openssl-x509name.html
+++ b/doc/html/openssl-x509name.html
@@ -1,8 +1,8 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html>
 <head>
-<title>3.1.3 X509Name objects </title>
-<META NAME="description" CONTENT="3.1.3 X509Name objects ">
+<title>3.1.2 X509Name objects </title>
+<META NAME="description" CONTENT="3.1.2 X509Name objects ">
 <META NAME="keywords" CONTENT="pyOpenSSL">
 <META NAME="resource-type" CONTENT="document">
 <META NAME="distribution" CONTENT="global">
@@ -36,36 +36,36 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509.html">3.1.2 X509 objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509.html">3.1.1 X509 objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-x509req.html">3.1.4 X509Req objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-x509req.html">3.1.3 X509Req objects</A>
 <br><hr>
 </DIV>
 <!--End of Navigation Panel-->
 
-<H3><A NAME="SECTION000413000000000000000">&nbsp;</A>
+<H3><A NAME="SECTION000412000000000000000">&nbsp;</A>
 <BR>
-3.1.3 X509Name objects 
+3.1.2 X509Name objects 
 </H3>
 
 <P>
 X509Name objects have the following methods:
 
 <P>
-<dl><dt><b><a name='l2h-64'><tt class='method'>hash</tt></a></b>()
+<dl><dt><b><a name='l2h-63'><tt class='method'>hash</tt></a></b>()
 <dd>
 Return an integer giving the first four bytes of the MD5 digest of the DER
 representation of the name.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-65'><tt class='method'>der</tt></a></b>()
+<dl><dt><b><a name='l2h-64'><tt class='method'>der</tt></a></b>()
 <dd>
 Return a string giving the DER representation of the name.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-66'><tt class='method'>get_components</tt></a></b>()
+<dl><dt><b><a name='l2h-65'><tt class='method'>get_components</tt></a></b>()
 <dd>
 Return a list of two-tuples of strings giving the components of the name.
 </dl>
@@ -74,49 +74,49 @@
 X509Name objects have the following members:
 
 <P>
-<dl><dt><b><a name='l2h-67'><tt class='member'>countryName</tt></a></b>
+<dl><dt><b><a name='l2h-66'><tt class='member'>countryName</tt></a></b>
 <dd>
 The country of the entity. <code>C</code> may be used as an alias for
 <code>countryName</code>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-68'><tt class='member'>stateOrProvinceName</tt></a></b>
+<dl><dt><b><a name='l2h-67'><tt class='member'>stateOrProvinceName</tt></a></b>
 <dd>
 The state or province of the entity. <code>ST</code> may be used as an alias for
 <code>stateOrProvinceName</code>·
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-69'><tt class='member'>localityName</tt></a></b>
+<dl><dt><b><a name='l2h-68'><tt class='member'>localityName</tt></a></b>
 <dd>
 The locality of the entity. <code>L</code> may be used as an alias for
 <code>localityName</code>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-70'><tt class='member'>organizationName</tt></a></b>
+<dl><dt><b><a name='l2h-69'><tt class='member'>organizationName</tt></a></b>
 <dd>
 The organization name of the entity. <code>O</code> may be used as an alias for
 <code>organizationName</code>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-71'><tt class='member'>organizationalUnitName</tt></a></b>
+<dl><dt><b><a name='l2h-70'><tt class='member'>organizationalUnitName</tt></a></b>
 <dd>
 The organizational unit of the entity. <code>OU</code> may be used as an alias for
 <code>organizationalUnitName</code>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-72'><tt class='member'>commonName</tt></a></b>
+<dl><dt><b><a name='l2h-71'><tt class='member'>commonName</tt></a></b>
 <dd>
 The common name of the entity. <code>CN</code> may be used as an alias for
 <code>commonName</code>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-73'><tt class='member'>emailAddress</tt></a></b>
+<dl><dt><b><a name='l2h-72'><tt class='member'>emailAddress</tt></a></b>
 <dd>
 The e-mail address of the entity.
 </dl>
@@ -147,11 +147,11 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509.html">3.1.2 X509 objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509.html">3.1.1 X509 objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-x509req.html">3.1.4 X509Req objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-x509req.html">3.1.3 X509Req objects</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/openssl-x509req.html b/doc/html/openssl-x509req.html
index 3625c27..89c8f46 100644
--- a/doc/html/openssl-x509req.html
+++ b/doc/html/openssl-x509req.html
@@ -1,8 +1,8 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html>
 <head>
-<title>3.1.4 X509Req objects </title>
-<META NAME="description" CONTENT="3.1.4 X509Req objects ">
+<title>3.1.3 X509Req objects </title>
+<META NAME="description" CONTENT="3.1.3 X509Req objects ">
 <META NAME="keywords" CONTENT="pyOpenSSL">
 <META NAME="resource-type" CONTENT="document">
 <META NAME="distribution" CONTENT="global">
@@ -36,61 +36,61 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509name.html">3.1.3 X509Name objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509name.html">3.1.2 X509Name objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-x509store.html">3.1.5 X509Store objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-x509store.html">3.1.4 X509Store objects</A>
 <br><hr>
 </DIV>
 <!--End of Navigation Panel-->
 
-<H3><A NAME="SECTION000414000000000000000">&nbsp;</A>
+<H3><A NAME="SECTION000413000000000000000">&nbsp;</A>
 <BR>
-3.1.4 X509Req objects 
+3.1.3 X509Req objects 
 </H3>
 
 <P>
 X509Req objects have the following methods:
 
 <P>
-<dl><dt><b><a name='l2h-74'><tt class='method'>get_pubkey</tt></a></b>()
+<dl><dt><b><a name='l2h-73'><tt class='method'>get_pubkey</tt></a></b>()
 <dd>
 Return a PKey object representing the public key of the certificate request.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-75'><tt class='method'>get_subject</tt></a></b>()
+<dl><dt><b><a name='l2h-74'><tt class='method'>get_subject</tt></a></b>()
 <dd>
 Return an X509Name object representing the subject of the certificate.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-76'><tt class='method'>set_pubkey</tt></a></b>(<var>pkey</var>)
+<dl><dt><b><a name='l2h-75'><tt class='method'>set_pubkey</tt></a></b>(<var>pkey</var>)
 <dd>
 Set the public key of the certificate request to <var>pkey</var>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-77'><tt class='method'>sign</tt></a></b>(<var>pkey, digest</var>)
+<dl><dt><b><a name='l2h-76'><tt class='method'>sign</tt></a></b>(<var>pkey, digest</var>)
 <dd>
 Sign the certificate request, using the key <var>pkey</var> and the message digest
 algorithm identified by the string <var>digest</var>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-78'><tt class='method'>verify</tt></a></b>(<var>pkey</var>)
+<dl><dt><b><a name='l2h-77'><tt class='method'>verify</tt></a></b>(<var>pkey</var>)
 <dd>
 Verify a certificate request using the public key <var>pkey</var>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-79'><tt class='method'>set_version</tt></a></b>(<var>version</var>)
+<dl><dt><b><a name='l2h-78'><tt class='method'>set_version</tt></a></b>(<var>version</var>)
 <dd>
 Set the version (RFC 2459, 4.1.2.1) of the certificate request to
 <var>version</var>.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-80'><tt class='method'>get_version</tt></a></b>()
+<dl><dt><b><a name='l2h-79'><tt class='method'>get_version</tt></a></b>()
 <dd>
 Get the version (RFC 2459, 4.1.2.1) of the certificate request.
 </dl>
@@ -121,11 +121,11 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509name.html">3.1.3 X509Name objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509name.html">3.1.2 X509Name objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-x509store.html">3.1.5 X509Store objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-x509store.html">3.1.4 X509Store objects</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/openssl-x509store.html b/doc/html/openssl-x509store.html
index 03d589e..bfb57bc 100644
--- a/doc/html/openssl-x509store.html
+++ b/doc/html/openssl-x509store.html
@@ -1,8 +1,8 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html>
 <head>
-<title>3.1.5 X509Store objects </title>
-<META NAME="description" CONTENT="3.1.5 X509Store objects ">
+<title>3.1.4 X509Store objects </title>
+<META NAME="description" CONTENT="3.1.4 X509Store objects ">
 <META NAME="keywords" CONTENT="pyOpenSSL">
 <META NAME="resource-type" CONTENT="document">
 <META NAME="distribution" CONTENT="global">
@@ -36,23 +36,23 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509req.html">3.1.4 X509Req objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509req.html">3.1.3 X509Req objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-pkey.html">3.1.6 PKey objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-pkey.html">3.1.5 PKey objects</A>
 <br><hr>
 </DIV>
 <!--End of Navigation Panel-->
 
-<H3><A NAME="SECTION000415000000000000000">&nbsp;</A>
+<H3><A NAME="SECTION000414000000000000000">&nbsp;</A>
 <BR>
-3.1.5 X509Store objects 
+3.1.4 X509Store objects 
 </H3>
 
 <P>
 The X509Store object has currently just one method:
 
 <P>
-<dl><dt><b><a name='l2h-81'><tt class='method'>add_cert</tt></a></b>(<var>cert</var>)
+<dl><dt><b><a name='l2h-80'><tt class='method'>add_cert</tt></a></b>(<var>cert</var>)
 <dd>
 Add the certificate <var>cert</var> to the certificate store.
 </dl>
@@ -83,11 +83,11 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509req.html">3.1.4 X509Req objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="openssl-x509req.html">3.1.3 X509Req objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
-<b class="navlabel">Next:</b> <a class="sectref" href="openssl-pkey.html">3.1.6 PKey objects</A>
+<b class="navlabel">Next:</b> <a class="sectref" href="openssl-pkey.html">3.1.5 PKey objects</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/openssl.html b/doc/html/openssl.html
index 4ecc438..4fb8c4f 100644
--- a/doc/html/openssl.html
+++ b/doc/html/openssl.html
@@ -80,43 +80,41 @@
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
 
 <UL CLASS="ChildLinks">
-<LI><A NAME="tex2html113"
+<LI><A NAME="tex2html112"
   href="openssl-crypto.html">3.1 <tt class="module">crypto</tt> -- Generic cryptographic module </A>
 <UL>
+<LI><A NAME="tex2html113"
+  href="openssl-x509.html">3.1.1 X509 objects </A>
 <LI><A NAME="tex2html114"
-  href="openssl-x509ext.html">3.1.1 X509Extension objects </A>
+  href="openssl-x509name.html">3.1.2 X509Name objects </A>
 <LI><A NAME="tex2html115"
-  href="openssl-x509.html">3.1.2 X509 objects </A>
+  href="openssl-x509req.html">3.1.3 X509Req objects </A>
 <LI><A NAME="tex2html116"
-  href="openssl-x509name.html">3.1.3 X509Name objects </A>
+  href="openssl-x509store.html">3.1.4 X509Store objects </A>
 <LI><A NAME="tex2html117"
-  href="openssl-x509req.html">3.1.4 X509Req objects </A>
+  href="openssl-pkey.html">3.1.5 PKey objects </A>
 <LI><A NAME="tex2html118"
-  href="openssl-x509store.html">3.1.5 X509Store objects </A>
+  href="openssl-pkcs7.html">3.1.6 PKCS7 objects </A>
 <LI><A NAME="tex2html119"
-  href="openssl-pkey.html">3.1.6 PKey objects </A>
+  href="openssl-pkcs12.html">3.1.7 PKCS12 objects </A>
 <LI><A NAME="tex2html120"
-  href="openssl-pkcs7.html">3.1.7 PKCS7 objects </A>
+  href="openssl-509ext.html">3.1.8 X509Extension objects </A>
 <LI><A NAME="tex2html121"
-  href="openssl-pkcs12.html">3.1.8 PKCS12 objects </A>
+  href="openssl-netscape-spki.html">3.1.9 NetscapeSPKI objects </A>
 <LI><A NAME="tex2html122"
-  href="openssl-509ext.html">3.1.9 X509Extension objects </A>
+  href="crl.html">3.1.10 CRL objects </A>
 <LI><A NAME="tex2html123"
-  href="openssl-netscape-spki.html">3.1.10 NetscapeSPKI objects </A>
-<LI><A NAME="tex2html124"
-  href="crl.html">3.1.11 CRL objects </A>
-<LI><A NAME="tex2html125"
-  href="revoked.html">3.1.12 Revoked objects </A>
+  href="revoked.html">3.1.11 Revoked objects </A>
 </UL>
 <BR>
-<LI><A NAME="tex2html126"
+<LI><A NAME="tex2html124"
   href="openssl-rand.html">3.2 <tt class="module">rand</tt> -- An interface to the OpenSSL pseudo random number generator </A>
-<LI><A NAME="tex2html127"
+<LI><A NAME="tex2html125"
   href="openssl-ssl.html">3.3 <tt class="module">SSL</tt> -- An interface to the SSL-specific parts of OpenSSL </A>
 <UL>
-<LI><A NAME="tex2html128"
+<LI><A NAME="tex2html126"
   href="openssl-context.html">3.3.1 Context objects </A>
-<LI><A NAME="tex2html129"
+<LI><A NAME="tex2html127"
   href="openssl-connection.html">3.3.2 Connection objects </A>
 </UL></UL>
 <!--End of Table of Child-Links-->
@@ -149,7 +147,7 @@
 <b class="navlabel">Up:</b> <a class="sectref" HREF="pyOpenSSL.html">Python OpenSSL Manual</A>
 <b class="navlabel">Next:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
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..2070a80 100644
--- a/doc/html/pyOpenSSL.html
+++ b/doc/html/pyOpenSSL.html
@@ -87,54 +87,52 @@
   href="openssl-crypto.html">3.1 <tt class="module">crypto</tt> -- Generic cryptographic module </A>
 <UL>
 <LI><A NAME="tex2html15"
-  href="openssl-x509ext.html">3.1.1 X509Extension objects </A>
+  href="openssl-x509.html">3.1.1 X509 objects </A>
 <LI><A NAME="tex2html16"
-  href="openssl-x509.html">3.1.2 X509 objects </A>
+  href="openssl-x509name.html">3.1.2 X509Name objects </A>
 <LI><A NAME="tex2html17"
-  href="openssl-x509name.html">3.1.3 X509Name objects </A>
+  href="openssl-x509req.html">3.1.3 X509Req objects </A>
 <LI><A NAME="tex2html18"
-  href="openssl-x509req.html">3.1.4 X509Req objects </A>
+  href="openssl-x509store.html">3.1.4 X509Store objects </A>
 <LI><A NAME="tex2html19"
-  href="openssl-x509store.html">3.1.5 X509Store objects </A>
+  href="openssl-pkey.html">3.1.5 PKey objects </A>
 <LI><A NAME="tex2html20"
-  href="openssl-pkey.html">3.1.6 PKey objects </A>
+  href="openssl-pkcs7.html">3.1.6 PKCS7 objects </A>
 <LI><A NAME="tex2html21"
-  href="openssl-pkcs7.html">3.1.7 PKCS7 objects </A>
+  href="openssl-pkcs12.html">3.1.7 PKCS12 objects </A>
 <LI><A NAME="tex2html22"
-  href="openssl-pkcs12.html">3.1.8 PKCS12 objects </A>
+  href="openssl-509ext.html">3.1.8 X509Extension objects </A>
 <LI><A NAME="tex2html23"
-  href="openssl-509ext.html">3.1.9 X509Extension objects </A>
+  href="openssl-netscape-spki.html">3.1.9 NetscapeSPKI objects </A>
 <LI><A NAME="tex2html24"
-  href="openssl-netscape-spki.html">3.1.10 NetscapeSPKI objects </A>
+  href="crl.html">3.1.10 CRL objects </A>
 <LI><A NAME="tex2html25"
-  href="crl.html">3.1.11 CRL objects </A>
-<LI><A NAME="tex2html26"
-  href="revoked.html">3.1.12 Revoked objects </A>
+  href="revoked.html">3.1.11 Revoked objects </A>
 </UL>
-<LI><A NAME="tex2html27"
+<LI><A NAME="tex2html26"
   href="openssl-rand.html">3.2 <tt class="module">rand</tt> -- An interface to the OpenSSL pseudo random number generator </A>
-<LI><A NAME="tex2html28"
+<LI><A NAME="tex2html27"
   href="openssl-ssl.html">3.3 <tt class="module">SSL</tt> -- An interface to the SSL-specific parts of OpenSSL </A>
 <UL>
-<LI><A NAME="tex2html29"
+<LI><A NAME="tex2html28"
   href="openssl-context.html">3.3.1 Context objects </A>
-<LI><A NAME="tex2html30"
+<LI><A NAME="tex2html29"
   href="openssl-connection.html">3.3.2 Connection objects </A>
 </UL>
 </UL>
 <BR>
-<LI><A NAME="tex2html31"
+<LI><A NAME="tex2html30"
   href="internals.html">4 Internals </A>
 <UL>
-<LI><A NAME="tex2html32"
+<LI><A NAME="tex2html31"
   href="exceptions.html">4.1 Exceptions </A>
-<LI><A NAME="tex2html33"
+<LI><A NAME="tex2html32"
   href="callbacks.html">4.2 Callbacks </A>
-<LI><A NAME="tex2html34"
+<LI><A NAME="tex2html33"
   href="socket-methods.html">4.3 Acessing Socket Methods </A>
 </UL>
 <BR>
-<LI><A NAME="tex2html35"
+<LI><A NAME="tex2html34"
   href="about.html">About this document ...</A>
 </UL>
 <!--End of Table of Child-Links-->
@@ -165,7 +163,7 @@
 </tr></table>
 <b class="navlabel">Next:</b> <a class="sectref" href="contents.html">Contents</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/html/revoked.html b/doc/html/revoked.html
index e2e5d9f..a423465 100644
--- a/doc/html/revoked.html
+++ b/doc/html/revoked.html
@@ -1,8 +1,8 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html>
 <head>
-<title>3.1.12 Revoked objects </title>
-<META NAME="description" CONTENT="3.1.12 Revoked objects ">
+<title>3.1.11 Revoked objects </title>
+<META NAME="description" CONTENT="3.1.11 Revoked objects ">
 <META NAME="keywords" CONTENT="pyOpenSSL">
 <META NAME="resource-type" CONTENT="document">
 <META NAME="distribution" CONTENT="global">
@@ -35,49 +35,49 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="crl.html">3.1.11 CRL objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="crl.html">3.1.10 CRL objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
 <b class="navlabel">Next:</b> <a class="sectref" href="openssl-rand.html">3.2 rand  </A>
 <br><hr>
 </DIV>
 <!--End of Navigation Panel-->
 
-<H3><A NAME="SECTION0004112000000000000000">&nbsp;</A>
+<H3><A NAME="SECTION0004111000000000000000">&nbsp;</A>
 <BR>
-3.1.12 Revoked objects 
+3.1.11 Revoked objects 
 </H3>
 
 <P>
 Revoked objects have the following methods:
 
 <P>
-<dl><dt><b><a name='l2h-109'><tt class='method'>all_reasons</tt></a></b>()
+<dl><dt><b><a name='l2h-110'><tt class='method'>all_reasons</tt></a></b>()
 <dd>
 Return a list of all supported reasons.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-110'><tt class='method'>get_reason</tt></a></b>()
+<dl><dt><b><a name='l2h-111'><tt class='method'>get_reason</tt></a></b>()
 <dd>
 Return the revocation reason as a str.  Can be
 None, which differs from "Unspecified".
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-111'><tt class='method'>get_rev_date</tt></a></b>()
+<dl><dt><b><a name='l2h-112'><tt class='method'>get_rev_date</tt></a></b>()
 <dd>
 Return the revocation date as a str.
 The string is formatted as an ASN1 GENERALIZEDTIME.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-112'><tt class='method'>get_serial</tt></a></b>()
+<dl><dt><b><a name='l2h-113'><tt class='method'>get_serial</tt></a></b>()
 <dd>
 Return a str containing a hex number of the serial of the revoked certificate.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-113'><tt class='method'>set_reason</tt></a></b>(<var>reason</var>)
+<dl><dt><b><a name='l2h-114'><tt class='method'>set_reason</tt></a></b>(<var>reason</var>)
 <dd>
 Set the revocation reason.  <var>reason</var> must
 be None or a string, but the values are limited.  
@@ -85,14 +85,14 @@
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-114'><tt class='method'>set_rev_date</tt></a></b>(<var>date</var>)
+<dl><dt><b><a name='l2h-115'><tt class='method'>set_rev_date</tt></a></b>(<var>date</var>)
 <dd>
 Set the revocation date.
 The string is formatted as an ASN1 GENERALIZEDTIME.
 </dl>
 
 <P>
-<dl><dt><b><a name='l2h-115'><tt class='method'>set_serial</tt></a></b>(<var>serial</var>)
+<dl><dt><b><a name='l2h-116'><tt class='method'>set_serial</tt></a></b>(<var>serial</var>)
 <dd>
 <var>serial</var> is a string containing a hex number of the serial of the revoked certificate.
 </dl>
@@ -123,11 +123,11 @@
   border="0" height="32"
   alt="" width="32"></td>
 </tr></table>
-<b class="navlabel">Previous:</b> <a class="sectref" href="crl.html">3.1.11 CRL objects</A>
+<b class="navlabel">Previous:</b> <a class="sectref" href="crl.html">3.1.10 CRL objects</A>
 <b class="navlabel">Up:</b> <a class="sectref" href="openssl-crypto.html">3.1 crypto  </A>
 <b class="navlabel">Next:</b> <a class="sectref" href="openssl-rand.html">3.2 rand  </A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
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 @@
 <b class="navlabel">Up:</b> <a class="sectref" href="internals.html">4 Internals</A>
 <b class="navlabel">Next:</b> <a class="sectref" href="about.html">About this document ...</A>
 <hr>
-<span class="release-info">Release 0.12.</span>
+<span class="release-info">Release 0.13.</span>
 </DIV>
 <!--End of Navigation Panel-->
 
diff --git a/doc/pyOpenSSL.ps b/doc/pyOpenSSL.ps
index 3eef2c6..31be028 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: Fri Sep  2 11:28:54 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.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
@@ -2396,147 +2396,145 @@
 1E0000FFC0003C0000FFC0007C0000FFC000F80000FFC000FFFFFFFFFF80FFFFFFFFFF80
 FFFFFFFFFF80FFFFFFFFFF80000001FFC000000001FFC000000001FFC000000001FFC000
 000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000
-0003FFFFFF800003FFFFFF800003FFFFFF800003FFFFFF8029367DB530>I<3C00000000
-003E00000000003FE0000000003FFFFFFFFF803FFFFFFFFF803FFFFFFFFF803FFFFFFFFF
-803FFFFFFFFF007FFFFFFFFE007FFFFFFFFC007FFFFFFFF8007FFFFFFFF0007FFFFFFFE0
-007FFFFFFFE0007C00000FC0007800001F80007800003F0000F800007E0000F00000FC00
-00F00000F80000F00001F80000F00003F00000000007E0000000000FC0000000000FC000
-0000001F80000000003F80000000007F00000000007F0000000000FE0000000000FE0000
-000001FE0000000001FC0000000003FC0000000003FC0000000007FC0000000007FC0000
-00000FFC000000000FF8000000000FF8000000001FF8000000001FF8000000001FF80000
-00001FF8000000001FF8000000003FF8000000003FF8000000003FF8000000003FF80000
-00003FF8000000003FF8000000003FF8000000003FF8000000003FF8000000001FF00000
-00000FE00000000007C000000029397BB730>55 D<FFFFFFFFFFC00000FFFFFFFFFFFC00
-00FFFFFFFFFFFF0000FFFFFFFFFFFFC000007FF00003FFE000007FF00000FFF000007FF0
-00007FF800007FF000003FFC00007FF000001FFC00007FF000001FFE00007FF000001FFE
-00007FF000000FFF00007FF000000FFF00007FF000000FFF00007FF000000FFF00007FF0
-00000FFF00007FF000000FFF00007FF000000FFF00007FF000001FFE00007FF000001FFE
-00007FF000001FFC00007FF000003FFC00007FF000007FF800007FF00000FFF000007FF0
-0001FFC000007FF0000FFF8000007FFFFFFFFC0000007FFFFFFFFC0000007FFFFFFFFF80
-00007FF00000FFF000007FF000003FF800007FF000001FFC00007FF000000FFE00007FF0
-000007FF00007FF0000007FF80007FF0000003FFC0007FF0000003FFC0007FF0000003FF
-C0007FF0000003FFE0007FF0000003FFE0007FF0000003FFE0007FF0000003FFE0007FF0
-000003FFE0007FF0000003FFE0007FF0000003FFE0007FF0000003FFC0007FF0000003FF
-C0007FF0000007FFC0007FF000000FFF80007FF000000FFF00007FF000001FFF00007FF0
-00007FFE00007FF00001FFFC00FFFFFFFFFFFFF000FFFFFFFFFFFFC000FFFFFFFFFFFF00
-00FFFFFFFFFFF000003B397DB844>66 D<FFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC007FF8
-00007FF800007FF800007FF800007FF800007FF800007FF800007FF800007FF800007FF8
-00007FF800007FF800007FF800007FF800007FF800007FF800007FF800007FF800007FF8
-00007FF800007FF800007FF800007FF800007FF800007FF800007FF800007FF800007FF8
-00007FF800007FF800007FF800007FF800007FF800007FF800007FF800007FF800007FF8
-00007FF800007FF800007FF800007FF800007FF800007FF800007FF800007FF800007FF8
-00007FF800007FF800007FF800FFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC1E397DB824>73
-D<FFFFFFFF000000FFFFFFFF000000FFFFFFFF000000FFFFFFFF000000007FF800000000
-007FF800000000007FF800000000007FF800000000007FF800000000007FF80000000000
-7FF800000000007FF800000000007FF800000000007FF800000000007FF800000000007F
+0003FFFFFF800003FFFFFF800003FFFFFF800003FFFFFF8029367DB530>I<0001FF8000
+000FFFF000003FFFFC0000FE01FF0001F8007F8003F0003FC007E0001FE007E0000FE00F
+C0000FF00FC00007F01FC00007F01FC00007F01FE00007F01FF00007F01FF80007F01FFC
+000FF01FFF000FE01FFFC00FE01FFFE01FC00FFFF83FC00FFFFE7F8007FFFFFE0007FFFF
+FC0003FFFFF00001FFFFFC0000FFFFFF00007FFFFF80003FFFFFC000FFFFFFE003FDFFFF
+F007F07FFFF80FE03FFFF81FC00FFFFC3F8003FFFC7F8000FFFE7F00007FFE7F00001FFE
+FE000007FEFE000003FEFE000001FEFE000001FEFE000000FEFE000000FEFE000000FCFF
+000000FC7F000001FC7F800001F83FC00003F83FE00007F01FF0000FE00FFE007FC003FF
+FFFF0000FFFFFC00003FFFF0000003FF800027377CB530>56 D<FFFFFFFFFFC00000FFFF
+FFFFFFFC0000FFFFFFFFFFFF0000FFFFFFFFFFFFC000007FF00003FFE000007FF00000FF
+F000007FF000007FF800007FF000003FFC00007FF000001FFC00007FF000001FFE00007F
+F000001FFE00007FF000000FFF00007FF000000FFF00007FF000000FFF00007FF000000F
+FF00007FF000000FFF00007FF000000FFF00007FF000000FFF00007FF000001FFE00007F
+F000001FFE00007FF000001FFC00007FF000003FFC00007FF000007FF800007FF00000FF
+F000007FF00001FFC000007FF0000FFF8000007FFFFFFFFC0000007FFFFFFFFC0000007F
+FFFFFFFF8000007FF00000FFF000007FF000003FF800007FF000001FFC00007FF000000F
+FE00007FF0000007FF00007FF0000007FF80007FF0000003FFC0007FF0000003FFC0007F
+F0000003FFC0007FF0000003FFE0007FF0000003FFE0007FF0000003FFE0007FF0000003
+FFE0007FF0000003FFE0007FF0000003FFE0007FF0000003FFE0007FF0000003FFC0007F
+F0000003FFC0007FF0000007FFC0007FF000000FFF80007FF000000FFF00007FF000001F
+FF00007FF000007FFE00007FF00001FFFC00FFFFFFFFFFFFF000FFFFFFFFFFFFC000FFFF
+FFFFFFFF0000FFFFFFFFFFF000003B397DB844>66 D<FFFFFFFCFFFFFFFCFFFFFFFCFFFF
+FFFC007FF800007FF800007FF800007FF800007FF800007FF800007FF800007FF800007F
+F800007FF800007FF800007FF800007FF800007FF800007FF800007FF800007FF800007F
+F800007FF800007FF800007FF800007FF800007FF800007FF800007FF800007FF800007F
+F800007FF800007FF800007FF800007FF800007FF800007FF800007FF800007FF800007F
+F800007FF800007FF800007FF800007FF800007FF800007FF800007FF800007FF800007F
+F800007FF800007FF800007FF800007FF800FFFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC1E39
+7DB824>73 D<FFFFFFFF000000FFFFFFFF000000FFFFFFFF000000FFFFFFFF000000007F
 F800000000007FF800000000007FF800000000007FF800000000007FF800000000007FF8
 00000000007FF800000000007FF800000000007FF800000000007FF800000000007FF800
 000000007FF800000000007FF800000000007FF800000000007FF800000000007FF80000
-0000007FF800000000007FF800000000007FF800000000007FF800000780007FF8000007
-80007FF800000780007FF800000780007FF800000780007FF800000F80007FF800000F00
-007FF800000F00007FF800000F00007FF800001F00007FF800001F00007FF800003F0000
-7FF800003F00007FF800007F00007FF80000FF00007FF80001FF00007FF80003FF00007F
-F8000FFE00007FF8007FFE00FFFFFFFFFFFE00FFFFFFFFFFFE00FFFFFFFFFFFE00FFFFFF
-FFFFFE0031397DB839>76 D<000000FFF800000000000FFFFF80000000007FFFFFF00000
-0001FFC01FFC00000007FF0007FF0000001FFC0001FFC000003FF000007FE000007FE000
-003FF00000FFC000001FF80001FF8000000FFC0003FF8000000FFE0007FF00000007FF00
-07FF00000007FF000FFE00000003FF800FFE00000003FF801FFC00000001FFC01FFC0000
-0001FFC03FFC00000001FFE03FFC00000001FFE03FFC00000001FFE07FF800000000FFF0
-7FF800000000FFF07FF800000000FFF07FF800000000FFF0FFF800000000FFF8FFF80000
-0000FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8
-FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF80000
-0000FFF8FFF800000000FFF87FF800000000FFF07FFC00000001FFF07FFC00000001FFF0
-7FFC00000001FFF03FFC00000001FFE03FFC00000001FFE03FFE00000003FFE01FFE0000
-0003FFC01FFE00000003FFC00FFF00000007FF8007FF00000007FF0007FF8000000FFF00
-03FFC000001FFE0001FFC000001FFC0000FFE000003FF800007FF000007FF000003FFC00
-01FFE000001FFF0007FFC0000007FFC01FFF00000001FFFFFFFC000000007FFFFFF00000
-00000FFFFF800000000000FFF80000003D3B7BB948>79 D<FFFFFFFFFF0000FFFFFFFFFF
-F000FFFFFFFFFFFE00FFFFFFFFFFFF80007FF8000FFFC0007FF80001FFE0007FF80000FF
-F0007FF800007FF8007FF800003FFC007FF800003FFC007FF800001FFE007FF800001FFE
-007FF800001FFF007FF800001FFF007FF800001FFF007FF800001FFF007FF800001FFF00
-7FF800001FFF007FF800001FFF007FF800001FFF007FF800001FFE007FF800001FFE007F
-F800003FFC007FF800003FFC007FF800007FF8007FF80000FFF0007FF80001FFE0007FF8
-000FFFC0007FFFFFFFFF00007FFFFFFFFC00007FFFFFFFE000007FF800000000007FF800
-000000007FF800000000007FF800000000007FF800000000007FF800000000007FF80000
 0000007FF800000000007FF800000000007FF800000000007FF800000000007FF8000000
 00007FF800000000007FF800000000007FF800000000007FF800000000007FF800000000
-007FF800000000007FF800000000007FF800000000007FF800000000007FF800000000FF
-FFFFFC000000FFFFFFFC000000FFFFFFFC000000FFFFFFFC00000038397DB841>I<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
+D<FFFFFFFFFF0000FFFFFFFFFFF000FFFFFFFFFFFE00FFFFFFFFFFFF80007FF8000FFFC0
+007FF80001FFE0007FF80000FFF0007FF800007FF8007FF800003FFC007FF800003FFC00
+7FF800001FFE007FF800001FFE007FF800001FFF007FF800001FFF007FF800001FFF007F
+F800001FFF007FF800001FFF007FF800001FFF007FF800001FFF007FF800001FFF007FF8
+00001FFE007FF800001FFE007FF800003FFC007FF800003FFC007FF800007FF8007FF800
+00FFF0007FF80001FFE0007FF8000FFFC0007FFFFFFFFF00007FFFFFFFFC00007FFFFFFF
+E000007FF800000000007FF800000000007FF800000000007FF800000000007FF8000000
+00007FF800000000007FF800000000007FF800000000007FF800000000007FF800000000
+007FF800000000007FF800000000007FF800000000007FF800000000007FF80000000000
+7FF800000000007FF800000000007FF800000000007FF800000000007FF800000000007F
+F800000000007FF800000000FFFFFFFC000000FFFFFFFC000000FFFFFFFC000000FFFFFF
+FC00000038397DB841>I<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
+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
-0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF
-0003FF0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8153B7DBA1B>I<00FF00FFFF00FF
-FF00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003
+0003FF0003FF0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8153B7DBA1B>I<00FF00FF
+FF00FFFF00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003
 FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003
 FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003
 FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003
-FF0003FF0003FF0003FF00FFFFFCFFFFFCFFFFFCFFFFFC163A7DB91B>108
+FF0003FF0003FF0003FF0003FF00FFFFFCFFFFFCFFFFFCFFFFFC163A7DB91B>108
 D<00FE007FC000FFFE03FFF800FFFE0FFFFE00FFFE1F03FF00FFFE3C01FF8007FE7801FF
 8003FEF000FF8003FFE000FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FF
 C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF
@@ -4135,61 +4133,61 @@
 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[<FFE00000000000000000FFE00000000000000000FFE0000000000000
@@ -4702,94 +4700,91 @@
  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.13)2927
+974 y Fr(Jean-P)m(aul)i(Calderone)3231 1328 y Fq(Septem)n(b)r(er)28
+b(2,)f(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 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
+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 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 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(commonName)208 183 y
-Fq(The)27 b(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
-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
+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 @@
 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
-(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
-(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
-(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
-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
+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(read)38 b(succeeds,)k(the)d
-(attempted)h Fl(OpenSSL.SSL.Conn)o(ect)o(io)o(n.)o(rec)o(v)p
+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 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 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
+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)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
-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(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
-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
-(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
-(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
+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(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
+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 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
+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 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 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)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
-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
-(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
-(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
-(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
-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
+(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 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
+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
+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 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 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 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.)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.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}}
diff --git a/doc/pyOpenSSL.txt b/doc/pyOpenSSL.txt
index 6e5acee..e66d859 100644
--- a/doc/pyOpenSSL.txt
+++ b/doc/pyOpenSSL.txt
@@ -268,24 +268,7 @@
           ``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 @@
    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 @@
           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 @@
 
    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 @@
           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 @@
           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 @@
           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 @@
    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 @@
           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 @@
           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 @@
           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.
 
 
-  3.1.10 NetscapeSPKI objects
+  3.1.9 NetscapeSPKI objects
 
    NetscapeSPKI objects have the following methods:
 
@@ -591,7 +593,7 @@
           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 @@
           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 @@
           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 @@
           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 @@
    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 @@
           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 @@
 
    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.
 
@@ -1262,4 +1308,4 @@
                             Python OpenSSL Manual
      __________________________________________________________________
 
-   Release 0.12.
+   Release 0.13.
diff --git a/setup.py b/setup.py
index 73c88a0..2aa649e 100755
--- a/setup.py
+++ b/setup.py
@@ -15,7 +15,7 @@
 from distutils.command.build_ext import build_ext
 
 # XXX Deduplicate this
-__version__ = '0.12'
+__version__ = '0.13'
 
 crypto_src = ['OpenSSL/crypto/crypto.c', 'OpenSSL/crypto/x509.c',
               'OpenSSL/crypto/x509name.c', 'OpenSSL/crypto/pkey.c',