summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorMatěj Cepl <mcepl@cepl.eu>2017-10-05 14:53:20 +0200
committerMatěj Cepl <mcepl@cepl.eu>2018-02-08 17:48:51 +0100
commit9d79ac666605211107c099e530823792a4c4ecea (patch)
treea48c3eefd834b3ee30247f3dad7fea91e95ff4ee /doc
parent8956b5e0dc469482a2350b4cac920870badd64a4 (diff)
downloadm2crypto-9d79ac666605211107c099e530823792a4c4ecea.tar.gz
Update docs
Diffstat (limited to 'doc')
-rw-r--r--doc/conf.py2
-rw-r--r--doc/doctrees/M2Crypto.PGP.doctreebin86275 -> 0 bytes
-rw-r--r--doc/doctrees/M2Crypto.SSL.doctreebin296531 -> 383428 bytes
-rw-r--r--doc/doctrees/M2Crypto.doctreebin1082506 -> 1368244 bytes
-rw-r--r--doc/doctrees/ZServerSSL-HOWTO.doctreebin49205 -> 47807 bytes
-rw-r--r--doc/doctrees/environment.picklebin442226 -> 490409 bytes
-rw-r--r--doc/doctrees/howto.ca.doctreebin51341 -> 49739 bytes
-rw-r--r--doc/doctrees/howto.smime.doctreebin94635 -> 89126 bytes
-rw-r--r--doc/doctrees/howto.ssl.doctreebin22375 -> 21303 bytes
-rw-r--r--doc/doctrees/index.doctreebin7200 -> 7215 bytes
-rw-r--r--doc/html/.buildinfo4
-rw-r--r--doc/html/M2Crypto.PGP.html414
-rw-r--r--doc/html/M2Crypto.SSL.html616
-rw-r--r--doc/html/M2Crypto.html1939
-rw-r--r--doc/html/ZServerSSL-HOWTO.html229
-rw-r--r--doc/html/_modules/M2Crypto/ASN1.html168
-rw-r--r--doc/html/_modules/M2Crypto/AuthCookie.html158
-rw-r--r--doc/html/_modules/M2Crypto/BIO.html337
-rw-r--r--doc/html/_modules/M2Crypto/BN.html98
-rw-r--r--doc/html/_modules/M2Crypto/DH.html140
-rw-r--r--doc/html/_modules/M2Crypto/DSA.html216
-rw-r--r--doc/html/_modules/M2Crypto/EC.html228
-rw-r--r--doc/html/_modules/M2Crypto/EVP.html282
-rw-r--r--doc/html/_modules/M2Crypto/Engine.html156
-rw-r--r--doc/html/_modules/M2Crypto/Err.html127
-rw-r--r--doc/html/_modules/M2Crypto/PGP/PublicKey.html169
-rw-r--r--doc/html/_modules/M2Crypto/PGP/PublicKeyRing.html192
-rw-r--r--doc/html/_modules/M2Crypto/PGP/RSA.html122
-rw-r--r--doc/html/_modules/M2Crypto/PGP/packet.html514
-rw-r--r--doc/html/_modules/M2Crypto/RC4.html102
-rw-r--r--doc/html/_modules/M2Crypto/RSA.html272
-rw-r--r--doc/html/_modules/M2Crypto/Rand.html240
-rw-r--r--doc/html/_modules/M2Crypto/SMIME.html271
-rw-r--r--doc/html/_modules/M2Crypto/SSL.html108
-rw-r--r--doc/html/_modules/M2Crypto/SSL/Checker.html176
-rw-r--r--doc/html/_modules/M2Crypto/SSL/Cipher.html102
-rw-r--r--doc/html/_modules/M2Crypto/SSL/Connection.html424
-rw-r--r--doc/html/_modules/M2Crypto/SSL/Context.html240
-rw-r--r--doc/html/_modules/M2Crypto/SSL/SSLServer.html129
-rw-r--r--doc/html/_modules/M2Crypto/SSL/Session.html126
-rw-r--r--doc/html/_modules/M2Crypto/SSL/TwistedProtocolWrapper.html339
-rw-r--r--doc/html/_modules/M2Crypto/SSL/cb.html110
-rw-r--r--doc/html/_modules/M2Crypto/SSL/ssl_dispatcher.html112
-rw-r--r--doc/html/_modules/M2Crypto/SSL/timeout.html98
-rw-r--r--doc/html/_modules/M2Crypto/X509.html603
-rw-r--r--doc/html/_modules/M2Crypto/ftpslib.html114
-rw-r--r--doc/html/_modules/M2Crypto/httpslib.html176
-rw-r--r--doc/html/_modules/M2Crypto/m2crypto.html38
-rw-r--r--doc/html/_modules/M2Crypto/m2urllib.html141
-rw-r--r--doc/html/_modules/M2Crypto/m2urllib2.html128
-rw-r--r--doc/html/_modules/M2Crypto/m2xmlrpclib.html106
-rw-r--r--doc/html/_modules/M2Crypto/threading.html92
-rw-r--r--doc/html/_modules/M2Crypto/util.html152
-rw-r--r--doc/html/_modules/index.html86
-rw-r--r--doc/html/_modules/urllib2.html1575
-rw-r--r--doc/html/_sources/M2Crypto.PGP.txt51
-rw-r--r--doc/html/_sources/M2Crypto.SSL.rst.txt91
-rw-r--r--doc/html/_sources/M2Crypto.rst.txt218
-rw-r--r--doc/html/_sources/M2Crypto.txt1
-rw-r--r--doc/html/_sources/ZServerSSL-HOWTO.rst.txt239
-rw-r--r--doc/html/_sources/howto.ca.rst.txt370
-rw-r--r--doc/html/_sources/howto.smime.rst.txt778
-rw-r--r--doc/html/_sources/howto.ssl.rst.txt131
-rw-r--r--doc/html/_sources/index.rst.txt30
-rw-r--r--doc/html/_static/alabaster.css693
-rw-r--r--doc/html/_static/basic.css163
-rw-r--r--doc/html/_static/comment-bright.pngbin3500 -> 756 bytes
-rw-r--r--doc/html/_static/comment-close.pngbin3578 -> 829 bytes
-rw-r--r--doc/html/_static/comment.pngbin3445 -> 641 bytes
-rw-r--r--doc/html/_static/custom.css1
-rw-r--r--doc/html/_static/doctools.js72
-rw-r--r--doc/html/_static/down-pressed.pngbin368 -> 222 bytes
-rw-r--r--doc/html/_static/down.pngbin363 -> 202 bytes
-rw-r--r--doc/html/_static/file.pngbin392 -> 286 bytes
-rw-r--r--doc/html/_static/jquery-3.1.0.js10074
-rw-r--r--doc/html/_static/jquery.js158
-rw-r--r--doc/html/_static/minus.pngbin199 -> 90 bytes
-rw-r--r--doc/html/_static/plus.pngbin199 -> 90 bytes
-rw-r--r--doc/html/_static/pygments.css4
-rw-r--r--doc/html/_static/searchtools.js502
-rw-r--r--doc/html/_static/underscore-1.3.1.js999
-rw-r--r--doc/html/_static/underscore.js50
-rw-r--r--doc/html/_static/up-pressed.pngbin372 -> 214 bytes
-rw-r--r--doc/html/_static/up.pngbin363 -> 203 bytes
-rw-r--r--doc/html/_static/websupport.js32
-rw-r--r--doc/html/genindex.html4492
-rw-r--r--doc/html/howto.ca.html592
-rw-r--r--doc/html/howto.smime.html724
-rw-r--r--doc/html/howto.ssl.html120
-rw-r--r--doc/html/index.html211
-rw-r--r--doc/html/objects.invbin5904 -> 4390 bytes
-rw-r--r--doc/html/py-modindex.html267
-rw-r--r--doc/html/search.html74
-rw-r--r--doc/html/searchindex.js2
94 files changed, 22810 insertions, 10500 deletions
diff --git a/doc/conf.py b/doc/conf.py
index d782515..8530a00 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -16,7 +16,7 @@ import sys, os
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.insert(0, os.path.abspath('.'))
+sys.path.insert(0, os.path.abspath(os.path.join('..')))
# -- General configuration -----------------------------------------------------
diff --git a/doc/doctrees/M2Crypto.PGP.doctree b/doc/doctrees/M2Crypto.PGP.doctree
deleted file mode 100644
index 85f452c..0000000
--- a/doc/doctrees/M2Crypto.PGP.doctree
+++ /dev/null
Binary files differ
diff --git a/doc/doctrees/M2Crypto.SSL.doctree b/doc/doctrees/M2Crypto.SSL.doctree
index c613ca6..d4c48b1 100644
--- a/doc/doctrees/M2Crypto.SSL.doctree
+++ b/doc/doctrees/M2Crypto.SSL.doctree
Binary files differ
diff --git a/doc/doctrees/M2Crypto.doctree b/doc/doctrees/M2Crypto.doctree
index b195fd4..e8b41bc 100644
--- a/doc/doctrees/M2Crypto.doctree
+++ b/doc/doctrees/M2Crypto.doctree
Binary files differ
diff --git a/doc/doctrees/ZServerSSL-HOWTO.doctree b/doc/doctrees/ZServerSSL-HOWTO.doctree
index a807552..4bb8159 100644
--- a/doc/doctrees/ZServerSSL-HOWTO.doctree
+++ b/doc/doctrees/ZServerSSL-HOWTO.doctree
Binary files differ
diff --git a/doc/doctrees/environment.pickle b/doc/doctrees/environment.pickle
index 0068ff7..da5be06 100644
--- a/doc/doctrees/environment.pickle
+++ b/doc/doctrees/environment.pickle
Binary files differ
diff --git a/doc/doctrees/howto.ca.doctree b/doc/doctrees/howto.ca.doctree
index 25d7aae..83eb476 100644
--- a/doc/doctrees/howto.ca.doctree
+++ b/doc/doctrees/howto.ca.doctree
Binary files differ
diff --git a/doc/doctrees/howto.smime.doctree b/doc/doctrees/howto.smime.doctree
index dde291f..0761480 100644
--- a/doc/doctrees/howto.smime.doctree
+++ b/doc/doctrees/howto.smime.doctree
Binary files differ
diff --git a/doc/doctrees/howto.ssl.doctree b/doc/doctrees/howto.ssl.doctree
index 6032ac5..c757283 100644
--- a/doc/doctrees/howto.ssl.doctree
+++ b/doc/doctrees/howto.ssl.doctree
Binary files differ
diff --git a/doc/doctrees/index.doctree b/doc/doctrees/index.doctree
index ddb7340..d8661d3 100644
--- a/doc/doctrees/index.doctree
+++ b/doc/doctrees/index.doctree
Binary files differ
diff --git a/doc/html/.buildinfo b/doc/html/.buildinfo
index d49bc3a..1473c05 100644
--- a/doc/html/.buildinfo
+++ b/doc/html/.buildinfo
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 2ba17edb1c13f7cef17e22ec0437fce4
-tags: fbb0d17656682115ca4d033fb2f83ba1
+config: a5615f96278642a071afe91980cda73c
+tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/doc/html/M2Crypto.PGP.html b/doc/html/M2Crypto.PGP.html
deleted file mode 100644
index b64f7a2..0000000
--- a/doc/html/M2Crypto.PGP.html
+++ /dev/null
@@ -1,414 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>PGP Package &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="_static/jquery.js"></script>
- <script type="text/javascript" src="_static/underscore.js"></script>
- <script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="index.html" />
- <link rel="up" title="M2Crypto Package" href="M2Crypto.html" />
- <link rel="next" title="SSL Package" href="M2Crypto.SSL.html" />
- <link rel="prev" title="M2Crypto Package" href="M2Crypto.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li class="right" >
- <a href="M2Crypto.SSL.html" title="SSL Package"
- accesskey="N">next</a> |</li>
- <li class="right" >
- <a href="M2Crypto.html" title="M2Crypto Package"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="M2Crypto.html" accesskey="U">M2Crypto Package</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <div class="section" id="pgp-package">
-<h1>PGP Package<a class="headerlink" href="#pgp-package" title="Permalink to this headline">¶</a></h1>
-<div class="section" id="id1">
-<h2><tt class="xref py py-mod docutils literal"><span class="pre">PGP</span></tt> Package<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
-<span class="target" id="module-M2Crypto.PGP"></span></div>
-<div class="section" id="module-M2Crypto.PGP.PublicKey">
-<span id="publickey-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">PublicKey</span></tt> Module<a class="headerlink" href="#module-M2Crypto.PGP.PublicKey" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="M2Crypto.PGP.PublicKey.PublicKey">
-<em class="property">class </em><tt class="descclassname">M2Crypto.PGP.PublicKey.</tt><tt class="descname">PublicKey</tt><big>(</big><em>pubkey_pkt</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/PublicKey.html#PublicKey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.PublicKey.PublicKey" title="Permalink to this definition">¶</a></dt>
-<dd><dl class="method">
-<dt id="M2Crypto.PGP.PublicKey.PublicKey.add_signature">
-<tt class="descname">add_signature</tt><big>(</big><em>userid</em>, <em>s_pkt</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/PublicKey.html#PublicKey.add_signature"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.PublicKey.PublicKey.add_signature" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.PublicKey.PublicKey.add_userid">
-<tt class="descname">add_userid</tt><big>(</big><em>u_pkt</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/PublicKey.html#PublicKey.add_userid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.PublicKey.PublicKey.add_userid" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.PublicKey.PublicKey.decrypt">
-<tt class="descname">decrypt</tt><big>(</big><em>ctxt</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/PublicKey.html#PublicKey.decrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.PublicKey.PublicKey.decrypt" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.PublicKey.PublicKey.encrypt">
-<tt class="descname">encrypt</tt><big>(</big><em>ptxt</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/PublicKey.html#PublicKey.encrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.PublicKey.PublicKey.encrypt" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.PublicKey.PublicKey.keyid">
-<tt class="descname">keyid</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/PublicKey.html#PublicKey.keyid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.PublicKey.PublicKey.keyid" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.PublicKey.PublicKey.remove_userid">
-<tt class="descname">remove_userid</tt><big>(</big><em>userid</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/PublicKey.html#PublicKey.remove_userid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.PublicKey.PublicKey.remove_userid" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.PublicKey.PublicKey.write">
-<tt class="descname">write</tt><big>(</big><em>stream</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/PublicKey.html#PublicKey.write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.PublicKey.PublicKey.write" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-</div>
-<div class="section" id="module-M2Crypto.PGP.PublicKeyRing">
-<span id="publickeyring-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">PublicKeyRing</span></tt> Module<a class="headerlink" href="#module-M2Crypto.PGP.PublicKeyRing" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="M2Crypto.PGP.PublicKeyRing.PublicKeyRing">
-<em class="property">class </em><tt class="descclassname">M2Crypto.PGP.PublicKeyRing.</tt><tt class="descname">PublicKeyRing</tt><big>(</big><em>keyring</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/PublicKeyRing.html#PublicKeyRing"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.PublicKeyRing.PublicKeyRing" title="Permalink to this definition">¶</a></dt>
-<dd><dl class="method">
-<dt id="M2Crypto.PGP.PublicKeyRing.PublicKeyRing.load">
-<tt class="descname">load</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/PublicKeyRing.html#PublicKeyRing.load"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.PublicKeyRing.PublicKeyRing.load" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.PublicKeyRing.PublicKeyRing.save">
-<tt class="descname">save</tt><big>(</big><em>keyring</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/PublicKeyRing.html#PublicKeyRing.save"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.PublicKeyRing.PublicKeyRing.save" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.PublicKeyRing.PublicKeyRing.spurious">
-<tt class="descname">spurious</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/PublicKeyRing.html#PublicKeyRing.spurious"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.PublicKeyRing.PublicKeyRing.spurious" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="function">
-<dt id="M2Crypto.PGP.PublicKeyRing.load_pubring">
-<tt class="descclassname">M2Crypto.PGP.PublicKeyRing.</tt><tt class="descname">load_pubring</tt><big>(</big><em>filename='pubring.pgp'</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/PublicKeyRing.html#load_pubring"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.PublicKeyRing.load_pubring" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</div>
-<div class="section" id="module-M2Crypto.PGP.RSA">
-<span id="rsa-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">RSA</span></tt> Module<a class="headerlink" href="#module-M2Crypto.PGP.RSA" title="Permalink to this headline">¶</a></h2>
-<p>M2Crypto PGP2 RSA.</p>
-<p>Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.</p>
-<dl class="function">
-<dt id="M2Crypto.PGP.RSA.new_pub_key">
-<tt class="descclassname">M2Crypto.PGP.RSA.</tt><tt class="descname">new_pub_key</tt><big>(</big><em>e_n</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/RSA.html#new_pub_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.RSA.new_pub_key" title="Permalink to this definition">¶</a></dt>
-<dd><p>Factory function that instantiates an RSA_pub object from a (e, n) tuple.</p>
-<p>&#8216;e&#8217; is the RSA public exponent; it is a string in OpenSSL&#8217;s binary format,
-i.e., a number of bytes in big-endian.</p>
-<dl class="docutils">
-<dt>&#8216;n&#8217; is the RSA composite of primes; it is a string in OpenSSL&#8217;s</dt>
-<dd>binary format, i.e., a number of bytes in big-endian.</dd>
-</dl>
-</dd></dl>
-
-</div>
-<div class="section" id="module-M2Crypto.PGP.constants">
-<span id="constants-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">constants</span></tt> Module<a class="headerlink" href="#module-M2Crypto.PGP.constants" title="Permalink to this headline">¶</a></h2>
-<p>M2Crypto PGP2.</p>
-<p>Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.</p>
-</div>
-<div class="section" id="module-M2Crypto.PGP.packet">
-<span id="packet-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">packet</span></tt> Module<a class="headerlink" href="#module-M2Crypto.PGP.packet" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="M2Crypto.PGP.packet.CKEPacket">
-<em class="property">class </em><tt class="descclassname">M2Crypto.PGP.packet.</tt><tt class="descname">CKEPacket</tt><big>(</big><em>ctb</em>, <em>body=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#CKEPacket"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.CKEPacket" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.PGP.packet.Packet" title="M2Crypto.PGP.packet.Packet"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.PGP.packet.Packet</span></tt></a></p>
-</dd></dl>
-
-<dl class="class">
-<dt id="M2Crypto.PGP.packet.CommentPacket">
-<em class="property">class </em><tt class="descclassname">M2Crypto.PGP.packet.</tt><tt class="descname">CommentPacket</tt><big>(</big><em>ctb</em>, <em>body=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#CommentPacket"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.CommentPacket" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.PGP.packet.Packet" title="M2Crypto.PGP.packet.Packet"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.PGP.packet.Packet</span></tt></a></p>
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.CommentPacket.pack">
-<tt class="descname">pack</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#CommentPacket.pack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.CommentPacket.pack" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="M2Crypto.PGP.packet.CompressedPacket">
-<em class="property">class </em><tt class="descclassname">M2Crypto.PGP.packet.</tt><tt class="descname">CompressedPacket</tt><big>(</big><em>ctb</em>, <em>stream</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#CompressedPacket"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.CompressedPacket" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.PGP.packet.Packet" title="M2Crypto.PGP.packet.Packet"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.PGP.packet.Packet</span></tt></a></p>
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.CompressedPacket.uncompress">
-<tt class="descname">uncompress</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#CompressedPacket.uncompress"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.CompressedPacket.uncompress" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.CompressedPacket.validate">
-<tt class="descname">validate</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#CompressedPacket.validate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.CompressedPacket.validate" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="M2Crypto.PGP.packet.LiteralPacket">
-<em class="property">class </em><tt class="descclassname">M2Crypto.PGP.packet.</tt><tt class="descname">LiteralPacket</tt><big>(</big><em>ctb</em>, <em>body=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#LiteralPacket"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.LiteralPacket" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.PGP.packet.Packet" title="M2Crypto.PGP.packet.Packet"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.PGP.packet.Packet</span></tt></a></p>
-</dd></dl>
-
-<dl class="class">
-<dt id="M2Crypto.PGP.packet.PKEPacket">
-<em class="property">class </em><tt class="descclassname">M2Crypto.PGP.packet.</tt><tt class="descname">PKEPacket</tt><big>(</big><em>ctb</em>, <em>body=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#PKEPacket"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.PKEPacket" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.PGP.packet.Packet" title="M2Crypto.PGP.packet.Packet"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.PGP.packet.Packet</span></tt></a></p>
-</dd></dl>
-
-<dl class="class">
-<dt id="M2Crypto.PGP.packet.Packet">
-<em class="property">class </em><tt class="descclassname">M2Crypto.PGP.packet.</tt><tt class="descname">Packet</tt><big>(</big><em>ctb</em>, <em>body=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#Packet"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.Packet" title="Permalink to this definition">¶</a></dt>
-<dd><dl class="method">
-<dt id="M2Crypto.PGP.packet.Packet.pack">
-<tt class="descname">pack</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#Packet.pack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.Packet.pack" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.Packet.pkc">
-<tt class="descname">pkc</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#Packet.pkc"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.Packet.pkc" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.Packet.timestamp">
-<tt class="descname">timestamp</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#Packet.timestamp"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.Packet.timestamp" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.Packet.validate">
-<tt class="descname">validate</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#Packet.validate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.Packet.validate" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.Packet.validity">
-<tt class="descname">validity</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#Packet.validity"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.Packet.validity" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.Packet.version">
-<tt class="descname">version</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#Packet.version"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.Packet.version" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="M2Crypto.PGP.packet.PacketStream">
-<em class="property">class </em><tt class="descclassname">M2Crypto.PGP.packet.</tt><tt class="descname">PacketStream</tt><big>(</big><em>input</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#PacketStream"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.PacketStream" title="Permalink to this definition">¶</a></dt>
-<dd><dl class="method">
-<dt id="M2Crypto.PGP.packet.PacketStream.close">
-<tt class="descname">close</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#PacketStream.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.PacketStream.close" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.PacketStream.count">
-<tt class="descname">count</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#PacketStream.count"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.PacketStream.count" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.PacketStream.read">
-<tt class="descname">read</tt><big>(</big><em>keep_trying=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#PacketStream.read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.PacketStream.read" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="M2Crypto.PGP.packet.PrivateKeyPacket">
-<em class="property">class </em><tt class="descclassname">M2Crypto.PGP.packet.</tt><tt class="descname">PrivateKeyPacket</tt><big>(</big><em>ctb</em>, <em>body=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#PrivateKeyPacket"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.PrivateKeyPacket" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.PGP.packet.Packet" title="M2Crypto.PGP.packet.Packet"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.PGP.packet.Packet</span></tt></a></p>
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.PrivateKeyPacket.is_encrypted">
-<tt class="descname">is_encrypted</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#PrivateKeyPacket.is_encrypted"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.PrivateKeyPacket.is_encrypted" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="M2Crypto.PGP.packet.PublicKeyPacket">
-<em class="property">class </em><tt class="descclassname">M2Crypto.PGP.packet.</tt><tt class="descname">PublicKeyPacket</tt><big>(</big><em>ctb</em>, <em>body=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#PublicKeyPacket"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.PublicKeyPacket" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.PGP.packet.Packet" title="M2Crypto.PGP.packet.Packet"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.PGP.packet.Packet</span></tt></a></p>
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.PublicKeyPacket.pack">
-<tt class="descname">pack</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#PublicKeyPacket.pack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.PublicKeyPacket.pack" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.PublicKeyPacket.pubkey">
-<tt class="descname">pubkey</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#PublicKeyPacket.pubkey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.PublicKeyPacket.pubkey" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="M2Crypto.PGP.packet.SignaturePacket">
-<em class="property">class </em><tt class="descclassname">M2Crypto.PGP.packet.</tt><tt class="descname">SignaturePacket</tt><big>(</big><em>ctb</em>, <em>body=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#SignaturePacket"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.SignaturePacket" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.PGP.packet.Packet" title="M2Crypto.PGP.packet.Packet"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.PGP.packet.Packet</span></tt></a></p>
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.SignaturePacket.pack">
-<tt class="descname">pack</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#SignaturePacket.pack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.SignaturePacket.pack" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.SignaturePacket.validate">
-<tt class="descname">validate</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#SignaturePacket.validate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.SignaturePacket.validate" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="M2Crypto.PGP.packet.TrustPacket">
-<em class="property">class </em><tt class="descclassname">M2Crypto.PGP.packet.</tt><tt class="descname">TrustPacket</tt><big>(</big><em>ctb</em>, <em>body=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#TrustPacket"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.TrustPacket" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.PGP.packet.Packet" title="M2Crypto.PGP.packet.Packet"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.PGP.packet.Packet</span></tt></a></p>
-</dd></dl>
-
-<dl class="class">
-<dt id="M2Crypto.PGP.packet.UserIDPacket">
-<em class="property">class </em><tt class="descclassname">M2Crypto.PGP.packet.</tt><tt class="descname">UserIDPacket</tt><big>(</big><em>ctb</em>, <em>body=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#UserIDPacket"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.UserIDPacket" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.PGP.packet.Packet" title="M2Crypto.PGP.packet.Packet"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.PGP.packet.Packet</span></tt></a></p>
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.UserIDPacket.pack">
-<tt class="descname">pack</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#UserIDPacket.pack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.UserIDPacket.pack" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="method">
-<dt id="M2Crypto.PGP.packet.UserIDPacket.userid">
-<tt class="descname">userid</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#UserIDPacket.userid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.UserIDPacket.userid" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="exception">
-<dt id="M2Crypto.PGP.packet.XXXError">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.PGP.packet.</tt><tt class="descname">XXXError</tt><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#XXXError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.XXXError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
-</dd></dl>
-
-<dl class="function">
-<dt id="M2Crypto.PGP.packet.is_ctb">
-<tt class="descclassname">M2Crypto.PGP.packet.</tt><tt class="descname">is_ctb</tt><big>(</big><em>ctb</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#is_ctb"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.is_ctb" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="function">
-<dt id="M2Crypto.PGP.packet.make_ctb">
-<tt class="descclassname">M2Crypto.PGP.packet.</tt><tt class="descname">make_ctb</tt><big>(</big><em>value</em>, <em>llf</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/PGP/packet.html#make_ctb"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.PGP.packet.make_ctb" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</div>
-</div>
-
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
- <h3><a href="index.html">Table Of Contents</a></h3>
- <ul>
-<li><a class="reference internal" href="#">PGP Package</a><ul>
-<li><a class="reference internal" href="#id1"><tt class="docutils literal"><span class="pre">PGP</span></tt> Package</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.PGP.PublicKey"><tt class="docutils literal"><span class="pre">PublicKey</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.PGP.PublicKeyRing"><tt class="docutils literal"><span class="pre">PublicKeyRing</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.PGP.RSA"><tt class="docutils literal"><span class="pre">RSA</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.PGP.constants"><tt class="docutils literal"><span class="pre">constants</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.PGP.packet"><tt class="docutils literal"><span class="pre">packet</span></tt> Module</a></li>
-</ul>
-</li>
-</ul>
-
- <h4>Previous topic</h4>
- <p class="topless"><a href="M2Crypto.html"
- title="previous chapter">M2Crypto Package</a></p>
- <h4>Next topic</h4>
- <p class="topless"><a href="M2Crypto.SSL.html"
- title="next chapter">SSL Package</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/M2Crypto.PGP.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li class="right" >
- <a href="M2Crypto.SSL.html" title="SSL Package"
- >next</a> |</li>
- <li class="right" >
- <a href="M2Crypto.html" title="M2Crypto Package"
- >previous</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="M2Crypto.html" >M2Crypto Package</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/html/M2Crypto.SSL.html b/doc/html/M2Crypto.SSL.html
index 1c1eb09..63d1f24 100644
--- a/doc/html/M2Crypto.SSL.html
+++ b/doc/html/M2Crypto.SSL.html
@@ -1,149 +1,136 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>SSL Package &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
+ <title>SSL Package &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: './',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="index.html" />
- <link rel="up" title="M2Crypto Package" href="M2Crypto.html" />
- <link rel="prev" title="PGP Package" href="M2Crypto.PGP.html" />
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+ <link rel="prev" title="M2Crypto Package" href="M2Crypto.html" />
+
+ <link rel="stylesheet" href="_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li class="right" >
- <a href="M2Crypto.PGP.html" title="PGP Package"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="M2Crypto.html" accesskey="U">M2Crypto Package</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<div class="section" id="ssl-package">
<h1>SSL Package<a class="headerlink" href="#ssl-package" title="Permalink to this headline">¶</a></h1>
<div class="section" id="id1">
-<h2><tt class="xref py py-mod docutils literal"><span class="pre">SSL</span></tt> Package<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
+<h2><code class="xref py py-mod docutils literal"><span class="pre">SSL</span></code> Package<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
<span class="target" id="module-M2Crypto.SSL"></span><dl class="exception">
<dt id="M2Crypto.SSL.SSLError">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.SSL.</tt><tt class="descname">SSLError</tt><a class="reference internal" href="_modules/M2Crypto/SSL.html#SSLError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.SSLError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.SSL.</code><code class="descname">SSLError</code><a class="reference internal" href="_modules/M2Crypto/SSL.html#SSLError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.SSLError" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="M2Crypto.SSL.SSLTimeoutError">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.SSL.</tt><tt class="descname">SSLTimeoutError</tt><a class="reference internal" href="_modules/M2Crypto/SSL.html#SSLTimeoutError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.SSLTimeoutError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.SSL.SSLError" title="M2Crypto.SSL.SSLError"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.SSL.SSLError</span></tt></a>, <tt class="xref py py-class docutils literal"><span class="pre">socket.timeout</span></tt></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.SSL.</code><code class="descname">SSLTimeoutError</code><a class="reference internal" href="_modules/M2Crypto/SSL.html#SSLTimeoutError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.SSLTimeoutError" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#M2Crypto.SSL.SSLError" title="M2Crypto.SSL.SSLError"><code class="xref py py-class docutils literal"><span class="pre">M2Crypto.SSL.SSLError</span></code></a>, <code class="xref py py-class docutils literal"><span class="pre">socket.timeout</span></code></p>
</dd></dl>
</div>
<div class="section" id="module-M2Crypto.SSL.Checker">
-<span id="checker-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">Checker</span></tt> Module<a class="headerlink" href="#module-M2Crypto.SSL.Checker" title="Permalink to this headline">¶</a></h2>
+<span id="checker-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">Checker</span></code> Module<a class="headerlink" href="#module-M2Crypto.SSL.Checker" title="Permalink to this headline">¶</a></h2>
<p>SSL peer certificate checking routines</p>
<p>Copyright (c) 2004-2007 Open Source Applications Foundation.
All rights reserved.</p>
<p>Copyright 2008 Heikki Toivonen. All rights reserved.</p>
<dl class="exception">
<dt id="M2Crypto.SSL.Checker.SSLVerificationError">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.SSL.Checker.</tt><tt class="descname">SSLVerificationError</tt><a class="reference internal" href="_modules/M2Crypto/SSL/Checker.html#SSLVerificationError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Checker.SSLVerificationError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.SSL.Checker.</code><code class="descname">SSLVerificationError</code><a class="reference internal" href="_modules/M2Crypto/SSL/Checker.html#SSLVerificationError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Checker.SSLVerificationError" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="M2Crypto.SSL.Checker.NoCertificate">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.SSL.Checker.</tt><tt class="descname">NoCertificate</tt><a class="reference internal" href="_modules/M2Crypto/SSL/Checker.html#NoCertificate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Checker.NoCertificate" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.SSL.Checker.SSLVerificationError" title="M2Crypto.SSL.Checker.SSLVerificationError"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.SSL.Checker.SSLVerificationError</span></tt></a></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.SSL.Checker.</code><code class="descname">NoCertificate</code><a class="reference internal" href="_modules/M2Crypto/SSL/Checker.html#NoCertificate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Checker.NoCertificate" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#M2Crypto.SSL.Checker.SSLVerificationError" title="M2Crypto.SSL.Checker.SSLVerificationError"><code class="xref py py-class docutils literal"><span class="pre">M2Crypto.SSL.Checker.SSLVerificationError</span></code></a></p>
</dd></dl>
<dl class="exception">
<dt id="M2Crypto.SSL.Checker.WrongCertificate">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.SSL.Checker.</tt><tt class="descname">WrongCertificate</tt><a class="reference internal" href="_modules/M2Crypto/SSL/Checker.html#WrongCertificate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Checker.WrongCertificate" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.SSL.Checker.SSLVerificationError" title="M2Crypto.SSL.Checker.SSLVerificationError"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.SSL.Checker.SSLVerificationError</span></tt></a></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.SSL.Checker.</code><code class="descname">WrongCertificate</code><a class="reference internal" href="_modules/M2Crypto/SSL/Checker.html#WrongCertificate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Checker.WrongCertificate" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#M2Crypto.SSL.Checker.SSLVerificationError" title="M2Crypto.SSL.Checker.SSLVerificationError"><code class="xref py py-class docutils literal"><span class="pre">M2Crypto.SSL.Checker.SSLVerificationError</span></code></a></p>
</dd></dl>
<dl class="exception">
<dt id="M2Crypto.SSL.Checker.WrongHost">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.SSL.Checker.</tt><tt class="descname">WrongHost</tt><big>(</big><em>expectedHost</em>, <em>actualHost</em>, <em>fieldName='commonName'</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Checker.html#WrongHost"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Checker.WrongHost" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.SSL.Checker.SSLVerificationError" title="M2Crypto.SSL.Checker.SSLVerificationError"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.SSL.Checker.SSLVerificationError</span></tt></a></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.SSL.Checker.</code><code class="descname">WrongHost</code><span class="sig-paren">(</span><em>expectedHost</em>, <em>actualHost</em>, <em>fieldName='commonName'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Checker.html#WrongHost"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Checker.WrongHost" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#M2Crypto.SSL.Checker.SSLVerificationError" title="M2Crypto.SSL.Checker.SSLVerificationError"><code class="xref py py-class docutils literal"><span class="pre">M2Crypto.SSL.Checker.SSLVerificationError</span></code></a></p>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.SSL.Checker.Checker">
-<em class="property">class </em><tt class="descclassname">M2Crypto.SSL.Checker.</tt><tt class="descname">Checker</tt><big>(</big><em>host=None</em>, <em>peerCertHash=None</em>, <em>peerCertDigest='sha1'</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Checker.html#Checker"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Checker.Checker" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.SSL.Checker.</code><code class="descname">Checker</code><span class="sig-paren">(</span><em>host=None</em>, <em>peerCertHash=None</em>, <em>peerCertDigest='sha1'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Checker.html#Checker"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Checker.Checker" title="Permalink to this definition">¶</a></dt>
<dd><dl class="attribute">
<dt id="M2Crypto.SSL.Checker.Checker.numericIpMatch">
-<tt class="descname">numericIpMatch</tt><em class="property"> = &lt;_sre.SRE_Pattern object at 0x1fe7dd0&gt;</em><a class="headerlink" href="#M2Crypto.SSL.Checker.Checker.numericIpMatch" title="Permalink to this definition">¶</a></dt>
+<code class="descname">numericIpMatch</code><em class="property"> = &lt;_sre.SRE_Pattern object&gt;</em><a class="headerlink" href="#M2Crypto.SSL.Checker.Checker.numericIpMatch" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="section" id="module-M2Crypto.SSL.Cipher">
-<span id="cipher-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">Cipher</span></tt> Module<a class="headerlink" href="#module-M2Crypto.SSL.Cipher" title="Permalink to this headline">¶</a></h2>
+<span id="cipher-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">Cipher</span></code> Module<a class="headerlink" href="#module-M2Crypto.SSL.Cipher" title="Permalink to this headline">¶</a></h2>
<p>SSL Ciphers</p>
<p>Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.</p>
<dl class="class">
<dt id="M2Crypto.SSL.Cipher.Cipher">
-<em class="property">class </em><tt class="descclassname">M2Crypto.SSL.Cipher.</tt><tt class="descname">Cipher</tt><big>(</big><em>cipher</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Cipher.html#Cipher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Cipher.Cipher" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.SSL.Cipher.</code><code class="descname">Cipher</code><span class="sig-paren">(</span><em>cipher</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Cipher.html#Cipher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Cipher.Cipher" title="Permalink to this definition">¶</a></dt>
<dd><dl class="method">
<dt id="M2Crypto.SSL.Cipher.Cipher.name">
-<tt class="descname">name</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Cipher.html#Cipher.name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Cipher.Cipher.name" title="Permalink to this definition">¶</a></dt>
+<code class="descname">name</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Cipher.html#Cipher.name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Cipher.Cipher.name" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Cipher.Cipher.version">
-<tt class="descname">version</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Cipher.html#Cipher.version"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Cipher.Cipher.version" title="Permalink to this definition">¶</a></dt>
+<code class="descname">version</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Cipher.html#Cipher.version"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Cipher.Cipher.version" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.SSL.Cipher.Cipher_Stack">
-<em class="property">class </em><tt class="descclassname">M2Crypto.SSL.Cipher.</tt><tt class="descname">Cipher_Stack</tt><big>(</big><em>stack</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Cipher.html#Cipher_Stack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Cipher.Cipher_Stack" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.SSL.Cipher.</code><code class="descname">Cipher_Stack</code><span class="sig-paren">(</span><em>stack</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Cipher.html#Cipher_Stack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Cipher.Cipher_Stack" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</div>
<div class="section" id="module-M2Crypto.SSL.Connection">
-<span id="connection-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">Connection</span></tt> Module<a class="headerlink" href="#module-M2Crypto.SSL.Connection" title="Permalink to this headline">¶</a></h2>
+<span id="connection-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">Connection</span></code> Module<a class="headerlink" href="#module-M2Crypto.SSL.Connection" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.SSL.Connection.Connection">
-<em class="property">class </em><tt class="descclassname">M2Crypto.SSL.Connection.</tt><tt class="descname">Connection</tt><big>(</big><em>ctx</em>, <em>sock=None</em>, <em>family=2</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.SSL.Connection.</code><code class="descname">Connection</code><span class="sig-paren">(</span><em>ctx</em>, <em>sock=None</em>, <em>family=2</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection" title="Permalink to this definition">¶</a></dt>
<dd><p>An SSL connection.</p>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.accept">
-<tt class="descname">accept</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.accept"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.accept" title="Permalink to this definition">¶</a></dt>
+<code class="descname">accept</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.accept"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.accept" title="Permalink to this definition">¶</a></dt>
<dd><p>Accept an SSL connection.</p>
<p>The return value is a pair (ssl, addr) where ssl is a new SSL
connection object and addr is the address bound to the other end
@@ -164,7 +151,7 @@ optional ints.</td>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.accept_ssl">
-<tt class="descname">accept_ssl</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.accept_ssl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.accept_ssl" title="Permalink to this definition">¶</a></dt>
+<code class="descname">accept_ssl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.accept_ssl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.accept_ssl" title="Permalink to this definition">¶</a></dt>
<dd><p>Waits for a TLS/SSL client to initiate the TLS/SSL handshake.</p>
<p>The communication channel must already have been set and
assigned to the ssl by setting an underlying BIO.</p>
@@ -195,12 +182,12 @@ out the reason.</dd>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.bind">
-<tt class="descname">bind</tt><big>(</big><em>addr</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.bind"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.bind" title="Permalink to this definition">¶</a></dt>
+<code class="descname">bind</code><span class="sig-paren">(</span><em>addr</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.bind"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.bind" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.clear">
-<tt class="descname">clear</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.clear"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.clear" title="Permalink to this definition">¶</a></dt>
+<code class="descname">clear</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.clear"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.clear" title="Permalink to this definition">¶</a></dt>
<dd><p>If there were errors in this connection, call clear() rather
than close() to end it, so that bad sessions will be cleared
from cache.</p>
@@ -208,23 +195,23 @@ from cache.</p>
<dl class="attribute">
<dt id="M2Crypto.SSL.Connection.Connection.clientPostConnectionCheck">
-<tt class="descname">clientPostConnectionCheck</tt><em class="property"> = &lt;M2Crypto.SSL.Checker.Checker instance at 0x2057cf8&gt;</em><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.clientPostConnectionCheck" title="Permalink to this definition">¶</a></dt>
+<code class="descname">clientPostConnectionCheck</code><em class="property"> = &lt;M2Crypto.SSL.Checker.Checker instance&gt;</em><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.clientPostConnectionCheck" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.close">
-<tt class="descname">close</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.close" title="Permalink to this definition">¶</a></dt>
+<code class="descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.close" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.connect">
-<tt class="descname">connect</tt><big>(</big><em>addr</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.connect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.connect" title="Permalink to this definition">¶</a></dt>
+<code class="descname">connect</code><span class="sig-paren">(</span><em>addr</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.connect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.connect" title="Permalink to this definition">¶</a></dt>
<dd><p>Overloading socket.connect()</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>addr</strong> &#8211; addresses have various depending on their type</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>addr</strong> – addresses have various depending on their type</td>
</tr>
</tbody>
</table>
@@ -233,30 +220,30 @@ from cache.</p>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.connect_ssl">
-<tt class="descname">connect_ssl</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.connect_ssl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.connect_ssl" title="Permalink to this definition">¶</a></dt>
+<code class="descname">connect_ssl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.connect_ssl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.connect_ssl" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.fileno">
-<tt class="descname">fileno</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.fileno"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.fileno" title="Permalink to this definition">¶</a></dt>
+<code class="descname">fileno</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.fileno"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.fileno" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.get_cipher">
-<tt class="descname">get_cipher</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_cipher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_cipher" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_cipher</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_cipher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_cipher" title="Permalink to this definition">¶</a></dt>
<dd><p>Return an M2Crypto.SSL.Cipher object for this connection; if the
connection has not been initialised with a cipher suite, return None.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.get_cipher_list">
-<tt class="descname">get_cipher_list</tt><big>(</big><em>idx=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_cipher_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_cipher_list" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_cipher_list</code><span class="sig-paren">(</span><em>idx=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_cipher_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_cipher_list" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the cipher suites for this connection as a string object.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.get_ciphers">
-<tt class="descname">get_ciphers</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_ciphers"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_ciphers" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_ciphers</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_ciphers"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_ciphers" title="Permalink to this definition">¶</a></dt>
<dd><p>Return an M2Crypto.SSL.Cipher_Stack object for this
connection; if the connection has not been initialised with
cipher suites, return None.</p>
@@ -264,32 +251,32 @@ cipher suites, return None.</p>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.get_context">
-<tt class="descname">get_context</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_context"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_context" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return the SSL.Context object associated with this connection.</p>
+<code class="descname">get_context</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_context"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_context" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the Context object associated with this connection.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.get_default_session_timeout">
-<tt class="descname">get_default_session_timeout</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_default_session_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_default_session_timeout" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_default_session_timeout</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_default_session_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_default_session_timeout" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.get_peer_cert">
-<tt class="descname">get_peer_cert</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_peer_cert"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_peer_cert" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_peer_cert</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_peer_cert"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_peer_cert" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the peer certificate.</p>
<p>If the peer did not provide a certificate, return None.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.get_peer_cert_chain">
-<tt class="descname">get_peer_cert_chain</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_peer_cert_chain"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_peer_cert_chain" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_peer_cert_chain</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_peer_cert_chain"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_peer_cert_chain" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the peer certificate chain; if the peer did not provide
a certificate chain, return None.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Warning :</th><td class="field-body">The returned chain will be valid only for as long as the
+<tr class="field-odd field"><th class="field-name">Warning:</th><td class="field-body">The returned chain will be valid only for as long as the
connection object is alive. Once the connection object
gets freed, the chain will be freed as well.</td>
</tr>
@@ -299,28 +286,28 @@ gets freed, the chain will be freed as well.</td>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.get_session">
-<tt class="descname">get_session</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_session" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_session</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_session" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.get_shutdown">
-<tt class="descname">get_shutdown</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_shutdown"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_shutdown" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_shutdown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_shutdown"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_shutdown" title="Permalink to this definition">¶</a></dt>
<dd><p>Get the current shutdown mode of the Connection.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.get_socket_read_timeout">
-<tt class="descname">get_socket_read_timeout</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_socket_read_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_socket_read_timeout" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_socket_read_timeout</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_socket_read_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_socket_read_timeout" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.get_socket_write_timeout">
-<tt class="descname">get_socket_write_timeout</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_socket_write_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_socket_write_timeout" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_socket_write_timeout</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_socket_write_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_socket_write_timeout" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.get_state">
-<tt class="descname">get_state</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_state"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_state" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_state</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_state"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_state" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the SSL state of this connection.</p>
<p>During its use, an SSL objects passes several states. The state
is internally maintained. Querying the state information is not
@@ -340,31 +327,31 @@ object ssl.</td>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.get_verify_depth">
-<tt class="descname">get_verify_depth</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_verify_depth"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_verify_depth" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_verify_depth</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_verify_depth"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_verify_depth" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the peer certificate verification depth.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.get_verify_mode">
-<tt class="descname">get_verify_mode</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_verify_mode"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_verify_mode" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_verify_mode</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_verify_mode"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_verify_mode" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the peer certificate verification mode.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.get_verify_result">
-<tt class="descname">get_verify_result</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_verify_result"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_verify_result" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_verify_result</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_verify_result"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_verify_result" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the peer certificate verification result.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.get_version">
-<tt class="descname">get_version</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_version"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_version" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_version</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.get_version"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.get_version" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the TLS/SSL protocol version for this connection.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.getpeername">
-<tt class="descname">getpeername</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.getpeername"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.getpeername" title="Permalink to this definition">¶</a></dt>
+<code class="descname">getpeername</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.getpeername"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.getpeername" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the remote address to which the socket is connected.</p>
<p>This is useful to find out the port number of a remote IPv4/v6 socket,
for instance.
@@ -381,24 +368,24 @@ On some systems this function is not supported.</p>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.getsockname">
-<tt class="descname">getsockname</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.getsockname"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.getsockname" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return the socket&#8217;s own address.</p>
+<code class="descname">getsockname</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.getsockname"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.getsockname" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the socket’s own address.</p>
<p>This is useful to find out the port number of an IPv4/v6 socket,
for instance. (The format of the address returned depends
-on the address family &#8211; see above.)</p>
-<p>:return:socket&#8217;s address as addr type</p>
+on the address family – see above.)</p>
+<p>:return:socket’s address as addr type</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.getsockopt">
-<tt class="descname">getsockopt</tt><big>(</big><em>level</em>, <em>optname</em>, <em>buflen=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.getsockopt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.getsockopt" title="Permalink to this definition">¶</a></dt>
+<code class="descname">getsockopt</code><span class="sig-paren">(</span><em>level</em>, <em>optname</em>, <em>buflen=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.getsockopt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.getsockopt" title="Permalink to this definition">¶</a></dt>
<dd><p>Get the value of the given socket option.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>level</strong> &#8211; level at which the option resides.
+<li><strong>level</strong> – level at which the option resides.
To manipulate options at the sockets API level, level is
specified as socket.SOL_SOCKET. To manipulate options at
any other level the protocol number of the appropriate
@@ -406,11 +393,11 @@ protocol controlling the option is supplied. For example,
to indicate that an option is to be interpreted by the
TCP protocol, level should be set to the protocol number
of socket.SOL_TCP; see getprotoent(3).</li>
-<li><strong>optname</strong> &#8211; The value of the given socket option is
+<li><strong>optname</strong> – The value of the given socket option is
described in the Unix man page getsockopt(2)). The needed
symbolic constants (SO_* etc.) are defined in the socket
module.</li>
-<li><strong>buflen</strong> &#8211; If it is absent, an integer option is assumed
+<li><strong>buflen</strong> – If it is absent, an integer option is assumed
and its integer value is returned by the function. If
buflen is present, it specifies the maximum length of the
buffer used to receive the option in, and this buffer is
@@ -430,70 +417,83 @@ C structures encoded as byte strings).</p>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.listen">
-<tt class="descname">listen</tt><big>(</big><em>qlen=5</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.listen"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.listen" title="Permalink to this definition">¶</a></dt>
+<code class="descname">listen</code><span class="sig-paren">(</span><em>qlen=5</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.listen"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.listen" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.m2_bio_free">
-<tt class="descname">m2_bio_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.m2_bio_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_bio_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.m2_bio_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.m2_ssl_free">
-<tt class="descname">m2_ssl_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.m2_ssl_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_ssl_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.m2_ssl_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.makefile">
-<tt class="descname">makefile</tt><big>(</big><em>mode='rb'</em>, <em>bufsize=-1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.makefile"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.makefile" title="Permalink to this definition">¶</a></dt>
+<code class="descname">makefile</code><span class="sig-paren">(</span><em>mode='rb'</em>, <em>bufsize=-1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.makefile"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.makefile" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.pending">
-<tt class="descname">pending</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.pending"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.pending" title="Permalink to this definition">¶</a></dt>
+<code class="descname">pending</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.pending"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.pending" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the numbers of octets that can be read from the connection.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.read">
-<tt class="descname">read</tt><big>(</big><em>size=1024</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.read" title="Permalink to this definition">¶</a></dt>
+<code class="descname">read</code><span class="sig-paren">(</span><em>size=1024</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.read" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.recv">
-<tt class="descname">recv</tt><big>(</big><em>size=1024</em><big>)</big><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.recv" title="Permalink to this definition">¶</a></dt>
+<code class="descname">recv</code><span class="sig-paren">(</span><em>size=1024</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.recv" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
+<dt id="M2Crypto.SSL.Connection.Connection.recv_into">
+<code class="descname">recv_into</code><span class="sig-paren">(</span><em>buff</em>, <em>nbytes=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.recv_into"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.recv_into" title="Permalink to this definition">¶</a></dt>
+<dd><p>A version of recv() that stores its data into a buffer rather
+than creating a new string. Receive up to buffersize bytes from
+the socket. If buffersize is not specified (or 0), receive up
+to the size available in the given buffer.</p>
+<p>&#64;param buffer: a buffer for the received bytes
+&#64;param nbytes: maximum number of bytes to read
+&#64;return: number of bytes added</p>
+<p>See recv() for documentation about the flags.</p>
+</dd></dl>
+
+<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.renegotiate">
-<tt class="descname">renegotiate</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.renegotiate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.renegotiate" title="Permalink to this definition">¶</a></dt>
-<dd><p>Renegotiate this connection&#8217;s SSL parameters.</p>
+<code class="descname">renegotiate</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.renegotiate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.renegotiate" title="Permalink to this definition">¶</a></dt>
+<dd><p>Renegotiate this connection’s SSL parameters.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.send">
-<tt class="descname">send</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.send" title="Permalink to this definition">¶</a></dt>
+<code class="descname">send</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.send" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.sendall">
-<tt class="descname">sendall</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.sendall" title="Permalink to this definition">¶</a></dt>
+<code class="descname">sendall</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.sendall" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.serverPostConnectionCheck">
-<tt class="descname">serverPostConnectionCheck</tt><big>(</big><em>*args</em>, <em>**kw</em><big>)</big><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.serverPostConnectionCheck" title="Permalink to this definition">¶</a></dt>
+<code class="descname">serverPostConnectionCheck</code><span class="sig-paren">(</span><em>*args</em>, <em>**kw</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.serverPostConnectionCheck" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.set_accept_state">
-<tt class="descname">set_accept_state</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_accept_state"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_accept_state" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_accept_state</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_accept_state"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_accept_state" title="Permalink to this definition">¶</a></dt>
<dd><p>Sets Connection to work in the server mode.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.set_bio">
-<tt class="descname">set_bio</tt><big>(</big><em>readbio</em>, <em>writebio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_bio</code><span class="sig-paren">(</span><em>readbio</em>, <em>writebio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Explicitly set read and write bios</p>
<p>Connects the BIOs for the read and write operations of the
TLS/SSL (encrypted) side of ssl.</p>
@@ -508,8 +508,8 @@ different).</p>
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>readbio</strong> &#8211; BIO for reading</li>
-<li><strong>writebio</strong> &#8211; BIO for writing.</li>
+<li><strong>readbio</strong> – BIO for reading</li>
+<li><strong>writebio</strong> – BIO for writing.</li>
</ul>
</td>
</tr>
@@ -519,13 +519,13 @@ different).</p>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.set_cipher_list">
-<tt class="descname">set_cipher_list</tt><big>(</big><em>cipher_list</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_cipher_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_cipher_list" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_cipher_list</code><span class="sig-paren">(</span><em>cipher_list</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_cipher_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_cipher_list" title="Permalink to this definition">¶</a></dt>
<dd><p>Set the cipher suites for this connection.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.set_client_CA_list_from_context">
-<tt class="descname">set_client_CA_list_from_context</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_client_CA_list_from_context"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_client_CA_list_from_context" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_client_CA_list_from_context</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_client_CA_list_from_context"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_client_CA_list_from_context" title="Permalink to this definition">¶</a></dt>
<dd><p>Set the acceptable client CA list. If the client
returns a certificate, it must have been issued by
one of the CAs listed in context.</p>
@@ -534,7 +534,7 @@ one of the CAs listed in context.</p>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.set_client_CA_list_from_file">
-<tt class="descname">set_client_CA_list_from_file</tt><big>(</big><em>cafile</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_client_CA_list_from_file"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_client_CA_list_from_file" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_client_CA_list_from_file</code><span class="sig-paren">(</span><em>cafile</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_client_CA_list_from_file"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_client_CA_list_from_file" title="Permalink to this definition">¶</a></dt>
<dd><p>Set the acceptable client CA list.</p>
<p>If the client returns a certificate, it must have been issued by
one of the CAs listed in cafile.</p>
@@ -543,7 +543,7 @@ one of the CAs listed in cafile.</p>
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>cafile</strong> &#8211; Filename from which to load the CA list.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>cafile</strong> – Filename from which to load the CA list.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><dl class="docutils">
<dt>0 A failure while manipulating the STACK_OF(X509_NAME)</dt>
@@ -560,40 +560,40 @@ out the reason.</dd>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.set_connect_state">
-<tt class="descname">set_connect_state</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_connect_state"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_connect_state" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_connect_state</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_connect_state"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_connect_state" title="Permalink to this definition">¶</a></dt>
<dd><p>Sets Connection to work in the client mode.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.set_post_connection_check_callback">
-<tt class="descname">set_post_connection_check_callback</tt><big>(</big><em>postConnectionCheck</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_post_connection_check_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_post_connection_check_callback" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_post_connection_check_callback</code><span class="sig-paren">(</span><em>postConnectionCheck</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_post_connection_check_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_post_connection_check_callback" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.set_session">
-<tt class="descname">set_session</tt><big>(</big><em>session</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_session" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_session</code><span class="sig-paren">(</span><em>session</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_session" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.set_session_id_ctx">
-<tt class="descname">set_session_id_ctx</tt><big>(</big><em>id</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_session_id_ctx"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_session_id_ctx" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_session_id_ctx</code><span class="sig-paren">(</span><em>id</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_session_id_ctx"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_session_id_ctx" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.set_shutdown">
-<tt class="descname">set_shutdown</tt><big>(</big><em>mode</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_shutdown"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_shutdown" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_shutdown</code><span class="sig-paren">(</span><em>mode</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_shutdown"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_shutdown" title="Permalink to this definition">¶</a></dt>
<dd><p>Sets the shutdown state of the Connection to mode.</p>
<p>The shutdown state of an ssl connection is a bitmask of (use
m2.SSL_* constants):</p>
<p>0 No shutdown setting, yet.</p>
<dl class="docutils">
<dt>SSL_SENT_SHUTDOWN</dt>
-<dd>A &#8220;close notify&#8221; shutdown alert was sent to the peer, the
+<dd>A “close notify” shutdown alert was sent to the peer, the
connection is being considered closed and the session is
closed and correct.</dd>
<dt>SSL_RECEIVED_SHUTDOWN</dt>
<dd>A shutdown alert was received form the peer, either a normal
-&#8220;close notify&#8221; or a fatal error.</dd>
+“close notify” or a fatal error.</dd>
</dl>
<p>SSL_SENT_SHUTDOWN and SSL_RECEIVED_SHUTDOWN can be set at the
same time.</p>
@@ -601,7 +601,7 @@ same time.</p>
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>mode</strong> &#8211; set the mode bitmask.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>mode</strong> – set the mode bitmask.</td>
</tr>
</tbody>
</table>
@@ -609,24 +609,24 @@ same time.</p>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.set_socket_read_timeout">
-<tt class="descname">set_socket_read_timeout</tt><big>(</big><em>timeo</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_socket_read_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_socket_read_timeout" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_socket_read_timeout</code><span class="sig-paren">(</span><em>timeo</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_socket_read_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_socket_read_timeout" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.set_socket_write_timeout">
-<tt class="descname">set_socket_write_timeout</tt><big>(</big><em>timeo</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_socket_write_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_socket_write_timeout" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_socket_write_timeout</code><span class="sig-paren">(</span><em>timeo</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_socket_write_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_socket_write_timeout" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.set_ssl_close_flag">
-<tt class="descname">set_ssl_close_flag</tt><big>(</big><em>flag</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_ssl_close_flag"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_ssl_close_flag" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_ssl_close_flag</code><span class="sig-paren">(</span><em>flag</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_ssl_close_flag"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_ssl_close_flag" title="Permalink to this definition">¶</a></dt>
<dd><p>By default, SSL struct will be freed in __del__. Call with
m2.bio_close to override this default.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>flag</strong> &#8211; either m2.bio_close or m2.bio_noclose</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>flag</strong> – either m2.bio_close or m2.bio_noclose</td>
</tr>
</tbody>
</table>
@@ -634,19 +634,19 @@ m2.bio_close to override this default.</p>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.set_tlsext_host_name">
-<tt class="descname">set_tlsext_host_name</tt><big>(</big><em>name</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_tlsext_host_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_tlsext_host_name" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_tlsext_host_name</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.set_tlsext_host_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.set_tlsext_host_name" title="Permalink to this definition">¶</a></dt>
<dd><p>Set the requested hostname for the SNI (Server Name Indication)
extension.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.setblocking">
-<tt class="descname">setblocking</tt><big>(</big><em>mode</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.setblocking"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.setblocking" title="Permalink to this definition">¶</a></dt>
-<dd><p>Set this connection&#8217;s underlying socket to _mode_.</p>
+<code class="descname">setblocking</code><span class="sig-paren">(</span><em>mode</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.setblocking"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.setblocking" title="Permalink to this definition">¶</a></dt>
+<dd><p>Set this connection’s underlying socket to _mode_.</p>
<p>Set blocking or non-blocking mode of the socket: if flag is 0,
the socket is set to non-blocking, else to blocking mode.
Initially all sockets are in blocking mode. In non-blocking mode,
-if a recv() call doesn&#8217;t find any data, or if a send() call can&#8217;t
+if a recv() call doesn’t find any data, or if a send() call can’t
immediately dispose of the data, a error exception is raised;
in blocking mode, the calls block until they can proceed.
s.setblocking(0) is equivalent to s.settimeout(0.0);
@@ -655,7 +655,7 @@ s.setblocking(1) is equivalent to s.settimeout(None).</p>
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>mode</strong> &#8211; new mode to be set</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>mode</strong> – new mode to be set</td>
</tr>
</tbody>
</table>
@@ -663,16 +663,16 @@ s.setblocking(1) is equivalent to s.settimeout(None).</p>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.setsockopt">
-<tt class="descname">setsockopt</tt><big>(</big><em>level</em>, <em>optname</em>, <em>value=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.setsockopt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.setsockopt" title="Permalink to this definition">¶</a></dt>
+<code class="descname">setsockopt</code><span class="sig-paren">(</span><em>level</em>, <em>optname</em>, <em>value=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.setsockopt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.setsockopt" title="Permalink to this definition">¶</a></dt>
<dd><p>Set the value of the given socket option.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>level</strong> &#8211; same as with getsockopt() above</li>
-<li><strong>optname</strong> &#8211; same as with getsockopt() above</li>
-<li><strong>value</strong> &#8211; an integer or a string representing a buffer. In
+<li><strong>level</strong> – same as with getsockopt() above</li>
+<li><strong>optname</strong> – same as with getsockopt() above</li>
+<li><strong>value</strong> – an integer or a string representing a buffer. In
the latter case it is up to the caller to ensure
that the string contains the proper bits (see the
optional built-in module struct for a way to
@@ -689,63 +689,63 @@ encode C structures as strings).</li>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.settimeout">
-<tt class="descname">settimeout</tt><big>(</big><em>timeout</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.settimeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.settimeout" title="Permalink to this definition">¶</a></dt>
-<dd><p>Set this connection&#8217;s underlying socket&#8217;s timeout to _timeout_.</p>
+<code class="descname">settimeout</code><span class="sig-paren">(</span><em>timeout</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.settimeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.settimeout" title="Permalink to this definition">¶</a></dt>
+<dd><p>Set this connection’s underlying socket’s timeout to _timeout_.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.setup_addr">
-<tt class="descname">setup_addr</tt><big>(</big><em>addr</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.setup_addr"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.setup_addr" title="Permalink to this definition">¶</a></dt>
+<code class="descname">setup_addr</code><span class="sig-paren">(</span><em>addr</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.setup_addr"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.setup_addr" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.setup_ssl">
-<tt class="descname">setup_ssl</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.setup_ssl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.setup_ssl" title="Permalink to this definition">¶</a></dt>
+<code class="descname">setup_ssl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.setup_ssl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.setup_ssl" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.shutdown">
-<tt class="descname">shutdown</tt><big>(</big><em>how</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.shutdown"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.shutdown" title="Permalink to this definition">¶</a></dt>
+<code class="descname">shutdown</code><span class="sig-paren">(</span><em>how</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.shutdown"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.shutdown" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.ssl_get_error">
-<tt class="descname">ssl_get_error</tt><big>(</big><em>ret</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.ssl_get_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.ssl_get_error" title="Permalink to this definition">¶</a></dt>
+<code class="descname">ssl_get_error</code><span class="sig-paren">(</span><em>ret</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.ssl_get_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.ssl_get_error" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.verify_ok">
-<tt class="descname">verify_ok</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.verify_ok"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.verify_ok" title="Permalink to this definition">¶</a></dt>
+<code class="descname">verify_ok</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.verify_ok"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.verify_ok" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Connection.Connection.write">
-<tt class="descname">write</tt><big>(</big><em>data</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.write" title="Permalink to this definition">¶</a></dt>
+<code class="descname">write</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Connection.html#Connection.write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Connection.Connection.write" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="section" id="module-M2Crypto.SSL.Context">
-<span id="context-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">Context</span></tt> Module<a class="headerlink" href="#module-M2Crypto.SSL.Context" title="Permalink to this headline">¶</a></h2>
+<span id="context-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">Context</span></code> Module<a class="headerlink" href="#module-M2Crypto.SSL.Context" title="Permalink to this headline">¶</a></h2>
<dl class="function">
<dt id="M2Crypto.SSL.Context.ctxmap">
-<tt class="descclassname">M2Crypto.SSL.Context.</tt><tt class="descname">ctxmap</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#ctxmap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.ctxmap" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SSL.Context.</code><code class="descname">ctxmap</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#ctxmap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.ctxmap" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="class">
<dt id="M2Crypto.SSL.Context.Context">
-<em class="property">class </em><tt class="descclassname">M2Crypto.SSL.Context.</tt><tt class="descname">Context</tt><big>(</big><em>protocol='tls'</em>, <em>weak_crypto=None</em>, <em>post_connection_check=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context" title="Permalink to this definition">¶</a></dt>
-<dd><p>&#8216;Context&#8217; for SSL connections.</p>
+<em class="property">class </em><code class="descclassname">M2Crypto.SSL.Context.</code><code class="descname">Context</code><span class="sig-paren">(</span><em>protocol='tls'</em>, <em>weak_crypto=None</em>, <em>post_connection_check=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context" title="Permalink to this definition">¶</a></dt>
+<dd><p>‘Context’ for SSL connections.</p>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.add_session">
-<tt class="descname">add_session</tt><big>(</big><em>session</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.add_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.add_session" title="Permalink to this definition">¶</a></dt>
+<code class="descname">add_session</code><span class="sig-paren">(</span><em>session</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.add_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.add_session" title="Permalink to this definition">¶</a></dt>
<dd><p>Add the session to the context.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>session</strong> &#8211; the session to be added.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>session</strong> – the session to be added.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><dl class="docutils">
<dt>0 The operation failed. It was tried to add the same</dt>
@@ -760,26 +760,26 @@ encode C structures as strings).</li>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.close">
-<tt class="descname">close</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.close" title="Permalink to this definition">¶</a></dt>
+<code class="descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.close" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.get_allow_unknown_ca">
-<tt class="descname">get_allow_unknown_ca</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.get_allow_unknown_ca"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.get_allow_unknown_ca" title="Permalink to this definition">¶</a></dt>
-<dd><p>Get the context&#8217;s setting that accepts/rejects a peer
-certificate if the certificate&#8217;s CA is unknown.</p>
+<code class="descname">get_allow_unknown_ca</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.get_allow_unknown_ca"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.get_allow_unknown_ca" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get the context’s setting that accepts/rejects a peer
+certificate if the certificate’s CA is unknown.</p>
<p>FIXME 2Bconverted to bool</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.get_cert_store">
-<tt class="descname">get_cert_store</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.get_cert_store"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.get_cert_store" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_cert_store</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.get_cert_store"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.get_cert_store" title="Permalink to this definition">¶</a></dt>
<dd><p>Get the certificate store associated with this context.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Warning :</th><td class="field-body">The store is NOT refcounted, and as such can not be relied
+<tr class="field-odd field"><th class="field-name">Warning:</th><td class="field-body">The store is NOT refcounted, and as such can not be relied
to be valid once the context goes away or is changed.</td>
</tr>
</tbody>
@@ -788,7 +788,7 @@ to be valid once the context goes away or is changed.</td>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.get_session_cache_mode">
-<tt class="descname">get_session_cache_mode</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.get_session_cache_mode"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.get_session_cache_mode" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_session_cache_mode</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.get_session_cache_mode"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.get_session_cache_mode" title="Permalink to this definition">¶</a></dt>
<dd><p>Gets the current session caching.</p>
<p>The mode is set to m2.SSL_SESS_CACHE_* constants.</p>
<table class="docutils field-list" frame="void" rules="none">
@@ -803,7 +803,7 @@ to be valid once the context goes away or is changed.</td>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.get_session_timeout">
-<tt class="descname">get_session_timeout</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.get_session_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.get_session_timeout" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_session_timeout</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.get_session_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.get_session_timeout" title="Permalink to this definition">¶</a></dt>
<dd><p>Get current session timeout.</p>
<p>Whenever a new session is created, it is assigned a maximum
lifetime. This lifetime is specified by storing the creation
@@ -835,29 +835,29 @@ seconds.</p>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.get_verify_depth">
-<tt class="descname">get_verify_depth</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.get_verify_depth"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.get_verify_depth" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_verify_depth</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.get_verify_depth"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.get_verify_depth" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the verification mode currently set in the SSL Context.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.get_verify_mode">
-<tt class="descname">get_verify_mode</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.get_verify_mode"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.get_verify_mode" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_verify_mode</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.get_verify_mode"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.get_verify_mode" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.load_cert">
-<tt class="descname">load_cert</tt><big>(</big><em>certfile</em>, <em>keyfile=None</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.load_cert"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.load_cert" title="Permalink to this definition">¶</a></dt>
+<code class="descname">load_cert</code><span class="sig-paren">(</span><em>certfile</em>, <em>keyfile=None</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.load_cert"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.load_cert" title="Permalink to this definition">¶</a></dt>
<dd><p>Load certificate and private key into the context.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>certfile</strong> &#8211; File that contains the PEM-encoded certificate.</li>
-<li><strong>keyfile</strong> &#8211; File that contains the PEM-encoded private key.
+<li><strong>certfile</strong> – File that contains the PEM-encoded certificate.</li>
+<li><strong>keyfile</strong> – File that contains the PEM-encoded private key.
Default value of None indicates that the private key
-is to be found in &#8216;certfile&#8217;.</li>
-<li><strong>callback</strong> &#8211; Callable object to be invoked if the private key is
+is to be found in ‘certfile’.</li>
+<li><strong>callback</strong> – Callable object to be invoked if the private key is
passphrase-protected. Default callback provides a
simple terminal-style input for the passphrase.</li>
</ul>
@@ -869,19 +869,19 @@ simple terminal-style input for the passphrase.</li>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.load_cert_chain">
-<tt class="descname">load_cert_chain</tt><big>(</big><em>certchainfile</em>, <em>keyfile=None</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.load_cert_chain"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.load_cert_chain" title="Permalink to this definition">¶</a></dt>
+<code class="descname">load_cert_chain</code><span class="sig-paren">(</span><em>certchainfile</em>, <em>keyfile=None</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.load_cert_chain"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.load_cert_chain" title="Permalink to this definition">¶</a></dt>
<dd><p>Load certificate chain and private key into the context.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>certchainfile</strong> &#8211; File object containing the PEM-encoded
+<li><strong>certchainfile</strong> – File object containing the PEM-encoded
certificate chain.</li>
-<li><strong>keyfile</strong> &#8211; File object containing the PEM-encoded private
+<li><strong>keyfile</strong> – File object containing the PEM-encoded private
key. Default value of None indicates that the
-private key is to be found in &#8216;certchainfile&#8217;.</li>
-<li><strong>callback</strong> &#8211; Callable object to be invoked if the private key
+private key is to be found in ‘certchainfile’.</li>
+<li><strong>callback</strong> – Callable object to be invoked if the private key
is passphrase-protected. Default callback
provides a simple terminal-style input for the
passphrase.</li>
@@ -894,14 +894,14 @@ passphrase.</li>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.load_client_CA">
-<tt class="descname">load_client_CA</tt><big>(</big><em>cafile</em><big>)</big><a class="headerlink" href="#M2Crypto.SSL.Context.Context.load_client_CA" title="Permalink to this definition">¶</a></dt>
+<code class="descname">load_client_CA</code><span class="sig-paren">(</span><em>cafile</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.SSL.Context.Context.load_client_CA" title="Permalink to this definition">¶</a></dt>
<dd><p>Load CA certs into the context. These CA certs are sent to the
peer during <em>SSLv3 certificate request</em>.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>cafile</strong> &#8211; File object containing one or more PEM-encoded CA
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>cafile</strong> – File object containing one or more PEM-encoded CA
certificates concatenated together.</td>
</tr>
</tbody>
@@ -910,14 +910,14 @@ certificates concatenated together.</td>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.load_client_ca">
-<tt class="descname">load_client_ca</tt><big>(</big><em>cafile</em><big>)</big><a class="headerlink" href="#M2Crypto.SSL.Context.Context.load_client_ca" title="Permalink to this definition">¶</a></dt>
+<code class="descname">load_client_ca</code><span class="sig-paren">(</span><em>cafile</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.SSL.Context.Context.load_client_ca" title="Permalink to this definition">¶</a></dt>
<dd><p>Load CA certs into the context. These CA certs are sent to the
peer during <em>SSLv3 certificate request</em>.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>cafile</strong> &#8211; File object containing one or more PEM-encoded CA
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>cafile</strong> – File object containing one or more PEM-encoded CA
certificates concatenated together.</td>
</tr>
</tbody>
@@ -926,18 +926,18 @@ certificates concatenated together.</td>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.load_verify_info">
-<tt class="descname">load_verify_info</tt><big>(</big><em>cafile=None</em>, <em>capath=None</em><big>)</big><a class="headerlink" href="#M2Crypto.SSL.Context.Context.load_verify_info" title="Permalink to this definition">¶</a></dt>
+<code class="descname">load_verify_info</code><span class="sig-paren">(</span><em>cafile=None</em>, <em>capath=None</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.SSL.Context.Context.load_verify_info" title="Permalink to this definition">¶</a></dt>
<dd><p>Load CA certs into the context.</p>
-<p>These CA certs are used during verification of the peer&#8217;s
+<p>These CA certs are used during verification of the peer’s
certificate.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>cafile</strong> &#8211; File containing one or more PEM-encoded CA
+<li><strong>cafile</strong> – File containing one or more PEM-encoded CA
certificates concatenated together.</li>
-<li><strong>capath</strong> &#8211; Directory containing PEM-encoded CA certificates
+<li><strong>capath</strong> – Directory containing PEM-encoded CA certificates
(one certificate per file).</li>
</ul>
</td>
@@ -958,18 +958,18 @@ Check the error stack to find out the reason.</p>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.load_verify_locations">
-<tt class="descname">load_verify_locations</tt><big>(</big><em>cafile=None</em>, <em>capath=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.load_verify_locations"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.load_verify_locations" title="Permalink to this definition">¶</a></dt>
+<code class="descname">load_verify_locations</code><span class="sig-paren">(</span><em>cafile=None</em>, <em>capath=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.load_verify_locations"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.load_verify_locations" title="Permalink to this definition">¶</a></dt>
<dd><p>Load CA certs into the context.</p>
-<p>These CA certs are used during verification of the peer&#8217;s
+<p>These CA certs are used during verification of the peer’s
certificate.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>cafile</strong> &#8211; File containing one or more PEM-encoded CA
+<li><strong>cafile</strong> – File containing one or more PEM-encoded CA
certificates concatenated together.</li>
-<li><strong>capath</strong> &#8211; Directory containing PEM-encoded CA certificates
+<li><strong>capath</strong> – Directory containing PEM-encoded CA certificates
(one certificate per file).</li>
</ul>
</td>
@@ -990,18 +990,18 @@ Check the error stack to find out the reason.</p>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.m2_ssl_ctx_free">
-<tt class="descname">m2_ssl_ctx_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.SSL.Context.Context.m2_ssl_ctx_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_ssl_ctx_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.SSL.Context.Context.m2_ssl_ctx_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.remove_session">
-<tt class="descname">remove_session</tt><big>(</big><em>session</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.remove_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.remove_session" title="Permalink to this definition">¶</a></dt>
+<code class="descname">remove_session</code><span class="sig-paren">(</span><em>session</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.remove_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.remove_session" title="Permalink to this definition">¶</a></dt>
<dd><p>Remove the session from the context.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>session</strong> &#8211; the session to be removed.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>session</strong> – the session to be removed.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><dl class="docutils">
<dt>0 The operation failed. The session was not found in</dt>
@@ -1016,14 +1016,14 @@ Check the error stack to find out the reason.</p>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.set_allow_unknown_ca">
-<tt class="descname">set_allow_unknown_ca</tt><big>(</big><em>ok</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_allow_unknown_ca"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_allow_unknown_ca" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_allow_unknown_ca</code><span class="sig-paren">(</span><em>ok</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_allow_unknown_ca"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_allow_unknown_ca" title="Permalink to this definition">¶</a></dt>
<dd><p>Set the context to accept/reject a peer certificate if the
-certificate&#8217;s CA is unknown.</p>
+certificate’s CA is unknown.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>ok</strong> &#8211; True to accept, False to reject.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>ok</strong> – True to accept, False to reject.</td>
</tr>
</tbody>
</table>
@@ -1031,13 +1031,13 @@ certificate&#8217;s CA is unknown.</p>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.set_cipher_list">
-<tt class="descname">set_cipher_list</tt><big>(</big><em>cipher_list</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_cipher_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_cipher_list" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_cipher_list</code><span class="sig-paren">(</span><em>cipher_list</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_cipher_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_cipher_list" title="Permalink to this definition">¶</a></dt>
<dd><p>Sets the list of available ciphers.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>cipher_list</strong> &#8211; The format of the string is described in
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>cipher_list</strong> – The format of the string is described in
ciphers(1).</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">1 if any cipher could be selected and 0 on complete
@@ -1049,14 +1049,14 @@ failure.</td>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.set_client_CA_list_from_file">
-<tt class="descname">set_client_CA_list_from_file</tt><big>(</big><em>cafile</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_client_CA_list_from_file"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_client_CA_list_from_file" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_client_CA_list_from_file</code><span class="sig-paren">(</span><em>cafile</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_client_CA_list_from_file"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_client_CA_list_from_file" title="Permalink to this definition">¶</a></dt>
<dd><p>Load CA certs into the context. These CA certs are sent to the
peer during <em>SSLv3 certificate request</em>.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>cafile</strong> &#8211; File object containing one or more PEM-encoded CA
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>cafile</strong> – File object containing one or more PEM-encoded CA
certificates concatenated together.</td>
</tr>
</tbody>
@@ -1065,14 +1065,14 @@ certificates concatenated together.</td>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.set_default_verify_paths">
-<tt class="descname">set_default_verify_paths</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_default_verify_paths"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_default_verify_paths" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_default_verify_paths</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_default_verify_paths"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_default_verify_paths" title="Permalink to this definition">¶</a></dt>
<dd><p>Specifies that the default locations from which CA certs are
loaded should be used.</p>
<p>There is one default directory and one default file. The default
-CA certificates directory is called &#8220;certs&#8221; in the default
+CA certificates directory is called “certs” in the default
OpenSSL directory. Alternatively the SSL_CERT_DIR environment
variable can be defined to override this location. The default
-CA certificates file is called &#8220;cert.pem&#8221; in the default OpenSSL
+CA certificates file is called “cert.pem” in the default OpenSSL
directory. Alternatively the SSL_CERT_FILE environment variable
can be defined to override this location.</p>
<dl class="docutils">
@@ -1086,7 +1086,7 @@ can be defined to override this location.</p>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.set_info_callback">
-<tt class="descname">set_info_callback</tt><big>(</big><em>callback=&lt;function ssl_info_callback at 0x202cf50&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_info_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_info_callback" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_info_callback</code><span class="sig-paren">(</span><em>callback=&lt;function ssl_info_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_info_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_info_callback" title="Permalink to this definition">¶</a></dt>
<dd><p>Set a callback function to get state information.</p>
<p>It can be used to get state information about the SSL
connections that are created from this context.</p>
@@ -1094,7 +1094,7 @@ connections that are created from this context.</p>
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>callback</strong> &#8211; Callback function. The default prints
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>callback</strong> – Callback function. The default prints
information to stderr.</td>
</tr>
</tbody>
@@ -1103,7 +1103,7 @@ information to stderr.</td>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.set_options">
-<tt class="descname">set_options</tt><big>(</big><em>op</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_options"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_options" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_options</code><span class="sig-paren">(</span><em>op</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_options"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_options" title="Permalink to this definition">¶</a></dt>
<dd><p>Adds the options set via bitmask in options to the Context.</p>
<p>!!! Options already set before are not cleared!</p>
<p>The behaviour of the SSL library can be changed by setting
@@ -1122,7 +1122,7 @@ affect the settings.</p>
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>op</strong> &#8211; bitmask of additional options specified in
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>op</strong> – bitmask of additional options specified in
SSL_CTX_set_options(3) manpage.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">the new options bitmask after adding options.</td>
@@ -1133,14 +1133,14 @@ SSL_CTX_set_options(3) manpage.</td>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.set_session_cache_mode">
-<tt class="descname">set_session_cache_mode</tt><big>(</big><em>mode</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_session_cache_mode"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_session_cache_mode" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_session_cache_mode</code><span class="sig-paren">(</span><em>mode</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_session_cache_mode"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_session_cache_mode" title="Permalink to this definition">¶</a></dt>
<dd><p>Enables/disables session caching.</p>
<p>The mode is set by using m2.SSL_SESS_CACHE_* constants.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>mode</strong> &#8211; new mode value.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>mode</strong> – new mode value.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">the previously set cache mode value.</td>
</tr>
@@ -1150,13 +1150,13 @@ SSL_CTX_set_options(3) manpage.</td>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.set_session_id_ctx">
-<tt class="descname">set_session_id_ctx</tt><big>(</big><em>id</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_session_id_ctx"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_session_id_ctx" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_session_id_ctx</code><span class="sig-paren">(</span><em>id</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_session_id_ctx"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_session_id_ctx" title="Permalink to this definition">¶</a></dt>
<dd><p>Sets the session id for the SSL.Context w/in a session can be reused.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>id</strong> &#8211; Sessions are generated within a certain context. When
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>id</strong> – Sessions are generated within a certain context. When
exporting/importing sessions with
i2d_SSL_SESSION/d2i_SSL_SESSION it would be possible,
to re-import a session generated from another context
@@ -1175,7 +1175,7 @@ and/or service name.</td>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.set_session_timeout">
-<tt class="descname">set_session_timeout</tt><big>(</big><em>timeout</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_session_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_session_timeout" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_session_timeout</code><span class="sig-paren">(</span><em>timeout</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_session_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_session_timeout" title="Permalink to this definition">¶</a></dt>
<dd><p>Set new session timeout.</p>
<p>See self.get_session_timeout() for explanation of the session
timeouts.</p>
@@ -1183,7 +1183,7 @@ timeouts.</p>
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>timeout</strong> &#8211; new timeout value.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>timeout</strong> – new timeout value.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">the previously set timeout value.</td>
</tr>
@@ -1193,13 +1193,13 @@ timeouts.</p>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.set_tmp_dh">
-<tt class="descname">set_tmp_dh</tt><big>(</big><em>dhpfile</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_tmp_dh"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_tmp_dh" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_tmp_dh</code><span class="sig-paren">(</span><em>dhpfile</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_tmp_dh"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_tmp_dh" title="Permalink to this definition">¶</a></dt>
<dd><p>Load ephemeral DH parameters into the context.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>dhpfile</strong> &#8211; Filename of the file containing the PEM-encoded
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>dhpfile</strong> – Filename of the file containing the PEM-encoded
DH parameters.</td>
</tr>
</tbody>
@@ -1208,13 +1208,13 @@ DH parameters.</td>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.set_tmp_dh_callback">
-<tt class="descname">set_tmp_dh_callback</tt><big>(</big><em>callback=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_tmp_dh_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_tmp_dh_callback" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_tmp_dh_callback</code><span class="sig-paren">(</span><em>callback=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_tmp_dh_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_tmp_dh_callback" title="Permalink to this definition">¶</a></dt>
<dd><p>Sets the callback function for SSL.Context.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>callback</strong> &#8211; Callable to be used when a DH parameters are required.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>callback</strong> – Callable to be used when a DH parameters are required.</td>
</tr>
</tbody>
</table>
@@ -1222,13 +1222,13 @@ DH parameters.</td>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.set_tmp_rsa">
-<tt class="descname">set_tmp_rsa</tt><big>(</big><em>rsa</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_tmp_rsa"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_tmp_rsa" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_tmp_rsa</code><span class="sig-paren">(</span><em>rsa</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_tmp_rsa"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_tmp_rsa" title="Permalink to this definition">¶</a></dt>
<dd><p>Load ephemeral RSA key into the context.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>rsa</strong> &#8211; RSA.RSA instance.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>rsa</strong> – RSA.RSA instance.</td>
</tr>
</tbody>
</table>
@@ -1236,14 +1236,14 @@ DH parameters.</td>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.set_tmp_rsa_callback">
-<tt class="descname">set_tmp_rsa_callback</tt><big>(</big><em>callback=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_tmp_rsa_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_tmp_rsa_callback" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_tmp_rsa_callback</code><span class="sig-paren">(</span><em>callback=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_tmp_rsa_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_tmp_rsa_callback" title="Permalink to this definition">¶</a></dt>
<dd><p>Sets the callback function to be used when
a temporary/ephemeral RSA key is required.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Context.Context.set_verify">
-<tt class="descname">set_verify</tt><big>(</big><em>mode</em>, <em>depth</em>, <em>callback=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_verify"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_verify" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_verify</code><span class="sig-paren">(</span><em>mode</em>, <em>depth</em>, <em>callback=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Context.html#Context.set_verify"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Context.Context.set_verify" title="Permalink to this definition">¶</a></dt>
<dd><p>Set verify options. Most applications will need to call this
method with the right options to make a secure SSL connection.</p>
<table class="docutils field-list" frame="void" rules="none">
@@ -1251,12 +1251,12 @@ method with the right options to make a secure SSL connection.</p>
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>mode</strong> &#8211; The verification mode to use. Typically at least
+<li><strong>mode</strong> – The verification mode to use. Typically at least
SSL.verify_peer is used. Clients would also typically
add SSL.verify_fail_if_no_peer_cert.</li>
-<li><strong>depth</strong> &#8211; The maximum allowed depth of the certificate chain
+<li><strong>depth</strong> – The maximum allowed depth of the certificate chain
returned by the peer.</li>
-<li><strong>callback</strong> &#8211; Callable that can be used to specify custom
+<li><strong>callback</strong> – Callable that can be used to specify custom
verification checks.</li>
</ul>
</td>
@@ -1269,98 +1269,98 @@ verification checks.</li>
<dl class="function">
<dt id="M2Crypto.SSL.Context.map">
-<tt class="descclassname">M2Crypto.SSL.Context.</tt><tt class="descname">map</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.SSL.Context.map" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SSL.Context.</code><code class="descname">map</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.SSL.Context.map" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</div>
<div class="section" id="module-M2Crypto.SSL.SSLServer">
-<span id="sslserver-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">SSLServer</span></tt> Module<a class="headerlink" href="#module-M2Crypto.SSL.SSLServer" title="Permalink to this headline">¶</a></h2>
+<span id="sslserver-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">SSLServer</span></code> Module<a class="headerlink" href="#module-M2Crypto.SSL.SSLServer" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.SSL.SSLServer.SSLServer">
-<em class="property">class </em><tt class="descclassname">M2Crypto.SSL.SSLServer.</tt><tt class="descname">SSLServer</tt><big>(</big><em>server_address</em>, <em>RequestHandlerClass</em>, <em>ssl_context</em>, <em>bind_and_activate=True</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/SSLServer.html#SSLServer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.SSLServer.SSLServer" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">SocketServer.TCPServer</span></tt></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.SSL.SSLServer.</code><code class="descname">SSLServer</code><span class="sig-paren">(</span><em>server_address</em>, <em>RequestHandlerClass</em>, <em>ssl_context</em>, <em>bind_and_activate=True</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/SSLServer.html#SSLServer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.SSLServer.SSLServer" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">SocketServer.TCPServer</span></code></p>
<dl class="method">
<dt id="M2Crypto.SSL.SSLServer.SSLServer.handle_error">
-<tt class="descname">handle_error</tt><big>(</big><em>request</em>, <em>client_address</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/SSLServer.html#SSLServer.handle_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.SSLServer.SSLServer.handle_error" title="Permalink to this definition">¶</a></dt>
+<code class="descname">handle_error</code><span class="sig-paren">(</span><em>request</em>, <em>client_address</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/SSLServer.html#SSLServer.handle_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.SSLServer.SSLServer.handle_error" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.SSLServer.SSLServer.handle_request">
-<tt class="descname">handle_request</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/SSLServer.html#SSLServer.handle_request"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.SSLServer.SSLServer.handle_request" title="Permalink to this definition">¶</a></dt>
+<code class="descname">handle_request</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/SSLServer.html#SSLServer.handle_request"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.SSLServer.SSLServer.handle_request" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.SSL.SSLServer.ForkingSSLServer">
-<em class="property">class </em><tt class="descclassname">M2Crypto.SSL.SSLServer.</tt><tt class="descname">ForkingSSLServer</tt><big>(</big><em>server_address</em>, <em>RequestHandlerClass</em>, <em>ssl_context</em>, <em>bind_and_activate=True</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/SSLServer.html#ForkingSSLServer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.SSLServer.ForkingSSLServer" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">SocketServer.ForkingMixIn</span></tt>, <a class="reference internal" href="#M2Crypto.SSL.SSLServer.SSLServer" title="M2Crypto.SSL.SSLServer.SSLServer"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.SSL.SSLServer.SSLServer</span></tt></a></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.SSL.SSLServer.</code><code class="descname">ForkingSSLServer</code><span class="sig-paren">(</span><em>server_address</em>, <em>RequestHandlerClass</em>, <em>ssl_context</em>, <em>bind_and_activate=True</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/SSLServer.html#ForkingSSLServer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.SSLServer.ForkingSSLServer" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">SocketServer.ForkingMixIn</span></code>, <a class="reference internal" href="#M2Crypto.SSL.SSLServer.SSLServer" title="M2Crypto.SSL.SSLServer.SSLServer"><code class="xref py py-class docutils literal"><span class="pre">M2Crypto.SSL.SSLServer.SSLServer</span></code></a></p>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.SSL.SSLServer.ThreadingSSLServer">
-<em class="property">class </em><tt class="descclassname">M2Crypto.SSL.SSLServer.</tt><tt class="descname">ThreadingSSLServer</tt><big>(</big><em>server_address</em>, <em>RequestHandlerClass</em>, <em>ssl_context</em>, <em>bind_and_activate=True</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/SSLServer.html#ThreadingSSLServer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.SSLServer.ThreadingSSLServer" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">SocketServer.ThreadingMixIn</span></tt>, <a class="reference internal" href="#M2Crypto.SSL.SSLServer.SSLServer" title="M2Crypto.SSL.SSLServer.SSLServer"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.SSL.SSLServer.SSLServer</span></tt></a></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.SSL.SSLServer.</code><code class="descname">ThreadingSSLServer</code><span class="sig-paren">(</span><em>server_address</em>, <em>RequestHandlerClass</em>, <em>ssl_context</em>, <em>bind_and_activate=True</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/SSLServer.html#ThreadingSSLServer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.SSLServer.ThreadingSSLServer" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">SocketServer.ThreadingMixIn</span></code>, <a class="reference internal" href="#M2Crypto.SSL.SSLServer.SSLServer" title="M2Crypto.SSL.SSLServer.SSLServer"><code class="xref py py-class docutils literal"><span class="pre">M2Crypto.SSL.SSLServer.SSLServer</span></code></a></p>
</dd></dl>
</div>
<div class="section" id="module-M2Crypto.SSL.Session">
-<span id="session-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">Session</span></tt> Module<a class="headerlink" href="#module-M2Crypto.SSL.Session" title="Permalink to this headline">¶</a></h2>
+<span id="session-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">Session</span></code> Module<a class="headerlink" href="#module-M2Crypto.SSL.Session" title="Permalink to this headline">¶</a></h2>
<p>SSL Session</p>
<p>Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.</p>
<dl class="class">
<dt id="M2Crypto.SSL.Session.Session">
-<em class="property">class </em><tt class="descclassname">M2Crypto.SSL.Session.</tt><tt class="descname">Session</tt><big>(</big><em>session</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#Session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.Session" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.SSL.Session.</code><code class="descname">Session</code><span class="sig-paren">(</span><em>session</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#Session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.Session" title="Permalink to this definition">¶</a></dt>
<dd><dl class="method">
<dt id="M2Crypto.SSL.Session.Session.as_der">
-<tt class="descname">as_der</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#Session.as_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.Session.as_der" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_der</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#Session.as_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.Session.as_der" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Session.Session.as_text">
-<tt class="descname">as_text</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#Session.as_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.Session.as_text" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_text</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#Session.as_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.Session.as_text" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Session.Session.get_time">
-<tt class="descname">get_time</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#Session.get_time"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.Session.get_time" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_time</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#Session.get_time"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.Session.get_time" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Session.Session.get_timeout">
-<tt class="descname">get_timeout</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#Session.get_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.Session.get_timeout" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_timeout</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#Session.get_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.Session.get_timeout" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Session.Session.m2_ssl_session_free">
-<tt class="descname">m2_ssl_session_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.SSL.Session.Session.m2_ssl_session_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_ssl_session_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.SSL.Session.Session.m2_ssl_session_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Session.Session.set_time">
-<tt class="descname">set_time</tt><big>(</big><em>t</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#Session.set_time"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.Session.set_time" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_time</code><span class="sig-paren">(</span><em>t</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#Session.set_time"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.Session.set_time" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Session.Session.set_timeout">
-<tt class="descname">set_timeout</tt><big>(</big><em>t</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#Session.set_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.Session.set_timeout" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_timeout</code><span class="sig-paren">(</span><em>t</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#Session.set_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.Session.set_timeout" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.Session.Session.write_bio">
-<tt class="descname">write_bio</tt><big>(</big><em>bio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#Session.write_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.Session.write_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descname">write_bio</code><span class="sig-paren">(</span><em>bio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#Session.write_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.Session.write_bio" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.SSL.Session.load_session">
-<tt class="descclassname">M2Crypto.SSL.Session.</tt><tt class="descname">load_session</tt><big>(</big><em>pemfile</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#load_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.load_session" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SSL.Session.</code><code class="descname">load_session</code><span class="sig-paren">(</span><em>pemfile</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/Session.html#load_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.Session.load_session" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</div>
<div class="section" id="module-M2Crypto.SSL.TwistedProtocolWrapper">
-<span id="twistedprotocolwrapper-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">TwistedProtocolWrapper</span></tt> Module<a class="headerlink" href="#module-M2Crypto.SSL.TwistedProtocolWrapper" title="Permalink to this headline">¶</a></h2>
+<span id="twistedprotocolwrapper-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">TwistedProtocolWrapper</span></code> Module<a class="headerlink" href="#module-M2Crypto.SSL.TwistedProtocolWrapper" title="Permalink to this headline">¶</a></h2>
<p>Make Twisted use M2Crypto for SSL</p>
<p>Copyright (c) 2004-2007 Open Source Applications Foundation.
All rights reserved.</p>
@@ -1369,14 +1369,14 @@ BEEN FINISHED. THE FURTHER WORK WILL BE DONE WHEN THE STATUS OF TWISTED
IN THE PYTHON 3 (AND ASYNCIO) WORLD WILL BE CLEAR.</p>
<dl class="function">
<dt id="M2Crypto.SSL.TwistedProtocolWrapper.connectSSL">
-<tt class="descclassname">M2Crypto.SSL.TwistedProtocolWrapper.</tt><tt class="descname">connectSSL</tt><big>(</big><em>host</em>, <em>port</em>, <em>factory</em>, <em>contextFactory</em>, <em>timeout=30</em>, <em>bindAddress=None</em>, <em>reactor=&lt;twisted.internet.epollreactor.EPollReactor object at 0x4996190&gt;</em>, <em>postConnectionCheck=&lt;M2Crypto.SSL.Checker.Checker instance at 0x3f0bc68&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#connectSSL"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.connectSSL" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SSL.TwistedProtocolWrapper.</code><code class="descname">connectSSL</code><span class="sig-paren">(</span><em>host</em>, <em>port</em>, <em>factory</em>, <em>contextFactory</em>, <em>timeout=30</em>, <em>bindAddress=None</em>, <em>reactor=&lt;twisted.internet.epollreactor.EPollReactor object&gt;</em>, <em>postConnectionCheck=&lt;M2Crypto.SSL.Checker.Checker instance&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#connectSSL"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.connectSSL" title="Permalink to this definition">¶</a></dt>
<dd><p>A convenience function to start an SSL/TLS connection using Twisted.</p>
<p>See IReactorSSL interface in Twisted.</p>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.SSL.TwistedProtocolWrapper.connectTCP">
-<tt class="descclassname">M2Crypto.SSL.TwistedProtocolWrapper.</tt><tt class="descname">connectTCP</tt><big>(</big><em>host</em>, <em>port</em>, <em>factory</em>, <em>timeout=30</em>, <em>bindAddress=None</em>, <em>reactor=&lt;twisted.internet.epollreactor.EPollReactor object at 0x4996190&gt;</em>, <em>postConnectionCheck=&lt;M2Crypto.SSL.Checker.Checker instance at 0x3f0b3f8&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#connectTCP"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.connectTCP" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SSL.TwistedProtocolWrapper.</code><code class="descname">connectTCP</code><span class="sig-paren">(</span><em>host</em>, <em>port</em>, <em>factory</em>, <em>timeout=30</em>, <em>bindAddress=None</em>, <em>reactor=&lt;twisted.internet.epollreactor.EPollReactor object&gt;</em>, <em>postConnectionCheck=&lt;M2Crypto.SSL.Checker.Checker instance&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#connectTCP"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.connectTCP" title="Permalink to this definition">¶</a></dt>
<dd><p>A convenience function to start a TCP connection using Twisted.</p>
<p>NOTE: You must call startTLS(ctx) to go into SSL/TLS mode.</p>
<p>See IReactorTCP interface in Twisted.</p>
@@ -1384,14 +1384,14 @@ IN THE PYTHON 3 (AND ASYNCIO) WORLD WILL BE CLEAR.</p>
<dl class="function">
<dt id="M2Crypto.SSL.TwistedProtocolWrapper.listenSSL">
-<tt class="descclassname">M2Crypto.SSL.TwistedProtocolWrapper.</tt><tt class="descname">listenSSL</tt><big>(</big><em>port</em>, <em>factory</em>, <em>contextFactory</em>, <em>backlog=5</em>, <em>interface=''</em>, <em>reactor=&lt;twisted.internet.epollreactor.EPollReactor object at 0x4996190&gt;</em>, <em>postConnectionCheck=&lt;function _alwaysSucceedsPostConnectionCheck at 0x49948c0&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#listenSSL"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.listenSSL" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SSL.TwistedProtocolWrapper.</code><code class="descname">listenSSL</code><span class="sig-paren">(</span><em>port</em>, <em>factory</em>, <em>contextFactory</em>, <em>backlog=5</em>, <em>interface=''</em>, <em>reactor=&lt;twisted.internet.epollreactor.EPollReactor object&gt;</em>, <em>postConnectionCheck=&lt;function _alwaysSucceedsPostConnectionCheck&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#listenSSL"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.listenSSL" title="Permalink to this definition">¶</a></dt>
<dd><p>A convenience function to listen for SSL/TLS connections using Twisted.</p>
<p>See IReactorSSL interface in Twisted.</p>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.SSL.TwistedProtocolWrapper.listenTCP">
-<tt class="descclassname">M2Crypto.SSL.TwistedProtocolWrapper.</tt><tt class="descname">listenTCP</tt><big>(</big><em>port</em>, <em>factory</em>, <em>backlog=5</em>, <em>interface=''</em>, <em>reactor=&lt;twisted.internet.epollreactor.EPollReactor object at 0x4996190&gt;</em>, <em>postConnectionCheck=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#listenTCP"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.listenTCP" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SSL.TwistedProtocolWrapper.</code><code class="descname">listenTCP</code><span class="sig-paren">(</span><em>port</em>, <em>factory</em>, <em>backlog=5</em>, <em>interface=''</em>, <em>reactor=&lt;twisted.internet.epollreactor.EPollReactor object&gt;</em>, <em>postConnectionCheck=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#listenTCP"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.listenTCP" title="Permalink to this definition">¶</a></dt>
<dd><p>A convenience function to listen for TCP connections using Twisted.</p>
<p>NOTE: You must call startTLS(ctx) to go into SSL/TLS mode.</p>
<p>See IReactorTCP interface in Twisted.</p>
@@ -1399,106 +1399,106 @@ IN THE PYTHON 3 (AND ASYNCIO) WORLD WILL BE CLEAR.</p>
<dl class="class">
<dt id="M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper">
-<em class="property">class </em><tt class="descclassname">M2Crypto.SSL.TwistedProtocolWrapper.</tt><tt class="descname">TLSProtocolWrapper</tt><big>(</big><em>factory</em>, <em>wrappedProtocol</em>, <em>startPassThrough</em>, <em>client</em>, <em>contextFactory</em>, <em>postConnectionCheck</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">twisted.protocols.policies.ProtocolWrapper</span></tt></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.SSL.TwistedProtocolWrapper.</code><code class="descname">TLSProtocolWrapper</code><span class="sig-paren">(</span><em>factory</em>, <em>wrappedProtocol</em>, <em>startPassThrough</em>, <em>client</em>, <em>contextFactory</em>, <em>postConnectionCheck</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">twisted.protocols.policies.ProtocolWrapper</span></code></p>
<p>A SSL/TLS protocol wrapper to be used with Twisted. Typically
you would not use this class directly. Use connectTCP,
connectSSL, listenTCP, listenSSL functions defined above,
which will hook in this class.</p>
<dl class="method">
<dt id="M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.clear">
-<tt class="descname">clear</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper.clear"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.clear" title="Permalink to this definition">¶</a></dt>
+<code class="descname">clear</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper.clear"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.clear" title="Permalink to this definition">¶</a></dt>
<dd><p>Clear this instance, after which it is ready for reuse.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.connectionLost">
-<tt class="descname">connectionLost</tt><big>(</big><em>reason</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper.connectionLost"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.connectionLost" title="Permalink to this definition">¶</a></dt>
+<code class="descname">connectionLost</code><span class="sig-paren">(</span><em>reason</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper.connectionLost"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.connectionLost" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.connectionMade">
-<tt class="descname">connectionMade</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper.connectionMade"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.connectionMade" title="Permalink to this definition">¶</a></dt>
+<code class="descname">connectionMade</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper.connectionMade"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.connectionMade" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.dataReceived">
-<tt class="descname">dataReceived</tt><big>(</big><em>data</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper.dataReceived"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.dataReceived" title="Permalink to this definition">¶</a></dt>
+<code class="descname">dataReceived</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper.dataReceived"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.dataReceived" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.loseConnection">
-<tt class="descname">loseConnection</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper.loseConnection"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.loseConnection" title="Permalink to this definition">¶</a></dt>
+<code class="descname">loseConnection</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper.loseConnection"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.loseConnection" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.startTLS">
-<tt class="descname">startTLS</tt><big>(</big><em>ctx</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper.startTLS"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.startTLS" title="Permalink to this definition">¶</a></dt>
+<code class="descname">startTLS</code><span class="sig-paren">(</span><em>ctx</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper.startTLS"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.startTLS" title="Permalink to this definition">¶</a></dt>
<dd><p>Start SSL/TLS. If this is not called, this instance just passes data
through untouched.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.write">
-<tt class="descname">write</tt><big>(</big><em>data</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper.write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.write" title="Permalink to this definition">¶</a></dt>
+<code class="descname">write</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper.write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.write" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.writeSequence">
-<tt class="descname">writeSequence</tt><big>(</big><em>data</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper.writeSequence"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.writeSequence" title="Permalink to this definition">¶</a></dt>
+<code class="descname">writeSequence</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/TwistedProtocolWrapper.html#TLSProtocolWrapper.writeSequence"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.writeSequence" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="section" id="module-M2Crypto.SSL.cb">
-<span id="cb-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">cb</span></tt> Module<a class="headerlink" href="#module-M2Crypto.SSL.cb" title="Permalink to this headline">¶</a></h2>
+<span id="cb-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">cb</span></code> Module<a class="headerlink" href="#module-M2Crypto.SSL.cb" title="Permalink to this headline">¶</a></h2>
<dl class="function">
<dt id="M2Crypto.SSL.cb.ssl_verify_callback_stub">
-<tt class="descclassname">M2Crypto.SSL.cb.</tt><tt class="descname">ssl_verify_callback_stub</tt><big>(</big><em>ssl_ctx_ptr</em>, <em>x509_ptr</em>, <em>errnum</em>, <em>errdepth</em>, <em>ok</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/cb.html#ssl_verify_callback_stub"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.cb.ssl_verify_callback_stub" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SSL.cb.</code><code class="descname">ssl_verify_callback_stub</code><span class="sig-paren">(</span><em>ssl_ctx_ptr</em>, <em>x509_ptr</em>, <em>errnum</em>, <em>errdepth</em>, <em>ok</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/cb.html#ssl_verify_callback_stub"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.cb.ssl_verify_callback_stub" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.SSL.cb.ssl_verify_callback">
-<tt class="descclassname">M2Crypto.SSL.cb.</tt><tt class="descname">ssl_verify_callback</tt><big>(</big><em>ssl_ctx_ptr</em>, <em>x509_ptr</em>, <em>errnum</em>, <em>errdepth</em>, <em>ok</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/cb.html#ssl_verify_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.cb.ssl_verify_callback" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SSL.cb.</code><code class="descname">ssl_verify_callback</code><span class="sig-paren">(</span><em>ssl_ctx_ptr</em>, <em>x509_ptr</em>, <em>errnum</em>, <em>errdepth</em>, <em>ok</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/cb.html#ssl_verify_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.cb.ssl_verify_callback" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.SSL.cb.ssl_verify_callback_allow_unknown_ca">
-<tt class="descclassname">M2Crypto.SSL.cb.</tt><tt class="descname">ssl_verify_callback_allow_unknown_ca</tt><big>(</big><em>ok</em>, <em>store</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/cb.html#ssl_verify_callback_allow_unknown_ca"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.cb.ssl_verify_callback_allow_unknown_ca" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SSL.cb.</code><code class="descname">ssl_verify_callback_allow_unknown_ca</code><span class="sig-paren">(</span><em>ok</em>, <em>store</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/cb.html#ssl_verify_callback_allow_unknown_ca"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.cb.ssl_verify_callback_allow_unknown_ca" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.SSL.cb.ssl_info_callback">
-<tt class="descclassname">M2Crypto.SSL.cb.</tt><tt class="descname">ssl_info_callback</tt><big>(</big><em>where</em>, <em>ret</em>, <em>ssl_ptr</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/cb.html#ssl_info_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.cb.ssl_info_callback" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SSL.cb.</code><code class="descname">ssl_info_callback</code><span class="sig-paren">(</span><em>where</em>, <em>ret</em>, <em>ssl_ptr</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/cb.html#ssl_info_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.cb.ssl_info_callback" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</div>
<div class="section" id="module-M2Crypto.SSL.ssl_dispatcher">
-<span id="ssl-dispatcher-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">ssl_dispatcher</span></tt> Module<a class="headerlink" href="#module-M2Crypto.SSL.ssl_dispatcher" title="Permalink to this headline">¶</a></h2>
+<span id="ssl-dispatcher-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">ssl_dispatcher</span></code> Module<a class="headerlink" href="#module-M2Crypto.SSL.ssl_dispatcher" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher">
-<em class="property">class </em><tt class="descclassname">M2Crypto.SSL.ssl_dispatcher.</tt><tt class="descname">ssl_dispatcher</tt><big>(</big><em>sock=None</em>, <em>map=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/ssl_dispatcher.html#ssl_dispatcher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">asyncore.dispatcher</span></tt></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.SSL.ssl_dispatcher.</code><code class="descname">ssl_dispatcher</code><span class="sig-paren">(</span><em>sock=None</em>, <em>map=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/ssl_dispatcher.html#ssl_dispatcher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">asyncore.dispatcher</span></code></p>
<dl class="method">
<dt id="M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.connect">
-<tt class="descname">connect</tt><big>(</big><em>addr</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/ssl_dispatcher.html#ssl_dispatcher.connect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.connect" title="Permalink to this definition">¶</a></dt>
+<code class="descname">connect</code><span class="sig-paren">(</span><em>addr</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/ssl_dispatcher.html#ssl_dispatcher.connect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.connect" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.create_socket">
-<tt class="descname">create_socket</tt><big>(</big><em>ssl_context</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/ssl_dispatcher.html#ssl_dispatcher.create_socket"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.create_socket" title="Permalink to this definition">¶</a></dt>
+<code class="descname">create_socket</code><span class="sig-paren">(</span><em>ssl_context</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/ssl_dispatcher.html#ssl_dispatcher.create_socket"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.create_socket" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.recv">
-<tt class="descname">recv</tt><big>(</big><em>buffer_size=4096</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/ssl_dispatcher.html#ssl_dispatcher.recv"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.recv" title="Permalink to this definition">¶</a></dt>
+<code class="descname">recv</code><span class="sig-paren">(</span><em>buffer_size=4096</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/ssl_dispatcher.html#ssl_dispatcher.recv"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.recv" title="Permalink to this definition">¶</a></dt>
<dd><p>Receive data over SSL.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.send">
-<tt class="descname">send</tt><big>(</big><em>buffer</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/ssl_dispatcher.html#ssl_dispatcher.send"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.send" title="Permalink to this definition">¶</a></dt>
+<code class="descname">send</code><span class="sig-paren">(</span><em>buffer</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/ssl_dispatcher.html#ssl_dispatcher.send"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.send" title="Permalink to this definition">¶</a></dt>
<dd><p>Send data over SSL.</p>
</dd></dl>
@@ -1506,28 +1506,28 @@ through untouched.</p>
</div>
<div class="section" id="module-M2Crypto.SSL.timeout">
-<span id="timeout-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">timeout</span></tt> Module<a class="headerlink" href="#module-M2Crypto.SSL.timeout" title="Permalink to this headline">¶</a></h2>
+<span id="timeout-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">timeout</span></code> Module<a class="headerlink" href="#module-M2Crypto.SSL.timeout" title="Permalink to this headline">¶</a></h2>
<p>Support for SSL socket timeouts.</p>
<p>Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.</p>
<p>Copyright 2008 Heikki Toivonen. All rights reserved.</p>
<dl class="class">
<dt id="M2Crypto.SSL.timeout.timeout">
-<em class="property">class </em><tt class="descclassname">M2Crypto.SSL.timeout.</tt><tt class="descname">timeout</tt><big>(</big><em>sec=600</em>, <em>microsec=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/timeout.html#timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.timeout.timeout" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.SSL.timeout.</code><code class="descname">timeout</code><span class="sig-paren">(</span><em>sec=600</em>, <em>microsec=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/timeout.html#timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.timeout.timeout" title="Permalink to this definition">¶</a></dt>
<dd><dl class="method">
<dt id="M2Crypto.SSL.timeout.timeout.pack">
-<tt class="descname">pack</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/timeout.html#timeout.pack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.timeout.timeout.pack" title="Permalink to this definition">¶</a></dt>
+<code class="descname">pack</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/timeout.html#timeout.pack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.timeout.timeout.pack" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.SSL.timeout.struct_to_timeout">
-<tt class="descclassname">M2Crypto.SSL.timeout.</tt><tt class="descname">struct_to_timeout</tt><big>(</big><em>binstr</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/timeout.html#struct_to_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.timeout.struct_to_timeout" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SSL.timeout.</code><code class="descname">struct_to_timeout</code><span class="sig-paren">(</span><em>binstr</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/timeout.html#struct_to_timeout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.timeout.struct_to_timeout" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.SSL.timeout.struct_size">
-<tt class="descclassname">M2Crypto.SSL.timeout.</tt><tt class="descname">struct_size</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SSL/timeout.html#struct_size"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.timeout.struct_size" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SSL.timeout.</code><code class="descname">struct_size</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SSL/timeout.html#struct_size"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SSL.timeout.struct_size" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</div>
@@ -1537,70 +1537,70 @@ through untouched.</p>
</div>
</div>
</div>
- <div class="sphinxsidebar">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">SSL Package</a><ul>
-<li><a class="reference internal" href="#id1"><tt class="docutils literal"><span class="pre">SSL</span></tt> Package</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.SSL.Checker"><tt class="docutils literal"><span class="pre">Checker</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.SSL.Cipher"><tt class="docutils literal"><span class="pre">Cipher</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.SSL.Connection"><tt class="docutils literal"><span class="pre">Connection</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.SSL.Context"><tt class="docutils literal"><span class="pre">Context</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.SSL.SSLServer"><tt class="docutils literal"><span class="pre">SSLServer</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.SSL.Session"><tt class="docutils literal"><span class="pre">Session</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.SSL.TwistedProtocolWrapper"><tt class="docutils literal"><span class="pre">TwistedProtocolWrapper</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.SSL.cb"><tt class="docutils literal"><span class="pre">cb</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.SSL.ssl_dispatcher"><tt class="docutils literal"><span class="pre">ssl_dispatcher</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.SSL.timeout"><tt class="docutils literal"><span class="pre">timeout</span></tt> Module</a></li>
+<li><a class="reference internal" href="#id1"><code class="docutils literal"><span class="pre">SSL</span></code> Package</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.SSL.Checker"><code class="docutils literal"><span class="pre">Checker</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.SSL.Cipher"><code class="docutils literal"><span class="pre">Cipher</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.SSL.Connection"><code class="docutils literal"><span class="pre">Connection</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.SSL.Context"><code class="docutils literal"><span class="pre">Context</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.SSL.SSLServer"><code class="docutils literal"><span class="pre">SSLServer</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.SSL.Session"><code class="docutils literal"><span class="pre">Session</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.SSL.TwistedProtocolWrapper"><code class="docutils literal"><span class="pre">TwistedProtocolWrapper</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.SSL.cb"><code class="docutils literal"><span class="pre">cb</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.SSL.ssl_dispatcher"><code class="docutils literal"><span class="pre">ssl_dispatcher</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.SSL.timeout"><code class="docutils literal"><span class="pre">timeout</span></code> Module</a></li>
</ul>
</li>
</ul>
-
- <h4>Previous topic</h4>
- <p class="topless"><a href="M2Crypto.PGP.html"
- title="previous chapter">PGP Package</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/M2Crypto.SSL.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
+<div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="index.html">Documentation overview</a><ul>
+ <li><a href="M2Crypto.html">M2Crypto Package</a><ul>
+ <li>Previous: <a href="M2Crypto.html" title="previous chapter">M2Crypto Package</a></li>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+ <div role="note" aria-label="source link">
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/M2Crypto.SSL.rst.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+ </div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li class="right" >
- <a href="M2Crypto.PGP.html" title="PGP Package"
- >previous</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="M2Crypto.html" >M2Crypto Package</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
+ |
+ <a href="_sources/M2Crypto.SSL.rst.txt"
+ rel="nofollow">Page source</a>
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/M2Crypto.html b/doc/html/M2Crypto.html
index f3775c2..eb54dcf 100644
--- a/doc/html/M2Crypto.html
+++ b/doc/html/M2Crypto.html
@@ -1,98 +1,84 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto Package &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
+ <title>M2Crypto Package &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: './',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="index.html" />
- <link rel="next" title="PGP Package" href="M2Crypto.PGP.html" />
- <link rel="prev" title="Welcome to M2Crypto’s documentation!" href="index.html" />
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+ <link rel="next" title="SSL Package" href="M2Crypto.SSL.html" />
+ <link rel="prev" title="Welcome to M2Crypto’s documentation!" href="index.html" />
+
+ <link rel="stylesheet" href="_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li class="right" >
- <a href="M2Crypto.PGP.html" title="PGP Package"
- accesskey="N">next</a> |</li>
- <li class="right" >
- <a href="index.html" title="Welcome to M2Crypto’s documentation!"
- accesskey="P">previous</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<div class="section" id="m2crypto-package">
<h1>M2Crypto Package<a class="headerlink" href="#m2crypto-package" title="Permalink to this headline">¶</a></h1>
<div class="section" id="id1">
-<h2><tt class="xref py py-mod docutils literal"><span class="pre">M2Crypto</span></tt> Package<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
+<h2><code class="xref py py-mod docutils literal"><span class="pre">M2Crypto</span></code> Package<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
<span class="target" id="module-M2Crypto.__init__"></span></div>
<div class="section" id="module-M2Crypto.ASN1">
-<span id="asn1-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">ASN1</span></tt> Module<a class="headerlink" href="#module-M2Crypto.ASN1" title="Permalink to this headline">¶</a></h2>
+<span id="asn1-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">ASN1</span></code> Module<a class="headerlink" href="#module-M2Crypto.ASN1" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.ASN1.ASN1_Integer">
-<em class="property">class </em><tt class="descclassname">M2Crypto.ASN1.</tt><tt class="descname">ASN1_Integer</tt><big>(</big><em>asn1int</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_Integer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_Integer" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.ASN1.</code><code class="descname">ASN1_Integer</code><span class="sig-paren">(</span><em>asn1int</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_Integer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_Integer" title="Permalink to this definition">¶</a></dt>
<dd><dl class="method">
<dt id="M2Crypto.ASN1.ASN1_Integer.m2_asn1_integer_free">
-<tt class="descname">m2_asn1_integer_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.ASN1.ASN1_Integer.m2_asn1_integer_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_asn1_integer_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.ASN1.ASN1_Integer.m2_asn1_integer_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.ASN1.ASN1_Object">
-<em class="property">class </em><tt class="descclassname">M2Crypto.ASN1.</tt><tt class="descname">ASN1_Object</tt><big>(</big><em>asn1obj</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_Object"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_Object" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.ASN1.</code><code class="descname">ASN1_Object</code><span class="sig-paren">(</span><em>asn1obj</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_Object"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_Object" title="Permalink to this definition">¶</a></dt>
<dd><dl class="method">
<dt id="M2Crypto.ASN1.ASN1_Object.m2_asn1_object_free">
-<tt class="descname">m2_asn1_object_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.ASN1.ASN1_Object.m2_asn1_object_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_asn1_object_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.ASN1.ASN1_Object.m2_asn1_object_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.ASN1.ASN1_String">
-<em class="property">class </em><tt class="descclassname">M2Crypto.ASN1.</tt><tt class="descname">ASN1_String</tt><big>(</big><em>asn1str</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_String"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_String" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.ASN1.</code><code class="descname">ASN1_String</code><span class="sig-paren">(</span><em>asn1str</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_String"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_String" title="Permalink to this definition">¶</a></dt>
<dd><dl class="method">
<dt id="M2Crypto.ASN1.ASN1_String.as_text">
-<tt class="descname">as_text</tt><big>(</big><em>flags=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_String.as_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_String.as_text" title="Permalink to this definition">¶</a></dt>
-<dd><p>output an ASN1_STRING structure according to the set flags.</p>
+<code class="descname">as_text</code><span class="sig-paren">(</span><em>flags=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_String.as_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_String.as_text" title="Permalink to this definition">¶</a></dt>
+<dd><p>Output an ASN1_STRING structure according to the set flags.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>flags</strong> &#8211; determine the format of the output by using
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>flags</strong> – determine the format of the output by using
predetermined constants, see ASN1_STRING_print_ex(3)
manpage for their meaning.</td>
</tr>
@@ -104,38 +90,38 @@ manpage for their meaning.</td>
<dl class="method">
<dt id="M2Crypto.ASN1.ASN1_String.m2_asn1_string_free">
-<tt class="descname">m2_asn1_string_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.ASN1.ASN1_String.m2_asn1_string_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_asn1_string_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.ASN1.ASN1_String.m2_asn1_string_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.ASN1.ASN1_TIME">
-<em class="property">class </em><tt class="descclassname">M2Crypto.ASN1.</tt><tt class="descname">ASN1_TIME</tt><big>(</big><em>asn1_time=None</em>, <em>_pyfree=0</em>, <em>asn1_utctime=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_TIME"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_TIME" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.ASN1.</code><code class="descname">ASN1_TIME</code><span class="sig-paren">(</span><em>asn1_time=None</em>, <em>_pyfree=0</em>, <em>asn1_utctime=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_TIME"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_TIME" title="Permalink to this definition">¶</a></dt>
<dd><dl class="method">
<dt id="M2Crypto.ASN1.ASN1_TIME.get_datetime">
-<tt class="descname">get_datetime</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_TIME.get_datetime"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_TIME.get_datetime" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_datetime</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_TIME.get_datetime"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_TIME.get_datetime" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.ASN1.ASN1_TIME.m2_asn1_time_free">
-<tt class="descname">m2_asn1_time_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.ASN1.ASN1_TIME.m2_asn1_time_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_asn1_time_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.ASN1.ASN1_TIME.m2_asn1_time_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.ASN1.ASN1_TIME.set_datetime">
-<tt class="descname">set_datetime</tt><big>(</big><em>date</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_TIME.set_datetime"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_TIME.set_datetime" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_datetime</code><span class="sig-paren">(</span><em>date</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_TIME.set_datetime"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_TIME.set_datetime" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.ASN1.ASN1_TIME.set_string">
-<tt class="descname">set_string</tt><big>(</big><em>string</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_TIME.set_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_TIME.set_string" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_string</code><span class="sig-paren">(</span><em>string</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_TIME.set_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_TIME.set_string" title="Permalink to this definition">¶</a></dt>
<dd><p>Set time from UTC string.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.ASN1.ASN1_TIME.set_time">
-<tt class="descname">set_time</tt><big>(</big><em>time</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_TIME.set_time"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_TIME.set_time" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_time</code><span class="sig-paren">(</span><em>time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ASN1.html#ASN1_TIME.set_time"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.ASN1_TIME.set_time" title="Permalink to this definition">¶</a></dt>
<dd><p>Set time from seconds since epoch (int).</p>
</dd></dl>
@@ -143,110 +129,110 @@ manpage for their meaning.</td>
<dl class="attribute">
<dt id="M2Crypto.ASN1.ASN1_UTCTIME">
-<tt class="descclassname">M2Crypto.ASN1.</tt><tt class="descname">ASN1_UTCTIME</tt><a class="headerlink" href="#M2Crypto.ASN1.ASN1_UTCTIME" title="Permalink to this definition">¶</a></dt>
-<dd><p>alias of <a class="reference internal" href="#M2Crypto.ASN1.ASN1_TIME" title="M2Crypto.ASN1.ASN1_TIME"><tt class="xref py py-class docutils literal"><span class="pre">ASN1_TIME</span></tt></a></p>
+<code class="descclassname">M2Crypto.ASN1.</code><code class="descname">ASN1_UTCTIME</code><a class="headerlink" href="#M2Crypto.ASN1.ASN1_UTCTIME" title="Permalink to this definition">¶</a></dt>
+<dd><p>alias of <a class="reference internal" href="#M2Crypto.ASN1.ASN1_TIME" title="M2Crypto.ASN1.ASN1_TIME"><code class="xref py py-class docutils literal"><span class="pre">ASN1_TIME</span></code></a></p>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.ASN1.LocalTimezone">
-<em class="property">class </em><tt class="descclassname">M2Crypto.ASN1.</tt><tt class="descname">LocalTimezone</tt><a class="reference internal" href="_modules/M2Crypto/ASN1.html#LocalTimezone"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.LocalTimezone" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">datetime.tzinfo</span></tt></p>
-<p>Localtimezone from datetime manual</p>
+<em class="property">class </em><code class="descclassname">M2Crypto.ASN1.</code><code class="descname">LocalTimezone</code><a class="reference internal" href="_modules/M2Crypto/ASN1.html#LocalTimezone"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.LocalTimezone" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">datetime.tzinfo</span></code></p>
+<p>Localtimezone from datetime manual.</p>
<dl class="method">
<dt id="M2Crypto.ASN1.LocalTimezone.dst">
-<tt class="descname">dst</tt><big>(</big><em>dt</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/ASN1.html#LocalTimezone.dst"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.LocalTimezone.dst" title="Permalink to this definition">¶</a></dt>
+<code class="descname">dst</code><span class="sig-paren">(</span><em>dt</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ASN1.html#LocalTimezone.dst"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.LocalTimezone.dst" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.ASN1.LocalTimezone.tzname">
-<tt class="descname">tzname</tt><big>(</big><em>dt</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/ASN1.html#LocalTimezone.tzname"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.LocalTimezone.tzname" title="Permalink to this definition">¶</a></dt>
+<code class="descname">tzname</code><span class="sig-paren">(</span><em>dt</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ASN1.html#LocalTimezone.tzname"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.LocalTimezone.tzname" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.ASN1.LocalTimezone.utcoffset">
-<tt class="descname">utcoffset</tt><big>(</big><em>dt</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/ASN1.html#LocalTimezone.utcoffset"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.LocalTimezone.utcoffset" title="Permalink to this definition">¶</a></dt>
+<code class="descname">utcoffset</code><span class="sig-paren">(</span><em>dt</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ASN1.html#LocalTimezone.utcoffset"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ASN1.LocalTimezone.utcoffset" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="section" id="module-M2Crypto.AuthCookie">
-<span id="authcookie-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">AuthCookie</span></tt> Module<a class="headerlink" href="#module-M2Crypto.AuthCookie" title="Permalink to this headline">¶</a></h2>
+<span id="authcookie-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">AuthCookie</span></code> Module<a class="headerlink" href="#module-M2Crypto.AuthCookie" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.AuthCookie.AuthCookie">
-<em class="property">class </em><tt class="descclassname">M2Crypto.AuthCookie.</tt><tt class="descname">AuthCookie</tt><big>(</big><em>expiry</em>, <em>data</em>, <em>dough</em>, <em>mac</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.AuthCookie.</code><code class="descname">AuthCookie</code><span class="sig-paren">(</span><em>expiry</em>, <em>data</em>, <em>dough</em>, <em>mac</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie" title="Permalink to this definition">¶</a></dt>
<dd><dl class="method">
<dt id="M2Crypto.AuthCookie.AuthCookie.data">
-<tt class="descname">data</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie.data"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie.data" title="Permalink to this definition">¶</a></dt>
+<code class="descname">data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie.data"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie.data" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the data portion of the cookie.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.AuthCookie.AuthCookie.expiry">
-<tt class="descname">expiry</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie.expiry"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie.expiry" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return the cookie&#8217;s expiry time.</p>
+<code class="descname">expiry</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie.expiry"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie.expiry" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the cookie’s expiry time.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.AuthCookie.AuthCookie.headerValue">
-<tt class="descname">headerValue</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie.headerValue"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie.headerValue" title="Permalink to this definition">¶</a></dt>
+<code class="descname">headerValue</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie.headerValue"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie.headerValue" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.AuthCookie.AuthCookie.isExpired">
-<tt class="descname">isExpired</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie.isExpired"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie.isExpired" title="Permalink to this definition">¶</a></dt>
+<code class="descname">isExpired</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie.isExpired"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie.isExpired" title="Permalink to this definition">¶</a></dt>
<dd><p>Return 1 if the cookie has expired, 0 otherwise.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.AuthCookie.AuthCookie.mac">
-<tt class="descname">mac</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie.mac"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie.mac" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return the cookie&#8217;s MAC.</p>
+<code class="descname">mac</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie.mac"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie.mac" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the cookie’s MAC.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.AuthCookie.AuthCookie.name">
-<tt class="descname">name</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie.name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie.name" title="Permalink to this definition">¶</a></dt>
+<code class="descname">name</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie.name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie.name" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.AuthCookie.AuthCookie.output">
-<tt class="descname">output</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie.output"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie.output" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return the cookie&#8217;s output in &#8220;Set-Cookie&#8221; format.</p>
+<code class="descname">output</code><span class="sig-paren">(</span><em>header='Set-Cookie:'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie.output"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie.output" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the cookie’s output in “Set-Cookie” format.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.AuthCookie.AuthCookie.value">
-<tt class="descname">value</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie.value"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie.value" title="Permalink to this definition">¶</a></dt>
-<dd><p>Return the cookie&#8217;s output minus the &#8220;Set-Cookie: &#8221; portion.</p>
+<code class="descname">value</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookie.value"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookie.value" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the cookie’s output minus the “Set-Cookie: ” portion.</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.AuthCookie.AuthCookieJar">
-<em class="property">class </em><tt class="descclassname">M2Crypto.AuthCookie.</tt><tt class="descname">AuthCookieJar</tt><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookieJar"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookieJar" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.AuthCookie.</code><code class="descname">AuthCookieJar</code><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookieJar"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookieJar" title="Permalink to this definition">¶</a></dt>
<dd><dl class="method">
<dt id="M2Crypto.AuthCookie.AuthCookieJar.isGoodCookie">
-<tt class="descname">isGoodCookie</tt><big>(</big><em>cookie</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookieJar.isGoodCookie"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookieJar.isGoodCookie" title="Permalink to this definition">¶</a></dt>
+<code class="descname">isGoodCookie</code><span class="sig-paren">(</span><em>cookie</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookieJar.isGoodCookie"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookieJar.isGoodCookie" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.AuthCookie.AuthCookieJar.isGoodCookieString">
-<tt class="descname">isGoodCookieString</tt><big>(</big><em>cookie_str</em>, <em>_debug=False</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookieJar.isGoodCookieString"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookieJar.isGoodCookieString" title="Permalink to this definition">¶</a></dt>
+<code class="descname">isGoodCookieString</code><span class="sig-paren">(</span><em>cookie_str</em>, <em>_debug=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookieJar.isGoodCookieString"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookieJar.isGoodCookieString" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.AuthCookie.AuthCookieJar.makeCookie">
-<tt class="descname">makeCookie</tt><big>(</big><em>expiry</em>, <em>data</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookieJar.makeCookie"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookieJar.makeCookie" title="Permalink to this definition">¶</a></dt>
+<code class="descname">makeCookie</code><span class="sig-paren">(</span><em>expiry</em>, <em>data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#AuthCookieJar.makeCookie"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.AuthCookieJar.makeCookie" title="Permalink to this definition">¶</a></dt>
<dd><p>Make a cookie</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>expiry</strong> &#8211; expiration time (float in seconds)</li>
-<li><strong>data</strong> &#8211; cookie content</li>
+<li><strong>expiry</strong> – expiration time (float in seconds)</li>
+<li><strong>data</strong> – cookie content</li>
</ul>
</td>
</tr>
@@ -261,46 +247,47 @@ manpage for their meaning.</td>
<dl class="function">
<dt id="M2Crypto.AuthCookie.mix">
-<tt class="descclassname">M2Crypto.AuthCookie.</tt><tt class="descname">mix</tt><big>(</big><em>expiry</em>, <em>data</em>, <em>format='exp=%f&amp;data=%s&amp;digest='</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#mix"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.mix" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.AuthCookie.</code><code class="descname">mix</code><span class="sig-paren">(</span><em>expiry</em>, <em>data</em>, <em>format='exp=%f&amp;data=%s&amp;digest='</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#mix"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.mix" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.AuthCookie.unmix">
-<tt class="descclassname">M2Crypto.AuthCookie.</tt><tt class="descname">unmix</tt><big>(</big><em>dough</em>, <em>regex=&lt;_sre.SRE_Pattern object at 0x1ec24a0&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#unmix"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.unmix" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.AuthCookie.</code><code class="descname">unmix</code><span class="sig-paren">(</span><em>dough</em>, <em>regex=&lt;_sre.SRE_Pattern object&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#unmix"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.unmix" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.AuthCookie.unmix3">
-<tt class="descclassname">M2Crypto.AuthCookie.</tt><tt class="descname">unmix3</tt><big>(</big><em>dough</em>, <em>regex=&lt;_sre.SRE_Pattern object at 0x1ec24a0&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#unmix3"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.unmix3" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.AuthCookie.</code><code class="descname">unmix3</code><span class="sig-paren">(</span><em>dough</em>, <em>regex=&lt;_sre.SRE_Pattern object&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/AuthCookie.html#unmix3"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.AuthCookie.unmix3" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</div>
<div class="section" id="module-M2Crypto.BIO">
-<span id="bio-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">BIO</span></tt> Module<a class="headerlink" href="#module-M2Crypto.BIO" title="Permalink to this headline">¶</a></h2>
+<span id="bio-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">BIO</span></code> Module<a class="headerlink" href="#module-M2Crypto.BIO" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.BIO.BIO">
-<em class="property">class </em><tt class="descclassname">M2Crypto.BIO.</tt><tt class="descname">BIO</tt><big>(</big><em>bio=None</em>, <em>_pyfree=0</em>, <em>_close_cb=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.BIO.</code><code class="descname">BIO</code><span class="sig-paren">(</span><em>bio=None</em>, <em>_pyfree=0</em>, <em>_close_cb=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
<p>Abstract object interface to the BIO API.</p>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.bio_ptr">
-<tt class="descname">bio_ptr</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.BIO.BIO.bio_ptr" title="Permalink to this definition">¶</a></dt>
+<code class="descname">bio_ptr</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.BIO.BIO.bio_ptr" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.close">
-<tt class="descname">close</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.close" title="Permalink to this definition">¶</a></dt>
+<code class="descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.close" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.fileno">
-<tt class="descname">fileno</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.fileno"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.fileno" title="Permalink to this definition">¶</a></dt>
+<code class="descname">fileno</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.fileno"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.fileno" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.flush">
-<tt class="descname">flush</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.flush"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.flush" title="Permalink to this definition">¶</a></dt>
-<dd><table class="docutils field-list" frame="void" rules="none">
+<code class="descname">flush</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.flush"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.flush" title="Permalink to this definition">¶</a></dt>
+<dd><p>Flush the buffers.</p>
+<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
@@ -312,73 +299,79 @@ manpage for their meaning.</td>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.m2_bio_free">
-<tt class="descname">m2_bio_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.BIO.BIO.m2_bio_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_bio_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.BIO.BIO.m2_bio_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.read">
-<tt class="descname">read</tt><big>(</big><em>size=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.read" title="Permalink to this definition">¶</a></dt>
+<code class="descname">read</code><span class="sig-paren">(</span><em>size=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.read" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.readable">
-<tt class="descname">readable</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.readable"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.readable" title="Permalink to this definition">¶</a></dt>
+<code class="descname">readable</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.readable"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.readable" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.readline">
-<tt class="descname">readline</tt><big>(</big><em>size=4096</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.readline"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.readline" title="Permalink to this definition">¶</a></dt>
+<code class="descname">readline</code><span class="sig-paren">(</span><em>size=4096</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.readline"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.readline" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.readlines">
-<tt class="descname">readlines</tt><big>(</big><em>sizehint='ignored'</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.readlines"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.readlines" title="Permalink to this definition">¶</a></dt>
+<code class="descname">readlines</code><span class="sig-paren">(</span><em>sizehint='ignored'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.readlines"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.readlines" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.reset">
-<tt class="descname">reset</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.reset"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.reset" title="Permalink to this definition">¶</a></dt>
-<dd><p>Sets the bio to its initial state
-:return: 1 for success, and 0 or -1 for failure</p>
+<code class="descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.reset"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.reset" title="Permalink to this definition">¶</a></dt>
+<dd><p>Set the bio to its initial state.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">1 for success, and 0 or -1 for failure</td>
+</tr>
+</tbody>
+</table>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.seek">
-<tt class="descname">seek</tt><big>(</big><em>off</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.seek"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.seek" title="Permalink to this definition">¶</a></dt>
+<code class="descname">seek</code><span class="sig-paren">(</span><em>off</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.seek"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.seek" title="Permalink to this definition">¶</a></dt>
<dd><p>Seek to the specified absolute offset.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.should_read">
-<tt class="descname">should_read</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.should_read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.should_read" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns whether the cause of the condition is the bio
-should read more data</p>
+<code class="descname">should_read</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.should_read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.should_read" title="Permalink to this definition">¶</a></dt>
+<dd><p>Should we read more data?</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.should_retry">
-<tt class="descname">should_retry</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.should_retry"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.should_retry" title="Permalink to this definition">¶</a></dt>
+<code class="descname">should_retry</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.should_retry"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.should_retry" title="Permalink to this definition">¶</a></dt>
<dd><p>Can the call be attempted again, or was there an error
ie do_handshake</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.should_write">
-<tt class="descname">should_write</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.should_write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.should_write" title="Permalink to this definition">¶</a></dt>
-<dd><p>Returns whether the cause of the condition is the bio
-should write more data</p>
+<code class="descname">should_write</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.should_write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.should_write" title="Permalink to this definition">¶</a></dt>
+<dd><p>Should we write more data?</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.tell">
-<tt class="descname">tell</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.tell"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.tell" title="Permalink to this definition">¶</a></dt>
+<code class="descname">tell</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.tell"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.tell" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the current offset.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.write">
-<tt class="descname">write</tt><big>(</big><em>data</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.write" title="Permalink to this definition">¶</a></dt>
-<dd><table class="docutils field-list" frame="void" rules="none">
+<code class="descname">write</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.write" title="Permalink to this definition">¶</a></dt>
+<dd><p>Write data to BIO.</p>
+<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
@@ -391,108 +384,120 @@ should write more data</p>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.write_close">
-<tt class="descname">write_close</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.write_close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.write_close" title="Permalink to this definition">¶</a></dt>
+<code class="descname">write_close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.write_close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.write_close" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.BIO.writeable">
-<tt class="descname">writeable</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.writeable"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.writeable" title="Permalink to this definition">¶</a></dt>
+<code class="descname">writeable</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIO.writeable"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIO.writeable" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="exception">
<dt id="M2Crypto.BIO.BIOError">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.BIO.</tt><tt class="descname">BIOError</tt><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIOError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIOError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.BIO.</code><code class="descname">BIOError</code><a class="reference internal" href="_modules/M2Crypto/BIO.html#BIOError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.BIOError" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></code></p>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.BIO.CipherStream">
-<em class="property">class </em><tt class="descclassname">M2Crypto.BIO.</tt><tt class="descname">CipherStream</tt><big>(</big><em>obio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#CipherStream"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.CipherStream" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.BIO.BIO" title="M2Crypto.BIO.BIO"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.BIO.BIO</span></tt></a></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.BIO.</code><code class="descname">CipherStream</code><span class="sig-paren">(</span><em>obio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#CipherStream"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.CipherStream" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#M2Crypto.BIO.BIO" title="M2Crypto.BIO.BIO"><code class="xref py py-class docutils literal"><span class="pre">M2Crypto.BIO.BIO</span></code></a></p>
<p>Object interface to BIO_f_cipher.</p>
<dl class="attribute">
<dt id="M2Crypto.BIO.CipherStream.SALT_LEN">
-<tt class="descname">SALT_LEN</tt><em class="property"> = 8</em><a class="headerlink" href="#M2Crypto.BIO.CipherStream.SALT_LEN" title="Permalink to this definition">¶</a></dt>
+<code class="descname">SALT_LEN</code><em class="property"> = 8</em><a class="headerlink" href="#M2Crypto.BIO.CipherStream.SALT_LEN" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.CipherStream.close">
-<tt class="descname">close</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#CipherStream.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.CipherStream.close" title="Permalink to this definition">¶</a></dt>
+<code class="descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#CipherStream.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.CipherStream.close" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.CipherStream.m2_bio_free">
-<tt class="descname">m2_bio_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.BIO.CipherStream.m2_bio_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_bio_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.BIO.CipherStream.m2_bio_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.CipherStream.m2_bio_pop">
-<tt class="descname">m2_bio_pop</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.BIO.CipherStream.m2_bio_pop" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_bio_pop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.BIO.CipherStream.m2_bio_pop" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.CipherStream.set_cipher">
-<tt class="descname">set_cipher</tt><big>(</big><em>algo</em>, <em>key</em>, <em>iv</em>, <em>op</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#CipherStream.set_cipher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.CipherStream.set_cipher" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_cipher</code><span class="sig-paren">(</span><em>algo</em>, <em>key</em>, <em>iv</em>, <em>op</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#CipherStream.set_cipher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.CipherStream.set_cipher" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.CipherStream.write_close">
-<tt class="descname">write_close</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#CipherStream.write_close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.CipherStream.write_close" title="Permalink to this definition">¶</a></dt>
+<code class="descname">write_close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#CipherStream.write_close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.CipherStream.write_close" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.BIO.File">
-<em class="property">class </em><tt class="descclassname">M2Crypto.BIO.</tt><tt class="descname">File</tt><big>(</big><em>pyfile</em>, <em>close_pyfile=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#File"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.File" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.BIO.BIO" title="M2Crypto.BIO.BIO"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.BIO.BIO</span></tt></a></p>
-<p>Object interface to BIO_s_pyfd</p>
-<p>This class interfaces Python to OpenSSL functions that expect BIO *. For
-general file manipulation in Python, use Python&#8217;s builtin file object.</p>
+<em class="property">class </em><code class="descclassname">M2Crypto.BIO.</code><code class="descname">File</code><span class="sig-paren">(</span><em>pyfile</em>, <em>close_pyfile=1</em>, <em>mode='rb'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#File"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.File" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#M2Crypto.BIO.BIO" title="M2Crypto.BIO.BIO"><code class="xref py py-class docutils literal"><span class="pre">M2Crypto.BIO.BIO</span></code></a></p>
+<p>Object interface to BIO_s_pyfd.</p>
+<p>This class interfaces Python to OpenSSL functions that expect BIO. For
+general file manipulation in Python, use Python’s builtin file object.</p>
<dl class="method">
<dt id="M2Crypto.BIO.File.close">
-<tt class="descname">close</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#File.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.File.close" title="Permalink to this definition">¶</a></dt>
+<code class="descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#File.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.File.close" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="M2Crypto.BIO.File.flush">
+<code class="descname">flush</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#File.flush"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.File.flush" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.File.reset">
-<tt class="descname">reset</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#File.reset"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.File.reset" title="Permalink to this definition">¶</a></dt>
-<dd><p>Sets the bio to its initial state
-:return: 0 for success, and -1 for failure</p>
+<code class="descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#File.reset"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.File.reset" title="Permalink to this definition">¶</a></dt>
+<dd><p>Set the bio to its initial state.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">0 for success, and -1 for failure</td>
+</tr>
+</tbody>
+</table>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.BIO.IOBuffer">
-<em class="property">class </em><tt class="descclassname">M2Crypto.BIO.</tt><tt class="descname">IOBuffer</tt><big>(</big><em>under_bio</em>, <em>mode='rwb'</em>, <em>_pyfree=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#IOBuffer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.IOBuffer" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.BIO.BIO" title="M2Crypto.BIO.BIO"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.BIO.BIO</span></tt></a></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.BIO.</code><code class="descname">IOBuffer</code><span class="sig-paren">(</span><em>under_bio</em>, <em>mode='rwb'</em>, <em>_pyfree=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#IOBuffer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.IOBuffer" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#M2Crypto.BIO.BIO" title="M2Crypto.BIO.BIO"><code class="xref py py-class docutils literal"><span class="pre">M2Crypto.BIO.BIO</span></code></a></p>
<p>Object interface to BIO_f_buffer.</p>
-<p>Its principal function is to be BIO_push()&#8217;ed on top of a BIO_f_ssl, so
+<p>Its principal function is to be BIO_push()’ed on top of a BIO_f_ssl, so
that makefile() of said underlying SSL socket works.</p>
<dl class="method">
<dt id="M2Crypto.BIO.IOBuffer.close">
-<tt class="descname">close</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#IOBuffer.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.IOBuffer.close" title="Permalink to this definition">¶</a></dt>
+<code class="descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#IOBuffer.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.IOBuffer.close" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.IOBuffer.m2_bio_free">
-<tt class="descname">m2_bio_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.BIO.IOBuffer.m2_bio_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_bio_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.BIO.IOBuffer.m2_bio_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.IOBuffer.m2_bio_pop">
-<tt class="descname">m2_bio_pop</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.BIO.IOBuffer.m2_bio_pop" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_bio_pop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.BIO.IOBuffer.m2_bio_pop" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.BIO.MemoryBuffer">
-<em class="property">class </em><tt class="descclassname">M2Crypto.BIO.</tt><tt class="descname">MemoryBuffer</tt><big>(</big><em>data=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#MemoryBuffer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.MemoryBuffer" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.BIO.BIO" title="M2Crypto.BIO.BIO"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.BIO.BIO</span></tt></a></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.BIO.</code><code class="descname">MemoryBuffer</code><span class="sig-paren">(</span><em>data=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#MemoryBuffer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.MemoryBuffer" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#M2Crypto.BIO.BIO" title="M2Crypto.BIO.BIO"><code class="xref py py-class docutils literal"><span class="pre">M2Crypto.BIO.BIO</span></code></a></p>
<p>Object interface to BIO_s_mem.</p>
<p>Empirical testing suggests that this class performs less well than
cStringIO, because cStringIO is implemented in C, whereas this class
@@ -501,39 +506,39 @@ cStringIO for regular work and convert said cStringIO object to
a MemoryBuffer object only when necessary.</p>
<dl class="method">
<dt id="M2Crypto.BIO.MemoryBuffer.close">
-<tt class="descname">close</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.BIO.MemoryBuffer.close" title="Permalink to this definition">¶</a></dt>
+<code class="descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.BIO.MemoryBuffer.close" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.MemoryBuffer.getvalue">
-<tt class="descname">getvalue</tt><big>(</big><em>size=0</em><big>)</big><a class="headerlink" href="#M2Crypto.BIO.MemoryBuffer.getvalue" title="Permalink to this definition">¶</a></dt>
+<code class="descname">getvalue</code><span class="sig-paren">(</span><em>size=0</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.BIO.MemoryBuffer.getvalue" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.MemoryBuffer.read">
-<tt class="descname">read</tt><big>(</big><em>size=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#MemoryBuffer.read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.MemoryBuffer.read" title="Permalink to this definition">¶</a></dt>
+<code class="descname">read</code><span class="sig-paren">(</span><em>size=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#MemoryBuffer.read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.MemoryBuffer.read" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.MemoryBuffer.read_all">
-<tt class="descname">read_all</tt><big>(</big><em>size=0</em><big>)</big><a class="headerlink" href="#M2Crypto.BIO.MemoryBuffer.read_all" title="Permalink to this definition">¶</a></dt>
+<code class="descname">read_all</code><span class="sig-paren">(</span><em>size=0</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.BIO.MemoryBuffer.read_all" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.BIO.MemoryBuffer.write_close">
-<tt class="descname">write_close</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#MemoryBuffer.write_close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.MemoryBuffer.write_close" title="Permalink to this definition">¶</a></dt>
+<code class="descname">write_close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#MemoryBuffer.write_close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.MemoryBuffer.write_close" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.BIO.SSLBio">
-<em class="property">class </em><tt class="descclassname">M2Crypto.BIO.</tt><tt class="descname">SSLBio</tt><big>(</big><em>_pyfree=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#SSLBio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.SSLBio" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.BIO.BIO" title="M2Crypto.BIO.BIO"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.BIO.BIO</span></tt></a></p>
-<p>Object interface to BIO_f_ssl</p>
+<em class="property">class </em><code class="descclassname">M2Crypto.BIO.</code><code class="descname">SSLBio</code><span class="sig-paren">(</span><em>_pyfree=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#SSLBio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.SSLBio" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#M2Crypto.BIO.BIO" title="M2Crypto.BIO.BIO"><code class="xref py py-class docutils literal"><span class="pre">M2Crypto.BIO.BIO</span></code></a></p>
+<p>Object interface to BIO_f_ssl.</p>
<dl class="method">
<dt id="M2Crypto.BIO.SSLBio.do_handshake">
-<tt class="descname">do_handshake</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#SSLBio.do_handshake"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.SSLBio.do_handshake" title="Permalink to this definition">¶</a></dt>
+<code class="descname">do_handshake</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#SSLBio.do_handshake"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.SSLBio.do_handshake" title="Permalink to this definition">¶</a></dt>
<dd><p>Do the handshake.</p>
<p>Return 1 if the handshake completes
Return 0 or a negative number if there is a problem</p>
@@ -541,7 +546,7 @@ Return 0 or a negative number if there is a problem</p>
<dl class="method">
<dt id="M2Crypto.BIO.SSLBio.set_ssl">
-<tt class="descname">set_ssl</tt><big>(</big><em>conn</em>, <em>close_flag=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#SSLBio.set_ssl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.SSLBio.set_ssl" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_ssl</code><span class="sig-paren">(</span><em>conn</em>, <em>close_flag=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#SSLBio.set_ssl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.SSLBio.set_ssl" title="Permalink to this definition">¶</a></dt>
<dd><p>Sets the bio to the SSL pointer which is
contained in the connection object.</p>
</dd></dl>
@@ -550,26 +555,26 @@ contained in the connection object.</p>
<dl class="function">
<dt id="M2Crypto.BIO.openfile">
-<tt class="descclassname">M2Crypto.BIO.</tt><tt class="descname">openfile</tt><big>(</big><em>filename</em>, <em>mode='rb'</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BIO.html#openfile"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.openfile" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.BIO.</code><code class="descname">openfile</code><span class="sig-paren">(</span><em>filename</em>, <em>mode='rb'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BIO.html#openfile"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BIO.openfile" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</div>
<div class="section" id="module-M2Crypto.BN">
-<span id="bn-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">BN</span></tt> Module<a class="headerlink" href="#module-M2Crypto.BN" title="Permalink to this headline">¶</a></h2>
+<span id="bn-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">BN</span></code> Module<a class="headerlink" href="#module-M2Crypto.BN" title="Permalink to this headline">¶</a></h2>
<dl class="function">
<dt id="M2Crypto.BN.rand">
-<tt class="descclassname">M2Crypto.BN.</tt><tt class="descname">rand</tt><big>(</big><em>bits</em>, <em>top=-1</em>, <em>bottom=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BN.html#rand"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BN.rand" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.BN.</code><code class="descname">rand</code><span class="sig-paren">(</span><em>bits</em>, <em>top=-1</em>, <em>bottom=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BN.html#rand"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BN.rand" title="Permalink to this definition">¶</a></dt>
<dd><p>Generate cryptographically strong random number.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>bits</strong> &#8211; Length of random number in bits.</li>
-<li><strong>top</strong> &#8211; If -1, the most significant bit can be 0. If 0, the most
+<li><strong>bits</strong> – Length of random number in bits.</li>
+<li><strong>top</strong> – If -1, the most significant bit can be 0. If 0, the most
significant bit is 1, and if 1, the two most significant
bits will be 1.</li>
-<li><strong>bottom</strong> &#8211; If bottom is true, the number will be odd.</li>
+<li><strong>bottom</strong> – If bottom is true, the number will be odd.</li>
</ul>
</td>
</tr>
@@ -579,13 +584,13 @@ bits will be 1.</li>
<dl class="function">
<dt id="M2Crypto.BN.rand_range">
-<tt class="descclassname">M2Crypto.BN.</tt><tt class="descname">rand_range</tt><big>(</big><em>range</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BN.html#rand_range"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BN.rand_range" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.BN.</code><code class="descname">rand_range</code><span class="sig-paren">(</span><em>range</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BN.html#rand_range"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BN.rand_range" title="Permalink to this definition">¶</a></dt>
<dd><p>Generate a random number in a range.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>range</strong> &#8211; Upper limit for range.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>range</strong> – Upper limit for range.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">A random number in the range [0, range)</td>
</tr>
@@ -595,14 +600,14 @@ bits will be 1.</li>
<dl class="function">
<dt id="M2Crypto.BN.randfname">
-<tt class="descclassname">M2Crypto.BN.</tt><tt class="descname">randfname</tt><big>(</big><em>length</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/BN.html#randfname"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BN.randfname" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.BN.</code><code class="descname">randfname</code><span class="sig-paren">(</span><em>length</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/BN.html#randfname"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.BN.randfname" title="Permalink to this definition">¶</a></dt>
<dd><p>Return a random filename, which is simply a string where all
the characters are from the set [a-zA-Z0-9].</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>length</strong> &#8211; Length of filename to return.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>length</strong> – Length of filename to return.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">random filename string</td>
</tr>
@@ -612,75 +617,74 @@ the characters are from the set [a-zA-Z0-9].</p>
</div>
<div class="section" id="module-M2Crypto.DH">
-<span id="dh-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">DH</span></tt> Module<a class="headerlink" href="#module-M2Crypto.DH" title="Permalink to this headline">¶</a></h2>
+<span id="dh-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">DH</span></code> Module<a class="headerlink" href="#module-M2Crypto.DH" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.DH.DH">
-<em class="property">class </em><tt class="descclassname">M2Crypto.DH.</tt><tt class="descname">DH</tt><big>(</big><em>dh</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DH.html#DH"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.DH" title="Permalink to this definition">¶</a></dt>
-<dd><p>Object interface to the Diffie-Hellman key exchange
-protocol.</p>
+<em class="property">class </em><code class="descclassname">M2Crypto.DH.</code><code class="descname">DH</code><span class="sig-paren">(</span><em>dh</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DH.html#DH"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.DH" title="Permalink to this definition">¶</a></dt>
+<dd><p>Object interface to the Diffie-Hellman key exchange protocol.</p>
<dl class="method">
<dt id="M2Crypto.DH.DH.check_params">
-<tt class="descname">check_params</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/DH.html#DH.check_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.DH.check_params" title="Permalink to this definition">¶</a></dt>
+<code class="descname">check_params</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DH.html#DH.check_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.DH.check_params" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.DH.DH.compute_key">
-<tt class="descname">compute_key</tt><big>(</big><em>pubkey</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DH.html#DH.compute_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.DH.compute_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">compute_key</code><span class="sig-paren">(</span><em>pubkey</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DH.html#DH.compute_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.DH.compute_key" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.DH.DH.gen_key">
-<tt class="descname">gen_key</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/DH.html#DH.gen_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.DH.gen_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">gen_key</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DH.html#DH.gen_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.DH.gen_key" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.DH.DH.m2_dh_free">
-<tt class="descname">m2_dh_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.DH.DH.m2_dh_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_dh_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.DH.DH.m2_dh_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.DH.DH.print_params">
-<tt class="descname">print_params</tt><big>(</big><em>bio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DH.html#DH.print_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.DH.print_params" title="Permalink to this definition">¶</a></dt>
+<code class="descname">print_params</code><span class="sig-paren">(</span><em>bio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DH.html#DH.print_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.DH.print_params" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="exception">
<dt id="M2Crypto.DH.DHError">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.DH.</tt><tt class="descname">DHError</tt><a class="reference internal" href="_modules/M2Crypto/DH.html#DHError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.DHError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.DH.</code><code class="descname">DHError</code><a class="reference internal" href="_modules/M2Crypto/DH.html#DHError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.DHError" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></code></p>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.DH.gen_params">
-<tt class="descclassname">M2Crypto.DH.</tt><tt class="descname">gen_params</tt><big>(</big><em>plen</em>, <em>g</em>, <em>callback=&lt;function genparam_callback at 0x1faa758&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DH.html#gen_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.gen_params" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.DH.</code><code class="descname">gen_params</code><span class="sig-paren">(</span><em>plen</em>, <em>g</em>, <em>callback=&lt;function genparam_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DH.html#gen_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.gen_params" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.DH.load_params">
-<tt class="descclassname">M2Crypto.DH.</tt><tt class="descname">load_params</tt><big>(</big><em>file</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DH.html#load_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.load_params" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.DH.</code><code class="descname">load_params</code><span class="sig-paren">(</span><em>file</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DH.html#load_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.load_params" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.DH.load_params_bio">
-<tt class="descclassname">M2Crypto.DH.</tt><tt class="descname">load_params_bio</tt><big>(</big><em>bio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DH.html#load_params_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.load_params_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.DH.</code><code class="descname">load_params_bio</code><span class="sig-paren">(</span><em>bio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DH.html#load_params_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.load_params_bio" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.DH.set_params">
-<tt class="descclassname">M2Crypto.DH.</tt><tt class="descname">set_params</tt><big>(</big><em>p</em>, <em>g</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DH.html#set_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.set_params" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.DH.</code><code class="descname">set_params</code><span class="sig-paren">(</span><em>p</em>, <em>g</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DH.html#set_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DH.set_params" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</div>
<div class="section" id="module-M2Crypto.DSA">
-<span id="dsa-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">DSA</span></tt> Module<a class="headerlink" href="#module-M2Crypto.DSA" title="Permalink to this headline">¶</a></h2>
+<span id="dsa-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">DSA</span></code> Module<a class="headerlink" href="#module-M2Crypto.DSA" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.DSA.DSA">
-<em class="property">class </em><tt class="descclassname">M2Crypto.DSA.</tt><tt class="descname">DSA</tt><big>(</big><em>dsa</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.DSA.</code><code class="descname">DSA</code><span class="sig-paren">(</span><em>dsa</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA" title="Permalink to this definition">¶</a></dt>
<dd><p>This class is a context supporting DSA key and parameter
values, signing and verifying.</p>
<p>Simple example:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">EVP</span><span class="p">,</span> <span class="n">DSA</span><span class="p">,</span> <span class="n">util</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">EVP</span><span class="p">,</span> <span class="n">DSA</span><span class="p">,</span> <span class="n">util</span>
<span class="n">message</span> <span class="o">=</span> <span class="s1">&#39;Kilroy was here!&#39;</span>
<span class="n">md</span> <span class="o">=</span> <span class="n">EVP</span><span class="o">.</span><span class="n">MessageDigest</span><span class="p">(</span><span class="s1">&#39;sha1&#39;</span><span class="p">)</span>
@@ -692,14 +696,14 @@ values, signing and verifying.</p>
<span class="n">r</span><span class="p">,</span> <span class="n">s</span> <span class="o">=</span> <span class="n">dsa</span><span class="o">.</span><span class="n">sign</span><span class="p">(</span><span class="n">digest</span><span class="p">)</span>
<span class="n">good</span> <span class="o">=</span> <span class="n">dsa</span><span class="o">.</span><span class="n">verify</span><span class="p">(</span><span class="n">digest</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="n">s</span><span class="p">)</span>
<span class="k">if</span> <span class="n">good</span><span class="p">:</span>
- <span class="k">print</span><span class="p">(</span><span class="s1">&#39; ** success **&#39;</span><span class="p">)</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39; ** success **&#39;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">print</span><span class="p">(</span><span class="s1">&#39; ** verification failed **&#39;</span><span class="p">)</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39; ** verification failed **&#39;</span><span class="p">)</span>
</pre></div>
</div>
<dl class="method">
<dt id="M2Crypto.DSA.DSA.check_key">
-<tt class="descname">check_key</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.check_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.check_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">check_key</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.check_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.check_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Check to be sure the DSA object has a valid private key.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@@ -713,26 +717,26 @@ values, signing and verifying.</p>
<dl class="method">
<dt id="M2Crypto.DSA.DSA.gen_key">
-<tt class="descname">gen_key</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.gen_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.gen_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">gen_key</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.gen_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.gen_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Generate a key pair.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.DSA.DSA.m2_dsa_free">
-<tt class="descname">m2_dsa_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.DSA.DSA.m2_dsa_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_dsa_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.DSA.DSA.m2_dsa_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.DSA.DSA.save_key">
-<tt class="descname">save_key</tt><big>(</big><em>filename</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.save_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.save_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_key</code><span class="sig-paren">(</span><em>filename</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.save_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.save_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the DSA key pair to a file.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>filename</strong> &#8211; Save the DSA key pair to this file.</li>
-<li><strong>cipher</strong> &#8211; name of symmetric key algorithm and mode
+<li><strong>filename</strong> – Save the DSA key pair to this file.</li>
+<li><strong>cipher</strong> – name of symmetric key algorithm and mode
to encrypt the private key.</li>
</ul>
</td>
@@ -746,15 +750,15 @@ to encrypt the private key.</li>
<dl class="method">
<dt id="M2Crypto.DSA.DSA.save_key_bio">
-<tt class="descname">save_key_bio</tt><big>(</big><em>bio</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.save_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.save_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_key_bio</code><span class="sig-paren">(</span><em>bio</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.save_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.save_key_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Save DSA key pair to a BIO object.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>bio</strong> &#8211; Save DSA parameters to this object.</li>
-<li><strong>cipher</strong> &#8211; name of symmetric key algorithm and mode
+<li><strong>bio</strong> – Save DSA parameters to this object.</li>
+<li><strong>cipher</strong> – name of symmetric key algorithm and mode
to encrypt the private key.</li>
</ul>
</td>
@@ -768,13 +772,13 @@ to encrypt the private key.</li>
<dl class="method">
<dt id="M2Crypto.DSA.DSA.save_params">
-<tt class="descname">save_params</tt><big>(</big><em>filename</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.save_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.save_params" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_params</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.save_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.save_params" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the DSA parameters to a file.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> &#8211; Save the DSA parameters to this file.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> – Save the DSA parameters to this file.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">1 (true) if successful</td>
</tr>
@@ -784,13 +788,13 @@ to encrypt the private key.</li>
<dl class="method">
<dt id="M2Crypto.DSA.DSA.save_params_bio">
-<tt class="descname">save_params_bio</tt><big>(</big><em>bio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.save_params_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.save_params_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_params_bio</code><span class="sig-paren">(</span><em>bio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.save_params_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.save_params_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Save DSA parameters to a BIO object.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> &#8211; Save DSA parameters to this object.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> – Save DSA parameters to this object.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">1 (true) if successful</td>
</tr>
@@ -800,13 +804,13 @@ to encrypt the private key.</li>
<dl class="method">
<dt id="M2Crypto.DSA.DSA.save_pub_key">
-<tt class="descname">save_pub_key</tt><big>(</big><em>filename</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.save_pub_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.save_pub_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_pub_key</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.save_pub_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.save_pub_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the DSA public key (with parameters) to a file.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> &#8211; Save DSA public key (with parameters)
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> – Save DSA public key (with parameters)
to this file.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">1 (true) if successful</td>
@@ -817,13 +821,13 @@ to this file.</td>
<dl class="method">
<dt id="M2Crypto.DSA.DSA.save_pub_key_bio">
-<tt class="descname">save_pub_key_bio</tt><big>(</big><em>bio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.save_pub_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.save_pub_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_pub_key_bio</code><span class="sig-paren">(</span><em>bio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.save_pub_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.save_pub_key_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Save DSA public key (with parameters) to a BIO object.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> &#8211; Save DSA public key (with parameters)
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> – Save DSA public key (with parameters)
to this object.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">1 (true) if successful</td>
@@ -834,21 +838,21 @@ to this object.</td>
<dl class="method">
<dt id="M2Crypto.DSA.DSA.set_params">
-<tt class="descname">set_params</tt><big>(</big><em>p</em>, <em>q</em>, <em>g</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.set_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.set_params" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_params</code><span class="sig-paren">(</span><em>p</em>, <em>q</em>, <em>g</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.set_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.set_params" title="Permalink to this definition">¶</a></dt>
<dd><p>Set new parameters.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>p</strong> &#8211; MPI binary representation ... format that consists of
-the number&#8217;s length in bytes represented as a 4-byte
+<li><strong>p</strong> – MPI binary representation … format that consists of
+the number’s length in bytes represented as a 4-byte
big-endian number, and the number itself in big-endian
format, where the most significant bit signals
a negative number (the representation of numbers with
the MSB set is prefixed with null byte).</li>
-<li><strong>q</strong> &#8211; ditto</li>
-<li><strong>g</strong> &#8211; ditto</li>
+<li><strong>q</strong> – ditto</li>
+<li><strong>g</strong> – ditto</li>
</ul>
</td>
</tr>
@@ -863,17 +867,17 @@ gen_params function to create a new DSA object.</dd>
<dl class="method">
<dt id="M2Crypto.DSA.DSA.sign">
-<tt class="descname">sign</tt><big>(</big><em>digest</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.sign"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.sign" title="Permalink to this definition">¶</a></dt>
+<code class="descname">sign</code><span class="sig-paren">(</span><em>digest</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.sign"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.sign" title="Permalink to this definition">¶</a></dt>
<dd><p>Sign the digest.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>digest</strong> &#8211; SHA-1 hash of message (same as output
-from MessageDigest, a &#8220;byte string&#8221;)</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>digest</strong> – SHA-1 hash of message (same as output
+from MessageDigest, a “byte string”)</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">DSA signature, a tuple of two values, r and s,
-both &#8220;byte strings&#8221;.</td>
+both “byte strings”.</td>
</tr>
</tbody>
</table>
@@ -881,12 +885,12 @@ both &#8220;byte strings&#8221;.</td>
<dl class="method">
<dt id="M2Crypto.DSA.DSA.sign_asn1">
-<tt class="descname">sign_asn1</tt><big>(</big><em>digest</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.sign_asn1"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.sign_asn1" title="Permalink to this definition">¶</a></dt>
+<code class="descname">sign_asn1</code><span class="sig-paren">(</span><em>digest</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.sign_asn1"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.sign_asn1" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.DSA.DSA.verify">
-<tt class="descname">verify</tt><big>(</big><em>digest</em>, <em>r</em>, <em>s</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.verify"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.verify" title="Permalink to this definition">¶</a></dt>
+<code class="descname">verify</code><span class="sig-paren">(</span><em>digest</em>, <em>r</em>, <em>s</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.verify"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.verify" title="Permalink to this definition">¶</a></dt>
<dd><p>Verify a newly calculated digest against the signature
values r and s.</p>
<table class="docutils field-list" frame="void" rules="none">
@@ -894,10 +898,10 @@ values r and s.</p>
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>digest</strong> &#8211; SHA-1 hash of message (same as output
-from MessageDigest, a &#8220;byte string&#8221;)</li>
-<li><strong>r</strong> &#8211; r value of the signature, a &#8220;byte string&#8221;</li>
-<li><strong>s</strong> &#8211; s value of the signature, a &#8220;byte string&#8221;</li>
+<li><strong>digest</strong> – SHA-1 hash of message (same as output
+from MessageDigest, a “byte string”)</li>
+<li><strong>r</strong> – r value of the signature, a “byte string”</li>
+<li><strong>s</strong> – s value of the signature, a “byte string”</li>
</ul>
</td>
</tr>
@@ -910,27 +914,27 @@ from MessageDigest, a &#8220;byte string&#8221;)</li>
<dl class="method">
<dt id="M2Crypto.DSA.DSA.verify_asn1">
-<tt class="descname">verify_asn1</tt><big>(</big><em>digest</em>, <em>blob</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.verify_asn1"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.verify_asn1" title="Permalink to this definition">¶</a></dt>
+<code class="descname">verify_asn1</code><span class="sig-paren">(</span><em>digest</em>, <em>blob</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA.verify_asn1"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA.verify_asn1" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="exception">
<dt id="M2Crypto.DSA.DSAError">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.DSA.</tt><tt class="descname">DSAError</tt><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSAError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSAError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.DSA.</code><code class="descname">DSAError</code><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSAError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSAError" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></code></p>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.DSA.DSA_pub">
-<em class="property">class </em><tt class="descclassname">M2Crypto.DSA.</tt><tt class="descname">DSA_pub</tt><big>(</big><em>dsa</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA_pub"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA_pub" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.DSA.DSA" title="M2Crypto.DSA.DSA"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.DSA.DSA</span></tt></a></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.DSA.</code><code class="descname">DSA_pub</code><span class="sig-paren">(</span><em>dsa</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA_pub"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA_pub" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#M2Crypto.DSA.DSA" title="M2Crypto.DSA.DSA"><code class="xref py py-class docutils literal"><span class="pre">M2Crypto.DSA.DSA</span></code></a></p>
<p>This class is a DSA context that only supports a public key
and verification. It does NOT support a private key or
signing.</p>
<dl class="method">
<dt id="M2Crypto.DSA.DSA_pub.check_key">
-<tt class="descname">check_key</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA_pub.check_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA_pub.check_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">check_key</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA_pub.check_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA_pub.check_key" title="Permalink to this definition">¶</a></dt>
<dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
@@ -943,13 +947,13 @@ signing.</p>
<dl class="method">
<dt id="M2Crypto.DSA.DSA_pub.save_key">
-<tt class="descname">save_key</tt><big>(</big><em>filename</em><big>)</big><a class="headerlink" href="#M2Crypto.DSA.DSA_pub.save_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_key</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.DSA.DSA_pub.save_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the DSA public key (with parameters) to a file.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> &#8211; Save DSA public key (with parameters)
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> – Save DSA public key (with parameters)
to this file.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">1 (true) if successful</td>
@@ -960,13 +964,13 @@ to this file.</td>
<dl class="method">
<dt id="M2Crypto.DSA.DSA_pub.save_key_bio">
-<tt class="descname">save_key_bio</tt><big>(</big><em>bio</em><big>)</big><a class="headerlink" href="#M2Crypto.DSA.DSA_pub.save_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_key_bio</code><span class="sig-paren">(</span><em>bio</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.DSA.DSA_pub.save_key_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Save DSA public key (with parameters) to a BIO object.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> &#8211; Save DSA public key (with parameters)
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> – Save DSA public key (with parameters)
to this object.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">1 (true) if successful</td>
@@ -977,19 +981,19 @@ to this object.</td>
<dl class="method">
<dt id="M2Crypto.DSA.DSA_pub.sign">
-<tt class="descname">sign</tt><big>(</big><em>*argv</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA_pub.sign"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA_pub.sign" title="Permalink to this definition">¶</a></dt>
+<code class="descname">sign</code><span class="sig-paren">(</span><em>*argv</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#DSA_pub.sign"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.DSA_pub.sign" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.DSA.DSA_pub.sign_asn1">
-<tt class="descname">sign_asn1</tt><big>(</big><em>*argv</em><big>)</big><a class="headerlink" href="#M2Crypto.DSA.DSA_pub.sign_asn1" title="Permalink to this definition">¶</a></dt>
+<code class="descname">sign_asn1</code><span class="sig-paren">(</span><em>*argv</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.DSA.DSA_pub.sign_asn1" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.DSA.gen_params">
-<tt class="descclassname">M2Crypto.DSA.</tt><tt class="descname">gen_params</tt><big>(</big><em>bits</em>, <em>callback=&lt;function genparam_callback at 0x1faa758&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#gen_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.gen_params" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.DSA.</code><code class="descname">gen_params</code><span class="sig-paren">(</span><em>bits</em>, <em>callback=&lt;function genparam_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#gen_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.gen_params" title="Permalink to this definition">¶</a></dt>
<dd><p>Factory function that generates DSA parameters and
instantiates a DSA object from the output.</p>
<table class="docutils field-list" frame="void" rules="none">
@@ -997,9 +1001,9 @@ instantiates a DSA object from the output.</p>
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>bits</strong> &#8211; The length of the prime to be generated. If
-&#8216;bits&#8217; &lt; 512, it is set to 512.</li>
-<li><strong>callback</strong> &#8211; A Python callback object that will be
+<li><strong>bits</strong> – The length of the prime to be generated. If
+‘bits’ &lt; 512, it is set to 512.</li>
+<li><strong>callback</strong> – A Python callback object that will be
invoked during parameter generation; it usual
purpose is to provide visual feedback.</li>
</ul>
@@ -1014,7 +1018,7 @@ purpose is to provide visual feedback.</li>
<dl class="function">
<dt id="M2Crypto.DSA.load_key">
-<tt class="descclassname">M2Crypto.DSA.</tt><tt class="descname">load_key</tt><big>(</big><em>file</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#load_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.load_key" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.DSA.</code><code class="descname">load_key</code><span class="sig-paren">(</span><em>file</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#load_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.load_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Factory function that instantiates a DSA object from a
PEM encoded DSA key pair.</p>
<table class="docutils field-list" frame="void" rules="none">
@@ -1022,9 +1026,9 @@ PEM encoded DSA key pair.</p>
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>file</strong> &#8211; Names the file (a path) that contains the PEM
+<li><strong>file</strong> – Names the file (a path) that contains the PEM
representation of the DSA key pair.</li>
-<li><strong>callback</strong> &#8211; A Python callback object that will be
+<li><strong>callback</strong> – A Python callback object that will be
invoked if the DSA key pair is
passphrase-protected.</li>
</ul>
@@ -1039,7 +1043,7 @@ passphrase-protected.</li>
<dl class="function">
<dt id="M2Crypto.DSA.load_key_bio">
-<tt class="descclassname">M2Crypto.DSA.</tt><tt class="descname">load_key_bio</tt><big>(</big><em>bio</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#load_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.load_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.DSA.</code><code class="descname">load_key_bio</code><span class="sig-paren">(</span><em>bio</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#load_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.load_key_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Factory function that instantiates a DSA object from a
PEM encoded DSA key pair.</p>
<table class="docutils field-list" frame="void" rules="none">
@@ -1047,9 +1051,9 @@ PEM encoded DSA key pair.</p>
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>bio</strong> &#8211; Contains the PEM representation of the DSA
+<li><strong>bio</strong> – Contains the PEM representation of the DSA
key pair.</li>
-<li><strong>callback</strong> &#8211; A Python callback object that will be
+<li><strong>callback</strong> – A Python callback object that will be
invoked if the DSA key pair is
passphrase-protected.</li>
</ul>
@@ -1064,7 +1068,7 @@ passphrase-protected.</li>
<dl class="function">
<dt id="M2Crypto.DSA.load_params">
-<tt class="descclassname">M2Crypto.DSA.</tt><tt class="descname">load_params</tt><big>(</big><em>file</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#load_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.load_params" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.DSA.</code><code class="descname">load_params</code><span class="sig-paren">(</span><em>file</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#load_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.load_params" title="Permalink to this definition">¶</a></dt>
<dd><p>Factory function that instantiates a DSA object with DSA
parameters from a file.</p>
<table class="docutils field-list" frame="void" rules="none">
@@ -1072,9 +1076,9 @@ parameters from a file.</p>
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>file</strong> &#8211; Names the file (a path) that contains the PEM
+<li><strong>file</strong> – Names the file (a path) that contains the PEM
representation of the DSA parameters.</li>
-<li><strong>callback</strong> &#8211; A Python callback object that will be
+<li><strong>callback</strong> – A Python callback object that will be
invoked if the DSA parameters file is
passphrase-protected.</li>
</ul>
@@ -1089,7 +1093,7 @@ passphrase-protected.</li>
<dl class="function">
<dt id="M2Crypto.DSA.load_params_bio">
-<tt class="descclassname">M2Crypto.DSA.</tt><tt class="descname">load_params_bio</tt><big>(</big><em>bio</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#load_params_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.load_params_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.DSA.</code><code class="descname">load_params_bio</code><span class="sig-paren">(</span><em>bio</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#load_params_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.load_params_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Factory function that instantiates a DSA object with DSA
parameters from a M2Crypto.BIO object.</p>
<table class="docutils field-list" frame="void" rules="none">
@@ -1097,9 +1101,9 @@ parameters from a M2Crypto.BIO object.</p>
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>bio</strong> &#8211; Contains the PEM representation of the DSA
+<li><strong>bio</strong> – Contains the PEM representation of the DSA
parameters.</li>
-<li><strong>callback</strong> &#8211; A Python callback object that will be
+<li><strong>callback</strong> – A Python callback object that will be
invoked if the DSA parameters file is
passphrase-protected.</li>
</ul>
@@ -1114,7 +1118,7 @@ passphrase-protected.</li>
<dl class="function">
<dt id="M2Crypto.DSA.load_pub_key">
-<tt class="descclassname">M2Crypto.DSA.</tt><tt class="descname">load_pub_key</tt><big>(</big><em>file</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#load_pub_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.load_pub_key" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.DSA.</code><code class="descname">load_pub_key</code><span class="sig-paren">(</span><em>file</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#load_pub_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.load_pub_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Factory function that instantiates a DSA_pub object using
a DSA public key contained in PEM file. The PEM file
must contain the parameters in addition to the public key.</p>
@@ -1123,9 +1127,9 @@ must contain the parameters in addition to the public key.</p>
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>file</strong> &#8211; Names the file (a path) that contains the PEM
+<li><strong>file</strong> – Names the file (a path) that contains the PEM
representation of the DSA public key.</li>
-<li><strong>callback</strong> &#8211; A Python callback object that will be
+<li><strong>callback</strong> – A Python callback object that will be
invoked should the DSA public key be
passphrase-protected.</li>
</ul>
@@ -1140,7 +1144,7 @@ passphrase-protected.</li>
<dl class="function">
<dt id="M2Crypto.DSA.load_pub_key_bio">
-<tt class="descclassname">M2Crypto.DSA.</tt><tt class="descname">load_pub_key_bio</tt><big>(</big><em>bio</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#load_pub_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.load_pub_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.DSA.</code><code class="descname">load_pub_key_bio</code><span class="sig-paren">(</span><em>bio</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#load_pub_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.load_pub_key_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Factory function that instantiates a DSA_pub object using
a DSA public key contained in PEM format. The PEM
must contain the parameters in addition to the public key.</p>
@@ -1149,9 +1153,9 @@ must contain the parameters in addition to the public key.</p>
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>bio</strong> &#8211; Contains the PEM representation of the DSA
+<li><strong>bio</strong> – Contains the PEM representation of the DSA
public key (with params).</li>
-<li><strong>callback</strong> &#8211; A Python callback object that will be
+<li><strong>callback</strong> – A Python callback object that will be
invoked should the DSA public key be
passphrase-protected.</li>
</ul>
@@ -1166,7 +1170,7 @@ passphrase-protected.</li>
<dl class="function">
<dt id="M2Crypto.DSA.pub_key_from_params">
-<tt class="descclassname">M2Crypto.DSA.</tt><tt class="descname">pub_key_from_params</tt><big>(</big><em>p</em>, <em>q</em>, <em>g</em>, <em>pub</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#pub_key_from_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.pub_key_from_params" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.DSA.</code><code class="descname">pub_key_from_params</code><span class="sig-paren">(</span><em>p</em>, <em>q</em>, <em>g</em>, <em>pub</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#pub_key_from_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.pub_key_from_params" title="Permalink to this definition">¶</a></dt>
<dd><p>Factory function that instantiates a DSA_pub object using
the parameters and public key specified.</p>
<table class="docutils field-list" frame="void" rules="none">
@@ -1174,10 +1178,10 @@ the parameters and public key specified.</p>
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>p</strong> &#8211; value of p</li>
-<li><strong>q</strong> &#8211; value of q</li>
-<li><strong>g</strong> &#8211; value of g</li>
-<li><strong>pub</strong> &#8211; value of the public key</li>
+<li><strong>p</strong> – value of p</li>
+<li><strong>q</strong> – value of q</li>
+<li><strong>g</strong> – value of g</li>
+<li><strong>pub</strong> – value of the public key</li>
</ul>
</td>
</tr>
@@ -1190,7 +1194,7 @@ the parameters and public key specified.</p>
<dl class="function">
<dt id="M2Crypto.DSA.set_params">
-<tt class="descclassname">M2Crypto.DSA.</tt><tt class="descname">set_params</tt><big>(</big><em>p</em>, <em>q</em>, <em>g</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/DSA.html#set_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.set_params" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.DSA.</code><code class="descname">set_params</code><span class="sig-paren">(</span><em>p</em>, <em>q</em>, <em>g</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/DSA.html#set_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.DSA.set_params" title="Permalink to this definition">¶</a></dt>
<dd><p>Factory function that instantiates a DSA object with DSA
parameters.</p>
<table class="docutils field-list" frame="void" rules="none">
@@ -1198,9 +1202,9 @@ parameters.</p>
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>p</strong> &#8211; value of p, a &#8220;byte string&#8221;</li>
-<li><strong>q</strong> &#8211; value of q, a &#8220;byte string&#8221;</li>
-<li><strong>g</strong> &#8211; value of g, a &#8220;byte string&#8221;</li>
+<li><strong>p</strong> – value of p, a “byte string”</li>
+<li><strong>q</strong> – value of q, a “byte string”</li>
+<li><strong>g</strong> – value of g, a “byte string”</li>
</ul>
</td>
</tr>
@@ -1213,14 +1217,14 @@ parameters.</p>
</div>
<div class="section" id="module-M2Crypto.EC">
-<span id="ec-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">EC</span></tt> Module<a class="headerlink" href="#module-M2Crypto.EC" title="Permalink to this headline">¶</a></h2>
+<span id="ec-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">EC</span></code> Module<a class="headerlink" href="#module-M2Crypto.EC" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.EC.EC">
-<em class="property">class </em><tt class="descclassname">M2Crypto.EC.</tt><tt class="descname">EC</tt><big>(</big><em>ec</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.EC.</code><code class="descname">EC</code><span class="sig-paren">(</span><em>ec</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC" title="Permalink to this definition">¶</a></dt>
<dd><p>Object interface to a EC key pair.</p>
<dl class="method">
<dt id="M2Crypto.EC.EC.as_pem">
-<tt class="descname">as_pem</tt><big>(</big><em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.as_pem"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.as_pem" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_pem</code><span class="sig-paren">(</span><em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.as_pem"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.as_pem" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the key(pair) as a string in PEM format.
If no password is passed and the cipher is set
it exits with error</p>
@@ -1228,12 +1232,12 @@ it exits with error</p>
<dl class="method">
<dt id="M2Crypto.EC.EC.check_key">
-<tt class="descname">check_key</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.check_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.check_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">check_key</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.check_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.check_key" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.EC.EC.compute_dh_key">
-<tt class="descname">compute_dh_key</tt><big>(</big><em>pub_key</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.compute_dh_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.compute_dh_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">compute_dh_key</code><span class="sig-paren">(</span><em>pub_key</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.compute_dh_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.compute_dh_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Compute the ECDH shared key of this key pair and the given public
key object. They must both use the same curve. Returns the
shared key in binary as a buffer object. No Key Derivation Function is
@@ -1242,9 +1246,9 @@ applied.</p>
<dl class="method">
<dt id="M2Crypto.EC.EC.gen_key">
-<tt class="descname">gen_key</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.gen_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.gen_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">gen_key</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.gen_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.gen_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Generates the key pair from its parameters. Use:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">keypair</span> <span class="o">=</span> <span class="n">EC</span><span class="o">.</span><span class="n">gen_params</span><span class="p">(</span><span class="n">curve</span><span class="p">)</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">keypair</span> <span class="o">=</span> <span class="n">EC</span><span class="o">.</span><span class="n">gen_params</span><span class="p">(</span><span class="n">curve</span><span class="p">)</span>
<span class="n">keypair</span><span class="o">.</span><span class="n">gen_key</span><span class="p">()</span>
</pre></div>
</div>
@@ -1253,28 +1257,28 @@ applied.</p>
<dl class="method">
<dt id="M2Crypto.EC.EC.m2_ec_key_free">
-<tt class="descname">m2_ec_key_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.EC.EC.m2_ec_key_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_ec_key_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.EC.EC.m2_ec_key_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.EC.EC.pub">
-<tt class="descname">pub</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.pub"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.pub" title="Permalink to this definition">¶</a></dt>
+<code class="descname">pub</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.pub"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.pub" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.EC.EC.save_key">
-<tt class="descname">save_key</tt><big>(</big><em>file</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.save_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.save_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_key</code><span class="sig-paren">(</span><em>file</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.save_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.save_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the key pair to a file in PEM format.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>file</strong> &#8211; Name of filename to save key to.</li>
-<li><strong>cipher</strong> &#8211; Symmetric cipher to protect the key. The default
-cipher is &#8216;aes_128_cbc&#8217;. If cipher is None, then
+<li><strong>file</strong> – Name of filename to save key to.</li>
+<li><strong>cipher</strong> – Symmetric cipher to protect the key. The default
+cipher is ‘aes_128_cbc’. If cipher is None, then
the key is saved in the clear.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to protect
the key. The default is
util.passphrase_callback.</li>
@@ -1287,18 +1291,18 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.EC.EC.save_key_bio">
-<tt class="descname">save_key_bio</tt><big>(</big><em>bio</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.save_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.save_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_key_bio</code><span class="sig-paren">(</span><em>bio</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.save_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.save_key_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the key pair to an M2Crypto.BIO.BIO object in PEM format.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>bio</strong> &#8211; M2Crypto.BIO.BIO object to save key to.</li>
-<li><strong>cipher</strong> &#8211; Symmetric cipher to protect the key. The default
-cipher is &#8216;aes_128_cbc&#8217;. If cipher is None, then
+<li><strong>bio</strong> – M2Crypto.BIO.BIO object to save key to.</li>
+<li><strong>cipher</strong> – Symmetric cipher to protect the key. The default
+cipher is ‘aes_128_cbc’. If cipher is None, then
the key is saved in the clear.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to protect
the key. The default is
util.passphrase_callback.</li>
@@ -1311,13 +1315,13 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.EC.EC.save_pub_key">
-<tt class="descname">save_pub_key</tt><big>(</big><em>file</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.save_pub_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.save_pub_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_pub_key</code><span class="sig-paren">(</span><em>file</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.save_pub_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.save_pub_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the public key to a filename in PEM format.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> &#8211; Name of filename to save key to.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> – Name of filename to save key to.</td>
</tr>
</tbody>
</table>
@@ -1325,13 +1329,13 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.EC.EC.save_pub_key_bio">
-<tt class="descname">save_pub_key_bio</tt><big>(</big><em>bio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.save_pub_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.save_pub_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_pub_key_bio</code><span class="sig-paren">(</span><em>bio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.save_pub_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.save_pub_key_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the public key to an M2Crypto.BIO.BIO object in PEM format.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> &#8211; M2Crypto.BIO.BIO object to save key to.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> – M2Crypto.BIO.BIO object to save key to.</td>
</tr>
</tbody>
</table>
@@ -1339,63 +1343,63 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.EC.EC.sign_dsa">
-<tt class="descname">sign_dsa</tt><big>(</big><em>digest</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.sign_dsa"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.sign_dsa" title="Permalink to this definition">¶</a></dt>
+<code class="descname">sign_dsa</code><span class="sig-paren">(</span><em>digest</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.sign_dsa"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.sign_dsa" title="Permalink to this definition">¶</a></dt>
<dd><p>Sign the given digest using ECDSA. Returns a tuple (r,s), the two
ECDSA signature parameters.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.EC.EC.sign_dsa_asn1">
-<tt class="descname">sign_dsa_asn1</tt><big>(</big><em>digest</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.sign_dsa_asn1"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.sign_dsa_asn1" title="Permalink to this definition">¶</a></dt>
+<code class="descname">sign_dsa_asn1</code><span class="sig-paren">(</span><em>digest</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.sign_dsa_asn1"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.sign_dsa_asn1" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.EC.EC.verify_dsa">
-<tt class="descname">verify_dsa</tt><big>(</big><em>digest</em>, <em>r</em>, <em>s</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.verify_dsa"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.verify_dsa" title="Permalink to this definition">¶</a></dt>
+<code class="descname">verify_dsa</code><span class="sig-paren">(</span><em>digest</em>, <em>r</em>, <em>s</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.verify_dsa"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.verify_dsa" title="Permalink to this definition">¶</a></dt>
<dd><p>Verify the given digest using ECDSA. r and s are the ECDSA
signature parameters.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.EC.EC.verify_dsa_asn1">
-<tt class="descname">verify_dsa_asn1</tt><big>(</big><em>digest</em>, <em>blob</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.verify_dsa_asn1"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.verify_dsa_asn1" title="Permalink to this definition">¶</a></dt>
+<code class="descname">verify_dsa_asn1</code><span class="sig-paren">(</span><em>digest</em>, <em>blob</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC.verify_dsa_asn1"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC.verify_dsa_asn1" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="exception">
<dt id="M2Crypto.EC.ECError">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.EC.</tt><tt class="descname">ECError</tt><a class="reference internal" href="_modules/M2Crypto/EC.html#ECError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.ECError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.EC.</code><code class="descname">ECError</code><a class="reference internal" href="_modules/M2Crypto/EC.html#ECError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.ECError" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></code></p>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.EC.EC_pub">
-<em class="property">class </em><tt class="descclassname">M2Crypto.EC.</tt><tt class="descname">EC_pub</tt><big>(</big><em>ec</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC_pub"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC_pub" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.EC.EC" title="M2Crypto.EC.EC"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.EC.EC</span></tt></a></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.EC.</code><code class="descname">EC_pub</code><span class="sig-paren">(</span><em>ec</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC_pub"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC_pub" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#M2Crypto.EC.EC" title="M2Crypto.EC.EC"><code class="xref py py-class docutils literal"><span class="pre">M2Crypto.EC.EC</span></code></a></p>
<p>Object interface to an EC public key.
-((don&#8217;t like this implementation inheritance))</p>
+((don’t like this implementation inheritance))</p>
<dl class="method">
<dt id="M2Crypto.EC.EC_pub.get_der">
-<tt class="descname">get_der</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC_pub.get_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC_pub.get_der" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_der</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC_pub.get_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC_pub.get_der" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the public key in DER format as a buffer object.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.EC.EC_pub.get_key">
-<tt class="descname">get_key</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#EC_pub.get_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC_pub.get_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_key</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#EC_pub.get_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.EC_pub.get_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the public key as a byte string.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.EC.EC_pub.save_key">
-<tt class="descname">save_key</tt><big>(</big><em>file</em><big>)</big><a class="headerlink" href="#M2Crypto.EC.EC_pub.save_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_key</code><span class="sig-paren">(</span><em>file</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.EC.EC_pub.save_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the public key to a filename in PEM format.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> &#8211; Name of filename to save key to.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> – Name of filename to save key to.</td>
</tr>
</tbody>
</table>
@@ -1403,13 +1407,13 @@ signature parameters.</p>
<dl class="method">
<dt id="M2Crypto.EC.EC_pub.save_key_bio">
-<tt class="descname">save_key_bio</tt><big>(</big><em>bio</em><big>)</big><a class="headerlink" href="#M2Crypto.EC.EC_pub.save_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_key_bio</code><span class="sig-paren">(</span><em>bio</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.EC.EC_pub.save_key_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the public key to an M2Crypto.BIO.BIO object in PEM format.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> &#8211; M2Crypto.BIO.BIO object to save key to.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> – M2Crypto.BIO.BIO object to save key to.</td>
</tr>
</tbody>
</table>
@@ -1419,19 +1423,19 @@ signature parameters.</p>
<dl class="function">
<dt id="M2Crypto.EC.ec_error">
-<tt class="descclassname">M2Crypto.EC.</tt><tt class="descname">ec_error</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#ec_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.ec_error" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EC.</code><code class="descname">ec_error</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#ec_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.ec_error" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.EC.gen_params">
-<tt class="descclassname">M2Crypto.EC.</tt><tt class="descname">gen_params</tt><big>(</big><em>curve</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#gen_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.gen_params" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EC.</code><code class="descname">gen_params</code><span class="sig-paren">(</span><em>curve</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#gen_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.gen_params" title="Permalink to this definition">¶</a></dt>
<dd><p>Factory function that generates EC parameters and
instantiates a EC object from the output.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>curve</strong> &#8211; This is the OpenSSL nid of the curve to use.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>curve</strong> – This is the OpenSSL nid of the curve to use.</td>
</tr>
</tbody>
</table>
@@ -1439,21 +1443,21 @@ instantiates a EC object from the output.</p>
<dl class="function">
<dt id="M2Crypto.EC.get_builtin_curves">
-<tt class="descclassname">M2Crypto.EC.</tt><tt class="descname">get_builtin_curves</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#get_builtin_curves"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.get_builtin_curves" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EC.</code><code class="descname">get_builtin_curves</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#get_builtin_curves"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.get_builtin_curves" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.EC.load_key">
-<tt class="descclassname">M2Crypto.EC.</tt><tt class="descname">load_key</tt><big>(</big><em>file</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#load_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.load_key" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EC.</code><code class="descname">load_key</code><span class="sig-paren">(</span><em>file</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#load_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.load_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Factory function that instantiates a EC object.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>file</strong> &#8211; Names the filename that contains the PEM representation
+<li><strong>file</strong> – Names the filename that contains the PEM representation
of the EC key pair.</li>
-<li><strong>callback</strong> &#8211; Python callback object that will be invoked
+<li><strong>callback</strong> – Python callback object that will be invoked
if the EC key pair is passphrase-protected.</li>
</ul>
</td>
@@ -1464,16 +1468,16 @@ if the EC key pair is passphrase-protected.</li>
<dl class="function">
<dt id="M2Crypto.EC.load_key_bio">
-<tt class="descclassname">M2Crypto.EC.</tt><tt class="descname">load_key_bio</tt><big>(</big><em>bio</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#load_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.load_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EC.</code><code class="descname">load_key_bio</code><span class="sig-paren">(</span><em>bio</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#load_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.load_key_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Factory function that instantiates a EC object.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>bio</strong> &#8211; M2Crypto.BIO object that contains the PEM
+<li><strong>bio</strong> – M2Crypto.BIO object that contains the PEM
representation of the EC key pair.</li>
-<li><strong>callback</strong> &#8211; Python callback object that will be invoked
+<li><strong>callback</strong> – Python callback object that will be invoked
if the EC key pair is passphrase-protected.</li>
</ul>
</td>
@@ -1484,15 +1488,15 @@ if the EC key pair is passphrase-protected.</li>
<dl class="function">
<dt id="M2Crypto.EC.load_key_string">
-<tt class="descclassname">M2Crypto.EC.</tt><tt class="descname">load_key_string</tt><big>(</big><em>string</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#load_key_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.load_key_string" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EC.</code><code class="descname">load_key_string</code><span class="sig-paren">(</span><em>string</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#load_key_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.load_key_string" title="Permalink to this definition">¶</a></dt>
<dd><p>Load an EC key pair from a string.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>string</strong> &#8211; String containing EC key pair in PEM format.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>string</strong> – String containing EC key pair in PEM format.</li>
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to unlock the
key. The default is util.passphrase_callback.</li>
</ul>
@@ -1507,15 +1511,15 @@ key. The default is util.passphrase_callback.</li>
<dl class="function">
<dt id="M2Crypto.EC.load_key_string_pubkey">
-<tt class="descclassname">M2Crypto.EC.</tt><tt class="descname">load_key_string_pubkey</tt><big>(</big><em>string</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#load_key_string_pubkey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.load_key_string_pubkey" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EC.</code><code class="descname">load_key_string_pubkey</code><span class="sig-paren">(</span><em>string</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#load_key_string_pubkey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.load_key_string_pubkey" title="Permalink to this definition">¶</a></dt>
<dd><p>Load an M2Crypto.EC.PKey from a public key as a string.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>string</strong> &#8211; String containing the key in PEM format.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>string</strong> – String containing the key in PEM format.</li>
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to protect the
key.</li>
</ul>
@@ -1530,13 +1534,13 @@ key.</li>
<dl class="function">
<dt id="M2Crypto.EC.load_pub_key">
-<tt class="descclassname">M2Crypto.EC.</tt><tt class="descname">load_pub_key</tt><big>(</big><em>file</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#load_pub_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.load_pub_key" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EC.</code><code class="descname">load_pub_key</code><span class="sig-paren">(</span><em>file</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#load_pub_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.load_pub_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Load an EC public key from filename.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> &#8211; Name of filename containing EC public key in PEM
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> – Name of filename containing EC public key in PEM
format.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">M2Crypto.EC.EC_pub object.</td>
@@ -1547,13 +1551,13 @@ format.</td>
<dl class="function">
<dt id="M2Crypto.EC.load_pub_key_bio">
-<tt class="descclassname">M2Crypto.EC.</tt><tt class="descname">load_pub_key_bio</tt><big>(</big><em>bio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#load_pub_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.load_pub_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EC.</code><code class="descname">load_pub_key_bio</code><span class="sig-paren">(</span><em>bio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#load_pub_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.load_pub_key_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Load an EC public key from an M2Crypto.BIO.BIO object.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> &#8211; M2Crypto.BIO.BIO object containing EC public key in PEM
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> – M2Crypto.BIO.BIO object containing EC public key in PEM
format.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">M2Crypto.EC.EC_pub object.</td>
@@ -1564,103 +1568,103 @@ format.</td>
<dl class="function">
<dt id="M2Crypto.EC.pub_key_from_der">
-<tt class="descclassname">M2Crypto.EC.</tt><tt class="descname">pub_key_from_der</tt><big>(</big><em>der</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#pub_key_from_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.pub_key_from_der" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EC.</code><code class="descname">pub_key_from_der</code><span class="sig-paren">(</span><em>der</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#pub_key_from_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.pub_key_from_der" title="Permalink to this definition">¶</a></dt>
<dd><p>Create EC_pub from DER.</p>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.EC.pub_key_from_params">
-<tt class="descclassname">M2Crypto.EC.</tt><tt class="descname">pub_key_from_params</tt><big>(</big><em>curve</em>, <em>bytes</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EC.html#pub_key_from_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.pub_key_from_params" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EC.</code><code class="descname">pub_key_from_params</code><span class="sig-paren">(</span><em>curve</em>, <em>bytes</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EC.html#pub_key_from_params"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EC.pub_key_from_params" title="Permalink to this definition">¶</a></dt>
<dd><p>Create EC_pub from curve name and octet string.</p>
</dd></dl>
</div>
<div class="section" id="module-M2Crypto.EVP">
-<span id="evp-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">EVP</span></tt> Module<a class="headerlink" href="#module-M2Crypto.EVP" title="Permalink to this headline">¶</a></h2>
+<span id="evp-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">EVP</span></code> Module<a class="headerlink" href="#module-M2Crypto.EVP" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.EVP.Cipher">
-<em class="property">class </em><tt class="descclassname">M2Crypto.EVP.</tt><tt class="descname">Cipher</tt><big>(</big><em>alg</em>, <em>key</em>, <em>iv</em>, <em>op</em>, <em>key_as_bytes=0</em>, <em>d='md5'</em>, <em>salt='12345678'</em>, <em>i=1</em>, <em>padding=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#Cipher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.Cipher" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.EVP.</code><code class="descname">Cipher</code><span class="sig-paren">(</span><em>alg</em>, <em>key</em>, <em>iv</em>, <em>op</em>, <em>key_as_bytes=0</em>, <em>d='md5'</em>, <em>salt='12345678'</em>, <em>i=1</em>, <em>padding=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#Cipher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.Cipher" title="Permalink to this definition">¶</a></dt>
<dd><dl class="method">
<dt id="M2Crypto.EVP.Cipher.final">
-<tt class="descname">final</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#Cipher.final"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.Cipher.final" title="Permalink to this definition">¶</a></dt>
+<code class="descname">final</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#Cipher.final"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.Cipher.final" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.Cipher.m2_cipher_ctx_free">
-<tt class="descname">m2_cipher_ctx_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.EVP.Cipher.m2_cipher_ctx_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_cipher_ctx_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.EVP.Cipher.m2_cipher_ctx_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.Cipher.set_padding">
-<tt class="descname">set_padding</tt><big>(</big><em>padding=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#Cipher.set_padding"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.Cipher.set_padding" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_padding</code><span class="sig-paren">(</span><em>padding=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#Cipher.set_padding"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.Cipher.set_padding" title="Permalink to this definition">¶</a></dt>
<dd><p>Actually always return 1</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.Cipher.update">
-<tt class="descname">update</tt><big>(</big><em>data</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#Cipher.update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.Cipher.update" title="Permalink to this definition">¶</a></dt>
+<code class="descname">update</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#Cipher.update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.Cipher.update" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="exception">
<dt id="M2Crypto.EVP.EVPError">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.EVP.</tt><tt class="descname">EVPError</tt><a class="reference internal" href="_modules/M2Crypto/EVP.html#EVPError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.EVPError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.EVP.</code><code class="descname">EVPError</code><a class="reference internal" href="_modules/M2Crypto/EVP.html#EVPError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.EVPError" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></code></p>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.EVP.HMAC">
-<em class="property">class </em><tt class="descclassname">M2Crypto.EVP.</tt><tt class="descname">HMAC</tt><big>(</big><em>key</em>, <em>algo='sha1'</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#HMAC"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.HMAC" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.EVP.</code><code class="descname">HMAC</code><span class="sig-paren">(</span><em>key</em>, <em>algo='sha1'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#HMAC"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.HMAC" title="Permalink to this definition">¶</a></dt>
<dd><dl class="method">
<dt id="M2Crypto.EVP.HMAC.digest">
-<tt class="descname">digest</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.EVP.HMAC.digest" title="Permalink to this definition">¶</a></dt>
+<code class="descname">digest</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.EVP.HMAC.digest" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.HMAC.final">
-<tt class="descname">final</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#HMAC.final"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.HMAC.final" title="Permalink to this definition">¶</a></dt>
+<code class="descname">final</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#HMAC.final"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.HMAC.final" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.HMAC.m2_hmac_ctx_free">
-<tt class="descname">m2_hmac_ctx_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.EVP.HMAC.m2_hmac_ctx_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_hmac_ctx_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.EVP.HMAC.m2_hmac_ctx_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.HMAC.reset">
-<tt class="descname">reset</tt><big>(</big><em>key</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#HMAC.reset"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.HMAC.reset" title="Permalink to this definition">¶</a></dt>
+<code class="descname">reset</code><span class="sig-paren">(</span><em>key</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#HMAC.reset"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.HMAC.reset" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.HMAC.update">
-<tt class="descname">update</tt><big>(</big><em>data</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#HMAC.update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.HMAC.update" title="Permalink to this definition">¶</a></dt>
+<code class="descname">update</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#HMAC.update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.HMAC.update" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.EVP.MessageDigest">
-<em class="property">class </em><tt class="descclassname">M2Crypto.EVP.</tt><tt class="descname">MessageDigest</tt><big>(</big><em>algo</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#MessageDigest"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.MessageDigest" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.EVP.</code><code class="descname">MessageDigest</code><span class="sig-paren">(</span><em>algo</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#MessageDigest"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.MessageDigest" title="Permalink to this definition">¶</a></dt>
<dd><p>Message Digest</p>
<dl class="method">
<dt id="M2Crypto.EVP.MessageDigest.digest">
-<tt class="descname">digest</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.EVP.MessageDigest.digest" title="Permalink to this definition">¶</a></dt>
+<code class="descname">digest</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.EVP.MessageDigest.digest" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.MessageDigest.final">
-<tt class="descname">final</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#MessageDigest.final"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.MessageDigest.final" title="Permalink to this definition">¶</a></dt>
+<code class="descname">final</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#MessageDigest.final"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.MessageDigest.final" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.MessageDigest.m2_md_ctx_free">
-<tt class="descname">m2_md_ctx_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.EVP.MessageDigest.m2_md_ctx_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_md_ctx_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.EVP.MessageDigest.m2_md_ctx_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.MessageDigest.update">
-<tt class="descname">update</tt><big>(</big><em>data</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#MessageDigest.update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.MessageDigest.update" title="Permalink to this definition">¶</a></dt>
+<code class="descname">update</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#MessageDigest.update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.MessageDigest.update" title="Permalink to this definition">¶</a></dt>
<dd><p>Add data to be digested.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@@ -1676,27 +1680,27 @@ format.</td>
<dl class="class">
<dt id="M2Crypto.EVP.PKey">
-<em class="property">class </em><tt class="descclassname">M2Crypto.EVP.</tt><tt class="descname">PKey</tt><big>(</big><em>pkey=None</em>, <em>_pyfree=0</em>, <em>md='sha1'</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.EVP.</code><code class="descname">PKey</code><span class="sig-paren">(</span><em>pkey=None</em>, <em>_pyfree=0</em>, <em>md='sha1'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey" title="Permalink to this definition">¶</a></dt>
<dd><p>Public Key</p>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.as_der">
-<tt class="descname">as_der</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.as_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.as_der" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_der</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.as_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.as_der" title="Permalink to this definition">¶</a></dt>
<dd><p>Return key in DER format in a string</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.as_pem">
-<tt class="descname">as_pem</tt><big>(</big><em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.as_pem"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.as_pem" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_pem</code><span class="sig-paren">(</span><em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.as_pem"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.as_pem" title="Permalink to this definition">¶</a></dt>
<dd><p>Return key in PEM format in a string.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>cipher</strong> &#8211; Symmetric cipher to protect the key. The default
-cipher is <tt class="docutils literal"><span class="pre">'aes_128_cbc'</span></tt>. If cipher is None,
+<li><strong>cipher</strong> – Symmetric cipher to protect the key. The default
+cipher is <code class="docutils literal"><span class="pre">'aes_128_cbc'</span></code>. If cipher is None,
then the key is saved in the clear.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to protect
the key. The default is
util.passphrase_callback.</li>
@@ -1709,15 +1713,15 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.assign_rsa">
-<tt class="descname">assign_rsa</tt><big>(</big><em>rsa</em>, <em>capture=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.assign_rsa"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.assign_rsa" title="Permalink to this definition">¶</a></dt>
+<code class="descname">assign_rsa</code><span class="sig-paren">(</span><em>rsa</em>, <em>capture=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.assign_rsa"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.assign_rsa" title="Permalink to this definition">¶</a></dt>
<dd><p>Assign the RSA key pair to self.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>rsa</strong> &#8211; M2Crypto.RSA.RSA object to be assigned to self.</li>
-<li><strong>capture</strong> &#8211; If true (default), this PKey object will own the RSA
+<li><strong>rsa</strong> – M2Crypto.RSA.RSA object to be assigned to self.</li>
+<li><strong>capture</strong> – If true (default), this PKey object will own the RSA
object, meaning that once the PKey object gets
deleted it is no longer safe to use the RSA object.</li>
</ul>
@@ -1732,7 +1736,7 @@ deleted it is no longer safe to use the RSA object.</li>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.final">
-<tt class="descname">final</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.EVP.PKey.final" title="Permalink to this definition">¶</a></dt>
+<code class="descname">final</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.EVP.PKey.final" title="Permalink to this definition">¶</a></dt>
<dd><p>Return signature.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@@ -1746,36 +1750,36 @@ deleted it is no longer safe to use the RSA object.</li>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.get_modulus">
-<tt class="descname">get_modulus</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.get_modulus"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.get_modulus" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_modulus</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.get_modulus"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.get_modulus" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the modulus in hex format.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.get_rsa">
-<tt class="descname">get_rsa</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.get_rsa"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.get_rsa" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_rsa</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.get_rsa"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.get_rsa" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the underlying RSA key if that is what the EVP
instance is holding.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.m2_md_ctx_free">
-<tt class="descname">m2_md_ctx_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.EVP.PKey.m2_md_ctx_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_md_ctx_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.EVP.PKey.m2_md_ctx_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.m2_pkey_free">
-<tt class="descname">m2_pkey_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.EVP.PKey.m2_pkey_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_pkey_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.EVP.PKey.m2_pkey_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.reset_context">
-<tt class="descname">reset_context</tt><big>(</big><em>md='sha1'</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.reset_context"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.reset_context" title="Permalink to this definition">¶</a></dt>
+<code class="descname">reset_context</code><span class="sig-paren">(</span><em>md='sha1'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.reset_context"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.reset_context" title="Permalink to this definition">¶</a></dt>
<dd><p>Reset internal message digest context.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>md</strong> &#8211; The message digest algorithm.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>md</strong> – The message digest algorithm.</td>
</tr>
</tbody>
</table>
@@ -1783,18 +1787,18 @@ instance is holding.</p>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.save_key">
-<tt class="descname">save_key</tt><big>(</big><em>file</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.save_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.save_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_key</code><span class="sig-paren">(</span><em>file</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.save_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.save_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the key pair to a file in PEM format.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>file</strong> &#8211; Name of file to save key to.</li>
-<li><strong>cipher</strong> &#8211; Symmetric cipher to protect the key. The default
-cipher is &#8216;aes_128_cbc&#8217;. If cipher is None, then
+<li><strong>file</strong> – Name of file to save key to.</li>
+<li><strong>cipher</strong> – Symmetric cipher to protect the key. The default
+cipher is ‘aes_128_cbc’. If cipher is None, then
the key is saved in the clear.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to protect
the key. The default is
util.passphrase_callback.</li>
@@ -1807,18 +1811,18 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.save_key_bio">
-<tt class="descname">save_key_bio</tt><big>(</big><em>bio</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.save_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.save_key_bio" title="Permalink to this definition">¶</a></dt>
-<dd><p>Save the key pair to the M2Crypto.BIO object &#8216;bio&#8217; in PEM format.</p>
+<code class="descname">save_key_bio</code><span class="sig-paren">(</span><em>bio</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.save_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.save_key_bio" title="Permalink to this definition">¶</a></dt>
+<dd><p>Save the key pair to the M2Crypto.BIO object ‘bio’ in PEM format.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>bio</strong> &#8211; M2Crypto.BIO object to save key to.</li>
-<li><strong>cipher</strong> &#8211; Symmetric cipher to protect the key. The default
-cipher is &#8216;aes_128_cbc&#8217;. If cipher is None, then
+<li><strong>bio</strong> – M2Crypto.BIO object to save key to.</li>
+<li><strong>cipher</strong> – Symmetric cipher to protect the key. The default
+cipher is ‘aes_128_cbc’. If cipher is None, then
the key is saved in the clear.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to protect
the key. The default is
util.passphrase_callback.</li>
@@ -1831,7 +1835,7 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.sign_final">
-<tt class="descname">sign_final</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.sign_final"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.sign_final" title="Permalink to this definition">¶</a></dt>
+<code class="descname">sign_final</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.sign_final"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.sign_final" title="Permalink to this definition">¶</a></dt>
<dd><p>Return signature.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@@ -1845,19 +1849,19 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.sign_init">
-<tt class="descname">sign_init</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.sign_init"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.sign_init" title="Permalink to this definition">¶</a></dt>
+<code class="descname">sign_init</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.sign_init"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.sign_init" title="Permalink to this definition">¶</a></dt>
<dd><p>Initialise signing operation with self.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.sign_update">
-<tt class="descname">sign_update</tt><big>(</big><em>data</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.sign_update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.sign_update" title="Permalink to this definition">¶</a></dt>
+<code class="descname">sign_update</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.sign_update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.sign_update" title="Permalink to this definition">¶</a></dt>
<dd><p>Feed data to signing operation.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>data</strong> &#8211; Data to be signed.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>data</strong> – Data to be signed.</td>
</tr>
</tbody>
</table>
@@ -1865,19 +1869,19 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.size">
-<tt class="descname">size</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.size"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.size" title="Permalink to this definition">¶</a></dt>
+<code class="descname">size</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.size"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.size" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the size of the key in bytes.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.update">
-<tt class="descname">update</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#M2Crypto.EVP.PKey.update" title="Permalink to this definition">¶</a></dt>
+<code class="descname">update</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.EVP.PKey.update" title="Permalink to this definition">¶</a></dt>
<dd><p>Feed data to signing operation.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>data</strong> &#8211; Data to be signed.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>data</strong> – Data to be signed.</td>
</tr>
</tbody>
</table>
@@ -1885,13 +1889,13 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.verify_final">
-<tt class="descname">verify_final</tt><big>(</big><em>sign</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.verify_final"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.verify_final" title="Permalink to this definition">¶</a></dt>
+<code class="descname">verify_final</code><span class="sig-paren">(</span><em>sign</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.verify_final"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.verify_final" title="Permalink to this definition">¶</a></dt>
<dd><p>Return result of verification.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>sign</strong> &#8211; Signature to use for verification</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>sign</strong> – Signature to use for verification</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">Result of verification: 1 for success, 0 for failure, -1 on
other error.</td>
@@ -1902,19 +1906,19 @@ other error.</td>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.verify_init">
-<tt class="descname">verify_init</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.verify_init"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.verify_init" title="Permalink to this definition">¶</a></dt>
+<code class="descname">verify_init</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.verify_init"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.verify_init" title="Permalink to this definition">¶</a></dt>
<dd><p>Initialise signature verification operation with self.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.EVP.PKey.verify_update">
-<tt class="descname">verify_update</tt><big>(</big><em>data</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.verify_update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.verify_update" title="Permalink to this definition">¶</a></dt>
+<code class="descname">verify_update</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#PKey.verify_update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.PKey.verify_update" title="Permalink to this definition">¶</a></dt>
<dd><p>Feed data to verification operation.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>data</strong> &#8211; Data to be verified.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>data</strong> – Data to be verified.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">-1 on Python error, 1 for success, 0 for OpenSSL error</td>
</tr>
@@ -1926,20 +1930,20 @@ other error.</td>
<dl class="function">
<dt id="M2Crypto.EVP.hmac">
-<tt class="descclassname">M2Crypto.EVP.</tt><tt class="descname">hmac</tt><big>(</big><em>key</em>, <em>data</em>, <em>algo='sha1'</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#hmac"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.hmac" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EVP.</code><code class="descname">hmac</code><span class="sig-paren">(</span><em>key</em>, <em>data</em>, <em>algo='sha1'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#hmac"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.hmac" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.EVP.load_key">
-<tt class="descclassname">M2Crypto.EVP.</tt><tt class="descname">load_key</tt><big>(</big><em>file</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#load_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.load_key" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EVP.</code><code class="descname">load_key</code><span class="sig-paren">(</span><em>file</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#load_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.load_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Load an M2Crypto.EVP.PKey from file.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>file</strong> &#8211; Name of file containing the key in PEM format.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>file</strong> – Name of file containing the key in PEM format.</li>
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to protect the
key.</li>
</ul>
@@ -1954,15 +1958,15 @@ key.</li>
<dl class="function">
<dt id="M2Crypto.EVP.load_key_bio">
-<tt class="descclassname">M2Crypto.EVP.</tt><tt class="descname">load_key_bio</tt><big>(</big><em>bio</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#load_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.load_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EVP.</code><code class="descname">load_key_bio</code><span class="sig-paren">(</span><em>bio</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#load_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.load_key_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Load an M2Crypto.EVP.PKey from an M2Crypto.BIO object.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>bio</strong> &#8211; M2Crypto.BIO object containing the key in PEM format.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>bio</strong> – M2Crypto.BIO object containing the key in PEM format.</li>
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to protect the
key.</li>
</ul>
@@ -1977,15 +1981,15 @@ key.</li>
<dl class="function">
<dt id="M2Crypto.EVP.load_key_bio_pubkey">
-<tt class="descclassname">M2Crypto.EVP.</tt><tt class="descname">load_key_bio_pubkey</tt><big>(</big><em>bio</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#load_key_bio_pubkey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.load_key_bio_pubkey" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EVP.</code><code class="descname">load_key_bio_pubkey</code><span class="sig-paren">(</span><em>bio</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#load_key_bio_pubkey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.load_key_bio_pubkey" title="Permalink to this definition">¶</a></dt>
<dd><p>Load an M2Crypto.EVP.PKey from a public key as a M2Crypto.BIO object.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>bio</strong> &#8211; M2Crypto.BIO object containing the key in PEM format.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>bio</strong> – M2Crypto.BIO object containing the key in PEM format.</li>
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to protect the
key.</li>
</ul>
@@ -2000,15 +2004,15 @@ key.</li>
<dl class="function">
<dt id="M2Crypto.EVP.load_key_string">
-<tt class="descclassname">M2Crypto.EVP.</tt><tt class="descname">load_key_string</tt><big>(</big><em>string</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#load_key_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.load_key_string" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EVP.</code><code class="descname">load_key_string</code><span class="sig-paren">(</span><em>string</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#load_key_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.load_key_string" title="Permalink to this definition">¶</a></dt>
<dd><p>Load an M2Crypto.EVP.PKey from a string.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>string</strong> &#8211; String containing the key in PEM format.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>string</strong> – String containing the key in PEM format.</li>
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to protect the
key.</li>
</ul>
@@ -2023,15 +2027,15 @@ key.</li>
<dl class="function">
<dt id="M2Crypto.EVP.load_key_string_pubkey">
-<tt class="descclassname">M2Crypto.EVP.</tt><tt class="descname">load_key_string_pubkey</tt><big>(</big><em>string</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#load_key_string_pubkey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.load_key_string_pubkey" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EVP.</code><code class="descname">load_key_string_pubkey</code><span class="sig-paren">(</span><em>string</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#load_key_string_pubkey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.load_key_string_pubkey" title="Permalink to this definition">¶</a></dt>
<dd><p>Load an M2Crypto.EVP.PKey from a public key as a string.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>string</strong> &#8211; String containing the key in PEM format.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>string</strong> – String containing the key in PEM format.</li>
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to protect the
key.</li>
</ul>
@@ -2046,17 +2050,17 @@ key.</li>
<dl class="function">
<dt id="M2Crypto.EVP.pbkdf2">
-<tt class="descclassname">M2Crypto.EVP.</tt><tt class="descname">pbkdf2</tt><big>(</big><em>password</em>, <em>salt</em>, <em>iter</em>, <em>keylen</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/EVP.html#pbkdf2"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.pbkdf2" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.EVP.</code><code class="descname">pbkdf2</code><span class="sig-paren">(</span><em>password</em>, <em>salt</em>, <em>iter</em>, <em>keylen</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/EVP.html#pbkdf2"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.EVP.pbkdf2" title="Permalink to this definition">¶</a></dt>
<dd><p>Derive a key from password using PBKDF2 algorithm specified in RFC 2898.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>password</strong> &#8211; Derive the key from this password.</li>
-<li><strong>salt</strong> &#8211; Salt.</li>
-<li><strong>iter</strong> &#8211; Number of iterations to perform.</li>
-<li><strong>keylen</strong> &#8211; Length of key to produce.</li>
+<li><strong>password</strong> – Derive the key from this password.</li>
+<li><strong>salt</strong> – Salt.</li>
+<li><strong>iter</strong> – Number of iterations to perform.</li>
+<li><strong>keylen</strong> – Length of key to produce.</li>
</ul>
</td>
</tr>
@@ -2069,41 +2073,41 @@ key.</li>
</div>
<div class="section" id="module-M2Crypto.Engine">
-<span id="engine-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">Engine</span></tt> Module<a class="headerlink" href="#module-M2Crypto.Engine" title="Permalink to this headline">¶</a></h2>
+<span id="engine-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">Engine</span></code> Module<a class="headerlink" href="#module-M2Crypto.Engine" title="Permalink to this headline">¶</a></h2>
<p>M2Crypto wrapper for OpenSSL ENGINE API.</p>
<p>Pavel Shramov
IMEC MSU</p>
<dl class="class">
<dt id="M2Crypto.Engine.Engine">
-<em class="property">class </em><tt class="descclassname">M2Crypto.Engine.</tt><tt class="descname">Engine</tt><big>(</big><em>id=None</em>, <em>_ptr=None</em>, <em>_pyfree=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.Engine.</code><code class="descname">Engine</code><span class="sig-paren">(</span><em>id=None</em>, <em>_ptr=None</em>, <em>_pyfree=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine" title="Permalink to this definition">¶</a></dt>
<dd><p>Wrapper for ENGINE object.</p>
<dl class="method">
<dt id="M2Crypto.Engine.Engine.ctrl_cmd_string">
-<tt class="descname">ctrl_cmd_string</tt><big>(</big><em>cmd</em>, <em>arg</em>, <em>optional=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.ctrl_cmd_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.ctrl_cmd_string" title="Permalink to this definition">¶</a></dt>
+<code class="descname">ctrl_cmd_string</code><span class="sig-paren">(</span><em>cmd</em>, <em>arg</em>, <em>optional=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.ctrl_cmd_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.ctrl_cmd_string" title="Permalink to this definition">¶</a></dt>
<dd><p>Call ENGINE_ctrl_cmd_string</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.Engine.Engine.finish">
-<tt class="descname">finish</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.finish"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.finish" title="Permalink to this definition">¶</a></dt>
+<code class="descname">finish</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.finish"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.finish" title="Permalink to this definition">¶</a></dt>
<dd><p>Release a functional and structural reference to the engine.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.Engine.Engine.get_id">
-<tt class="descname">get_id</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.get_id"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.get_id" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_id</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.get_id"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.get_id" title="Permalink to this definition">¶</a></dt>
<dd><p>Return engine id</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.Engine.Engine.get_name">
-<tt class="descname">get_name</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.get_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.get_name" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.get_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.get_name" title="Permalink to this definition">¶</a></dt>
<dd><p>Return engine name</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.Engine.Engine.init">
-<tt class="descname">init</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.init"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.init" title="Permalink to this definition">¶</a></dt>
+<code class="descname">init</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.init"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.init" title="Permalink to this definition">¶</a></dt>
<dd><p>Obtain a functional reference to the engine.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@@ -2117,38 +2121,38 @@ IMEC MSU</p>
<dl class="method">
<dt id="M2Crypto.Engine.Engine.load_certificate">
-<tt class="descname">load_certificate</tt><big>(</big><em>name</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.load_certificate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.load_certificate" title="Permalink to this definition">¶</a></dt>
+<code class="descname">load_certificate</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.load_certificate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.load_certificate" title="Permalink to this definition">¶</a></dt>
<dd><p>Load certificate from engine (e.g from smartcard).
NOTE: This function may be not implemented by engine!</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.Engine.Engine.load_private_key">
-<tt class="descname">load_private_key</tt><big>(</big><em>name</em>, <em>pin=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.load_private_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.load_private_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">load_private_key</code><span class="sig-paren">(</span><em>name</em>, <em>pin=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.load_private_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.load_private_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Load private key with engine methods (e.g from smartcard).
If pin is not set it will be asked</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.Engine.Engine.load_public_key">
-<tt class="descname">load_public_key</tt><big>(</big><em>name</em>, <em>pin=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.load_public_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.load_public_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">load_public_key</code><span class="sig-paren">(</span><em>name</em>, <em>pin=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.load_public_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.load_public_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Load public key with engine methods (e.g from smartcard).</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.Engine.Engine.m2_engine_free">
-<tt class="descname">m2_engine_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.Engine.Engine.m2_engine_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_engine_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.Engine.Engine.m2_engine_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.Engine.Engine.set_default">
-<tt class="descname">set_default</tt><big>(</big><em>methods=65535</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.set_default"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.set_default" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_default</code><span class="sig-paren">(</span><em>methods=65535</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Engine.html#Engine.set_default"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.Engine.set_default" title="Permalink to this definition">¶</a></dt>
<dd><p>Use this engine as default for methods specified in argument</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>methods</strong> &#8211; Possible values are bitwise OR of m2.ENGINE_METHOD_*</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>methods</strong> – Possible values are bitwise OR of m2.ENGINE_METHOD_*</td>
</tr>
</tbody>
</table>
@@ -2158,130 +2162,135 @@ If pin is not set it will be asked</p>
<dl class="exception">
<dt id="M2Crypto.Engine.EngineError">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.Engine.</tt><tt class="descname">EngineError</tt><a class="reference internal" href="_modules/M2Crypto/Engine.html#EngineError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.EngineError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.Engine.</code><code class="descname">EngineError</code><a class="reference internal" href="_modules/M2Crypto/Engine.html#EngineError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.EngineError" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></code></p>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.Engine.cleanup">
-<tt class="descclassname">M2Crypto.Engine.</tt><tt class="descname">cleanup</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/Engine.html#cleanup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.cleanup" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.Engine.</code><code class="descname">cleanup</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Engine.html#cleanup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.cleanup" title="Permalink to this definition">¶</a></dt>
<dd><p>If you load any engines, you need to clean up after your application
is finished with the engines.</p>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.Engine.load_dynamic">
-<tt class="descclassname">M2Crypto.Engine.</tt><tt class="descname">load_dynamic</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/Engine.html#load_dynamic"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.load_dynamic" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.Engine.</code><code class="descname">load_dynamic</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Engine.html#load_dynamic"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.load_dynamic" title="Permalink to this definition">¶</a></dt>
<dd><p>Load dynamic engine</p>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.Engine.load_dynamic_engine">
-<tt class="descclassname">M2Crypto.Engine.</tt><tt class="descname">load_dynamic_engine</tt><big>(</big><em>id</em>, <em>sopath</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/Engine.html#load_dynamic_engine"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.load_dynamic_engine" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.Engine.</code><code class="descname">load_dynamic_engine</code><span class="sig-paren">(</span><em>id</em>, <em>sopath</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Engine.html#load_dynamic_engine"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.load_dynamic_engine" title="Permalink to this definition">¶</a></dt>
<dd><p>Load and return dymanic engine from sopath and assign id to it</p>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.Engine.load_openssl">
-<tt class="descclassname">M2Crypto.Engine.</tt><tt class="descname">load_openssl</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/Engine.html#load_openssl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.load_openssl" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.Engine.</code><code class="descname">load_openssl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Engine.html#load_openssl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Engine.load_openssl" title="Permalink to this definition">¶</a></dt>
<dd><p>Load openssl engine</p>
</dd></dl>
</div>
<div class="section" id="module-M2Crypto.Err">
-<span id="err-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">Err</span></tt> Module<a class="headerlink" href="#module-M2Crypto.Err" title="Permalink to this headline">¶</a></h2>
+<span id="err-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">Err</span></code> Module<a class="headerlink" href="#module-M2Crypto.Err" title="Permalink to this headline">¶</a></h2>
<dl class="exception">
<dt id="M2Crypto.Err.M2CryptoError">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.Err.</tt><tt class="descname">M2CryptoError</tt><a class="reference internal" href="_modules/M2Crypto/Err.html#M2CryptoError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.M2CryptoError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.Err.</code><code class="descname">M2CryptoError</code><a class="reference internal" href="_modules/M2Crypto/Err.html#M2CryptoError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.M2CryptoError" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="M2Crypto.Err.SSLError">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.Err.</tt><tt class="descname">SSLError</tt><big>(</big><em>err</em>, <em>client_addr</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/Err.html#SSLError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.SSLError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.Err.</code><code class="descname">SSLError</code><span class="sig-paren">(</span><em>err</em>, <em>client_addr</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Err.html#SSLError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.SSLError" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></code></p>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.Err.get_error">
-<tt class="descclassname">M2Crypto.Err.</tt><tt class="descname">get_error</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/Err.html#get_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.get_error" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.Err.</code><code class="descname">get_error</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Err.html#get_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.get_error" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.Err.get_error_code">
-<tt class="descclassname">M2Crypto.Err.</tt><tt class="descname">get_error_code</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/Err.html#get_error_code"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.get_error_code" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.Err.</code><code class="descname">get_error_code</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Err.html#get_error_code"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.get_error_code" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.Err.get_error_func">
-<tt class="descclassname">M2Crypto.Err.</tt><tt class="descname">get_error_func</tt><big>(</big><em>err</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/Err.html#get_error_func"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.get_error_func" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.Err.</code><code class="descname">get_error_func</code><span class="sig-paren">(</span><em>err</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Err.html#get_error_func"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.get_error_func" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.Err.get_error_lib">
-<tt class="descclassname">M2Crypto.Err.</tt><tt class="descname">get_error_lib</tt><big>(</big><em>err</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/Err.html#get_error_lib"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.get_error_lib" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.Err.</code><code class="descname">get_error_lib</code><span class="sig-paren">(</span><em>err</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Err.html#get_error_lib"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.get_error_lib" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="function">
+<dt id="M2Crypto.Err.get_error_message">
+<code class="descclassname">M2Crypto.Err.</code><code class="descname">get_error_message</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Err.html#get_error_message"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.get_error_message" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.Err.get_error_reason">
-<tt class="descclassname">M2Crypto.Err.</tt><tt class="descname">get_error_reason</tt><big>(</big><em>err</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/Err.html#get_error_reason"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.get_error_reason" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.Err.</code><code class="descname">get_error_reason</code><span class="sig-paren">(</span><em>err</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Err.html#get_error_reason"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.get_error_reason" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.Err.get_x509_verify_error">
-<tt class="descclassname">M2Crypto.Err.</tt><tt class="descname">get_x509_verify_error</tt><big>(</big><em>err</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/Err.html#get_x509_verify_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.get_x509_verify_error" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.Err.</code><code class="descname">get_x509_verify_error</code><span class="sig-paren">(</span><em>err</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Err.html#get_x509_verify_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.get_x509_verify_error" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.Err.peek_error_code">
-<tt class="descclassname">M2Crypto.Err.</tt><tt class="descname">peek_error_code</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/Err.html#peek_error_code"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.peek_error_code" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.Err.</code><code class="descname">peek_error_code</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Err.html#peek_error_code"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Err.peek_error_code" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</div>
<div class="section" id="module-M2Crypto.RC4">
-<span id="rc4-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">RC4</span></tt> Module<a class="headerlink" href="#module-M2Crypto.RC4" title="Permalink to this headline">¶</a></h2>
+<span id="rc4-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">RC4</span></code> Module<a class="headerlink" href="#module-M2Crypto.RC4" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.RC4.RC4">
-<em class="property">class </em><tt class="descclassname">M2Crypto.RC4.</tt><tt class="descname">RC4</tt><big>(</big><em>key=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RC4.html#RC4"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RC4.RC4" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.RC4.</code><code class="descname">RC4</code><span class="sig-paren">(</span><em>key=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RC4.html#RC4"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RC4.RC4" title="Permalink to this definition">¶</a></dt>
<dd><p>Object interface to the stream cipher RC4.</p>
<dl class="method">
<dt id="M2Crypto.RC4.RC4.final">
-<tt class="descname">final</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/RC4.html#RC4.final"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RC4.RC4.final" title="Permalink to this definition">¶</a></dt>
+<code class="descname">final</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RC4.html#RC4.final"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RC4.RC4.final" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.RC4.RC4.rc4_free">
-<tt class="descname">rc4_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.RC4.RC4.rc4_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">rc4_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.RC4.RC4.rc4_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.RC4.RC4.set_key">
-<tt class="descname">set_key</tt><big>(</big><em>key</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RC4.html#RC4.set_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RC4.RC4.set_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_key</code><span class="sig-paren">(</span><em>key</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RC4.html#RC4.set_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RC4.RC4.set_key" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.RC4.RC4.update">
-<tt class="descname">update</tt><big>(</big><em>data</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RC4.html#RC4.update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RC4.RC4.update" title="Permalink to this definition">¶</a></dt>
+<code class="descname">update</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RC4.html#RC4.update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RC4.RC4.update" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="section" id="module-M2Crypto.RSA">
-<span id="rsa-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">RSA</span></tt> Module<a class="headerlink" href="#module-M2Crypto.RSA" title="Permalink to this headline">¶</a></h2>
+<span id="rsa-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">RSA</span></code> Module<a class="headerlink" href="#module-M2Crypto.RSA" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.RSA.RSA">
-<em class="property">class </em><tt class="descclassname">M2Crypto.RSA.</tt><tt class="descname">RSA</tt><big>(</big><em>rsa</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.RSA.</code><code class="descname">RSA</code><span class="sig-paren">(</span><em>rsa</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA" title="Permalink to this definition">¶</a></dt>
<dd><p>RSA Key Pair.</p>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.as_pem">
-<tt class="descname">as_pem</tt><big>(</big><em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.as_pem"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.as_pem" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_pem</code><span class="sig-paren">(</span><em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.as_pem"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.as_pem" title="Permalink to this definition">¶</a></dt>
<dd><p>Returns the key(pair) as a string in PEM format.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.check_key">
-<tt class="descname">check_key</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.check_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.check_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">check_key</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.check_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.check_key" title="Permalink to this definition">¶</a></dt>
<dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
@@ -2297,48 +2306,48 @@ code can be obtained using ERR_get_error(3).</td>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.m2_rsa_free">
-<tt class="descname">m2_rsa_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.RSA.RSA.m2_rsa_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_rsa_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.RSA.RSA.m2_rsa_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.private_decrypt">
-<tt class="descname">private_decrypt</tt><big>(</big><em>data</em>, <em>padding</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.private_decrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.private_decrypt" title="Permalink to this definition">¶</a></dt>
+<code class="descname">private_decrypt</code><span class="sig-paren">(</span><em>data</em>, <em>padding</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.private_decrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.private_decrypt" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.private_encrypt">
-<tt class="descname">private_encrypt</tt><big>(</big><em>data</em>, <em>padding</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.private_encrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.private_encrypt" title="Permalink to this definition">¶</a></dt>
+<code class="descname">private_encrypt</code><span class="sig-paren">(</span><em>data</em>, <em>padding</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.private_encrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.private_encrypt" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.pub">
-<tt class="descname">pub</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.pub"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.pub" title="Permalink to this definition">¶</a></dt>
+<code class="descname">pub</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.pub"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.pub" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.public_decrypt">
-<tt class="descname">public_decrypt</tt><big>(</big><em>data</em>, <em>padding</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.public_decrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.public_decrypt" title="Permalink to this definition">¶</a></dt>
+<code class="descname">public_decrypt</code><span class="sig-paren">(</span><em>data</em>, <em>padding</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.public_decrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.public_decrypt" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.public_encrypt">
-<tt class="descname">public_encrypt</tt><big>(</big><em>data</em>, <em>padding</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.public_encrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.public_encrypt" title="Permalink to this definition">¶</a></dt>
+<code class="descname">public_encrypt</code><span class="sig-paren">(</span><em>data</em>, <em>padding</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.public_encrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.public_encrypt" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.save_key">
-<tt class="descname">save_key</tt><big>(</big><em>file</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.save_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.save_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_key</code><span class="sig-paren">(</span><em>file</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.save_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.save_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the key pair to a file in PEM format.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>file</strong> &#8211; Name of file to save key to.</li>
-<li><strong>cipher</strong> &#8211; Symmetric cipher to protect the key. The default
-cipher is &#8216;aes_128_cbc&#8217;. If cipher is None, then
+<li><strong>file</strong> – Name of file to save key to.</li>
+<li><strong>cipher</strong> – Symmetric cipher to protect the key. The default
+cipher is ‘aes_128_cbc’. If cipher is None, then
the key is saved in the clear.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to protect
the key. The default is
util.passphrase_callback.</li>
@@ -2351,18 +2360,18 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.save_key_bio">
-<tt class="descname">save_key_bio</tt><big>(</big><em>bio</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.save_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.save_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_key_bio</code><span class="sig-paren">(</span><em>bio</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.save_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.save_key_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the key pair to an M2Crypto.BIO.BIO object in PEM format.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>bio</strong> &#8211; M2Crypto.BIO.BIO object to save key to.</li>
-<li><strong>cipher</strong> &#8211; Symmetric cipher to protect the key. The default
-cipher is &#8216;aes_128_cbc&#8217;. If cipher is None, then
+<li><strong>bio</strong> – M2Crypto.BIO.BIO object to save key to.</li>
+<li><strong>cipher</strong> – Symmetric cipher to protect the key. The default
+cipher is ‘aes_128_cbc’. If cipher is None, then
the key is saved in the clear.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to protect
the key. The default is
util.passphrase_callback.</li>
@@ -2375,13 +2384,13 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.save_key_der">
-<tt class="descname">save_key_der</tt><big>(</big><em>file</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.save_key_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.save_key_der" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_key_der</code><span class="sig-paren">(</span><em>file</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.save_key_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.save_key_der" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the key pair to a file in DER format.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> &#8211; Filename to save key to</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> – Filename to save key to</td>
</tr>
</tbody>
</table>
@@ -2389,13 +2398,13 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.save_key_der_bio">
-<tt class="descname">save_key_der_bio</tt><big>(</big><em>bio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.save_key_der_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.save_key_der_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_key_der_bio</code><span class="sig-paren">(</span><em>bio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.save_key_der_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.save_key_der_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the key pair to an M2Crypto.BIO.BIO object in DER format.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> &#8211; M2Crypto.BIO.BIO object to save key to.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> – M2Crypto.BIO.BIO object to save key to.</td>
</tr>
</tbody>
</table>
@@ -2403,18 +2412,18 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.save_pem">
-<tt class="descname">save_pem</tt><big>(</big><em>file</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="headerlink" href="#M2Crypto.RSA.RSA.save_pem" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_pem</code><span class="sig-paren">(</span><em>file</em>, <em>cipher='aes_128_cbc'</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.RSA.RSA.save_pem" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the key pair to a file in PEM format.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>file</strong> &#8211; Name of file to save key to.</li>
-<li><strong>cipher</strong> &#8211; Symmetric cipher to protect the key. The default
-cipher is &#8216;aes_128_cbc&#8217;. If cipher is None, then
+<li><strong>file</strong> – Name of file to save key to.</li>
+<li><strong>cipher</strong> – Symmetric cipher to protect the key. The default
+cipher is ‘aes_128_cbc’. If cipher is None, then
the key is saved in the clear.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to protect
the key. The default is
util.passphrase_callback.</li>
@@ -2427,13 +2436,13 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.save_pub_key">
-<tt class="descname">save_pub_key</tt><big>(</big><em>file</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.save_pub_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.save_pub_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_pub_key</code><span class="sig-paren">(</span><em>file</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.save_pub_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.save_pub_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the public key to a file in PEM format.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> &#8211; Name of file to save key to.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> – Name of file to save key to.</td>
</tr>
</tbody>
</table>
@@ -2441,13 +2450,13 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.save_pub_key_bio">
-<tt class="descname">save_pub_key_bio</tt><big>(</big><em>bio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.save_pub_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.save_pub_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_pub_key_bio</code><span class="sig-paren">(</span><em>bio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.save_pub_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.save_pub_key_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Save the public key to an M2Crypto.BIO.BIO object in PEM format.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> &#8211; M2Crypto.BIO.BIO object to save key to.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> – M2Crypto.BIO.BIO object to save key to.</td>
</tr>
</tbody>
</table>
@@ -2455,17 +2464,17 @@ util.passphrase_callback.</li>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.sign">
-<tt class="descname">sign</tt><big>(</big><em>digest</em>, <em>algo='sha1'</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.sign"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.sign" title="Permalink to this definition">¶</a></dt>
+<code class="descname">sign</code><span class="sig-paren">(</span><em>digest</em>, <em>algo='sha1'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.sign"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.sign" title="Permalink to this definition">¶</a></dt>
<dd><p>Signs a digest with the private key</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>digest</strong> &#8211; A digest created by using the digest method</li>
-<li><strong>algo</strong> &#8211; The method that created the digest.
-Legal values like &#8216;sha1&#8217;,&#8217;sha224&#8217;, &#8216;sha256&#8217;,
-&#8216;ripemd160&#8217;, and &#8216;md5&#8217;.</li>
+<li><strong>digest</strong> – A digest created by using the digest method</li>
+<li><strong>algo</strong> – The method that created the digest.
+Legal values like ‘sha1’,’sha224’, ‘sha256’,
+‘ripemd160’, and ‘md5’.</li>
</ul>
</td>
</tr>
@@ -2478,18 +2487,18 @@ Legal values like &#8216;sha1&#8217;,&#8217;sha224&#8217;, &#8216;sha256&#8217;,
<dl class="method">
<dt id="M2Crypto.RSA.RSA.sign_rsassa_pss">
-<tt class="descname">sign_rsassa_pss</tt><big>(</big><em>digest</em>, <em>algo='sha1'</em>, <em>salt_length=20</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.sign_rsassa_pss"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.sign_rsassa_pss" title="Permalink to this definition">¶</a></dt>
+<code class="descname">sign_rsassa_pss</code><span class="sig-paren">(</span><em>digest</em>, <em>algo='sha1'</em>, <em>salt_length=20</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.sign_rsassa_pss"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.sign_rsassa_pss" title="Permalink to this definition">¶</a></dt>
<dd><p>Signs a digest with the private key using RSASSA-PSS</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>digest</strong> &#8211; A digest created by using the digest method</li>
-<li><strong>salt_length</strong> &#8211; The length of the salt to use</li>
-<li><strong>algo</strong> &#8211; The hash algorithm to use
-Legal values like &#8216;sha1&#8217;,&#8217;sha224&#8217;, &#8216;sha256&#8217;,
-&#8216;ripemd160&#8217;, and &#8216;md5&#8217;.</li>
+<li><strong>digest</strong> – A digest created by using the digest method</li>
+<li><strong>salt_length</strong> – The length of the salt to use</li>
+<li><strong>algo</strong> – The hash algorithm to use
+Legal values like ‘sha1’,’sha224’, ‘sha256’,
+‘ripemd160’, and ‘md5’.</li>
</ul>
</td>
</tr>
@@ -2502,18 +2511,18 @@ Legal values like &#8216;sha1&#8217;,&#8217;sha224&#8217;, &#8216;sha256&#8217;,
<dl class="method">
<dt id="M2Crypto.RSA.RSA.verify">
-<tt class="descname">verify</tt><big>(</big><em>data</em>, <em>signature</em>, <em>algo='sha1'</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.verify"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.verify" title="Permalink to this definition">¶</a></dt>
+<code class="descname">verify</code><span class="sig-paren">(</span><em>data</em>, <em>signature</em>, <em>algo='sha1'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.verify"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.verify" title="Permalink to this definition">¶</a></dt>
<dd><p>Verifies the signature with the public key</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>data</strong> &#8211; Data that has been signed</li>
-<li><strong>signature</strong> &#8211; The signature signed with the private key</li>
-<li><strong>algo</strong> &#8211; The method use to create digest from the data
+<li><strong>data</strong> – Data that has been signed</li>
+<li><strong>signature</strong> – The signature signed with the private key</li>
+<li><strong>algo</strong> – The method use to create digest from the data
before it was signed. Legal values like
-&#8216;sha1&#8217;,&#8217;sha224&#8217;, &#8216;sha256&#8217;, &#8216;ripemd160&#8217;, and &#8216;md5&#8217;.</li>
+‘sha1’,’sha224’, ‘sha256’, ‘ripemd160’, and ‘md5’.</li>
</ul>
</td>
</tr>
@@ -2527,19 +2536,19 @@ verified or not.</p>
<dl class="method">
<dt id="M2Crypto.RSA.RSA.verify_rsassa_pss">
-<tt class="descname">verify_rsassa_pss</tt><big>(</big><em>data</em>, <em>signature</em>, <em>algo='sha1'</em>, <em>salt_length=20</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.verify_rsassa_pss"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.verify_rsassa_pss" title="Permalink to this definition">¶</a></dt>
+<code class="descname">verify_rsassa_pss</code><span class="sig-paren">(</span><em>data</em>, <em>signature</em>, <em>algo='sha1'</em>, <em>salt_length=20</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA.verify_rsassa_pss"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA.verify_rsassa_pss" title="Permalink to this definition">¶</a></dt>
<dd><p>Verifies the signature RSASSA-PSS</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>data</strong> &#8211; Data that has been signed</li>
-<li><strong>signature</strong> &#8211; The signature signed with RSASSA-PSS</li>
-<li><strong>salt_length</strong> &#8211; The length of the salt that was used</li>
-<li><strong>algo</strong> &#8211; The hash algorithm to use
-Legal values are for example &#8216;sha1&#8217;,&#8217;sha224&#8217;,
-&#8216;sha256&#8217;, &#8216;ripemd160&#8217;, and &#8216;md5&#8217;.</li>
+<li><strong>data</strong> – Data that has been signed</li>
+<li><strong>signature</strong> – The signature signed with RSASSA-PSS</li>
+<li><strong>salt_length</strong> – The length of the salt that was used</li>
+<li><strong>algo</strong> – The hash algorithm to use
+Legal values are for example ‘sha1’,’sha224’,
+‘sha256’, ‘ripemd160’, and ‘md5’.</li>
</ul>
</td>
</tr>
@@ -2555,39 +2564,39 @@ verified or not.</p>
<dl class="exception">
<dt id="M2Crypto.RSA.RSAError">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.RSA.</tt><tt class="descname">RSAError</tt><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSAError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSAError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.RSA.</code><code class="descname">RSAError</code><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSAError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSAError" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></code></p>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.RSA.RSA_pub">
-<em class="property">class </em><tt class="descclassname">M2Crypto.RSA.</tt><tt class="descname">RSA_pub</tt><big>(</big><em>rsa</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA_pub"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA_pub" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.RSA.RSA" title="M2Crypto.RSA.RSA"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.RSA.RSA</span></tt></a></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.RSA.</code><code class="descname">RSA_pub</code><span class="sig-paren">(</span><em>rsa</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA_pub"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA_pub" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#M2Crypto.RSA.RSA" title="M2Crypto.RSA.RSA"><code class="xref py py-class docutils literal"><span class="pre">M2Crypto.RSA.RSA</span></code></a></p>
<p>Object interface to an RSA public key.</p>
<dl class="method">
<dt id="M2Crypto.RSA.RSA_pub.check_key">
-<tt class="descname">check_key</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA_pub.check_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA_pub.check_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">check_key</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA_pub.check_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA_pub.check_key" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.RSA.RSA_pub.private_decrypt">
-<tt class="descname">private_decrypt</tt><big>(</big><em>*argv</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA_pub.private_decrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA_pub.private_decrypt" title="Permalink to this definition">¶</a></dt>
+<code class="descname">private_decrypt</code><span class="sig-paren">(</span><em>*argv</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA_pub.private_decrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA_pub.private_decrypt" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.RSA.RSA_pub.private_encrypt">
-<tt class="descname">private_encrypt</tt><big>(</big><em>*argv</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA_pub.private_encrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA_pub.private_encrypt" title="Permalink to this definition">¶</a></dt>
+<code class="descname">private_encrypt</code><span class="sig-paren">(</span><em>*argv</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA_pub.private_encrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA_pub.private_encrypt" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.RSA.RSA_pub.save_key">
-<tt class="descname">save_key</tt><big>(</big><em>file</em>, <em>*args</em>, <em>**kw</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA_pub.save_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA_pub.save_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_key</code><span class="sig-paren">(</span><em>file</em>, <em>*args</em>, <em>**kw</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA_pub.save_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA_pub.save_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Save public key to file.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.RSA.RSA_pub.save_key_bio">
-<tt class="descname">save_key_bio</tt><big>(</big><em>bio</em>, <em>*args</em>, <em>**kw</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA_pub.save_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA_pub.save_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_key_bio</code><span class="sig-paren">(</span><em>bio</em>, <em>*args</em>, <em>**kw</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#RSA_pub.save_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.RSA_pub.save_key_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Save public key to BIO.</p>
</dd></dl>
@@ -2595,16 +2604,16 @@ verified or not.</p>
<dl class="function">
<dt id="M2Crypto.RSA.gen_key">
-<tt class="descclassname">M2Crypto.RSA.</tt><tt class="descname">gen_key</tt><big>(</big><em>bits</em>, <em>e</em>, <em>callback=&lt;function keygen_callback at 0x1ffa410&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#gen_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.gen_key" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.RSA.</code><code class="descname">gen_key</code><span class="sig-paren">(</span><em>bits</em>, <em>e</em>, <em>callback=&lt;function keygen_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#gen_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.gen_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Generate an RSA key pair.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>bits</strong> &#8211; Key length, in bits.</li>
-<li><strong>e</strong> &#8211; The RSA public exponent.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>bits</strong> – Key length, in bits.</li>
+<li><strong>e</strong> – The RSA public exponent.</li>
+<li><strong>callback</strong> – A Python callable object that is invoked
during key generation; its usual purpose is to
provide visual feedback. The default callback is
keygen_callback.</li>
@@ -2620,21 +2629,21 @@ keygen_callback.</li>
<dl class="function">
<dt id="M2Crypto.RSA.keygen_callback">
-<tt class="descclassname">M2Crypto.RSA.</tt><tt class="descname">keygen_callback</tt><big>(</big><em>p</em>, <em>n</em>, <em>out=&lt;open file '&lt;stdout&gt;'</em>, <em>mode 'w' at 0x7fc7ebc63150&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#keygen_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.keygen_callback" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.RSA.</code><code class="descname">keygen_callback</code><span class="sig-paren">(</span><em>p</em>, <em>n</em>, <em>out=&lt;open file '&lt;stdout&gt;'</em>, <em>mode 'w'&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#keygen_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.keygen_callback" title="Permalink to this definition">¶</a></dt>
<dd><p>Default callback for gen_key().</p>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.RSA.load_key">
-<tt class="descclassname">M2Crypto.RSA.</tt><tt class="descname">load_key</tt><big>(</big><em>file</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#load_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.load_key" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.RSA.</code><code class="descname">load_key</code><span class="sig-paren">(</span><em>file</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#load_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.load_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Load an RSA key pair from file.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>file</strong> &#8211; Name of file containing RSA public key in PEM format.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>file</strong> – Name of file containing RSA public key in PEM format.</li>
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to unlock the
key. The default is util.passphrase_callback.</li>
</ul>
@@ -2649,16 +2658,16 @@ key. The default is util.passphrase_callback.</li>
<dl class="function">
<dt id="M2Crypto.RSA.load_key_bio">
-<tt class="descclassname">M2Crypto.RSA.</tt><tt class="descname">load_key_bio</tt><big>(</big><em>bio</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#load_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.load_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.RSA.</code><code class="descname">load_key_bio</code><span class="sig-paren">(</span><em>bio</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#load_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.load_key_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Load an RSA key pair from an M2Crypto.BIO.BIO object.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>bio</strong> &#8211; M2Crypto.BIO.BIO object containing RSA key pair in PEM
+<li><strong>bio</strong> – M2Crypto.BIO.BIO object containing RSA key pair in PEM
format.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to unlock the
key. The default is util.passphrase_callback.</li>
</ul>
@@ -2673,15 +2682,15 @@ key. The default is util.passphrase_callback.</li>
<dl class="function">
<dt id="M2Crypto.RSA.load_key_string">
-<tt class="descclassname">M2Crypto.RSA.</tt><tt class="descname">load_key_string</tt><big>(</big><em>string</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#load_key_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.load_key_string" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.RSA.</code><code class="descname">load_key_string</code><span class="sig-paren">(</span><em>string</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#load_key_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.load_key_string" title="Permalink to this definition">¶</a></dt>
<dd><p>Load an RSA key pair from a string.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>string</strong> &#8211; String containing RSA key pair in PEM format.</li>
-<li><strong>callback</strong> &#8211; A Python callable object that is invoked
+<li><strong>string</strong> – String containing RSA key pair in PEM format.</li>
+<li><strong>callback</strong> – A Python callable object that is invoked
to acquire a passphrase with which to unlock the
key. The default is util.passphrase_callback.</li>
</ul>
@@ -2696,13 +2705,13 @@ key. The default is util.passphrase_callback.</li>
<dl class="function">
<dt id="M2Crypto.RSA.load_pub_key">
-<tt class="descclassname">M2Crypto.RSA.</tt><tt class="descname">load_pub_key</tt><big>(</big><em>file</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#load_pub_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.load_pub_key" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.RSA.</code><code class="descname">load_pub_key</code><span class="sig-paren">(</span><em>file</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#load_pub_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.load_pub_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Load an RSA public key from file.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> &#8211; Name of file containing RSA public key in PEM format.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> – Name of file containing RSA public key in PEM format.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">M2Crypto.RSA.RSA_pub object.</td>
</tr>
@@ -2712,13 +2721,13 @@ key. The default is util.passphrase_callback.</li>
<dl class="function">
<dt id="M2Crypto.RSA.load_pub_key_bio">
-<tt class="descclassname">M2Crypto.RSA.</tt><tt class="descname">load_pub_key_bio</tt><big>(</big><em>bio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#load_pub_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.load_pub_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.RSA.</code><code class="descname">load_pub_key_bio</code><span class="sig-paren">(</span><em>bio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#load_pub_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.load_pub_key_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Load an RSA public key from an M2Crypto.BIO.BIO object.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> &#8211; M2Crypto.BIO.BIO object containing RSA public key in PEM
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>bio</strong> – M2Crypto.BIO.BIO object containing RSA public key in PEM
format.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">M2Crypto.RSA.RSA_pub object.</td>
@@ -2729,17 +2738,17 @@ format.</td>
<dl class="function">
<dt id="M2Crypto.RSA.new_pub_key">
-<tt class="descclassname">M2Crypto.RSA.</tt><tt class="descname">new_pub_key</tt><big>(</big><em>e_n</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#new_pub_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.new_pub_key" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.RSA.</code><code class="descname">new_pub_key</code><span class="sig-paren">(</span><em>e_n</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#new_pub_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.new_pub_key" title="Permalink to this definition">¶</a></dt>
<dd><p>Instantiate an RSA_pub object from an (e, n) tuple.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>e</strong> &#8211; The RSA public exponent; it is a string in OpenSSL&#8217;s MPINT
+<li><strong>e</strong> – The RSA public exponent; it is a string in OpenSSL’s MPINT
format - 4-byte big-endian bit-count followed by the
appropriate number of bits.</li>
-<li><strong>n</strong> &#8211; The RSA composite of primes; it is a string in OpenSSL&#8217;s
+<li><strong>n</strong> – The RSA composite of primes; it is a string in OpenSSL’s
MPINT format - 4-byte big-endian bit-count followed by the
appropriate number of bits.</li>
</ul>
@@ -2754,229 +2763,348 @@ appropriate number of bits.</li>
<dl class="function">
<dt id="M2Crypto.RSA.rsa_error">
-<tt class="descclassname">M2Crypto.RSA.</tt><tt class="descname">rsa_error</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/RSA.html#rsa_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.rsa_error" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.RSA.</code><code class="descname">rsa_error</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/RSA.html#rsa_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.RSA.rsa_error" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</div>
<div class="section" id="module-M2Crypto.Rand">
-<span id="rand-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">Rand</span></tt> Module<a class="headerlink" href="#module-M2Crypto.Rand" title="Permalink to this headline">¶</a></h2>
+<span id="rand-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">Rand</span></code> Module<a class="headerlink" href="#module-M2Crypto.Rand" title="Permalink to this headline">¶</a></h2>
+<p>M2Crypto wrapper for OpenSSL PRNG. Requires OpenSSL 0.9.5 and above.</p>
+<p>Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.
+Copyright (c) 2014-2017 Matej Cepl. All rights reserved.</p>
+<p>See LICENCE for the license information.</p>
<dl class="function">
<dt id="M2Crypto.Rand.rand_seed">
-<tt class="descclassname">M2Crypto.Rand.</tt><tt class="descname">rand_seed</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.Rand.rand_seed" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
+<code class="descclassname">M2Crypto.Rand.</code><code class="descname">rand_seed</code><span class="sig-paren">(</span><em>seed</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Rand.html#rand_seed"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Rand.rand_seed" title="Permalink to this definition">¶</a></dt>
+<dd><p>Equivalent to rand_add() when len(seed) == entropy.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>seed</strong> – added data (see description at rand_add)</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
<dl class="function">
<dt id="M2Crypto.Rand.rand_add">
-<tt class="descclassname">M2Crypto.Rand.</tt><tt class="descname">rand_add</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.Rand.rand_add" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
+<code class="descclassname">M2Crypto.Rand.</code><code class="descname">rand_add</code><span class="sig-paren">(</span><em>blob</em>, <em>entropy</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Rand.html#rand_add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Rand.rand_add" title="Permalink to this definition">¶</a></dt>
+<dd><p>Mixes blob into the PRNG state.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>blob</strong> – added data</li>
+<li><strong>entropy</strong> – (the lower bound of) an estimate of how much randomness
+is contained in blob, measured in bytes.</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+<p>Thus, if the data at buf are unpredictable to an adversary, this
+increases the uncertainty about the state and makes the PRNG output less
+predictable. Suitable input comes from user interaction (random key
+presses, mouse movements) and certain hardware events.</p>
+<p>Details about sources of randomness and how to estimate their entropy
+can be found in the literature, e.g. RFC 1750.</p>
+</dd></dl>
<dl class="function">
<dt id="M2Crypto.Rand.load_file">
-<tt class="descclassname">M2Crypto.Rand.</tt><tt class="descname">load_file</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.Rand.load_file" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
+<code class="descclassname">M2Crypto.Rand.</code><code class="descname">load_file</code><span class="sig-paren">(</span><em>filename</em>, <em>max_bytes</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Rand.html#load_file"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Rand.load_file" title="Permalink to this definition">¶</a></dt>
+<dd><p>Read a number of bytes from file filename and adds them to the PRNG.</p>
+<p>If max_bytes is non-negative, up to to max_bytes are read; starting with
+OpenSSL 0.9.5, if max_bytes is -1, the complete file is read.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><strong>filename</strong> – </li>
+<li><strong>max_bytes</strong> – </li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">the number of bytes read.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
<dl class="function">
<dt id="M2Crypto.Rand.save_file">
-<tt class="descclassname">M2Crypto.Rand.</tt><tt class="descname">save_file</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.Rand.save_file" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
+<code class="descclassname">M2Crypto.Rand.</code><code class="descname">save_file</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Rand.html#save_file"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Rand.save_file" title="Permalink to this definition">¶</a></dt>
+<dd><p>Write a number of random bytes (currently 1024) to file.</p>
+<p>The file then can be used to initialize the PRNG by calling load_file() in
+a later session.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> – </td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">returns the number of bytes written, and -1 if the bytes
+written were generated without appropriate seed.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
<dl class="function">
<dt id="M2Crypto.Rand.rand_bytes">
-<tt class="descclassname">M2Crypto.Rand.</tt><tt class="descname">rand_bytes</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.Rand.rand_bytes" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
+<code class="descclassname">M2Crypto.Rand.</code><code class="descname">rand_bytes</code><span class="sig-paren">(</span><em>num</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Rand.html#rand_bytes"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Rand.rand_bytes" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return n cryptographically strong pseudo-random bytes.</p>
+<p>An error occurs if the PRNG has not been seeded with enough randomness
+to ensure an unpredictable byte sequence.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>num</strong> – number of bytes to be returned</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">random bytes</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
<dl class="function">
<dt id="M2Crypto.Rand.rand_pseudo_bytes">
-<tt class="descclassname">M2Crypto.Rand.</tt><tt class="descname">rand_pseudo_bytes</tt><big>(</big><em>n</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/Rand.html#rand_pseudo_bytes"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Rand.rand_pseudo_bytes" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
+<code class="descclassname">M2Crypto.Rand.</code><code class="descname">rand_pseudo_bytes</code><span class="sig-paren">(</span><em>num</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Rand.html#rand_pseudo_bytes"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Rand.rand_pseudo_bytes" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return num pseudo-random bytes into buf.</p>
+<p>Pseudo-random byte sequences generated by this method will be unique
+if they are of sufficient length, but are not necessarily
+unpredictable. They can be used for non-cryptographic purposes and for
+certain purposes in cryptographic protocols, but usually not for key
+generation etc.</p>
+<p>Output of the function is mixed into the entropy pool before
+retrieving the new pseudo-random bytes unless disabled at compile
+time (see FAQ).</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>num</strong> – number of bytes to be returned</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">random bytes</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
<dl class="function">
<dt id="M2Crypto.Rand.rand_file_name">
-<tt class="descclassname">M2Crypto.Rand.</tt><tt class="descname">rand_file_name</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/Rand.html#rand_file_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Rand.rand_file_name" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
+<code class="descclassname">M2Crypto.Rand.</code><code class="descname">rand_file_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Rand.html#rand_file_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Rand.rand_file_name" title="Permalink to this definition">¶</a></dt>
+<dd><p>Generate a default path for the random seed file.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">string with the filename.
+The seed file is $RANDFILE if that environment variable
+is set, $HOME/.rnd otherwise. If $HOME is not set either,
+an error occurs.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
<dl class="function">
<dt id="M2Crypto.Rand.rand_status">
-<tt class="descclassname">M2Crypto.Rand.</tt><tt class="descname">rand_status</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.Rand.rand_status" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
+<code class="descclassname">M2Crypto.Rand.</code><code class="descname">rand_status</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/Rand.html#rand_status"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.Rand.rand_status" title="Permalink to this definition">¶</a></dt>
+<dd><p>Check whether there is enough entropy in PRNG.</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">1 if the PRNG has been seeded with enough
+data, 0 otherwise.</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
</div>
<div class="section" id="module-M2Crypto.SMIME">
-<span id="smime-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">SMIME</span></tt> Module<a class="headerlink" href="#module-M2Crypto.SMIME" title="Permalink to this headline">¶</a></h2>
+<span id="smime-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">SMIME</span></code> Module<a class="headerlink" href="#module-M2Crypto.SMIME" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.SMIME.Cipher">
-<em class="property">class </em><tt class="descclassname">M2Crypto.SMIME.</tt><tt class="descname">Cipher</tt><big>(</big><em>algo</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#Cipher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.Cipher" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.SMIME.</code><code class="descname">Cipher</code><span class="sig-paren">(</span><em>algo</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#Cipher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.Cipher" title="Permalink to this definition">¶</a></dt>
<dd><p>Object interface to EVP_CIPHER without all the frills of
M2Crypto.EVP.Cipher.</p>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.SMIME.PKCS7">
-<em class="property">class </em><tt class="descclassname">M2Crypto.SMIME.</tt><tt class="descname">PKCS7</tt><big>(</big><em>pkcs7=None</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#PKCS7"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.PKCS7" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.SMIME.</code><code class="descname">PKCS7</code><span class="sig-paren">(</span><em>pkcs7=None</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#PKCS7"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.PKCS7" title="Permalink to this definition">¶</a></dt>
<dd><dl class="method">
<dt id="M2Crypto.SMIME.PKCS7.get0_signers">
-<tt class="descname">get0_signers</tt><big>(</big><em>certs</em>, <em>flags=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#PKCS7.get0_signers"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.PKCS7.get0_signers" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get0_signers</code><span class="sig-paren">(</span><em>certs</em>, <em>flags=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#PKCS7.get0_signers"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.PKCS7.get0_signers" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.PKCS7.m2_pkcs7_free">
-<tt class="descname">m2_pkcs7_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.SMIME.PKCS7.m2_pkcs7_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_pkcs7_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.SMIME.PKCS7.m2_pkcs7_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.PKCS7.type">
-<tt class="descname">type</tt><big>(</big><em>text_name=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#PKCS7.type"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.PKCS7.type" title="Permalink to this definition">¶</a></dt>
+<code class="descname">type</code><span class="sig-paren">(</span><em>text_name=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#PKCS7.type"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.PKCS7.type" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.PKCS7.write">
-<tt class="descname">write</tt><big>(</big><em>bio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#PKCS7.write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.PKCS7.write" title="Permalink to this definition">¶</a></dt>
+<code class="descname">write</code><span class="sig-paren">(</span><em>bio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#PKCS7.write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.PKCS7.write" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.PKCS7.write_der">
-<tt class="descname">write_der</tt><big>(</big><em>bio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#PKCS7.write_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.PKCS7.write_der" title="Permalink to this definition">¶</a></dt>
+<code class="descname">write_der</code><span class="sig-paren">(</span><em>bio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#PKCS7.write_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.PKCS7.write_der" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="exception">
<dt id="M2Crypto.SMIME.PKCS7_Error">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.SMIME.</tt><tt class="descname">PKCS7_Error</tt><a class="reference internal" href="_modules/M2Crypto/SMIME.html#PKCS7_Error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.PKCS7_Error" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.SMIME.</code><code class="descname">PKCS7_Error</code><a class="reference internal" href="_modules/M2Crypto/SMIME.html#PKCS7_Error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.PKCS7_Error" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></code></p>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.SMIME.SMIME">
-<em class="property">class </em><tt class="descclassname">M2Crypto.SMIME.</tt><tt class="descname">SMIME</tt><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.SMIME.</code><code class="descname">SMIME</code><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME" title="Permalink to this definition">¶</a></dt>
<dd><dl class="method">
<dt id="M2Crypto.SMIME.SMIME.decrypt">
-<tt class="descname">decrypt</tt><big>(</big><em>pkcs7</em>, <em>flags=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.decrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.decrypt" title="Permalink to this definition">¶</a></dt>
+<code class="descname">decrypt</code><span class="sig-paren">(</span><em>pkcs7</em>, <em>flags=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.decrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.decrypt" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.SMIME.encrypt">
-<tt class="descname">encrypt</tt><big>(</big><em>data_bio</em>, <em>flags=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.encrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.encrypt" title="Permalink to this definition">¶</a></dt>
+<code class="descname">encrypt</code><span class="sig-paren">(</span><em>data_bio</em>, <em>flags=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.encrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.encrypt" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.SMIME.load_key">
-<tt class="descname">load_key</tt><big>(</big><em>keyfile</em>, <em>certfile=None</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.load_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.load_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">load_key</code><span class="sig-paren">(</span><em>keyfile</em>, <em>certfile=None</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.load_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.load_key" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.SMIME.load_key_bio">
-<tt class="descname">load_key_bio</tt><big>(</big><em>keybio</em>, <em>certbio=None</em>, <em>callback=&lt;function passphrase_callback at 0x1faa848&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.load_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.load_key_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descname">load_key_bio</code><span class="sig-paren">(</span><em>keybio</em>, <em>certbio=None</em>, <em>callback=&lt;function passphrase_callback&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.load_key_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.load_key_bio" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.SMIME.set_cipher">
-<tt class="descname">set_cipher</tt><big>(</big><em>cipher</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.set_cipher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.set_cipher" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_cipher</code><span class="sig-paren">(</span><em>cipher</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.set_cipher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.set_cipher" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.SMIME.set_x509_stack">
-<tt class="descname">set_x509_stack</tt><big>(</big><em>stack</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.set_x509_stack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.set_x509_stack" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_x509_stack</code><span class="sig-paren">(</span><em>stack</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.set_x509_stack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.set_x509_stack" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.SMIME.set_x509_store">
-<tt class="descname">set_x509_store</tt><big>(</big><em>store</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.set_x509_store"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.set_x509_store" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_x509_store</code><span class="sig-paren">(</span><em>store</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.set_x509_store"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.set_x509_store" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.SMIME.sign">
-<tt class="descname">sign</tt><big>(</big><em>data_bio</em>, <em>flags=0</em>, <em>algo='sha1'</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.sign"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.sign" title="Permalink to this definition">¶</a></dt>
+<code class="descname">sign</code><span class="sig-paren">(</span><em>data_bio</em>, <em>flags=0</em>, <em>algo='sha1'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.sign"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.sign" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.SMIME.unset_cipher">
-<tt class="descname">unset_cipher</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.unset_cipher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.unset_cipher" title="Permalink to this definition">¶</a></dt>
+<code class="descname">unset_cipher</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.unset_cipher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.unset_cipher" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.SMIME.unset_key">
-<tt class="descname">unset_key</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.unset_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.unset_key" title="Permalink to this definition">¶</a></dt>
+<code class="descname">unset_key</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.unset_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.unset_key" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.SMIME.unset_x509_stack">
-<tt class="descname">unset_x509_stack</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.unset_x509_stack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.unset_x509_stack" title="Permalink to this definition">¶</a></dt>
+<code class="descname">unset_x509_stack</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.unset_x509_stack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.unset_x509_stack" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.SMIME.unset_x509_store">
-<tt class="descname">unset_x509_store</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.unset_x509_store"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.unset_x509_store" title="Permalink to this definition">¶</a></dt>
+<code class="descname">unset_x509_store</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.unset_x509_store"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.unset_x509_store" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.SMIME.verify">
-<tt class="descname">verify</tt><big>(</big><em>pkcs7</em>, <em>data_bio=None</em>, <em>flags=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.verify"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.verify" title="Permalink to this definition">¶</a></dt>
+<code class="descname">verify</code><span class="sig-paren">(</span><em>pkcs7</em>, <em>data_bio=None</em>, <em>flags=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.verify"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.verify" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.SMIME.SMIME.write">
-<tt class="descname">write</tt><big>(</big><em>out_bio</em>, <em>pkcs7</em>, <em>data_bio=None</em>, <em>flags=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.write" title="Permalink to this definition">¶</a></dt>
+<code class="descname">write</code><span class="sig-paren">(</span><em>out_bio</em>, <em>pkcs7</em>, <em>data_bio=None</em>, <em>flags=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME.write"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME.write" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="exception">
<dt id="M2Crypto.SMIME.SMIME_Error">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.SMIME.</tt><tt class="descname">SMIME_Error</tt><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME_Error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME_Error" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.SMIME.</code><code class="descname">SMIME_Error</code><a class="reference internal" href="_modules/M2Crypto/SMIME.html#SMIME_Error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.SMIME_Error" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></code></p>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.SMIME.load_pkcs7">
-<tt class="descclassname">M2Crypto.SMIME.</tt><tt class="descname">load_pkcs7</tt><big>(</big><em>p7file</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#load_pkcs7"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.load_pkcs7" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SMIME.</code><code class="descname">load_pkcs7</code><span class="sig-paren">(</span><em>p7file</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#load_pkcs7"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.load_pkcs7" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.SMIME.load_pkcs7_bio">
-<tt class="descclassname">M2Crypto.SMIME.</tt><tt class="descname">load_pkcs7_bio</tt><big>(</big><em>p7_bio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#load_pkcs7_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.load_pkcs7_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SMIME.</code><code class="descname">load_pkcs7_bio</code><span class="sig-paren">(</span><em>p7_bio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#load_pkcs7_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.load_pkcs7_bio" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.SMIME.load_pkcs7_bio_der">
-<tt class="descclassname">M2Crypto.SMIME.</tt><tt class="descname">load_pkcs7_bio_der</tt><big>(</big><em>p7_bio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#load_pkcs7_bio_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.load_pkcs7_bio_der" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SMIME.</code><code class="descname">load_pkcs7_bio_der</code><span class="sig-paren">(</span><em>p7_bio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#load_pkcs7_bio_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.load_pkcs7_bio_der" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.SMIME.load_pkcs7_der">
-<tt class="descclassname">M2Crypto.SMIME.</tt><tt class="descname">load_pkcs7_der</tt><big>(</big><em>p7file</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#load_pkcs7_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.load_pkcs7_der" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SMIME.</code><code class="descname">load_pkcs7_der</code><span class="sig-paren">(</span><em>p7file</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#load_pkcs7_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.load_pkcs7_der" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.SMIME.smime_load_pkcs7">
-<tt class="descclassname">M2Crypto.SMIME.</tt><tt class="descname">smime_load_pkcs7</tt><big>(</big><em>p7file</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#smime_load_pkcs7"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.smime_load_pkcs7" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SMIME.</code><code class="descname">smime_load_pkcs7</code><span class="sig-paren">(</span><em>p7file</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#smime_load_pkcs7"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.smime_load_pkcs7" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.SMIME.smime_load_pkcs7_bio">
-<tt class="descclassname">M2Crypto.SMIME.</tt><tt class="descname">smime_load_pkcs7_bio</tt><big>(</big><em>p7_bio</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#smime_load_pkcs7_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.smime_load_pkcs7_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SMIME.</code><code class="descname">smime_load_pkcs7_bio</code><span class="sig-paren">(</span><em>p7_bio</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#smime_load_pkcs7_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.smime_load_pkcs7_bio" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.SMIME.text_crlf">
-<tt class="descclassname">M2Crypto.SMIME.</tt><tt class="descname">text_crlf</tt><big>(</big><em>text</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#text_crlf"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.text_crlf" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SMIME.</code><code class="descname">text_crlf</code><span class="sig-paren">(</span><em>text</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#text_crlf"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.text_crlf" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.SMIME.text_crlf_bio">
-<tt class="descclassname">M2Crypto.SMIME.</tt><tt class="descname">text_crlf_bio</tt><big>(</big><em>bio_in</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/SMIME.html#text_crlf_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.text_crlf_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.SMIME.</code><code class="descname">text_crlf_bio</code><span class="sig-paren">(</span><em>bio_in</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/SMIME.html#text_crlf_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.SMIME.text_crlf_bio" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</div>
<div class="section" id="module-M2Crypto.X509">
-<span id="x509-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">X509</span></tt> Module<a class="headerlink" href="#module-M2Crypto.X509" title="Permalink to this headline">¶</a></h2>
+<span id="x509-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">X509</span></code> Module<a class="headerlink" href="#module-M2Crypto.X509" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.X509.CRL">
-<em class="property">class </em><tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">CRL</tt><big>(</big><em>crl=None</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#CRL"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.CRL" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.X509.</code><code class="descname">CRL</code><span class="sig-paren">(</span><em>crl=None</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#CRL"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.CRL" title="Permalink to this definition">¶</a></dt>
<dd><p>X509 Certificate Revocation List</p>
<dl class="method">
<dt id="M2Crypto.X509.CRL.as_text">
-<tt class="descname">as_text</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#CRL.as_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.CRL.as_text" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_text</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#CRL.as_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.CRL.as_text" title="Permalink to this definition">¶</a></dt>
<dd><p>Return CRL in PEM format in a string.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@@ -2990,24 +3118,24 @@ M2Crypto.EVP.Cipher.</p>
<dl class="method">
<dt id="M2Crypto.X509.CRL.m2_x509_crl_free">
-<tt class="descname">m2_x509_crl_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.X509.CRL.m2_x509_crl_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_x509_crl_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.X509.CRL.m2_x509_crl_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.X509.Request">
-<em class="property">class </em><tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">Request</tt><big>(</big><em>req=None</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#Request"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.X509.</code><code class="descname">Request</code><span class="sig-paren">(</span><em>req=None</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#Request"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request" title="Permalink to this definition">¶</a></dt>
<dd><p>X509 Certificate Request.</p>
<dl class="method">
<dt id="M2Crypto.X509.Request.add_extensions">
-<tt class="descname">add_extensions</tt><big>(</big><em>ext_stack</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.add_extensions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.add_extensions" title="Permalink to this definition">¶</a></dt>
+<code class="descname">add_extensions</code><span class="sig-paren">(</span><em>ext_stack</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.add_extensions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.add_extensions" title="Permalink to this definition">¶</a></dt>
<dd><p>Add X509 extensions to this request.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>ext_stack</strong> &#8211; Stack of extensions to add.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>ext_stack</strong> – Stack of extensions to add.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">1 for success and 0 for failure</td>
</tr>
@@ -3017,22 +3145,22 @@ M2Crypto.EVP.Cipher.</p>
<dl class="method">
<dt id="M2Crypto.X509.Request.as_der">
-<tt class="descname">as_der</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.as_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.as_der" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_der</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.as_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.as_der" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.Request.as_pem">
-<tt class="descname">as_pem</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.as_pem"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.as_pem" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_pem</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.as_pem"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.as_pem" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.Request.as_text">
-<tt class="descname">as_text</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.as_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.as_text" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_text</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.as_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.as_text" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.Request.get_pubkey">
-<tt class="descname">get_pubkey</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.get_pubkey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.get_pubkey" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_pubkey</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.get_pubkey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.get_pubkey" title="Permalink to this definition">¶</a></dt>
<dd><p>Get the public key for the request.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@@ -3046,12 +3174,12 @@ M2Crypto.EVP.Cipher.</p>
<dl class="method">
<dt id="M2Crypto.X509.Request.get_subject">
-<tt class="descname">get_subject</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.get_subject"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.get_subject" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_subject</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.get_subject"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.get_subject" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.Request.get_version">
-<tt class="descname">get_version</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.get_version"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.get_version" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_version</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.get_version"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.get_version" title="Permalink to this definition">¶</a></dt>
<dd><p>Get version.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@@ -3065,12 +3193,12 @@ M2Crypto.EVP.Cipher.</p>
<dl class="method">
<dt id="M2Crypto.X509.Request.m2_x509_req_free">
-<tt class="descname">m2_x509_req_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.X509.Request.m2_x509_req_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_x509_req_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.X509.Request.m2_x509_req_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.Request.save">
-<tt class="descname">save</tt><big>(</big><em>filename</em>, <em>format=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.save"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.save" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save</code><span class="sig-paren">(</span><em>filename</em>, <em>format=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.save"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.save" title="Permalink to this definition">¶</a></dt>
<dd><p>Saves X.509 certificate request to a file. Default output
format is PEM.</p>
<table class="docutils field-list" frame="void" rules="none">
@@ -3078,8 +3206,8 @@ format is PEM.</p>
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>filename</strong> &#8211; Name of the file the request will be saved to.</li>
-<li><strong>format</strong> &#8211; Controls what output format is used to save the
+<li><strong>filename</strong> – Name of the file the request will be saved to.</li>
+<li><strong>format</strong> – Controls what output format is used to save the
request. Either FORMAT_PEM or FORMAT_DER to save
in PEM or DER format. Raises ValueError if an
unknown format is used.</li>
@@ -3096,18 +3224,18 @@ The error code can be obtained by ERR_get_error.</p>
<dl class="method">
<dt id="M2Crypto.X509.Request.save_pem">
-<tt class="descname">save_pem</tt><big>(</big><em>filename</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.save_pem"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.save_pem" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_pem</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.save_pem"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.save_pem" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.Request.set_pubkey">
-<tt class="descname">set_pubkey</tt><big>(</big><em>pkey</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.set_pubkey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.set_pubkey" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_pubkey</code><span class="sig-paren">(</span><em>pkey</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.set_pubkey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.set_pubkey" title="Permalink to this definition">¶</a></dt>
<dd><p>Set the public key for the request.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>pkey</strong> &#8211; Public key</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>pkey</strong> – Public key</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">Return 1 for success and 0 for failure.</td>
</tr>
@@ -3117,13 +3245,13 @@ The error code can be obtained by ERR_get_error.</p>
<dl class="method">
<dt id="M2Crypto.X509.Request.set_subject">
-<tt class="descname">set_subject</tt><big>(</big><em>name</em><big>)</big><a class="headerlink" href="#M2Crypto.X509.Request.set_subject" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_subject</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.X509.Request.set_subject" title="Permalink to this definition">¶</a></dt>
<dd><p>Set subject name.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>name</strong> &#8211; subjectName field.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>name</strong> – subjectName field.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">1 for success and 0 for failure</td>
</tr>
@@ -3133,13 +3261,13 @@ The error code can be obtained by ERR_get_error.</p>
<dl class="method">
<dt id="M2Crypto.X509.Request.set_subject_name">
-<tt class="descname">set_subject_name</tt><big>(</big><em>name</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.set_subject_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.set_subject_name" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_subject_name</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.set_subject_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.set_subject_name" title="Permalink to this definition">¶</a></dt>
<dd><p>Set subject name.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>name</strong> &#8211; subjectName field.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>name</strong> – subjectName field.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">1 for success and 0 for failure</td>
</tr>
@@ -3149,13 +3277,13 @@ The error code can be obtained by ERR_get_error.</p>
<dl class="method">
<dt id="M2Crypto.X509.Request.set_version">
-<tt class="descname">set_version</tt><big>(</big><em>version</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.set_version"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.set_version" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_version</code><span class="sig-paren">(</span><em>version</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.set_version"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.set_version" title="Permalink to this definition">¶</a></dt>
<dd><p>Set version.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>version</strong> &#8211; Version number.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>version</strong> – Version number.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">Returns 0 on failure.</td>
</tr>
@@ -3165,14 +3293,14 @@ The error code can be obtained by ERR_get_error.</p>
<dl class="method">
<dt id="M2Crypto.X509.Request.sign">
-<tt class="descname">sign</tt><big>(</big><em>pkey</em>, <em>md</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.sign"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.sign" title="Permalink to this definition">¶</a></dt>
+<code class="descname">sign</code><span class="sig-paren">(</span><em>pkey</em>, <em>md</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.sign"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.sign" title="Permalink to this definition">¶</a></dt>
<dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>pkey</strong> &#8211; PKey to be signed</li>
-<li><strong>md</strong> &#8211; used algorigthm</li>
+<li><strong>pkey</strong> – PKey to be signed</li>
+<li><strong>md</strong> – used algorigthm</li>
</ul>
</td>
</tr>
@@ -3185,12 +3313,12 @@ The error code can be obtained by ERR_get_error.</p>
<dl class="method">
<dt id="M2Crypto.X509.Request.verify">
-<tt class="descname">verify</tt><big>(</big><em>pkey</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.verify"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.verify" title="Permalink to this definition">¶</a></dt>
+<code class="descname">verify</code><span class="sig-paren">(</span><em>pkey</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#Request.verify"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.Request.verify" title="Permalink to this definition">¶</a></dt>
<dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>pkey</strong> &#8211; PKey to be verified</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>pkey</strong> – PKey to be verified</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">1 for success and 0 for failure</td>
</tr>
@@ -3202,17 +3330,17 @@ The error code can be obtained by ERR_get_error.</p>
<dl class="class">
<dt id="M2Crypto.X509.X509">
-<em class="property">class </em><tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">X509</tt><big>(</big><em>x509=None</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.X509.</code><code class="descname">X509</code><span class="sig-paren">(</span><em>x509=None</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509" title="Permalink to this definition">¶</a></dt>
<dd><p>X.509 Certificate</p>
<dl class="method">
<dt id="M2Crypto.X509.X509.add_ext">
-<tt class="descname">add_ext</tt><big>(</big><em>ext</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.add_ext"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.add_ext" title="Permalink to this definition">¶</a></dt>
+<code class="descname">add_ext</code><span class="sig-paren">(</span><em>ext</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.add_ext"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.add_ext" title="Permalink to this definition">¶</a></dt>
<dd><p>Add X509 extension to this certificate.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>ext</strong> &#8211; Extension</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>ext</strong> – Extension</td>
</tr>
</tbody>
</table>
@@ -3221,22 +3349,22 @@ The error code can be obtained by ERR_get_error.</p>
<dl class="method">
<dt id="M2Crypto.X509.X509.as_der">
-<tt class="descname">as_der</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.as_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.as_der" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_der</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.as_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.as_der" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509.as_pem">
-<tt class="descname">as_pem</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.as_pem"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.as_pem" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_pem</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.as_pem"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.as_pem" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509.as_text">
-<tt class="descname">as_text</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.as_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.as_text" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_text</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.as_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.as_text" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509.check_ca">
-<tt class="descname">check_ca</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.check_ca"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.check_ca" title="Permalink to this definition">¶</a></dt>
+<code class="descname">check_ca</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.check_ca"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.check_ca" title="Permalink to this definition">¶</a></dt>
<dd><p>Check if the certificate is a Certificate Authority (CA) certificate.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@@ -3244,7 +3372,7 @@ The error code can be obtained by ERR_get_error.</p>
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">0 if the certificate is not CA, nonzero otherwise.</td>
</tr>
-<tr class="field-even field"><th class="field-name">Requires :</th><td class="field-body">OpenSSL 0.9.8 or newer</td>
+<tr class="field-even field"><th class="field-name">Requires:</th><td class="field-body">OpenSSL 0.9.8 or newer</td>
</tr>
</tbody>
</table>
@@ -3252,15 +3380,15 @@ The error code can be obtained by ERR_get_error.</p>
<dl class="method">
<dt id="M2Crypto.X509.X509.check_purpose">
-<tt class="descname">check_purpose</tt><big>(</big><em>id</em>, <em>ca</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.check_purpose"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.check_purpose" title="Permalink to this definition">¶</a></dt>
-<dd><p>Check if the certificate&#8217;s purpose matches the asked purpose.</p>
+<code class="descname">check_purpose</code><span class="sig-paren">(</span><em>id</em>, <em>ca</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.check_purpose"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.check_purpose" title="Permalink to this definition">¶</a></dt>
+<dd><p>Check if the certificate’s purpose matches the asked purpose.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>id</strong> &#8211; Purpose id. See X509_PURPOSE_* constants.</li>
-<li><strong>ca</strong> &#8211; 1 if the certificate should be CA, 0 otherwise.</li>
+<li><strong>id</strong> – Purpose id. See X509_PURPOSE_* constants.</li>
+<li><strong>ca</strong> – 1 if the certificate should be CA, 0 otherwise.</li>
</ul>
</td>
</tr>
@@ -3274,13 +3402,13 @@ otherwise.</p>
<dl class="method">
<dt id="M2Crypto.X509.X509.get_ext">
-<tt class="descname">get_ext</tt><big>(</big><em>name</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_ext"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_ext" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_ext</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_ext"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_ext" title="Permalink to this definition">¶</a></dt>
<dd><p>Get X509 extension by name.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>name</strong> &#8211; Name of the extension</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>name</strong> – Name of the extension</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">X509_Extension</td>
</tr>
@@ -3290,13 +3418,13 @@ otherwise.</p>
<dl class="method">
<dt id="M2Crypto.X509.X509.get_ext_at">
-<tt class="descname">get_ext_at</tt><big>(</big><em>index</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_ext_at"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_ext_at" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_ext_at</code><span class="sig-paren">(</span><em>index</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_ext_at"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_ext_at" title="Permalink to this definition">¶</a></dt>
<dd><p>Get X509 extension by index.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>index</strong> &#8211; Name of the extension</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>index</strong> – Name of the extension</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">X509_Extension</td>
</tr>
@@ -3306,19 +3434,19 @@ otherwise.</p>
<dl class="method">
<dt id="M2Crypto.X509.X509.get_ext_count">
-<tt class="descname">get_ext_count</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_ext_count"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_ext_count" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_ext_count</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_ext_count"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_ext_count" title="Permalink to this definition">¶</a></dt>
<dd><p>Get X509 extension count.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509.get_fingerprint">
-<tt class="descname">get_fingerprint</tt><big>(</big><em>md='md5'</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_fingerprint"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_fingerprint" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_fingerprint</code><span class="sig-paren">(</span><em>md='md5'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_fingerprint"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_fingerprint" title="Permalink to this definition">¶</a></dt>
<dd><p>Get the fingerprint of the certificate.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>md</strong> &#8211; Message digest algorithm to use.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>md</strong> – Message digest algorithm to use.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">String containing the fingerprint in hex format.</td>
</tr>
@@ -3328,47 +3456,47 @@ otherwise.</p>
<dl class="method">
<dt id="M2Crypto.X509.X509.get_issuer">
-<tt class="descname">get_issuer</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_issuer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_issuer" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_issuer</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_issuer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_issuer" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509.get_not_after">
-<tt class="descname">get_not_after</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_not_after"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_not_after" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_not_after</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_not_after"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_not_after" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509.get_not_before">
-<tt class="descname">get_not_before</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_not_before"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_not_before" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_not_before</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_not_before"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_not_before" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509.get_pubkey">
-<tt class="descname">get_pubkey</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_pubkey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_pubkey" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_pubkey</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_pubkey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_pubkey" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509.get_serial_number">
-<tt class="descname">get_serial_number</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_serial_number"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_serial_number" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_serial_number</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_serial_number"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_serial_number" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509.get_subject">
-<tt class="descname">get_subject</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_subject"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_subject" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_subject</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_subject"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_subject" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509.get_version">
-<tt class="descname">get_version</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_version"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_version" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_version</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.get_version"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.get_version" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509.m2_x509_free">
-<tt class="descname">m2_x509_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.X509.X509.m2_x509_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_x509_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.X509.X509.m2_x509_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509.save">
-<tt class="descname">save</tt><big>(</big><em>filename</em>, <em>format=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.save"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.save" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save</code><span class="sig-paren">(</span><em>filename</em>, <em>format=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.save"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.save" title="Permalink to this definition">¶</a></dt>
<dd><p>Saves X.509 certificate to a file. Default output
format is PEM.</p>
<table class="docutils field-list" frame="void" rules="none">
@@ -3376,8 +3504,8 @@ format is PEM.</p>
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>filename</strong> &#8211; Name of the file the cert will be saved to.</li>
-<li><strong>format</strong> &#8211; Controls what output format is used to save the cert.
+<li><strong>filename</strong> – Name of the file the cert will be saved to.</li>
+<li><strong>format</strong> – Controls what output format is used to save the cert.
Either FORMAT_PEM or FORMAT_DER to save in PEM or
DER format. Raises a ValueError if an unknow
format is used.</li>
@@ -3393,12 +3521,12 @@ format is used.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509.save_pem">
-<tt class="descname">save_pem</tt><big>(</big><em>filename</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.save_pem"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.save_pem" title="Permalink to this definition">¶</a></dt>
+<code class="descname">save_pem</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.save_pem"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.save_pem" title="Permalink to this definition">¶</a></dt>
<dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> &#8211; name of the file to be loaded</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> – name of the file to be loaded</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">1 for success or 0 for failure</td>
</tr>
@@ -3408,13 +3536,13 @@ format is used.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509.set_issuer">
-<tt class="descname">set_issuer</tt><big>(</big><em>name</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_issuer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_issuer" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_issuer</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_issuer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_issuer" title="Permalink to this definition">¶</a></dt>
<dd><p>Set issuer name.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>name</strong> &#8211; subjectName field.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>name</strong> – subjectName field.</td>
</tr>
</tbody>
</table>
@@ -3423,7 +3551,7 @@ format is used.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509.set_issuer_name">
-<tt class="descname">set_issuer_name</tt><big>(</big><em>name</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_issuer_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_issuer_name" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_issuer_name</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_issuer_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_issuer_name" title="Permalink to this definition">¶</a></dt>
<dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
@@ -3436,7 +3564,7 @@ format is used.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509.set_not_after">
-<tt class="descname">set_not_after</tt><big>(</big><em>asn1_time</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_not_after"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_not_after" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_not_after</code><span class="sig-paren">(</span><em>asn1_time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_not_after"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_not_after" title="Permalink to this definition">¶</a></dt>
<dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
@@ -3449,7 +3577,7 @@ format is used.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509.set_not_before">
-<tt class="descname">set_not_before</tt><big>(</big><em>asn1_time</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_not_before"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_not_before" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_not_before</code><span class="sig-paren">(</span><em>asn1_time</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_not_before"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_not_before" title="Permalink to this definition">¶</a></dt>
<dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
@@ -3462,13 +3590,13 @@ format is used.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509.set_pubkey">
-<tt class="descname">set_pubkey</tt><big>(</big><em>pkey</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_pubkey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_pubkey" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_pubkey</code><span class="sig-paren">(</span><em>pkey</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_pubkey"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_pubkey" title="Permalink to this definition">¶</a></dt>
<dd><p>Set the public key for the certificate</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>pkey</strong> &#8211; Public key</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>pkey</strong> – Public key</td>
</tr>
</tbody>
</table>
@@ -3477,13 +3605,13 @@ format is used.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509.set_serial_number">
-<tt class="descname">set_serial_number</tt><big>(</big><em>serial</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_serial_number"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_serial_number" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_serial_number</code><span class="sig-paren">(</span><em>serial</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_serial_number"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_serial_number" title="Permalink to this definition">¶</a></dt>
<dd><p>Set serial number.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>serial</strong> &#8211; Serial number.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>serial</strong> – Serial number.</td>
</tr>
</tbody>
</table>
@@ -3492,13 +3620,13 @@ format is used.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509.set_subject">
-<tt class="descname">set_subject</tt><big>(</big><em>name</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_subject"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_subject" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_subject</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_subject"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_subject" title="Permalink to this definition">¶</a></dt>
<dd><p>Set subject name.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>name</strong> &#8211; subjectName field.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>name</strong> – subjectName field.</td>
</tr>
</tbody>
</table>
@@ -3507,7 +3635,7 @@ format is used.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509.set_subject_name">
-<tt class="descname">set_subject_name</tt><big>(</big><em>name</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_subject_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_subject_name" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_subject_name</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_subject_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_subject_name" title="Permalink to this definition">¶</a></dt>
<dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
@@ -3520,13 +3648,13 @@ format is used.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509.set_version">
-<tt class="descname">set_version</tt><big>(</big><em>version</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_version"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_version" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_version</code><span class="sig-paren">(</span><em>version</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.set_version"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.set_version" title="Permalink to this definition">¶</a></dt>
<dd><p>Set version of the certificate.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>version</strong> &#8211; Version number.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>version</strong> – Version number.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">Returns 0 on failure.</td>
</tr>
@@ -3536,16 +3664,16 @@ format is used.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509.sign">
-<tt class="descname">sign</tt><big>(</big><em>pkey</em>, <em>md</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.sign"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.sign" title="Permalink to this definition">¶</a></dt>
+<code class="descname">sign</code><span class="sig-paren">(</span><em>pkey</em>, <em>md</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.sign"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.sign" title="Permalink to this definition">¶</a></dt>
<dd><p>Sign the certificate.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>pkey</strong> &#8211; Public key</li>
-<li><strong>md</strong> &#8211; Message digest algorithm to use for signing,
-for example &#8216;sha1&#8217;.</li>
+<li><strong>pkey</strong> – Public key</li>
+<li><strong>md</strong> – Message digest algorithm to use for signing,
+for example ‘sha1’.</li>
</ul>
</td>
</tr>
@@ -3556,24 +3684,24 @@ for example &#8216;sha1&#8217;.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509.verify">
-<tt class="descname">verify</tt><big>(</big><em>pkey=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.verify"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.verify" title="Permalink to this definition">¶</a></dt>
+<code class="descname">verify</code><span class="sig-paren">(</span><em>pkey=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509.verify"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509.verify" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="exception">
<dt id="M2Crypto.X509.X509Error">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">X509Error</tt><a class="reference internal" href="_modules/M2Crypto/X509.html#X509Error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509Error" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.X509.</code><code class="descname">X509Error</code><a class="reference internal" href="_modules/M2Crypto/X509.html#X509Error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509Error" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></code></p>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.X509.X509_Extension">
-<em class="property">class </em><tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">X509_Extension</tt><big>(</big><em>x509_ext_ptr=None</em>, <em>_pyfree=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Extension"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Extension" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.X509.</code><code class="descname">X509_Extension</code><span class="sig-paren">(</span><em>x509_ext_ptr=None</em>, <em>_pyfree=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Extension"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Extension" title="Permalink to this definition">¶</a></dt>
<dd><p>X509 Extension</p>
<dl class="method">
<dt id="M2Crypto.X509.X509_Extension.get_critical">
-<tt class="descname">get_critical</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Extension.get_critical"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Extension.get_critical" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_critical</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Extension.get_critical"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Extension.get_critical" title="Permalink to this definition">¶</a></dt>
<dd><p>Return whether or not this is a critical extension.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@@ -3587,21 +3715,21 @@ for example &#8216;sha1&#8217;.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509_Extension.get_name">
-<tt class="descname">get_name</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Extension.get_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Extension.get_name" title="Permalink to this definition">¶</a></dt>
-<dd><p>Get the extension name, for example &#8216;subjectAltName&#8217;.</p>
+<code class="descname">get_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Extension.get_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Extension.get_name" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get the extension name, for example ‘subjectAltName’.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Extension.get_value">
-<tt class="descname">get_value</tt><big>(</big><em>flag=0</em>, <em>indent=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Extension.get_value"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Extension.get_value" title="Permalink to this definition">¶</a></dt>
-<dd><p>Get the extension value, for example &#8216;<a class="reference external" href="DNS:www.example.com">DNS:www.example.com</a>&#8216;.</p>
+<code class="descname">get_value</code><span class="sig-paren">(</span><em>flag=0</em>, <em>indent=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Extension.get_value"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Extension.get_value" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get the extension value, for example ‘<a class="reference external" href="DNS:www.example.com">DNS:www.example.com</a>’.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>flag</strong> &#8211; Flag to control what and how to print.</li>
-<li><strong>indent</strong> &#8211; How many spaces to print before actual value.</li>
+<li><strong>flag</strong> – Flag to control what and how to print.</li>
+<li><strong>indent</strong> – How many spaces to print before actual value.</li>
</ul>
</td>
</tr>
@@ -3611,19 +3739,19 @@ for example &#8216;sha1&#8217;.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509_Extension.m2_x509_extension_free">
-<tt class="descname">m2_x509_extension_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.X509.X509_Extension.m2_x509_extension_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_x509_extension_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.X509.X509_Extension.m2_x509_extension_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Extension.set_critical">
-<tt class="descname">set_critical</tt><big>(</big><em>critical=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Extension.set_critical"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Extension.set_critical" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_critical</code><span class="sig-paren">(</span><em>critical=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Extension.set_critical"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Extension.set_critical" title="Permalink to this definition">¶</a></dt>
<dd><p>Mark this extension critical or noncritical. By default an
extension is not critical.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>critical</strong> &#8211; Nonzero sets this extension as critical.
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>critical</strong> – Nonzero sets this extension as critical.
Calling this method without arguments will
set this extension to critical.</td>
</tr>
@@ -3637,13 +3765,13 @@ set this extension to critical.</td>
<dl class="class">
<dt id="M2Crypto.X509.X509_Extension_Stack">
-<em class="property">class </em><tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">X509_Extension_Stack</tt><big>(</big><em>stack=None</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Extension_Stack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Extension_Stack" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.X509.</code><code class="descname">X509_Extension_Stack</code><span class="sig-paren">(</span><em>stack=None</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Extension_Stack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Extension_Stack" title="Permalink to this definition">¶</a></dt>
<dd><p>X509 Extension Stack</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Warning :</th><td class="field-body">Do not modify the underlying OpenSSL stack
+<tr class="field-odd field"><th class="field-name">Warning:</th><td class="field-body">Do not modify the underlying OpenSSL stack
except through this interface, or use any OpenSSL
functions that do so indirectly. Doing so will get the
OpenSSL stack and the internal pystack of this class out
@@ -3654,12 +3782,12 @@ even python crashes!</td>
</table>
<dl class="method">
<dt id="M2Crypto.X509.X509_Extension_Stack.m2_sk_x509_extension_free">
-<tt class="descname">m2_sk_x509_extension_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.X509.X509_Extension_Stack.m2_sk_x509_extension_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_sk_x509_extension_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.X509.X509_Extension_Stack.m2_sk_x509_extension_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Extension_Stack.pop">
-<tt class="descname">pop</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Extension_Stack.pop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Extension_Stack.pop" title="Permalink to this definition">¶</a></dt>
+<code class="descname">pop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Extension_Stack.pop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Extension_Stack.pop" title="Permalink to this definition">¶</a></dt>
<dd><p>Pop X509_Extension object from the stack.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@@ -3673,13 +3801,13 @@ even python crashes!</td>
<dl class="method">
<dt id="M2Crypto.X509.X509_Extension_Stack.push">
-<tt class="descname">push</tt><big>(</big><em>x509_ext</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Extension_Stack.push"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Extension_Stack.push" title="Permalink to this definition">¶</a></dt>
+<code class="descname">push</code><span class="sig-paren">(</span><em>x509_ext</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Extension_Stack.push"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Extension_Stack.push" title="Permalink to this definition">¶</a></dt>
<dd><p>Push X509_Extension object onto the stack.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>x509_ext</strong> &#8211; X509_Extension object to be pushed onto the stack.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>x509_ext</strong> – X509_Extension object to be pushed onto the stack.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">The number of extensions on the stack.</td>
</tr>
@@ -3691,29 +3819,29 @@ even python crashes!</td>
<dl class="class">
<dt id="M2Crypto.X509.X509_Name">
-<em class="property">class </em><tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">X509_Name</tt><big>(</big><em>x509_name=None</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.X509.</code><code class="descname">X509_Name</code><span class="sig-paren">(</span><em>x509_name=None</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name" title="Permalink to this definition">¶</a></dt>
<dd><p>X509 Name</p>
<dl class="method">
<dt id="M2Crypto.X509.X509_Name.add_entry_by_txt">
-<tt class="descname">add_entry_by_txt</tt><big>(</big><em>field</em>, <em>type</em>, <em>entry</em>, <em>len</em>, <em>loc</em>, <em>set</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name.add_entry_by_txt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name.add_entry_by_txt" title="Permalink to this definition">¶</a></dt>
+<code class="descname">add_entry_by_txt</code><span class="sig-paren">(</span><em>field</em>, <em>type</em>, <em>entry</em>, <em>len</em>, <em>loc</em>, <em>set</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name.add_entry_by_txt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name.add_entry_by_txt" title="Permalink to this definition">¶</a></dt>
<dd><p>Add X509_Name field whose name is identified by its name.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>field</strong> &#8211; name of the entry</li>
-<li><strong>type</strong> &#8211; use MBSTRING_ASC or MBSTRING_UTF8
+<li><strong>field</strong> – name of the entry</li>
+<li><strong>type</strong> – use MBSTRING_ASC or MBSTRING_UTF8
(or standard ASN1 type like V_ASN1_IA5STRING)</li>
-<li><strong>entry</strong> &#8211; value</li>
-<li><strong>len</strong> &#8211; buf_len of the entry
+<li><strong>entry</strong> – value</li>
+<li><strong>len</strong> – buf_len of the entry
(-1 and the length is computed automagically)</li>
</ul>
</td>
</tr>
</tbody>
</table>
-<p>The <tt class="docutils literal"><span class="pre">loc</span></tt> and <tt class="docutils literal"><span class="pre">set</span></tt> parameters determine where a new entry
+<p>The <code class="docutils literal"><span class="pre">loc</span></code> and <code class="docutils literal"><span class="pre">set</span></code> parameters determine where a new entry
should be added.
For almost all applications loc can be set to -1 and set to 0.
This adds a new entry to the end of name as a single valued
@@ -3723,9 +3851,9 @@ RelativeDistinguishedName (RDN).</p>
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>loc</strong> &#8211; determines the index where the new entry is
+<li><strong>loc</strong> – determines the index where the new entry is
inserted: if it is -1 it is appended.</li>
-<li><strong>set</strong> &#8211; determines how the new type is added. If it is zero
+<li><strong>set</strong> – determines how the new type is added. If it is zero
a new RDN is created.
If set is -1 or 1 it is added to the previous or next RDN
structure respectively. This will then be a multivalued
@@ -3743,26 +3871,26 @@ almost always set to zero.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509_Name.as_der">
-<tt class="descname">as_der</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name.as_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name.as_der" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_der</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name.as_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name.as_der" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Name.as_hash">
-<tt class="descname">as_hash</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name.as_hash"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name.as_hash" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_hash</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name.as_hash"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name.as_hash" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Name.as_text">
-<tt class="descname">as_text</tt><big>(</big><em>indent=0</em>, <em>flags=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name.as_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name.as_text" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_text</code><span class="sig-paren">(</span><em>indent=0</em>, <em>flags=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name.as_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name.as_text" title="Permalink to this definition">¶</a></dt>
<dd><p>as_text returns the name as a string.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
-<li><strong>indent</strong> &#8211; Each line in multiline format is indented
+<li><strong>indent</strong> – Each line in multiline format is indented
by this many spaces.</li>
-<li><strong>flags</strong> &#8211; Flags that control how the output should be formatted.</li>
+<li><strong>flags</strong> – Flags that control how the output should be formatted.</li>
</ul>
</td>
</tr>
@@ -3772,18 +3900,18 @@ by this many spaces.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509_Name.entry_count">
-<tt class="descname">entry_count</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name.entry_count"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name.entry_count" title="Permalink to this definition">¶</a></dt>
+<code class="descname">entry_count</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name.entry_count"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name.entry_count" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Name.get_entries_by_nid">
-<tt class="descname">get_entries_by_nid</tt><big>(</big><em>nid</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name.get_entries_by_nid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name.get_entries_by_nid" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_entries_by_nid</code><span class="sig-paren">(</span><em>nid</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name.get_entries_by_nid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name.get_entries_by_nid" title="Permalink to this definition">¶</a></dt>
<dd><p>Retrieve the next index matching nid.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>nid</strong> &#8211; name of the entry (as m2.NID* constants)</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>nid</strong> – name of the entry (as m2.NID* constants)</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">list of X509_Name_Entry items</td>
</tr>
@@ -3793,49 +3921,49 @@ by this many spaces.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509_Name.m2_x509_name_free">
-<tt class="descname">m2_x509_name_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.X509.X509_Name.m2_x509_name_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_x509_name_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.X509.X509_Name.m2_x509_name_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="M2Crypto.X509.X509_Name.nid">
-<tt class="descname">nid</tt><em class="property"> = {'C': 14, 'serialNumber': 105, 'organizationName': 17, 'CN': 13, 'SP': 16, 'commonName': 13, 'L': 15, 'stateOrProvinceName': 16, 'ST': 16, 'emailAddress': 48, 'O': 17, 'localityName': 15, 'GN': 99, 'surname': 100, 'OU': 18, 'givenName': 99, 'Email': 48, 'organizationUnitName': 18, 'SN': 100}</em><a class="headerlink" href="#M2Crypto.X509.X509_Name.nid" title="Permalink to this definition">¶</a></dt>
+<code class="descname">nid</code><em class="property"> = {'C': 14, 'serialNumber': 105, 'organizationName': 17, 'CN': 13, 'SP': 16, 'commonName': 13, 'L': 15, 'stateOrProvinceName': 16, 'ST': 16, 'emailAddress': 48, 'O': 17, 'localityName': 15, 'GN': 99, 'surname': 100, 'OU': 18, 'givenName': 99, 'Email': 48, 'organizationUnitName': 18, 'SN': 100}</em><a class="headerlink" href="#M2Crypto.X509.X509_Name.nid" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.X509.X509_Name_Entry">
-<em class="property">class </em><tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">X509_Name_Entry</tt><big>(</big><em>x509_name_entry</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name_Entry"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name_Entry" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.X509.</code><code class="descname">X509_Name_Entry</code><span class="sig-paren">(</span><em>x509_name_entry</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name_Entry"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name_Entry" title="Permalink to this definition">¶</a></dt>
<dd><p>X509 Name Entry</p>
<dl class="method">
<dt id="M2Crypto.X509.X509_Name_Entry.create_by_txt">
-<tt class="descname">create_by_txt</tt><big>(</big><em>field</em>, <em>type</em>, <em>entry</em>, <em>len</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name_Entry.create_by_txt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name_Entry.create_by_txt" title="Permalink to this definition">¶</a></dt>
+<code class="descname">create_by_txt</code><span class="sig-paren">(</span><em>field</em>, <em>type</em>, <em>entry</em>, <em>len</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name_Entry.create_by_txt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name_Entry.create_by_txt" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Name_Entry.get_data">
-<tt class="descname">get_data</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name_Entry.get_data"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name_Entry.get_data" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name_Entry.get_data"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name_Entry.get_data" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Name_Entry.get_object">
-<tt class="descname">get_object</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name_Entry.get_object"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name_Entry.get_object" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_object</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name_Entry.get_object"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name_Entry.get_object" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Name_Entry.m2_x509_name_entry_free">
-<tt class="descname">m2_x509_name_entry_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.X509.X509_Name_Entry.m2_x509_name_entry_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_x509_name_entry_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.X509.X509_Name_Entry.m2_x509_name_entry_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Name_Entry.set_data">
-<tt class="descname">set_data</tt><big>(</big><em>data</em>, <em>type=4097</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name_Entry.set_data"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name_Entry.set_data" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_data</code><span class="sig-paren">(</span><em>data</em>, <em>type=4097</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name_Entry.set_data"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name_Entry.set_data" title="Permalink to this definition">¶</a></dt>
<dd><p>Sets the field name to asn1obj</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>data</strong> &#8211; data in a binary form to be set</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>data</strong> – data in a binary form to be set</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">0 on failure, 1 on success</td>
</tr>
@@ -3845,13 +3973,13 @@ by this many spaces.</li>
<dl class="method">
<dt id="M2Crypto.X509.X509_Name_Entry.set_object">
-<tt class="descname">set_object</tt><big>(</big><em>asn1obj</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name_Entry.set_object"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name_Entry.set_object" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_object</code><span class="sig-paren">(</span><em>asn1obj</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Name_Entry.set_object"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Name_Entry.set_object" title="Permalink to this definition">¶</a></dt>
<dd><p>Sets the field name to asn1obj</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>asn1obj</strong> &#8211; </td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>asn1obj</strong> – </td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">0 on failure, 1 on success</td>
</tr>
@@ -3863,13 +3991,13 @@ by this many spaces.</li>
<dl class="class">
<dt id="M2Crypto.X509.X509_Stack">
-<em class="property">class </em><tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">X509_Stack</tt><big>(</big><em>stack=None</em>, <em>_pyfree=0</em>, <em>_pyfree_x509=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Stack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Stack" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.X509.</code><code class="descname">X509_Stack</code><span class="sig-paren">(</span><em>stack=None</em>, <em>_pyfree=0</em>, <em>_pyfree_x509=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Stack"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Stack" title="Permalink to this definition">¶</a></dt>
<dd><p>X509 Stack</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Warning :</th><td class="field-body">Do not modify the underlying OpenSSL stack
+<tr class="field-odd field"><th class="field-name">Warning:</th><td class="field-body">Do not modify the underlying OpenSSL stack
except through this interface, or use any OpenSSL
functions that do so indirectly. Doing so will get the
OpenSSL stack and the internal pystack of this class out
@@ -3880,18 +4008,18 @@ even python crashes!</td>
</table>
<dl class="method">
<dt id="M2Crypto.X509.X509_Stack.as_der">
-<tt class="descname">as_der</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Stack.as_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Stack.as_der" title="Permalink to this definition">¶</a></dt>
+<code class="descname">as_der</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Stack.as_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Stack.as_der" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the stack as a DER encoded string</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Stack.m2_sk_x509_free">
-<tt class="descname">m2_sk_x509_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.X509.X509_Stack.m2_sk_x509_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_sk_x509_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.X509.X509_Stack.m2_sk_x509_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Stack.pop">
-<tt class="descname">pop</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Stack.pop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Stack.pop" title="Permalink to this definition">¶</a></dt>
+<code class="descname">pop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Stack.pop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Stack.pop" title="Permalink to this definition">¶</a></dt>
<dd><p>pop a certificate from the stack.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@@ -3906,13 +4034,13 @@ nothing to pop.</td>
<dl class="method">
<dt id="M2Crypto.X509.X509_Stack.push">
-<tt class="descname">push</tt><big>(</big><em>x509</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Stack.push"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Stack.push" title="Permalink to this definition">¶</a></dt>
+<code class="descname">push</code><span class="sig-paren">(</span><em>x509</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Stack.push"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Stack.push" title="Permalink to this definition">¶</a></dt>
<dd><p>push an X509 certificate onto the stack.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>x509</strong> &#8211; X509 object.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>x509</strong> – X509 object.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">The number of X509 objects currently on the stack.</td>
</tr>
@@ -3924,26 +4052,26 @@ nothing to pop.</td>
<dl class="class">
<dt id="M2Crypto.X509.X509_Store">
-<em class="property">class </em><tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">X509_Store</tt><big>(</big><em>store=None</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.X509.</code><code class="descname">X509_Store</code><span class="sig-paren">(</span><em>store=None</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store" title="Permalink to this definition">¶</a></dt>
<dd><p>X509 Store</p>
<dl class="method">
<dt id="M2Crypto.X509.X509_Store.add_cert">
-<tt class="descname">add_cert</tt><big>(</big><em>x509</em><big>)</big><a class="headerlink" href="#M2Crypto.X509.X509_Store.add_cert" title="Permalink to this definition">¶</a></dt>
+<code class="descname">add_cert</code><span class="sig-paren">(</span><em>x509</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.X509.X509_Store.add_cert" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Store.add_x509">
-<tt class="descname">add_x509</tt><big>(</big><em>x509</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store.add_x509"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store.add_x509" title="Permalink to this definition">¶</a></dt>
+<code class="descname">add_x509</code><span class="sig-paren">(</span><em>x509</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store.add_x509"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store.add_x509" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Store.load_info">
-<tt class="descname">load_info</tt><big>(</big><em>file</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store.load_info"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store.load_info" title="Permalink to this definition">¶</a></dt>
+<code class="descname">load_info</code><span class="sig-paren">(</span><em>file</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store.load_info"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store.load_info" title="Permalink to this definition">¶</a></dt>
<dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> &#8211; filename</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> – filename</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">1 on success, 0 on failure</td>
</tr>
@@ -3953,12 +4081,12 @@ nothing to pop.</td>
<dl class="method">
<dt id="M2Crypto.X509.X509_Store.load_locations">
-<tt class="descname">load_locations</tt><big>(</big><em>file</em><big>)</big><a class="headerlink" href="#M2Crypto.X509.X509_Store.load_locations" title="Permalink to this definition">¶</a></dt>
+<code class="descname">load_locations</code><span class="sig-paren">(</span><em>file</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.X509.X509_Store.load_locations" title="Permalink to this definition">¶</a></dt>
<dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> &#8211; filename</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> – filename</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">1 on success, 0 on failure</td>
</tr>
@@ -3968,28 +4096,28 @@ nothing to pop.</td>
<dl class="method">
<dt id="M2Crypto.X509.X509_Store.m2_x509_store_free">
-<tt class="descname">m2_x509_store_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.X509.X509_Store.m2_x509_store_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_x509_store_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.X509.X509_Store.m2_x509_store_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Store.set_verify_cb">
-<tt class="descname">set_verify_cb</tt><big>(</big><em>callback=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store.set_verify_cb"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store.set_verify_cb" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_verify_cb</code><span class="sig-paren">(</span><em>callback=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store.set_verify_cb"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store.set_verify_cb" title="Permalink to this definition">¶</a></dt>
<dd><p>Set callback which will be called when the store is verified.
Wrapper over OpenSSL X509_STORE_set_verify_cb().</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>callback</strong> &#8211; Callable to specify verification options.
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>callback</strong> – Callable to specify verification options.
Type of the callable must be:
(int, X509_Store_Context) -&gt; int.
If None: set the standard options.</td>
</tr>
-<tr class="field-even field"><th class="field-name">Note :</th><td class="field-body">compile-time or run-time errors in the callback would result
+<tr class="field-even field"><th class="field-name">Note:</th><td class="field-body">compile-time or run-time errors in the callback would result
in mysterious errors during verification, which could be hard
to trace.</td>
</tr>
-<tr class="field-odd field"><th class="field-name">Note :</th><td class="field-body">Python exceptions raised in callbacks do not propagate to
+<tr class="field-odd field"><th class="field-name">Note:</th><td class="field-body">Python exceptions raised in callbacks do not propagate to
verify() call.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
@@ -4002,11 +4130,11 @@ verify() call.</td>
<dl class="class">
<dt id="M2Crypto.X509.X509_Store_Context">
-<em class="property">class </em><tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">X509_Store_Context</tt><big>(</big><em>x509_store_ctx</em>, <em>_pyfree=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store_Context"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store_Context" title="Permalink to this definition">¶</a></dt>
+<em class="property">class </em><code class="descclassname">M2Crypto.X509.</code><code class="descname">X509_Store_Context</code><span class="sig-paren">(</span><em>x509_store_ctx</em>, <em>_pyfree=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store_Context"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store_Context" title="Permalink to this definition">¶</a></dt>
<dd><p>X509 Store Context</p>
<dl class="method">
<dt id="M2Crypto.X509.X509_Store_Context.get1_chain">
-<tt class="descname">get1_chain</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store_Context.get1_chain"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store_Context.get1_chain" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get1_chain</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store_Context.get1_chain"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store_Context.get1_chain" title="Permalink to this definition">¶</a></dt>
<dd><p>Get certificate chain.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@@ -4021,13 +4149,13 @@ context goes away) stack of certificates in the chain.</td>
<dl class="method">
<dt id="M2Crypto.X509.X509_Store_Context.get_current_cert">
-<tt class="descname">get_current_cert</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store_Context.get_current_cert"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store_Context.get_current_cert" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_current_cert</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store_Context.get_current_cert"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store_Context.get_current_cert" title="Permalink to this definition">¶</a></dt>
<dd><p>Get current X.509 certificate.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Warning :</th><td class="field-body">The returned certificate is NOT refcounted, so you can not
+<tr class="field-odd field"><th class="field-name">Warning:</th><td class="field-body">The returned certificate is NOT refcounted, so you can not
rely on it being valid once the store context goes
away or is modified.</td>
</tr>
@@ -4037,35 +4165,35 @@ away or is modified.</td>
<dl class="method">
<dt id="M2Crypto.X509.X509_Store_Context.get_error">
-<tt class="descname">get_error</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store_Context.get_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store_Context.get_error" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_error</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store_Context.get_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store_Context.get_error" title="Permalink to this definition">¶</a></dt>
<dd><p>Get error code.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Store_Context.get_error_depth">
-<tt class="descname">get_error_depth</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store_Context.get_error_depth"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store_Context.get_error_depth" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_error_depth</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#X509_Store_Context.get_error_depth"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.X509_Store_Context.get_error_depth" title="Permalink to this definition">¶</a></dt>
<dd><p>Get error depth.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.X509.X509_Store_Context.m2_x509_store_ctx_free">
-<tt class="descname">m2_x509_store_ctx_free</tt><big>(</big><big>)</big><a class="headerlink" href="#M2Crypto.X509.X509_Store_Context.m2_x509_store_ctx_free" title="Permalink to this definition">¶</a></dt>
+<code class="descname">m2_x509_store_ctx_free</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.X509.X509_Store_Context.m2_x509_store_ctx_free" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.X509.load_cert">
-<tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">load_cert</tt><big>(</big><em>file</em>, <em>format=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#load_cert"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_cert" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.X509.</code><code class="descname">load_cert</code><span class="sig-paren">(</span><em>file</em>, <em>format=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#load_cert"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_cert" title="Permalink to this definition">¶</a></dt>
<dd><p>Load certificate from file.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>file</strong> &#8211; Name of file containing certificate in either DER or
+<li><strong>file</strong> – Name of file containing certificate in either DER or
PEM format.</li>
-<li><strong>format</strong> &#8211; Describes the format of the file to be loaded,
+<li><strong>format</strong> – Describes the format of the file to be loaded,
either PEM or DER.</li>
</ul>
</td>
@@ -4079,15 +4207,15 @@ either PEM or DER.</li>
<dl class="function">
<dt id="M2Crypto.X509.load_cert_bio">
-<tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">load_cert_bio</tt><big>(</big><em>bio</em>, <em>format=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#load_cert_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_cert_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.X509.</code><code class="descname">load_cert_bio</code><span class="sig-paren">(</span><em>bio</em>, <em>format=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#load_cert_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_cert_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Load certificate from a bio.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>bio</strong> &#8211; BIO pointing at a certificate in either DER or PEM format.</li>
-<li><strong>format</strong> &#8211; Describes the format of the cert to be loaded,
+<li><strong>bio</strong> – BIO pointing at a certificate in either DER or PEM format.</li>
+<li><strong>format</strong> – Describes the format of the cert to be loaded,
either PEM or DER (via constants FORMAT_PEM
and FORMAT_FORMAT_DER)</li>
</ul>
@@ -4102,13 +4230,13 @@ and FORMAT_FORMAT_DER)</li>
<dl class="function">
<dt id="M2Crypto.X509.load_cert_der_string">
-<tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">load_cert_der_string</tt><big>(</big><em>string</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#load_cert_der_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_cert_der_string" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.X509.</code><code class="descname">load_cert_der_string</code><span class="sig-paren">(</span><em>string</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#load_cert_der_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_cert_der_string" title="Permalink to this definition">¶</a></dt>
<dd><p>Load certificate from a string.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>string</strong> &#8211; String containing a certificate in DER format.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>string</strong> – String containing a certificate in DER format.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">M2Crypto.X509.X509 object.</td>
</tr>
@@ -4118,15 +4246,15 @@ and FORMAT_FORMAT_DER)</li>
<dl class="function">
<dt id="M2Crypto.X509.load_cert_string">
-<tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">load_cert_string</tt><big>(</big><em>string</em>, <em>format=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#load_cert_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_cert_string" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.X509.</code><code class="descname">load_cert_string</code><span class="sig-paren">(</span><em>string</em>, <em>format=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#load_cert_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_cert_string" title="Permalink to this definition">¶</a></dt>
<dd><p>Load certificate from a string.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>string</strong> &#8211; String containing a certificate in either DER or PEM format.</li>
-<li><strong>format</strong> &#8211; Describes the format of the cert to be loaded,
+<li><strong>string</strong> – String containing a certificate in either DER or PEM format.</li>
+<li><strong>format</strong> – Describes the format of the cert to be loaded,
either PEM or DER (via constants FORMAT_PEM
and FORMAT_FORMAT_DER)</li>
</ul>
@@ -4141,13 +4269,13 @@ and FORMAT_FORMAT_DER)</li>
<dl class="function">
<dt id="M2Crypto.X509.load_crl">
-<tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">load_crl</tt><big>(</big><em>file</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#load_crl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_crl" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.X509.</code><code class="descname">load_crl</code><span class="sig-paren">(</span><em>file</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#load_crl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_crl" title="Permalink to this definition">¶</a></dt>
<dd><p>Load CRL from file.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> &#8211; Name of file containing CRL in PEM format.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>file</strong> – Name of file containing CRL in PEM format.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">M2Crypto.X509.CRL object.</td>
</tr>
@@ -4157,16 +4285,16 @@ and FORMAT_FORMAT_DER)</li>
<dl class="function">
<dt id="M2Crypto.X509.load_request">
-<tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">load_request</tt><big>(</big><em>file</em>, <em>format=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#load_request"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_request" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.X509.</code><code class="descname">load_request</code><span class="sig-paren">(</span><em>file</em>, <em>format=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#load_request"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_request" title="Permalink to this definition">¶</a></dt>
<dd><p>Load certificate request from file.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>file</strong> &#8211; Name of file containing certificate request in
+<li><strong>file</strong> – Name of file containing certificate request in
either PEM or DER format.</li>
-<li><strong>format</strong> &#8211; Describes the format of the file to be loaded,
+<li><strong>format</strong> – Describes the format of the file to be loaded,
either PEM or DER. (using constants FORMAT_PEM
and FORMAT_DER)</li>
</ul>
@@ -4181,16 +4309,16 @@ and FORMAT_DER)</li>
<dl class="function">
<dt id="M2Crypto.X509.load_request_bio">
-<tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">load_request_bio</tt><big>(</big><em>bio</em>, <em>format=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#load_request_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_request_bio" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.X509.</code><code class="descname">load_request_bio</code><span class="sig-paren">(</span><em>bio</em>, <em>format=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#load_request_bio"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_request_bio" title="Permalink to this definition">¶</a></dt>
<dd><p>Load certificate request from a bio.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>bio</strong> &#8211; BIO pointing at a certificate request in
+<li><strong>bio</strong> – BIO pointing at a certificate request in
either DER or PEM format.</li>
-<li><strong>format</strong> &#8211; Describes the format of the request to be loaded,
+<li><strong>format</strong> – Describes the format of the request to be loaded,
either PEM or DER. (using constants FORMAT_PEM
and FORMAT_DER)</li>
</ul>
@@ -4205,13 +4333,13 @@ and FORMAT_DER)</li>
<dl class="function">
<dt id="M2Crypto.X509.load_request_der_string">
-<tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">load_request_der_string</tt><big>(</big><em>string</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#load_request_der_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_request_der_string" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.X509.</code><code class="descname">load_request_der_string</code><span class="sig-paren">(</span><em>string</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#load_request_der_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_request_der_string" title="Permalink to this definition">¶</a></dt>
<dd><p>Load certificate request from a string.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
-<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>string</strong> &#8211; String containing a certificate request in DER format.</td>
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>string</strong> – String containing a certificate request in DER format.</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">M2Crypto.X509.Request object.</td>
</tr>
@@ -4221,16 +4349,16 @@ and FORMAT_DER)</li>
<dl class="function">
<dt id="M2Crypto.X509.load_request_string">
-<tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">load_request_string</tt><big>(</big><em>string</em>, <em>format=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#load_request_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_request_string" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.X509.</code><code class="descname">load_request_string</code><span class="sig-paren">(</span><em>string</em>, <em>format=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#load_request_string"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.load_request_string" title="Permalink to this definition">¶</a></dt>
<dd><p>Load certificate request from a string.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>string</strong> &#8211; String containing a certificate request in
+<li><strong>string</strong> – String containing a certificate request in
either DER or PEM format.</li>
-<li><strong>format</strong> &#8211; Describes the format of the request to be loaded,
+<li><strong>format</strong> – Describes the format of the request to be loaded,
either PEM or DER. (using constants FORMAT_PEM
and FORMAT_DER)</li>
</ul>
@@ -4245,13 +4373,13 @@ and FORMAT_DER)</li>
<dl class="function">
<dt id="M2Crypto.X509.new_extension">
-<tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">new_extension</tt><big>(</big><em>name</em>, <em>value</em>, <em>critical=0</em>, <em>_pyfree=1</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#new_extension"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.new_extension" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.X509.</code><code class="descname">new_extension</code><span class="sig-paren">(</span><em>name</em>, <em>value</em>, <em>critical=0</em>, <em>_pyfree=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#new_extension"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.new_extension" title="Permalink to this definition">¶</a></dt>
<dd><p>Create new X509_Extension instance.</p>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.X509.new_stack_from_der">
-<tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">new_stack_from_der</tt><big>(</big><em>der_string</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#new_stack_from_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.new_stack_from_der" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.X509.</code><code class="descname">new_stack_from_der</code><span class="sig-paren">(</span><em>der_string</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#new_stack_from_der"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.new_stack_from_der" title="Permalink to this definition">¶</a></dt>
<dd><p>Create a new X509_Stack from DER string.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
@@ -4265,47 +4393,47 @@ and FORMAT_DER)</li>
<dl class="function">
<dt id="M2Crypto.X509.x509_store_default_cb">
-<tt class="descclassname">M2Crypto.X509.</tt><tt class="descname">x509_store_default_cb</tt><big>(</big><em>ok</em>, <em>ctx</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/X509.html#x509_store_default_cb"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.x509_store_default_cb" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.X509.</code><code class="descname">x509_store_default_cb</code><span class="sig-paren">(</span><em>ok</em>, <em>ctx</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/X509.html#x509_store_default_cb"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.X509.x509_store_default_cb" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</div>
<div class="section" id="module-M2Crypto.callback">
-<span id="callback-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">callback</span></tt> Module<a class="headerlink" href="#module-M2Crypto.callback" title="Permalink to this headline">¶</a></h2>
+<span id="callback-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">callback</span></code> Module<a class="headerlink" href="#module-M2Crypto.callback" title="Permalink to this headline">¶</a></h2>
</div>
<div class="section" id="module-M2Crypto.ftpslib">
-<span id="ftpslib-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">ftpslib</span></tt> Module<a class="headerlink" href="#module-M2Crypto.ftpslib" title="Permalink to this headline">¶</a></h2>
+<span id="ftpslib-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">ftpslib</span></code> Module<a class="headerlink" href="#module-M2Crypto.ftpslib" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.ftpslib.FTP_TLS">
-<em class="property">class </em><tt class="descclassname">M2Crypto.ftpslib.</tt><tt class="descname">FTP_TLS</tt><big>(</big><em>host=None</em>, <em>ssl_ctx=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/ftpslib.html#FTP_TLS"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ftpslib.FTP_TLS" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">ftplib.FTP</span></tt></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.ftpslib.</code><code class="descname">FTP_TLS</code><span class="sig-paren">(</span><em>host=None</em>, <em>ssl_ctx=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ftpslib.html#FTP_TLS"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ftpslib.FTP_TLS" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">ftplib.FTP</span></code></p>
<p>Python OO interface to client-side FTP/TLS.</p>
<dl class="method">
<dt id="M2Crypto.ftpslib.FTP_TLS.auth_ssl">
-<tt class="descname">auth_ssl</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/ftpslib.html#FTP_TLS.auth_ssl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ftpslib.FTP_TLS.auth_ssl" title="Permalink to this definition">¶</a></dt>
+<code class="descname">auth_ssl</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ftpslib.html#FTP_TLS.auth_ssl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ftpslib.FTP_TLS.auth_ssl" title="Permalink to this definition">¶</a></dt>
<dd><p>Secure the control connection per AUTH SSL, aka AUTH TLS-P.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.ftpslib.FTP_TLS.auth_tls">
-<tt class="descname">auth_tls</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/ftpslib.html#FTP_TLS.auth_tls"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ftpslib.FTP_TLS.auth_tls" title="Permalink to this definition">¶</a></dt>
+<code class="descname">auth_tls</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ftpslib.html#FTP_TLS.auth_tls"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ftpslib.FTP_TLS.auth_tls" title="Permalink to this definition">¶</a></dt>
<dd><p>Secure the control connection per AUTH TLS, aka AUTH TLS-C.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.ftpslib.FTP_TLS.ntransfercmd">
-<tt class="descname">ntransfercmd</tt><big>(</big><em>cmd</em>, <em>rest=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/ftpslib.html#FTP_TLS.ntransfercmd"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ftpslib.FTP_TLS.ntransfercmd" title="Permalink to this definition">¶</a></dt>
+<code class="descname">ntransfercmd</code><span class="sig-paren">(</span><em>cmd</em>, <em>rest=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ftpslib.html#FTP_TLS.ntransfercmd"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ftpslib.FTP_TLS.ntransfercmd" title="Permalink to this definition">¶</a></dt>
<dd><p>Initiate a data transfer.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.ftpslib.FTP_TLS.prot_c">
-<tt class="descname">prot_c</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/ftpslib.html#FTP_TLS.prot_c"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ftpslib.FTP_TLS.prot_c" title="Permalink to this definition">¶</a></dt>
+<code class="descname">prot_c</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ftpslib.html#FTP_TLS.prot_c"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ftpslib.FTP_TLS.prot_c" title="Permalink to this definition">¶</a></dt>
<dd><p>Set up data connection in the clear.</p>
</dd></dl>
<dl class="method">
<dt id="M2Crypto.ftpslib.FTP_TLS.prot_p">
-<tt class="descname">prot_p</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/ftpslib.html#FTP_TLS.prot_p"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ftpslib.FTP_TLS.prot_p" title="Permalink to this definition">¶</a></dt>
+<code class="descname">prot_p</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/ftpslib.html#FTP_TLS.prot_p"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.ftpslib.FTP_TLS.prot_p" title="Permalink to this definition">¶</a></dt>
<dd><p>Set up secure data connection.</p>
</dd></dl>
@@ -4313,43 +4441,43 @@ and FORMAT_DER)</li>
</div>
<div class="section" id="module-M2Crypto.httpslib">
-<span id="httpslib-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">httpslib</span></tt> Module<a class="headerlink" href="#module-M2Crypto.httpslib" title="Permalink to this headline">¶</a></h2>
+<span id="httpslib-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">httpslib</span></code> Module<a class="headerlink" href="#module-M2Crypto.httpslib" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.httpslib.HTTPSConnection">
-<em class="property">class </em><tt class="descclassname">M2Crypto.httpslib.</tt><tt class="descname">HTTPSConnection</tt><big>(</big><em>host</em>, <em>port=None</em>, <em>strict=None</em>, <em>**ssl</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/httpslib.html#HTTPSConnection"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.HTTPSConnection" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">httplib.HTTPConnection</span></tt></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.httpslib.</code><code class="descname">HTTPSConnection</code><span class="sig-paren">(</span><em>host</em>, <em>port=None</em>, <em>strict=None</em>, <em>**ssl</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/httpslib.html#HTTPSConnection"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.HTTPSConnection" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">httplib.HTTPConnection</span></code></p>
<p>This class allows communication via SSL using M2Crypto.</p>
<dl class="method">
<dt id="M2Crypto.httpslib.HTTPSConnection.close">
-<tt class="descname">close</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/httpslib.html#HTTPSConnection.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.HTTPSConnection.close" title="Permalink to this definition">¶</a></dt>
+<code class="descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/httpslib.html#HTTPSConnection.close"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.HTTPSConnection.close" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.httpslib.HTTPSConnection.connect">
-<tt class="descname">connect</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/httpslib.html#HTTPSConnection.connect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.HTTPSConnection.connect" title="Permalink to this definition">¶</a></dt>
+<code class="descname">connect</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/httpslib.html#HTTPSConnection.connect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.HTTPSConnection.connect" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="M2Crypto.httpslib.HTTPSConnection.default_port">
-<tt class="descname">default_port</tt><em class="property"> = 443</em><a class="headerlink" href="#M2Crypto.httpslib.HTTPSConnection.default_port" title="Permalink to this definition">¶</a></dt>
+<code class="descname">default_port</code><em class="property"> = 443</em><a class="headerlink" href="#M2Crypto.httpslib.HTTPSConnection.default_port" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.httpslib.HTTPSConnection.get_session">
-<tt class="descname">get_session</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/httpslib.html#HTTPSConnection.get_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.HTTPSConnection.get_session" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_session</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/httpslib.html#HTTPSConnection.get_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.HTTPSConnection.get_session" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.httpslib.HTTPSConnection.set_session">
-<tt class="descname">set_session</tt><big>(</big><em>session</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/httpslib.html#HTTPSConnection.set_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.HTTPSConnection.set_session" title="Permalink to this definition">¶</a></dt>
+<code class="descname">set_session</code><span class="sig-paren">(</span><em>session</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/httpslib.html#HTTPSConnection.set_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.HTTPSConnection.set_session" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="M2Crypto.httpslib.ProxyHTTPSConnection">
-<em class="property">class </em><tt class="descclassname">M2Crypto.httpslib.</tt><tt class="descname">ProxyHTTPSConnection</tt><big>(</big><em>host</em>, <em>port=None</em>, <em>strict=None</em>, <em>username=None</em>, <em>password=None</em>, <em>**ssl</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/httpslib.html#ProxyHTTPSConnection"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.ProxyHTTPSConnection" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <a class="reference internal" href="#M2Crypto.httpslib.HTTPSConnection" title="M2Crypto.httpslib.HTTPSConnection"><tt class="xref py py-class docutils literal"><span class="pre">M2Crypto.httpslib.HTTPSConnection</span></tt></a></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.httpslib.</code><code class="descname">ProxyHTTPSConnection</code><span class="sig-paren">(</span><em>host</em>, <em>port=None</em>, <em>strict=None</em>, <em>username=None</em>, <em>password=None</em>, <em>**ssl</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/httpslib.html#ProxyHTTPSConnection"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.ProxyHTTPSConnection" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#M2Crypto.httpslib.HTTPSConnection" title="M2Crypto.httpslib.HTTPSConnection"><code class="xref py py-class docutils literal"><span class="pre">M2Crypto.httpslib.HTTPSConnection</span></code></a></p>
<p>An HTTPS Connection that uses a proxy and the CONNECT request.</p>
<p>When the connection is initiated, CONNECT is first sent to the proxy (along
with authorization headers, if supplied). If successful, an SSL connection
@@ -4359,22 +4487,22 @@ host.</p>
through the proxy.</p>
<dl class="method">
<dt id="M2Crypto.httpslib.ProxyHTTPSConnection.connect">
-<tt class="descname">connect</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/httpslib.html#ProxyHTTPSConnection.connect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.ProxyHTTPSConnection.connect" title="Permalink to this definition">¶</a></dt>
+<code class="descname">connect</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/httpslib.html#ProxyHTTPSConnection.connect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.ProxyHTTPSConnection.connect" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.httpslib.ProxyHTTPSConnection.endheaders">
-<tt class="descname">endheaders</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/httpslib.html#ProxyHTTPSConnection.endheaders"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.ProxyHTTPSConnection.endheaders" title="Permalink to this definition">¶</a></dt>
+<code class="descname">endheaders</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/httpslib.html#ProxyHTTPSConnection.endheaders"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.ProxyHTTPSConnection.endheaders" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.httpslib.ProxyHTTPSConnection.putheader">
-<tt class="descname">putheader</tt><big>(</big><em>header</em>, <em>value</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/httpslib.html#ProxyHTTPSConnection.putheader"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.ProxyHTTPSConnection.putheader" title="Permalink to this definition">¶</a></dt>
+<code class="descname">putheader</code><span class="sig-paren">(</span><em>header</em>, <em>value</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/httpslib.html#ProxyHTTPSConnection.putheader"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.ProxyHTTPSConnection.putheader" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="M2Crypto.httpslib.ProxyHTTPSConnection.putrequest">
-<tt class="descname">putrequest</tt><big>(</big><em>method</em>, <em>url</em>, <em>skip_host=0</em>, <em>skip_accept_encoding=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/httpslib.html#ProxyHTTPSConnection.putrequest"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.ProxyHTTPSConnection.putrequest" title="Permalink to this definition">¶</a></dt>
+<code class="descname">putrequest</code><span class="sig-paren">(</span><em>method</em>, <em>url</em>, <em>skip_host=0</em>, <em>skip_accept_encoding=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/httpslib.html#ProxyHTTPSConnection.putrequest"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.httpslib.ProxyHTTPSConnection.putrequest" title="Permalink to this definition">¶</a></dt>
<dd><p>putrequest is called before connect, so can interpret url and get
real host/port to be used to make CONNECT request to proxy</p>
</dd></dl>
@@ -4383,71 +4511,25 @@ real host/port to be used to make CONNECT request to proxy</p>
</div>
<div class="section" id="module-M2Crypto.m2">
-<span id="m2-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">m2</span></tt> Module<a class="headerlink" href="#module-M2Crypto.m2" title="Permalink to this headline">¶</a></h2>
+<span id="m2-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">m2</span></code> Module<a class="headerlink" href="#module-M2Crypto.m2" title="Permalink to this headline">¶</a></h2>
</div>
<div class="section" id="module-M2Crypto.m2crypto">
-<span id="m2crypto-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">m2crypto</span></tt> Module<a class="headerlink" href="#module-M2Crypto.m2crypto" title="Permalink to this headline">¶</a></h2>
-<dl class="class">
-<dt id="M2Crypto.m2crypto.stack_st_OPENSSL_BLOCK">
-<em class="property">class </em><tt class="descclassname">M2Crypto.m2crypto.</tt><tt class="descname">stack_st_OPENSSL_BLOCK</tt><a class="headerlink" href="#M2Crypto.m2crypto.stack_st_OPENSSL_BLOCK" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">SwigPyObject</span></tt></p>
-<p>::stack_st_OPENSSL_BLOCK</p>
-<dl class="attribute">
-<dt id="M2Crypto.m2crypto.stack_st_OPENSSL_BLOCK.stack">
-<tt class="descname">stack</tt><a class="headerlink" href="#M2Crypto.m2crypto.stack_st_OPENSSL_BLOCK.stack" title="Permalink to this definition">¶</a></dt>
-<dd><p>stack_st_OPENSSL_BLOCK.stack</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="M2Crypto.m2crypto.stack_st_OPENSSL_BLOCK.this">
-<tt class="descname">this</tt><a class="headerlink" href="#M2Crypto.m2crypto.stack_st_OPENSSL_BLOCK.this" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="M2Crypto.m2crypto.stack_st_OPENSSL_BLOCK.thisown">
-<tt class="descname">thisown</tt><a class="headerlink" href="#M2Crypto.m2crypto.stack_st_OPENSSL_BLOCK.thisown" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="M2Crypto.m2crypto.stack_st_OPENSSL_STRING">
-<em class="property">class </em><tt class="descclassname">M2Crypto.m2crypto.</tt><tt class="descname">stack_st_OPENSSL_STRING</tt><a class="headerlink" href="#M2Crypto.m2crypto.stack_st_OPENSSL_STRING" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">SwigPyObject</span></tt></p>
-<p>::stack_st_OPENSSL_STRING</p>
-<dl class="attribute">
-<dt id="M2Crypto.m2crypto.stack_st_OPENSSL_STRING.stack">
-<tt class="descname">stack</tt><a class="headerlink" href="#M2Crypto.m2crypto.stack_st_OPENSSL_STRING.stack" title="Permalink to this definition">¶</a></dt>
-<dd><p>stack_st_OPENSSL_STRING.stack</p>
-</dd></dl>
-
-<dl class="attribute">
-<dt id="M2Crypto.m2crypto.stack_st_OPENSSL_STRING.this">
-<tt class="descname">this</tt><a class="headerlink" href="#M2Crypto.m2crypto.stack_st_OPENSSL_STRING.this" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-<dl class="attribute">
-<dt id="M2Crypto.m2crypto.stack_st_OPENSSL_STRING.thisown">
-<tt class="descname">thisown</tt><a class="headerlink" href="#M2Crypto.m2crypto.stack_st_OPENSSL_STRING.thisown" title="Permalink to this definition">¶</a></dt>
-<dd></dd></dl>
-
-</dd></dl>
-
+<span id="m2crypto-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">m2crypto</span></code> Module<a class="headerlink" href="#module-M2Crypto.m2crypto" title="Permalink to this headline">¶</a></h2>
</div>
<div class="section" id="module-M2Crypto.m2urllib">
-<span id="m2urllib-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">m2urllib</span></tt> Module<a class="headerlink" href="#module-M2Crypto.m2urllib" title="Permalink to this headline">¶</a></h2>
+<span id="m2urllib-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">m2urllib</span></code> Module<a class="headerlink" href="#module-M2Crypto.m2urllib" title="Permalink to this headline">¶</a></h2>
<dl class="function">
<dt id="M2Crypto.m2urllib.open_https">
-<tt class="descclassname">M2Crypto.m2urllib.</tt><tt class="descname">open_https</tt><big>(</big><em>self</em>, <em>url</em>, <em>data=None</em>, <em>ssl_context=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/m2urllib.html#open_https"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.m2urllib.open_https" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.m2urllib.</code><code class="descname">open_https</code><span class="sig-paren">(</span><em>self</em>, <em>url</em>, <em>data=None</em>, <em>ssl_context=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/m2urllib.html#open_https"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.m2urllib.open_https" title="Permalink to this definition">¶</a></dt>
<dd><p>Open URL over the SSL connection.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
-<li><strong>url</strong> &#8211; URL to be opened</li>
-<li><strong>data</strong> &#8211; data for the POST request</li>
-<li><strong>ssl_context</strong> &#8211; SSL.Context to be used</li>
+<li><strong>url</strong> – URL to be opened</li>
+<li><strong>data</strong> – data for the POST request</li>
+<li><strong>ssl_context</strong> – SSL.Context to be used</li>
</ul>
</td>
</tr>
@@ -4460,14 +4542,14 @@ real host/port to be used to make CONNECT request to proxy</p>
</div>
<div class="section" id="module-M2Crypto.m2urllib2">
-<span id="m2urllib2-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">m2urllib2</span></tt> Module<a class="headerlink" href="#module-M2Crypto.m2urllib2" title="Permalink to this headline">¶</a></h2>
+<span id="m2urllib2-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">m2urllib2</span></code> Module<a class="headerlink" href="#module-M2Crypto.m2urllib2" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.m2urllib2.HTTPSHandler">
-<em class="property">class </em><tt class="descclassname">M2Crypto.m2urllib2.</tt><tt class="descname">HTTPSHandler</tt><big>(</big><em>ssl_context=None</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/m2urllib2.html#HTTPSHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.m2urllib2.HTTPSHandler" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">urllib2.AbstractHTTPHandler</span></tt></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.m2urllib2.</code><code class="descname">HTTPSHandler</code><span class="sig-paren">(</span><em>ssl_context=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/m2urllib2.html#HTTPSHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.m2urllib2.HTTPSHandler" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">urllib2.AbstractHTTPHandler</span></code></p>
<dl class="method">
<dt id="M2Crypto.m2urllib2.HTTPSHandler.https_open">
-<tt class="descname">https_open</tt><big>(</big><em>req</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/m2urllib2.html#HTTPSHandler.https_open"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.m2urllib2.HTTPSHandler.https_open" title="Permalink to this definition">¶</a></dt>
+<code class="descname">https_open</code><span class="sig-paren">(</span><em>req</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/m2urllib2.html#HTTPSHandler.https_open"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.m2urllib2.HTTPSHandler.https_open" title="Permalink to this definition">¶</a></dt>
<dd><p>Return an addinfourl object for the request, using http_class.</p>
<p>http_class must implement the HTTPConnection API from httplib.
The addinfourl return value is a file-like object. It also
@@ -4483,14 +4565,14 @@ has methods and attributes including:</p>
<dl class="method">
<dt id="M2Crypto.m2urllib2.HTTPSHandler.https_request">
-<tt class="descname">https_request</tt><big>(</big><em>request</em><big>)</big><a class="headerlink" href="#M2Crypto.m2urllib2.HTTPSHandler.https_request" title="Permalink to this definition">¶</a></dt>
+<code class="descname">https_request</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="headerlink" href="#M2Crypto.m2urllib2.HTTPSHandler.https_request" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.m2urllib2.build_opener">
-<tt class="descclassname">M2Crypto.m2urllib2.</tt><tt class="descname">build_opener</tt><big>(</big><em>ssl_context=None</em>, <em>*handlers</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/m2urllib2.html#build_opener"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.m2urllib2.build_opener" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.m2urllib2.</code><code class="descname">build_opener</code><span class="sig-paren">(</span><em>ssl_context=None</em>, <em>*handlers</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/m2urllib2.html#build_opener"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.m2urllib2.build_opener" title="Permalink to this definition">¶</a></dt>
<dd><p>Create an opener object from a list of handlers.</p>
<p>The opener will use several default handlers, including support
for HTTP and FTP.</p>
@@ -4500,95 +4582,95 @@ default handlers, the default handlers will not be used.</p>
</div>
<div class="section" id="module-M2Crypto.m2xmlrpclib">
-<span id="m2xmlrpclib-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">m2xmlrpclib</span></tt> Module<a class="headerlink" href="#module-M2Crypto.m2xmlrpclib" title="Permalink to this headline">¶</a></h2>
+<span id="m2xmlrpclib-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">m2xmlrpclib</span></code> Module<a class="headerlink" href="#module-M2Crypto.m2xmlrpclib" title="Permalink to this headline">¶</a></h2>
<dl class="class">
<dt id="M2Crypto.m2xmlrpclib.SSL_Transport">
-<em class="property">class </em><tt class="descclassname">M2Crypto.m2xmlrpclib.</tt><tt class="descname">SSL_Transport</tt><big>(</big><em>ssl_context=None</em>, <em>*args</em>, <em>**kw</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/m2xmlrpclib.html#SSL_Transport"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.m2xmlrpclib.SSL_Transport" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">xmlrpclib.Transport</span></tt></p>
+<em class="property">class </em><code class="descclassname">M2Crypto.m2xmlrpclib.</code><code class="descname">SSL_Transport</code><span class="sig-paren">(</span><em>ssl_context=None</em>, <em>*args</em>, <em>**kw</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/m2xmlrpclib.html#SSL_Transport"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.m2xmlrpclib.SSL_Transport" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">xmlrpclib.Transport</span></code></p>
<dl class="method">
<dt id="M2Crypto.m2xmlrpclib.SSL_Transport.request">
-<tt class="descname">request</tt><big>(</big><em>host</em>, <em>handler</em>, <em>request_body</em>, <em>verbose=0</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/m2xmlrpclib.html#SSL_Transport.request"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.m2xmlrpclib.SSL_Transport.request" title="Permalink to this definition">¶</a></dt>
+<code class="descname">request</code><span class="sig-paren">(</span><em>host</em>, <em>handler</em>, <em>request_body</em>, <em>verbose=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/m2xmlrpclib.html#SSL_Transport.request"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.m2xmlrpclib.SSL_Transport.request" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="M2Crypto.m2xmlrpclib.SSL_Transport.user_agent">
-<tt class="descname">user_agent</tt><em class="property"> = 'M2Crypto_XMLRPC/0.26.0 - xmlrpclib.py/1.0.1 (by www.pythonware.com)'</em><a class="headerlink" href="#M2Crypto.m2xmlrpclib.SSL_Transport.user_agent" title="Permalink to this definition">¶</a></dt>
+<code class="descname">user_agent</code><em class="property"> = 'M2Crypto_XMLRPC/0.28.0 - xmlrpclib.py/1.0.1 (by www.pythonware.com)'</em><a class="headerlink" href="#M2Crypto.m2xmlrpclib.SSL_Transport.user_agent" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="section" id="module-M2Crypto.threading">
-<span id="threading-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">threading</span></tt> Module<a class="headerlink" href="#module-M2Crypto.threading" title="Permalink to this headline">¶</a></h2>
+<span id="threading-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">threading</span></code> Module<a class="headerlink" href="#module-M2Crypto.threading" title="Permalink to this headline">¶</a></h2>
<dl class="function">
<dt id="M2Crypto.threading.cleanup">
-<tt class="descclassname">M2Crypto.threading.</tt><tt class="descname">cleanup</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/threading.html#cleanup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.threading.cleanup" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.threading.</code><code class="descname">cleanup</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/threading.html#cleanup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.threading.cleanup" title="Permalink to this definition">¶</a></dt>
<dd><p>End and cleanup threading support.</p>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.threading.init">
-<tt class="descclassname">M2Crypto.threading.</tt><tt class="descname">init</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/M2Crypto/threading.html#init"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.threading.init" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.threading.</code><code class="descname">init</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/threading.html#init"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.threading.init" title="Permalink to this definition">¶</a></dt>
<dd><p>Initialize threading support.</p>
</dd></dl>
</div>
<div class="section" id="module-M2Crypto.util">
-<span id="util-module"></span><h2><tt class="xref py py-mod docutils literal"><span class="pre">util</span></tt> Module<a class="headerlink" href="#module-M2Crypto.util" title="Permalink to this headline">¶</a></h2>
+<span id="util-module"></span><h2><code class="xref py py-mod docutils literal"><span class="pre">util</span></code> Module<a class="headerlink" href="#module-M2Crypto.util" title="Permalink to this headline">¶</a></h2>
<dl class="exception">
<dt id="M2Crypto.util.UtilError">
-<em class="property">exception </em><tt class="descclassname">M2Crypto.util.</tt><tt class="descname">UtilError</tt><a class="reference internal" href="_modules/M2Crypto/util.html#UtilError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.UtilError" title="Permalink to this definition">¶</a></dt>
-<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
+<em class="property">exception </em><code class="descclassname">M2Crypto.util.</code><code class="descname">UtilError</code><a class="reference internal" href="_modules/M2Crypto/util.html#UtilError"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.UtilError" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></code></p>
</dd></dl>
<dl class="function">
<dt id="M2Crypto.util.bin_to_hex">
-<tt class="descclassname">M2Crypto.util.</tt><tt class="descname">bin_to_hex</tt><big>(</big><em>b</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/util.html#bin_to_hex"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.bin_to_hex" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.util.</code><code class="descname">bin_to_hex</code><span class="sig-paren">(</span><em>b</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/util.html#bin_to_hex"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.bin_to_hex" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.util.genparam_callback">
-<tt class="descclassname">M2Crypto.util.</tt><tt class="descname">genparam_callback</tt><big>(</big><em>p</em>, <em>n</em>, <em>out=&lt;open file '&lt;stdout&gt;'</em>, <em>mode 'w' at 0x7fc7ebc63150&gt;</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/util.html#genparam_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.genparam_callback" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.util.</code><code class="descname">genparam_callback</code><span class="sig-paren">(</span><em>p</em>, <em>n</em>, <em>out=&lt;open file '&lt;stdout&gt;'</em>, <em>mode 'w'&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/util.html#genparam_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.genparam_callback" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.util.no_passphrase_callback">
-<tt class="descclassname">M2Crypto.util.</tt><tt class="descname">no_passphrase_callback</tt><big>(</big><em>*args</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/util.html#no_passphrase_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.no_passphrase_callback" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.util.</code><code class="descname">no_passphrase_callback</code><span class="sig-paren">(</span><em>*args</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/util.html#no_passphrase_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.no_passphrase_callback" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.util.octx_to_num">
-<tt class="descclassname">M2Crypto.util.</tt><tt class="descname">octx_to_num</tt><big>(</big><em>x</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/util.html#octx_to_num"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.octx_to_num" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.util.</code><code class="descname">octx_to_num</code><span class="sig-paren">(</span><em>x</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/util.html#octx_to_num"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.octx_to_num" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.util.passphrase_callback">
-<tt class="descclassname">M2Crypto.util.</tt><tt class="descname">passphrase_callback</tt><big>(</big><em>v</em>, <em>prompt1='Enter passphrase:'</em>, <em>prompt2='Verify passphrase:'</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/util.html#passphrase_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.passphrase_callback" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.util.</code><code class="descname">passphrase_callback</code><span class="sig-paren">(</span><em>v</em>, <em>prompt1='Enter passphrase:'</em>, <em>prompt2='Verify passphrase:'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/util.html#passphrase_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.passphrase_callback" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.util.pkcs5_pad">
-<tt class="descclassname">M2Crypto.util.</tt><tt class="descname">pkcs5_pad</tt><big>(</big><em>data</em>, <em>blklen=8</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/util.html#pkcs5_pad"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.pkcs5_pad" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.util.</code><code class="descname">pkcs5_pad</code><span class="sig-paren">(</span><em>data</em>, <em>blklen=8</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/util.html#pkcs5_pad"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.pkcs5_pad" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.util.pkcs7_pad">
-<tt class="descclassname">M2Crypto.util.</tt><tt class="descname">pkcs7_pad</tt><big>(</big><em>data</em>, <em>blklen</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/util.html#pkcs7_pad"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.pkcs7_pad" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.util.</code><code class="descname">pkcs7_pad</code><span class="sig-paren">(</span><em>data</em>, <em>blklen</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/util.html#pkcs7_pad"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.pkcs7_pad" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.util.py3bytes">
-<tt class="descclassname">M2Crypto.util.</tt><tt class="descname">py3bytes</tt><big>(</big><em>x</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/util.html#py3bytes"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.py3bytes" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.util.</code><code class="descname">py3bytes</code><span class="sig-paren">(</span><em>x</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/util.html#py3bytes"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.py3bytes" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.util.py3str">
-<tt class="descclassname">M2Crypto.util.</tt><tt class="descname">py3str</tt><big>(</big><em>x</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/util.html#py3str"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.py3str" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.util.</code><code class="descname">py3str</code><span class="sig-paren">(</span><em>x</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/util.html#py3str"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.py3str" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="M2Crypto.util.quiet_genparam_callback">
-<tt class="descclassname">M2Crypto.util.</tt><tt class="descname">quiet_genparam_callback</tt><big>(</big><em>p</em>, <em>n</em>, <em>out</em><big>)</big><a class="reference internal" href="_modules/M2Crypto/util.html#quiet_genparam_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.quiet_genparam_callback" title="Permalink to this definition">¶</a></dt>
+<code class="descclassname">M2Crypto.util.</code><code class="descname">quiet_genparam_callback</code><span class="sig-paren">(</span><em>p</em>, <em>n</em>, <em>out</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/M2Crypto/util.html#quiet_genparam_callback"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#M2Crypto.util.quiet_genparam_callback" title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
</div>
@@ -4596,27 +4678,18 @@ default handlers, the default handlers will not be used.</p>
<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline">¶</a></h2>
<div class="toctree-wrapper compound">
<ul>
-<li class="toctree-l1"><a class="reference internal" href="M2Crypto.PGP.html">PGP Package</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.PGP.html#id1"><tt class="docutils literal"><span class="pre">PGP</span></tt> Package</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.PGP.html#module-M2Crypto.PGP.PublicKey"><tt class="docutils literal"><span class="pre">PublicKey</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.PGP.html#module-M2Crypto.PGP.PublicKeyRing"><tt class="docutils literal"><span class="pre">PublicKeyRing</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.PGP.html#module-M2Crypto.PGP.RSA"><tt class="docutils literal"><span class="pre">RSA</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.PGP.html#module-M2Crypto.PGP.constants"><tt class="docutils literal"><span class="pre">constants</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.PGP.html#module-M2Crypto.PGP.packet"><tt class="docutils literal"><span class="pre">packet</span></tt> Module</a></li>
-</ul>
-</li>
<li class="toctree-l1"><a class="reference internal" href="M2Crypto.SSL.html">SSL Package</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#id1"><tt class="docutils literal"><span class="pre">SSL</span></tt> Package</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Checker"><tt class="docutils literal"><span class="pre">Checker</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Cipher"><tt class="docutils literal"><span class="pre">Cipher</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Connection"><tt class="docutils literal"><span class="pre">Connection</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Context"><tt class="docutils literal"><span class="pre">Context</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.SSLServer"><tt class="docutils literal"><span class="pre">SSLServer</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Session"><tt class="docutils literal"><span class="pre">Session</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.TwistedProtocolWrapper"><tt class="docutils literal"><span class="pre">TwistedProtocolWrapper</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.cb"><tt class="docutils literal"><span class="pre">cb</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.ssl_dispatcher"><tt class="docutils literal"><span class="pre">ssl_dispatcher</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.timeout"><tt class="docutils literal"><span class="pre">timeout</span></tt> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#id1"><code class="docutils literal"><span class="pre">SSL</span></code> Package</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Checker"><code class="docutils literal"><span class="pre">Checker</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Cipher"><code class="docutils literal"><span class="pre">Cipher</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Connection"><code class="docutils literal"><span class="pre">Connection</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Context"><code class="docutils literal"><span class="pre">Context</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.SSLServer"><code class="docutils literal"><span class="pre">SSLServer</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Session"><code class="docutils literal"><span class="pre">Session</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.TwistedProtocolWrapper"><code class="docutils literal"><span class="pre">TwistedProtocolWrapper</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.cb"><code class="docutils literal"><span class="pre">cb</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.ssl_dispatcher"><code class="docutils literal"><span class="pre">ssl_dispatcher</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.timeout"><code class="docutils literal"><span class="pre">timeout</span></code> Module</a></li>
</ul>
</li>
</ul>
@@ -4628,93 +4701,85 @@ default handlers, the default handlers will not be used.</p>
</div>
</div>
</div>
- <div class="sphinxsidebar">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">M2Crypto Package</a><ul>
-<li><a class="reference internal" href="#id1"><tt class="docutils literal"><span class="pre">M2Crypto</span></tt> Package</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.ASN1"><tt class="docutils literal"><span class="pre">ASN1</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.AuthCookie"><tt class="docutils literal"><span class="pre">AuthCookie</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.BIO"><tt class="docutils literal"><span class="pre">BIO</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.BN"><tt class="docutils literal"><span class="pre">BN</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.DH"><tt class="docutils literal"><span class="pre">DH</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.DSA"><tt class="docutils literal"><span class="pre">DSA</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.EC"><tt class="docutils literal"><span class="pre">EC</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.EVP"><tt class="docutils literal"><span class="pre">EVP</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.Engine"><tt class="docutils literal"><span class="pre">Engine</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.Err"><tt class="docutils literal"><span class="pre">Err</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.RC4"><tt class="docutils literal"><span class="pre">RC4</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.RSA"><tt class="docutils literal"><span class="pre">RSA</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.Rand"><tt class="docutils literal"><span class="pre">Rand</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.SMIME"><tt class="docutils literal"><span class="pre">SMIME</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.X509"><tt class="docutils literal"><span class="pre">X509</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.callback"><tt class="docutils literal"><span class="pre">callback</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.ftpslib"><tt class="docutils literal"><span class="pre">ftpslib</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.httpslib"><tt class="docutils literal"><span class="pre">httpslib</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.m2"><tt class="docutils literal"><span class="pre">m2</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.m2crypto"><tt class="docutils literal"><span class="pre">m2crypto</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.m2urllib"><tt class="docutils literal"><span class="pre">m2urllib</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.m2urllib2"><tt class="docutils literal"><span class="pre">m2urllib2</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.m2xmlrpclib"><tt class="docutils literal"><span class="pre">m2xmlrpclib</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.threading"><tt class="docutils literal"><span class="pre">threading</span></tt> Module</a></li>
-<li><a class="reference internal" href="#module-M2Crypto.util"><tt class="docutils literal"><span class="pre">util</span></tt> Module</a></li>
-<li><a class="reference internal" href="#subpackages">Subpackages</a><ul>
+<li><a class="reference internal" href="#id1"><code class="docutils literal"><span class="pre">M2Crypto</span></code> Package</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.ASN1"><code class="docutils literal"><span class="pre">ASN1</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.AuthCookie"><code class="docutils literal"><span class="pre">AuthCookie</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.BIO"><code class="docutils literal"><span class="pre">BIO</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.BN"><code class="docutils literal"><span class="pre">BN</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.DH"><code class="docutils literal"><span class="pre">DH</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.DSA"><code class="docutils literal"><span class="pre">DSA</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.EC"><code class="docutils literal"><span class="pre">EC</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.EVP"><code class="docutils literal"><span class="pre">EVP</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.Engine"><code class="docutils literal"><span class="pre">Engine</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.Err"><code class="docutils literal"><span class="pre">Err</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.RC4"><code class="docutils literal"><span class="pre">RC4</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.RSA"><code class="docutils literal"><span class="pre">RSA</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.Rand"><code class="docutils literal"><span class="pre">Rand</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.SMIME"><code class="docutils literal"><span class="pre">SMIME</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.X509"><code class="docutils literal"><span class="pre">X509</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.callback"><code class="docutils literal"><span class="pre">callback</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.ftpslib"><code class="docutils literal"><span class="pre">ftpslib</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.httpslib"><code class="docutils literal"><span class="pre">httpslib</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.m2"><code class="docutils literal"><span class="pre">m2</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.m2crypto"><code class="docutils literal"><span class="pre">m2crypto</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.m2urllib"><code class="docutils literal"><span class="pre">m2urllib</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.m2urllib2"><code class="docutils literal"><span class="pre">m2urllib2</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.m2xmlrpclib"><code class="docutils literal"><span class="pre">m2xmlrpclib</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.threading"><code class="docutils literal"><span class="pre">threading</span></code> Module</a></li>
+<li><a class="reference internal" href="#module-M2Crypto.util"><code class="docutils literal"><span class="pre">util</span></code> Module</a></li>
+<li><a class="reference internal" href="#subpackages">Subpackages</a></li>
</ul>
</li>
</ul>
-</li>
+<div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="index.html">Documentation overview</a><ul>
+ <li>Previous: <a href="index.html" title="previous chapter">Welcome to M2Crypto’s documentation!</a></li>
+ <li>Next: <a href="M2Crypto.SSL.html" title="next chapter">SSL Package</a></li>
+ </ul></li>
</ul>
-
- <h4>Previous topic</h4>
- <p class="topless"><a href="index.html"
- title="previous chapter">Welcome to M2Crypto&#8217;s documentation!</a></p>
- <h4>Next topic</h4>
- <p class="topless"><a href="M2Crypto.PGP.html"
- title="next chapter">PGP Package</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/M2Crypto.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
+</div>
+ <div role="note" aria-label="source link">
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/M2Crypto.rst.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+ </div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li class="right" >
- <a href="M2Crypto.PGP.html" title="PGP Package"
- >next</a> |</li>
- <li class="right" >
- <a href="index.html" title="Welcome to M2Crypto’s documentation!"
- >previous</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
+ |
+ <a href="_sources/M2Crypto.rst.txt"
+ rel="nofollow">Page source</a>
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/ZServerSSL-HOWTO.html b/doc/html/ZServerSSL-HOWTO.html
index dc1dc32..61bc6e0 100644
--- a/doc/html/ZServerSSL-HOWTO.html
+++ b/doc/html/ZServerSSL-HOWTO.html
@@ -1,50 +1,42 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>1.   ZServerSSL-HOWTO &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
+ <title>1.   ZServerSSL-HOWTO &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: './',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="index.html" />
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+
+ <link rel="stylesheet" href="_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<div class="section" id="zserverssl-howto">
<span id="id1"></span><h1><a class="toc-backref" href="#id3">1.&nbsp;&nbsp;&nbsp;ZServerSSL-HOWTO</a><a class="headerlink" href="#zserverssl-howto" title="Permalink to this headline">¶</a></h1>
@@ -81,7 +73,7 @@
</div>
<div class="section" id="introduction">
<h2><a class="toc-backref" href="#id4">1.1.&nbsp;&nbsp;&nbsp;Introduction</a><a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2>
-<p>ZServerSSL adds to Zope&#8217;s ZServer the following:</p>
+<p>ZServerSSL adds to Zope’s ZServer the following:</p>
<ul class="simple">
<li>HTTPS server</li>
<li>WebDAV-source-over-HTTPS server</li>
@@ -95,67 +87,70 @@ in Un*x fashion.</p>
<div class="section" id="preparation">
<h2><a class="toc-backref" href="#id5">1.2.&nbsp;&nbsp;&nbsp;Preparation</a><a class="headerlink" href="#preparation" title="Permalink to this headline">¶</a></h2>
<ol class="arabic simple">
-<li>Download M2Crypto 0.11, contained in the file <tt class="docutils literal"><span class="pre">m2crypto-0.11.zip</span></tt>.</li>
-<li>Unpack <tt class="docutils literal"><span class="pre">m2crypto-0.11.zip</span></tt>. This will create a directory
-<tt class="docutils literal"><span class="pre">m2crypto-0.11</span></tt>. Henceforth, we refer to this directory as <tt class="docutils literal"><span class="pre">$M2</span></tt>.</li>
-<li>Install M2Crypto per the instructions in <tt class="docutils literal"><span class="pre">$M2/INSTALL</span></tt>.</li>
+<li>Download M2Crypto 0.11, contained in the file <code class="docutils literal"><span class="pre">m2crypto-0.11.zip</span></code>.</li>
+<li>Unpack <code class="docutils literal"><span class="pre">m2crypto-0.11.zip</span></code>. This will create a directory
+<code class="docutils literal"><span class="pre">m2crypto-0.11</span></code>. Henceforth, we refer to this directory as <code class="docutils literal"><span class="pre">$M2</span></code>.</li>
+<li>Install M2Crypto per the instructions in <code class="docutils literal"><span class="pre">$M2/INSTALL</span></code>.</li>
</ol>
-<p>The ZServerSSL distribution is in <tt class="docutils literal"><span class="pre">$M2/demo/Zope</span></tt>. We shall refer to
-this directory as <tt class="docutils literal"><span class="pre">$ZSSL</span></tt>.</p>
+<p>The ZServerSSL distribution is in <code class="docutils literal"><span class="pre">$M2/demo/Zope</span></code>. We shall refer to
+this directory as <code class="docutils literal"><span class="pre">$ZSSL</span></code>.</p>
</div>
<div class="section" id="installation">
<h2><a class="toc-backref" href="#id6">1.3.&nbsp;&nbsp;&nbsp;Installation</a><a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h2>
-<p>Below, we refer to your Zope top-level directory as <tt class="docutils literal"><span class="pre">$ZOPE</span></tt>.</p>
+<p>Below, we refer to your Zope top-level directory as <code class="docutils literal"><span class="pre">$ZOPE</span></code>.</p>
<ol class="arabic">
-<li><p class="first">Copy <tt class="docutils literal"><span class="pre">$ZSSL/z2s.py</span></tt> into <tt class="docutils literal"><span class="pre">$ZOPE</span></tt>.</p>
+<li><p class="first">Copy <code class="docutils literal"><span class="pre">$ZSSL/z2s.py</span></code> into <code class="docutils literal"><span class="pre">$ZOPE</span></code>.</p>
</li>
-<li><p class="first">Depending on your operating system, modify <tt class="docutils literal"><span class="pre">$ZOPE/start</span></tt> or
-<tt class="docutils literal"><span class="pre">$ZOPE/start.bat</span></tt> to invoke <tt class="docutils literal"><span class="pre">$ZOPE/z2s.py</span></tt>, instead of
-<tt class="docutils literal"><span class="pre">$ZOPE/z2.py</span></tt>. The files <tt class="docutils literal"><span class="pre">$ZSSL/starts</span></tt> and <tt class="docutils literal"><span class="pre">$ZSSL/starts.bat</span></tt>
+<li><p class="first">Depending on your operating system, modify <code class="docutils literal"><span class="pre">$ZOPE/start</span></code> or
+<code class="docutils literal"><span class="pre">$ZOPE/start.bat</span></code> to invoke <code class="docutils literal"><span class="pre">$ZOPE/z2s.py</span></code>, instead of
+<code class="docutils literal"><span class="pre">$ZOPE/z2.py</span></code>. The files <code class="docutils literal"><span class="pre">$ZSSL/starts</span></code> and <code class="docutils literal"><span class="pre">$ZSSL/starts.bat</span></code>
serve as examples.</p>
</li>
-<li><p class="first">Copy <tt class="docutils literal"><span class="pre">$ZSSL/dh1024.pem</span></tt> into <tt class="docutils literal"><span class="pre">$ZOPE</span></tt>. This file contains
+<li><p class="first">Copy <code class="docutils literal"><span class="pre">$ZSSL/dh1024.pem</span></code> into <code class="docutils literal"><span class="pre">$ZOPE</span></code>. This file contains
Diffie-Hellman parameters for use by the SSL protocol.</p>
</li>
-<li><p class="first">Copy <tt class="docutils literal"><span class="pre">$ZSSL/randpool.dat</span></tt> into <tt class="docutils literal"><span class="pre">$ZOPE</span></tt>. This file contains seed
+<li><p class="first">Copy <code class="docutils literal"><span class="pre">$ZSSL/randpool.dat</span></code> into <code class="docutils literal"><span class="pre">$ZOPE</span></code>. This file contains seed
material for the OpenSSL PRNG. Alternatively, create
-<tt class="docutils literal"><span class="pre">$ZOPE/randpool.dat</span></tt> thusly:</p>
-<div class="highlight-python"><pre>$ dd if=/dev/urandom of=randpool.dat bs=1024 count=1</pre>
+<code class="docutils literal"><span class="pre">$ZOPE/randpool.dat</span></code> thusly:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ dd if=/dev/urandom of=randpool.dat bs=1024 count=1
+</pre></div>
</div>
</li>
-<li><p class="first">Copy <tt class="docutils literal"><span class="pre">$ZSSL/ca.pem</span></tt> to <tt class="docutils literal"><span class="pre">$ZOPE</span></tt>. This file contains an
+<li><p class="first">Copy <code class="docutils literal"><span class="pre">$ZSSL/ca.pem</span></code> to <code class="docutils literal"><span class="pre">$ZOPE</span></code>. This file contains an
example Certification Authority (CA) certificate. For
-information on operating your own CA, see <a class="reference internal" href="howto.ca.html#howto-ca"><em>HOWTO: Creating your own CA with OpenSSL</em></a> or
+information on operating your own CA, see <a class="reference internal" href="howto.ca.html#howto-ca"><span class="std std-ref">HOWTO: Creating your own CA with OpenSSL</span></a> or
one of numerous similar documents available on the web.</p>
</li>
-<li><p class="first">Copy <tt class="docutils literal"><span class="pre">$ZSSL/server.pem</span></tt> to <tt class="docutils literal"><span class="pre">$ZOPE</span></tt>. This file contains an RSA key
+<li><p class="first">Copy <code class="docutils literal"><span class="pre">$ZSSL/server.pem</span></code> to <code class="docutils literal"><span class="pre">$ZOPE</span></code>. This file contains an RSA key
pair and its X.509v3 certificate issued by the above CA. You may also
create your own key/certificate bundle.</p>
</li>
-<li><p class="first">Copy <tt class="docutils literal"><span class="pre">$ZSSL/ZServer/HTTPS_Server.py</span></tt> to <tt class="docutils literal"><span class="pre">$ZOPE/ZServer</span></tt>.</p>
+<li><p class="first">Copy <code class="docutils literal"><span class="pre">$ZSSL/ZServer/HTTPS_Server.py</span></code> to <code class="docutils literal"><span class="pre">$ZOPE/ZServer</span></code>.</p>
</li>
-<li><p class="first">Copy <tt class="docutils literal"><span class="pre">$ZSSL/ZServer/__init__.py</span></tt> to <tt class="docutils literal"><span class="pre">$ZOPE/ZServer</span></tt>. This
-overwrites the existing <tt class="docutils literal"><span class="pre">$ZOPE/ZServer/__init__.py</span></tt>. Alternatively,
-apply the following patch to <tt class="docutils literal"><span class="pre">$ZOPE/ZServer/__init__.py</span></tt>:</p>
-<div class="highlight-python"><pre>--- __init__.py.org Sat Jun 21 23:20:41 2003
-+++ __init__.py Tue Jan 7 23:30:53 2003
-@@ -84,6 +84,7 @@
- import asyncore
- from medusa import resolver, logger
- from HTTPServer import zhttp_server, zhttp_handler
-+from HTTPS_Server import zhttps_server, zhttps_handler
- from PCGIServer import PCGIServer
- from FCGIServer import FCGIServer
- from FTPServer import FTPServer</pre>
+<li><p class="first">Copy <code class="docutils literal"><span class="pre">$ZSSL/ZServer/__init__.py</span></code> to <code class="docutils literal"><span class="pre">$ZOPE/ZServer</span></code>. This
+overwrites the existing <code class="docutils literal"><span class="pre">$ZOPE/ZServer/__init__.py</span></code>. Alternatively,
+apply the following patch to <code class="docutils literal"><span class="pre">$ZOPE/ZServer/__init__.py</span></code>:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">---</span> <span class="fm">__init__</span><span class="o">.</span><span class="n">py</span><span class="o">.</span><span class="n">org</span> <span class="n">Sat</span> <span class="n">Jun</span> <span class="mi">21</span> <span class="mi">23</span><span class="p">:</span><span class="mi">20</span><span class="p">:</span><span class="mi">41</span> <span class="mi">2003</span>
+<span class="o">+++</span> <span class="fm">__init__</span><span class="o">.</span><span class="n">py</span> <span class="n">Tue</span> <span class="n">Jan</span> <span class="mi">7</span> <span class="mi">23</span><span class="p">:</span><span class="mi">30</span><span class="p">:</span><span class="mi">53</span> <span class="mi">2003</span>
+<span class="o">@@</span> <span class="o">-</span><span class="mi">84</span><span class="p">,</span><span class="mi">6</span> <span class="o">+</span><span class="mi">84</span><span class="p">,</span><span class="mi">7</span> <span class="o">@@</span>
+ <span class="kn">import</span> <span class="nn">asyncore</span>
+ <span class="kn">from</span> <span class="nn">medusa</span> <span class="k">import</span> <span class="n">resolver</span><span class="p">,</span> <span class="n">logger</span>
+ <span class="kn">from</span> <span class="nn">HTTPServer</span> <span class="k">import</span> <span class="n">zhttp_server</span><span class="p">,</span> <span class="n">zhttp_handler</span>
+<span class="o">+</span><span class="kn">from</span> <span class="nn">HTTPS_Server</span> <span class="k">import</span> <span class="n">zhttps_server</span><span class="p">,</span> <span class="n">zhttps_handler</span>
+ <span class="kn">from</span> <span class="nn">PCGIServer</span> <span class="k">import</span> <span class="n">PCGIServer</span>
+ <span class="kn">from</span> <span class="nn">FCGIServer</span> <span class="k">import</span> <span class="n">FCGIServer</span>
+ <span class="kn">from</span> <span class="nn">FTPServer</span> <span class="k">import</span> <span class="n">FTPServer</span>
+</pre></div>
</div>
</li>
-<li><p class="first">Copy <tt class="docutils literal"><span class="pre">$ZSSL/ZServer/medusa/https_server.py</span></tt> to
-<tt class="docutils literal"><span class="pre">$ZOPE/ZServer/medusa</span></tt>.</p>
+<li><p class="first">Copy <code class="docutils literal"><span class="pre">$ZSSL/ZServer/medusa/https_server.py</span></code> to
+<code class="docutils literal"><span class="pre">$ZOPE/ZServer/medusa</span></code>.</p>
</li>
<li><p class="first">Stop Zope, if it is running.</p>
</li>
<li><p class="first">Start Zope with ZServerSSL thusly:</p>
-<div class="highlight-python"><pre>./starts -X -f 9021 -w 9080 -W 9081 -y 9443 -Y 9444</pre>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">starts</span> <span class="o">-</span><span class="n">X</span> <span class="o">-</span><span class="n">f</span> <span class="mi">9021</span> <span class="o">-</span><span class="n">w</span> <span class="mi">9080</span> <span class="o">-</span><span class="n">W</span> <span class="mi">9081</span> <span class="o">-</span><span class="n">y</span> <span class="mi">9443</span> <span class="o">-</span><span class="n">Y</span> <span class="mi">9444</span>
+</pre></div>
</div>
<p>This starts the following:</p>
<ul class="simple">
@@ -170,28 +165,28 @@ apply the following patch to <tt class="docutils literal"><span class="pre">$ZOP
</div>
<div class="section" id="testing">
<h2><a class="toc-backref" href="#id7">1.4.&nbsp;&nbsp;&nbsp;Testing</a><a class="headerlink" href="#testing" title="Permalink to this headline">¶</a></h2>
-<p>Below, we assume your Zope server is running on <tt class="docutils literal"><span class="pre">localhost</span></tt>.</p>
+<p>Below, we assume your Zope server is running on <code class="docutils literal"><span class="pre">localhost</span></code>.</p>
</div>
<div class="section" id="https">
<h2><a class="toc-backref" href="#id8">1.5.&nbsp;&nbsp;&nbsp;HTTPS</a><a class="headerlink" href="#https" title="Permalink to this headline">¶</a></h2>
<p>This testing is done with Mozilla 1.1 on FreeBSD.</p>
<ol class="arabic simple">
<li>With a browser, connect to <a class="reference external" href="https://localhost:9443/">https://localhost:9443/</a>. Browse around.
-Check out your browser&#8217;s HTTPS informational screens.</li>
+Check out your browser’s HTTPS informational screens.</li>
<li>Connect to <a class="reference external" href="https://localhost:9443/manage">https://localhost:9443/manage</a>. Verify that you can access
-Zope&#8217;s management functionality.</li>
+Zope’s management functionality.</li>
</ol>
</div>
<div class="section" id="webdav-over-https">
<h2><a class="toc-backref" href="#id9">1.6.&nbsp;&nbsp;&nbsp;WebDAV-over-HTTPS</a><a class="headerlink" href="#webdav-over-https" title="Permalink to this headline">¶</a></h2>
<p>This testing is done with Cadaver 0.21.0 on FreeBSD.:</p>
-<div class="highlight-python"><pre>$ cadaver https://localhost:9443/
+<div class="highlight-default"><div class="highlight"><pre><span></span>$ cadaver https://localhost:9443/
WARNING: Untrusted server certificate presented:
Issued to: M2Crypto, SG
Issued by: M2Crypto, SG
Do you wish to accept the certificate? (y/n) y
dav:/&gt; ls
-Listing collection `/&#x27;: succeeded.
+Listing collection `/&#39;: succeeded.
Coll: Channels 0 Jun 19 00:04
Coll: Control_Panel 0 Jun 6 00:13
Coll: Examples 0 Jun 6 00:12
@@ -214,8 +209,9 @@ Coll: zope 0 Jun 20 15:27
standard_template.pt 282 Jun 6 00:12
zsyncer 0 Jun 17 15:28
dav:/&gt; quit
-Connection to `localhost&#x27; closed.
-$</pre>
+Connection to `localhost&#39; closed.
+$
+</pre></div>
</div>
</div>
<div class="section" id="webdav-source-over-https">
@@ -223,10 +219,10 @@ $</pre>
<p>This testing is done with Mozilla 1.1 on FreeBSD.</p>
<ol class="arabic simple">
<li>Open the Mozilla Composer window.</li>
-<li>Click &#8220;File&#8221;, &#8220;Open Web Location&#8221;. A dialog box appears.</li>
-<li>Enter <tt class="docutils literal"><span class="pre">https://localhost:9444/index_html</span></tt> for the URL.</li>
-<li>Select &#8220;Open in new Composer window.&#8221;</li>
-<li>Click &#8220;Open&#8221;. A new Composer window will open with <tt class="docutils literal"><span class="pre">index_html</span></tt>
+<li>Click “File”, “Open Web Location”. A dialog box appears.</li>
+<li>Enter <code class="docutils literal"><span class="pre">https://localhost:9444/index_html</span></code> for the URL.</li>
+<li>Select “Open in new Composer window.”</li>
+<li>Click “Open”. A new Composer window will open with <code class="docutils literal"><span class="pre">index_html</span></code>
loaded.</li>
</ol>
</div>
@@ -236,7 +232,7 @@ loaded.</li>
</div>
<div class="section" id="id2">
<h2><a class="toc-backref" href="#id12">1.9.&nbsp;&nbsp;&nbsp;HTTPS</a><a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">Rand</span><span class="p">,</span> <span class="n">SSL</span><span class="p">,</span> <span class="n">m2urllib</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">Rand</span><span class="p">,</span> <span class="n">SSL</span><span class="p">,</span> <span class="n">m2urllib</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">url</span> <span class="o">=</span> <span class="n">m2urllib</span><span class="o">.</span><span class="n">FancyURLopener</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">url</span><span class="o">.</span><span class="n">addheader</span><span class="p">(</span><span class="s1">&#39;Connection&#39;</span><span class="p">,</span> <span class="s1">&#39;close&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">u</span> <span class="o">=</span> <span class="n">url</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s1">&#39;https://127.0.0.1:9443/&#39;</span><span class="p">)</span>
@@ -251,37 +247,38 @@ loaded.</li>
<span class="gp">&gt;&gt;&gt; </span><span class="k">while</span> <span class="mi">1</span><span class="p">:</span>
<span class="gp">... </span> <span class="n">data</span> <span class="o">=</span> <span class="n">u</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
<span class="gp">... </span> <span class="k">if</span> <span class="ow">not</span> <span class="n">data</span><span class="p">:</span> <span class="k">break</span>
-<span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
+<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="gp">...</span>
</pre></div>
</div>
-<div class="highlight-python"><pre>&lt;html&gt;&lt;head&gt;
-&lt;base href=&quot;https://127.0.0.1:9443/&quot; /&gt;
-&lt;title&gt;Zope&lt;/title&gt;&lt;/head&gt;&lt;body bgcolor=&quot;#FFFFFF&quot;&gt;
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">html</span><span class="o">&gt;&lt;</span><span class="n">head</span><span class="o">&gt;</span>
+<span class="o">&lt;</span><span class="n">base</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;https://127.0.0.1:9443/&quot;</span> <span class="o">/&gt;</span>
+<span class="o">&lt;</span><span class="n">title</span><span class="o">&gt;</span><span class="n">Zope</span><span class="o">&lt;/</span><span class="n">title</span><span class="o">&gt;&lt;/</span><span class="n">head</span><span class="o">&gt;&lt;</span><span class="n">body</span> <span class="n">bgcolor</span><span class="o">=</span><span class="s2">&quot;#FFFFFF&quot;</span><span class="o">&gt;</span>
-&lt;h1&gt;NgPS Desktop Portal&lt;/h1&gt;
+<span class="o">&lt;</span><span class="n">h1</span><span class="o">&gt;</span><span class="n">NgPS</span> <span class="n">Desktop</span> <span class="n">Portal</span><span class="o">&lt;/</span><span class="n">h1</span><span class="o">&gt;</span>
-&amp;nbsp;&amp;nbsp;So many hacks.&lt;br&gt;
-&amp;nbsp;&amp;nbsp;So little time.&lt;br&gt;
+<span class="o">&amp;</span><span class="n">nbsp</span><span class="p">;</span><span class="o">&amp;</span><span class="n">nbsp</span><span class="p">;</span><span class="n">So</span> <span class="n">many</span> <span class="n">hacks</span><span class="o">.&lt;</span><span class="n">br</span><span class="o">&gt;</span>
+<span class="o">&amp;</span><span class="n">nbsp</span><span class="p">;</span><span class="o">&amp;</span><span class="n">nbsp</span><span class="p">;</span><span class="n">So</span> <span class="n">little</span> <span class="n">time</span><span class="o">.&lt;</span><span class="n">br</span><span class="o">&gt;</span>
-&lt;h2&gt;Link Farm&lt;/h2&gt;
-&lt;ul&gt;
-&lt;li&gt;&lt;a href=&quot;http://localhost:8080/portal&quot;&gt;Portal&lt;/a&gt;&lt;/li&gt;
-&lt;li&gt;&lt;a href=&quot;http://localhost/&quot;&gt;Local Apache Home Page&lt;/a&gt;&lt;/li&gt;
-&lt;/ul&gt;
+<span class="o">&lt;</span><span class="n">h2</span><span class="o">&gt;</span><span class="n">Link</span> <span class="n">Farm</span><span class="o">&lt;/</span><span class="n">h2</span><span class="o">&gt;</span>
+<span class="o">&lt;</span><span class="n">ul</span><span class="o">&gt;</span>
+<span class="o">&lt;</span><span class="n">li</span><span class="o">&gt;&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;http://localhost:8080/portal&quot;</span><span class="o">&gt;</span><span class="n">Portal</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;&lt;/</span><span class="n">li</span><span class="o">&gt;</span>
+<span class="o">&lt;</span><span class="n">li</span><span class="o">&gt;&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;http://localhost/&quot;</span><span class="o">&gt;</span><span class="n">Local</span> <span class="n">Apache</span> <span class="n">Home</span> <span class="n">Page</span><span class="o">&lt;/</span><span class="n">a</span><span class="o">&gt;&lt;/</span><span class="n">li</span><span class="o">&gt;</span>
+<span class="o">&lt;/</span><span class="n">ul</span><span class="o">&gt;</span>
-&lt;hr&gt;&lt;a href=&quot;http://www.zope.org/Credits&quot; target=&quot;_top&quot;&gt;&lt;img src=&quot;https://127.0.0.1:9443/p_/ZopeButton&quot; width=&quot;115&quot; height=&quot;50&quot; border=&quot;0&quot; alt=&quot;Powered by Zope&quot; /&gt;&lt;/a&gt;&lt;/body&gt;&lt;/html&gt;</pre>
+<span class="o">&lt;</span><span class="n">hr</span><span class="o">&gt;&lt;</span><span class="n">a</span> <span class="n">href</span><span class="o">=</span><span class="s2">&quot;http://www.zope.org/Credits&quot;</span> <span class="n">target</span><span class="o">=</span><span class="s2">&quot;_top&quot;</span><span class="o">&gt;&lt;</span><span class="n">img</span> <span class="n">src</span><span class="o">=</span><span class="s2">&quot;https://127.0.0.1:9443/p_/ZopeButton&quot;</span> <span class="n">width</span><span class="o">=</span><span class="s2">&quot;115&quot;</span> <span class="n">height</span><span class="o">=</span><span class="s2">&quot;50&quot;</span> <span class="n">border</span><span class="o">=</span><span class="s2">&quot;0&quot;</span> <span class="n">alt</span><span class="o">=</span><span class="s2">&quot;Powered by Zope&quot;</span> <span class="o">/&gt;&lt;/</span><span class="n">a</span><span class="o">&gt;&lt;/</span><span class="n">body</span><span class="o">&gt;&lt;/</span><span class="n">html</span><span class="o">&gt;</span>
+</pre></div>
</div>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">u</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">u</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="go">&gt;&gt;&gt;</span>
</pre></div>
</div>
</div>
<div class="section" id="xmlrpc-over-https">
<h2><a class="toc-backref" href="#id13">1.10.&nbsp;&nbsp;&nbsp;XMLRPC-over-HTTPS</a><a class="headerlink" href="#xmlrpc-over-https" title="Permalink to this headline">¶</a></h2>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">M2Crypto.m2xmlrpclib</span> <span class="kn">import</span> <span class="n">Server</span><span class="p">,</span> <span class="n">SSL_Transport</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">M2Crypto.m2xmlrpclib</span> <span class="k">import</span> <span class="n">Server</span><span class="p">,</span> <span class="n">SSL_Transport</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">zs</span> <span class="o">=</span> <span class="n">Server</span><span class="p">(</span><span class="s1">&#39;https://127.0.0.1:9443/&#39;</span><span class="p">,</span> <span class="n">SSL_Transport</span><span class="p">())</span>
-<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">zs</span><span class="o">.</span><span class="n">propertyMap</span><span class="p">())</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">print</span><span class="p">(</span><span class="n">zs</span><span class="o">.</span><span class="n">propertyMap</span><span class="p">())</span>
<span class="go">[{&#39;type&#39;: &#39;string&#39;, &#39;id&#39;: &#39;title&#39;, &#39;mode&#39;: &#39;w&#39;}]</span>
<span class="go">&gt;&gt;&gt;</span>
</pre></div>
@@ -297,7 +294,7 @@ loaded.</li>
</div>
</div>
</div>
- <div class="sphinxsidebar">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
@@ -316,44 +313,48 @@ loaded.</li>
</ul>
</li>
</ul>
-
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/ZServerSSL-HOWTO.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
+<div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="index.html">Documentation overview</a><ul>
+ </ul></li>
+</ul>
+</div>
+ <div role="note" aria-label="source link">
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/ZServerSSL-HOWTO.rst.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+ </div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
+ |
+ <a href="_sources/ZServerSSL-HOWTO.rst.txt"
+ rel="nofollow">Page source</a>
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/ASN1.html b/doc/html/_modules/M2Crypto/ASN1.html
index c290e6a..a506287 100644
--- a/doc/html/_modules/M2Crypto/ASN1.html
+++ b/doc/html/_modules/M2Crypto/ASN1.html
@@ -1,55 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.ASN1 &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.ASN1 &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.ASN1</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">M2Crypto wrapper for OpenSSL ASN1 API.</span>
@@ -63,9 +53,9 @@
<span class="kn">import</span> <span class="nn">datetime</span>
<span class="kn">import</span> <span class="nn">time</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span> <span class="c1"># noqa</span>
<span class="n">MBSTRING_FLAG</span> <span class="o">=</span> <span class="mh">0x1000</span>
<span class="n">MBSTRING_ASC</span> <span class="o">=</span> <span class="n">MBSTRING_FLAG</span> <span class="o">|</span> <span class="mi">1</span>
@@ -83,7 +73,7 @@
<span class="k">def</span> <span class="nf">__cmp__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
<span class="c1"># type: (ASN1_Integer) -&gt; int</span>
- <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">ASN1_Integer</span><span class="p">):</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">ASN1_Integer</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span>
<span class="s2">&quot;Comparisons supported only between ANS1_Integer objects&quot;</span><span class="p">)</span>
@@ -96,9 +86,9 @@
<span class="k">def</span> <span class="nf">__int__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">asn1_integer_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">asn1int</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">asn1_integer_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">asn1int</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="ASN1_String"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ASN1.ASN1_String">[docs]</a><span class="k">class</span> <span class="nc">ASN1_String</span><span class="p">:</span> <span class="c1"># noqa</span>
<span class="n">m2_asn1_string_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">asn1_string_free</span>
@@ -116,7 +106,7 @@
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; str</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__bytes__</span><span class="p">())</span>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="fm">__bytes__</span><span class="p">())</span>
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
@@ -128,7 +118,7 @@
<div class="viewcode-block" id="ASN1_String.as_text"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ASN1.ASN1_String.as_text">[docs]</a> <span class="k">def</span> <span class="nf">as_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; str</span>
- <span class="sd">&quot;&quot;&quot;output an ASN1_STRING structure according to the set flags.</span>
+ <span class="sd">&quot;&quot;&quot;Output an ASN1_STRING structure according to the set flags.</span>
<span class="sd"> :param flags: determine the format of the output by using</span>
<span class="sd"> predetermined constants, see ASN1_STRING_print_ex(3)</span>
@@ -137,9 +127,9 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">()</span>
<span class="n">m2</span><span class="o">.</span><span class="n">asn1_string_print_ex</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">asn1str</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">())</span>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">())</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="ASN1_Object"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ASN1.ASN1_Object">[docs]</a><span class="k">class</span> <span class="nc">ASN1_Object</span><span class="p">:</span> <span class="c1"># noqa</span>
<span class="n">m2_asn1_object_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">asn1_object_free</span>
@@ -155,9 +145,9 @@
<span class="bp">self</span><span class="o">.</span><span class="n">m2_asn1_object_free</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">asn1obj</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_ptr</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">asn1obj</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">asn1obj</span></div>
+
-</div>
<span class="k">class</span> <span class="nc">_UTC</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">tzinfo</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">tzname</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dt</span><span class="p">):</span>
<span class="c1"># type: (Optional[datetime.datetime]) -&gt; str</span>
@@ -172,12 +162,15 @@
<span class="k">return</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">return</span> <span class="s2">&quot;&lt;Timezone: </span><span class="si">%s</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">tzname</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span>
+ <span class="k">return</span> <span class="s2">&quot;&lt;Timezone: </span><span class="si">%s</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">tzname</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
+
+
<span class="n">UTC</span> <span class="o">=</span> <span class="n">_UTC</span><span class="p">()</span> <span class="c1"># type: _UTC</span>
<div class="viewcode-block" id="LocalTimezone"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ASN1.LocalTimezone">[docs]</a><span class="k">class</span> <span class="nc">LocalTimezone</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">tzinfo</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot; Localtimezone from datetime manual &quot;&quot;&quot;</span>
+ <span class="sd">&quot;&quot;&quot;Localtimezone from datetime manual.&quot;&quot;&quot;</span>
+
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_stdoffset</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">seconds</span><span class="o">=-</span><span class="n">time</span><span class="o">.</span><span class="n">timezone</span><span class="p">)</span>
@@ -192,19 +185,19 @@
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_isdst</span><span class="p">(</span><span class="n">dt</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dstoffset</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stdoffset</span>
-</div>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stdoffset</span></div>
+
<div class="viewcode-block" id="LocalTimezone.dst"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ASN1.LocalTimezone.dst">[docs]</a> <span class="k">def</span> <span class="nf">dst</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dt</span><span class="p">):</span>
<span class="c1"># type: (datetime.datetime) -&gt; datetime.timedelta</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_isdst</span><span class="p">(</span><span class="n">dt</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dstdiff</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="LocalTimezone.tzname"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ASN1.LocalTimezone.tzname">[docs]</a> <span class="k">def</span> <span class="nf">tzname</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dt</span><span class="p">):</span>
<span class="c1"># type: (datetime.datetime) -&gt; str</span>
- <span class="k">return</span> <span class="n">time</span><span class="o">.</span><span class="n">tzname</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_isdst</span><span class="p">(</span><span class="n">dt</span><span class="p">)</span><span class="o">.</span><span class="n">real</span><span class="p">]</span>
-</div>
+ <span class="k">return</span> <span class="n">time</span><span class="o">.</span><span class="n">tzname</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_isdst</span><span class="p">(</span><span class="n">dt</span><span class="p">)</span><span class="o">.</span><span class="n">real</span><span class="p">]</span></div>
+
<span class="k">def</span> <span class="nf">_isdst</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dt</span><span class="p">):</span>
<span class="c1"># type: (datetime.datetime) -&gt; bool</span>
<span class="n">tt</span> <span class="o">=</span> <span class="p">(</span><span class="n">dt</span><span class="o">.</span><span class="n">year</span><span class="p">,</span> <span class="n">dt</span><span class="o">.</span><span class="n">month</span><span class="p">,</span> <span class="n">dt</span><span class="o">.</span><span class="n">day</span><span class="p">,</span>
@@ -212,20 +205,20 @@
<span class="n">dt</span><span class="o">.</span><span class="n">weekday</span><span class="p">(),</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="n">stamp</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">mktime</span><span class="p">(</span><span class="n">tt</span><span class="p">)</span>
<span class="n">tt</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">localtime</span><span class="p">(</span><span class="n">stamp</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">tt</span><span class="o">.</span><span class="n">tm_isdst</span> <span class="o">&gt;</span> <span class="mi">0</span>
+ <span class="k">return</span> <span class="n">tt</span><span class="o">.</span><span class="n">tm_isdst</span> <span class="o">&gt;</span> <span class="mi">0</span></div>
+
-</div>
<div class="viewcode-block" id="ASN1_TIME"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ASN1.ASN1_TIME">[docs]</a><span class="k">class</span> <span class="nc">ASN1_TIME</span><span class="p">:</span> <span class="c1"># noqa</span>
<span class="n">_ssl_months</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;Jan&quot;</span><span class="p">,</span> <span class="s2">&quot;Feb&quot;</span><span class="p">,</span> <span class="s2">&quot;Mar&quot;</span><span class="p">,</span> <span class="s2">&quot;Apr&quot;</span><span class="p">,</span> <span class="s2">&quot;May&quot;</span><span class="p">,</span> <span class="s2">&quot;Jun&quot;</span><span class="p">,</span> <span class="s2">&quot;Jul&quot;</span><span class="p">,</span> <span class="s2">&quot;Aug&quot;</span><span class="p">,</span>
<span class="s2">&quot;Sep&quot;</span><span class="p">,</span> <span class="s2">&quot;Oct&quot;</span><span class="p">,</span> <span class="s2">&quot;Nov&quot;</span><span class="p">,</span> <span class="s2">&quot;Dec&quot;</span><span class="p">]</span>
<span class="n">m2_asn1_time_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">asn1_time_free</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">asn1_time</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">asn1_utctime</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="c1"># type: (Optional[ASN1_TIME], int) -&gt; None</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">asn1_time</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">asn1_utctime</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="c1"># type: (Optional[ASN1_TIME], Optional[int], Optional[ASN1_TIME]) -&gt; None</span>
<span class="c1"># handle old keyword parameter</span>
- <span class="k">if</span> <span class="n">asn1_time</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">asn1_time</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">asn1_time</span> <span class="o">=</span> <span class="n">asn1_utctime</span>
- <span class="k">if</span> <span class="n">asn1_time</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">asn1_time</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">asn1_time_type_check</span><span class="p">(</span><span class="n">asn1_time</span><span class="p">),</span> \
<span class="s2">&quot;&#39;asn1_time&#39; type error&#39;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">asn1_time</span> <span class="o">=</span> <span class="n">asn1_time</span>
@@ -254,27 +247,23 @@
<div class="viewcode-block" id="ASN1_TIME.set_string"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ASN1.ASN1_TIME.set_string">[docs]</a> <span class="k">def</span> <span class="nf">set_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">string</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; int</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Set time from UTC string.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="sd">&quot;&quot;&quot;Set time from UTC string.&quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">asn1_time_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">asn1_time</span><span class="p">),</span> \
<span class="s2">&quot;&#39;asn1_time&#39; type error&#39;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">asn1_time_set_string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">asn1_time</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">asn1_time_set_string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">asn1_time</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="ASN1_TIME.set_time"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ASN1.ASN1_TIME.set_time">[docs]</a> <span class="k">def</span> <span class="nf">set_time</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">time</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; ASN1_TIME</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Set time from seconds since epoch (int).</span>
-<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="sd">&quot;&quot;&quot;Set time from seconds since epoch (int).&quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">asn1_time_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">asn1_time</span><span class="p">),</span> \
<span class="s2">&quot;&#39;asn1_time&#39; type error&#39;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">asn1_time_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">asn1_time</span><span class="p">,</span> <span class="n">time</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">asn1_time_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">asn1_time</span><span class="p">,</span> <span class="n">time</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="ASN1_TIME.get_datetime"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ASN1.ASN1_TIME.get_datetime">[docs]</a> <span class="k">def</span> <span class="nf">get_datetime</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; ASN1_TIME</span>
<span class="n">date</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
- <span class="n">timezone</span> <span class="o">=</span> <span class="bp">None</span>
+ <span class="n">timezone</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="s1">&#39; &#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">date</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Invalid date: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">date</span><span class="p">)</span>
<span class="n">month</span><span class="p">,</span> <span class="n">rest</span> <span class="o">=</span> <span class="n">date</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39; &#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
@@ -291,57 +280,58 @@
<span class="n">dt</span> <span class="o">=</span> <span class="n">dt</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">month</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_ssl_months</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">month</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
<span class="k">if</span> <span class="n">timezone</span><span class="p">:</span>
<span class="n">dt</span> <span class="o">=</span> <span class="n">dt</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">tzinfo</span><span class="o">=</span><span class="n">UTC</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">dt</span>
-</div>
+ <span class="k">return</span> <span class="n">dt</span></div>
+
<div class="viewcode-block" id="ASN1_TIME.set_datetime"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ASN1.ASN1_TIME.set_datetime">[docs]</a> <span class="k">def</span> <span class="nf">set_datetime</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">date</span><span class="p">):</span>
<span class="c1"># type: (datetime.datetime) -&gt; ASN1_TIME</span>
<span class="n">local</span> <span class="o">=</span> <span class="n">LocalTimezone</span><span class="p">()</span>
- <span class="k">if</span> <span class="n">date</span><span class="o">.</span><span class="n">tzinfo</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">date</span><span class="o">.</span><span class="n">tzinfo</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">date</span> <span class="o">=</span> <span class="n">date</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">tzinfo</span><span class="o">=</span><span class="n">local</span><span class="p">)</span>
<span class="n">date</span> <span class="o">=</span> <span class="n">date</span><span class="o">.</span><span class="n">astimezone</span><span class="p">(</span><span class="n">local</span><span class="p">)</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">set_time</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">mktime</span><span class="p">(</span><span class="n">date</span><span class="o">.</span><span class="n">timetuple</span><span class="p">())))</span>
-</div></div>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">set_time</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">mktime</span><span class="p">(</span><span class="n">date</span><span class="o">.</span><span class="n">timetuple</span><span class="p">())))</span></div></div>
+
+
<span class="n">ASN1_UTCTIME</span> <span class="o">=</span> <span class="n">ASN1_TIME</span>
</pre></div>
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/AuthCookie.html b/doc/html/_modules/M2Crypto/AuthCookie.html
index a35c736..47f127c 100644
--- a/doc/html/_modules/M2Crypto/AuthCookie.html
+++ b/doc/html/_modules/M2Crypto/AuthCookie.html
@@ -1,55 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.AuthCookie &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.AuthCookie &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.AuthCookie</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;Secure Authenticator Cookies</span>
@@ -59,41 +49,41 @@
<span class="kn">import</span> <span class="nn">re</span>
<span class="kn">import</span> <span class="nn">time</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">Rand</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span><span class="p">,</span> <span class="n">six</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.http_cookies</span> <span class="kn">import</span> <span class="n">SimpleCookie</span> <span class="c1"># pylint: disable=no-name-in-module,import-error</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">Rand</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span><span class="p">,</span> <span class="n">six</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.http_cookies</span> <span class="k">import</span> <span class="n">SimpleCookie</span> <span class="c1"># pylint: disable=no-name-in-module,import-error</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">re</span> <span class="k">as</span> <span class="n">type_re</span><span class="p">,</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Union</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">re</span> <span class="k">as</span> <span class="n">type_re</span><span class="p">,</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Union</span> <span class="c1"># noqa</span>
<span class="n">_MIX_FORMAT</span> <span class="o">=</span> <span class="s1">&#39;exp=</span><span class="si">%f</span><span class="s1">&amp;data=</span><span class="si">%s</span><span class="s1">&amp;digest=&#39;</span>
-<span class="n">_MIX_RE</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s1">r&#39;exp=(\d+\.\d+)&amp;data=(.+)&amp;digest=(\S*)&#39;</span><span class="p">)</span>
+<span class="n">_MIX_RE</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;exp=(\d+\.\d+)&amp;data=(.+)&amp;digest=(\S*)&#39;</span><span class="p">)</span>
-<span class="n">log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
+<span class="n">log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
-<div class="viewcode-block" id="mix"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.mix">[docs]</a><span class="k">def</span> <span class="nf">mix</span><span class="p">(</span><span class="n">expiry</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="n">_MIX_FORMAT</span><span class="p">):</span>
+<div class="viewcode-block" id="mix"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.mix">[docs]</a><span class="k">def</span> <span class="nf">mix</span><span class="p">(</span><span class="n">expiry</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="n">_MIX_FORMAT</span><span class="p">):</span>
<span class="c1"># type: (float, AnyStr, str) -&gt; AnyStr</span>
- <span class="k">return</span> <span class="n">format</span> <span class="o">%</span> <span class="p">(</span><span class="n">expiry</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
+ <span class="k">return</span> <span class="nb">format</span> <span class="o">%</span> <span class="p">(</span><span class="n">expiry</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="unmix"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.unmix">[docs]</a><span class="k">def</span> <span class="nf">unmix</span><span class="p">(</span><span class="n">dough</span><span class="p">,</span> <span class="n">regex</span><span class="o">=</span><span class="n">_MIX_RE</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, type_re) -&gt; object</span>
<span class="n">mo</span> <span class="o">=</span> <span class="n">regex</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">dough</span><span class="p">)</span>
<span class="k">if</span> <span class="n">mo</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="n">mo</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span> <span class="n">mo</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">None</span>
+ <span class="k">return</span> <span class="kc">None</span></div>
+
-</div>
<div class="viewcode-block" id="unmix3"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.unmix3">[docs]</a><span class="k">def</span> <span class="nf">unmix3</span><span class="p">(</span><span class="n">dough</span><span class="p">,</span> <span class="n">regex</span><span class="o">=</span><span class="n">_MIX_RE</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, type_re) -&gt; Optional[tuple[float, AnyStr, AnyStr]]</span>
<span class="n">mo</span> <span class="o">=</span> <span class="n">regex</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">dough</span><span class="p">)</span>
<span class="k">if</span> <span class="n">mo</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="n">mo</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span> <span class="n">mo</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="n">mo</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">None</span>
+ <span class="k">return</span> <span class="kc">None</span></div>
+
-</div>
<span class="n">_TOKEN</span> <span class="o">=</span> <span class="s1">&#39;_M2AUTH_&#39;</span> <span class="c1"># type: str</span>
@@ -121,8 +111,8 @@
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expiry</span><span class="p">,</span> <span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">integer_types</span><span class="p">,</span> <span class="nb">float</span><span class="p">)):</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Expiration time must be number, not &quot;</span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">expiry</span><span class="p">)</span>
<span class="n">dough</span> <span class="o">=</span> <span class="n">mix</span><span class="p">(</span><span class="n">expiry</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">AuthCookie</span><span class="p">(</span><span class="n">expiry</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">dough</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_hmac</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span> <span class="n">dough</span><span class="p">))</span>
-</div>
+ <span class="k">return</span> <span class="n">AuthCookie</span><span class="p">(</span><span class="n">expiry</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">dough</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_hmac</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span> <span class="n">dough</span><span class="p">))</span></div>
+
<div class="viewcode-block" id="AuthCookieJar.isGoodCookie"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.AuthCookieJar.isGoodCookie">[docs]</a> <span class="k">def</span> <span class="nf">isGoodCookie</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cookie</span><span class="p">):</span>
<span class="c1"># type: (AuthCookie) -&gt; Union[bool, int]</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cookie</span><span class="p">,</span> <span class="n">AuthCookie</span><span class="p">)</span>
@@ -132,9 +122,9 @@
<span class="k">return</span> <span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">_expiry</span> <span class="o">==</span> <span class="n">cookie</span><span class="o">.</span><span class="n">_expiry</span><span class="p">)</span> \
<span class="ow">and</span> <span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">_data</span> <span class="o">==</span> <span class="n">cookie</span><span class="o">.</span><span class="n">_data</span><span class="p">)</span> \
<span class="ow">and</span> <span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">_mac</span> <span class="o">==</span> <span class="n">cookie</span><span class="o">.</span><span class="n">_mac</span><span class="p">)</span> \
- <span class="ow">and</span> <span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">output</span><span class="p">()</span> <span class="o">==</span> <span class="n">cookie</span><span class="o">.</span><span class="n">output</span><span class="p">())</span>
-</div>
-<div class="viewcode-block" id="AuthCookieJar.isGoodCookieString"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.AuthCookieJar.isGoodCookieString">[docs]</a> <span class="k">def</span> <span class="nf">isGoodCookieString</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cookie_str</span><span class="p">,</span> <span class="n">_debug</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
+ <span class="ow">and</span> <span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">output</span><span class="p">()</span> <span class="o">==</span> <span class="n">cookie</span><span class="o">.</span><span class="n">output</span><span class="p">())</span></div>
+
+<div class="viewcode-block" id="AuthCookieJar.isGoodCookieString"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.AuthCookieJar.isGoodCookieString">[docs]</a> <span class="k">def</span> <span class="nf">isGoodCookieString</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cookie_str</span><span class="p">,</span> <span class="n">_debug</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
<span class="c1"># type: (Union[dict, bytes], bool) -&gt; Union[bool, int]</span>
<span class="n">c</span> <span class="o">=</span> <span class="n">SimpleCookie</span><span class="p">()</span>
<span class="n">c</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">cookie_str</span><span class="p">)</span>
@@ -142,7 +132,7 @@
<span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s1">&#39;_TOKEN not in c (keys = </span><span class="si">%s</span><span class="s1">)&#39;</span><span class="p">,</span> <span class="nb">dir</span><span class="p">(</span><span class="n">c</span><span class="p">))</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="n">undough</span> <span class="o">=</span> <span class="n">unmix3</span><span class="p">(</span><span class="n">c</span><span class="p">[</span><span class="n">_TOKEN</span><span class="p">]</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">undough</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">undough</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s1">&#39;undough is None&#39;</span><span class="p">)</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="n">exp</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">mac</span> <span class="o">=</span> <span class="n">undough</span>
@@ -153,9 +143,9 @@
<span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s1">&#39;mac = </span><span class="si">%s</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">mac</span><span class="p">)</span>
<span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s1">&#39;c2._mac = </span><span class="si">%s</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">c2</span><span class="o">.</span><span class="n">_mac</span><span class="p">)</span>
<span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s1">&#39;c2._mac == mac: </span><span class="si">%s</span><span class="s1">&#39;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">c2</span><span class="o">.</span><span class="n">_mac</span> <span class="o">==</span> <span class="n">mac</span><span class="p">))</span>
- <span class="k">return</span> <span class="p">(</span><span class="ow">not</span> <span class="n">c2</span><span class="o">.</span><span class="n">isExpired</span><span class="p">())</span> <span class="ow">and</span> <span class="p">(</span><span class="n">c2</span><span class="o">.</span><span class="n">_mac</span> <span class="o">==</span> <span class="n">mac</span><span class="p">)</span>
+ <span class="k">return</span> <span class="p">(</span><span class="ow">not</span> <span class="n">c2</span><span class="o">.</span><span class="n">isExpired</span><span class="p">())</span> <span class="ow">and</span> <span class="p">(</span><span class="n">c2</span><span class="o">.</span><span class="n">_mac</span> <span class="o">==</span> <span class="n">mac</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="AuthCookie"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.AuthCookie">[docs]</a><span class="k">class</span> <span class="nc">AuthCookie</span><span class="p">:</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expiry</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">dough</span><span class="p">,</span> <span class="n">mac</span><span class="p">):</span>
@@ -179,42 +169,42 @@
<div class="viewcode-block" id="AuthCookie.expiry"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.expiry">[docs]</a> <span class="k">def</span> <span class="nf">expiry</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; float</span>
<span class="sd">&quot;&quot;&quot;Return the cookie&#39;s expiry time.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_expiry</span>
-</div>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_expiry</span></div>
+
<div class="viewcode-block" id="AuthCookie.data"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.data">[docs]</a> <span class="k">def</span> <span class="nf">data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; str</span>
<span class="sd">&quot;&quot;&quot;Return the data portion of the cookie.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span>
-</div>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span></div>
+
<div class="viewcode-block" id="AuthCookie.mac"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.mac">[docs]</a> <span class="k">def</span> <span class="nf">mac</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; str</span>
<span class="sd">&quot;&quot;&quot;Return the cookie&#39;s MAC.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mac</span>
-</div>
-<div class="viewcode-block" id="AuthCookie.output"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.output">[docs]</a> <span class="k">def</span> <span class="nf">output</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; str</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mac</span></div>
+
+<div class="viewcode-block" id="AuthCookie.output"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.output">[docs]</a> <span class="k">def</span> <span class="nf">output</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">header</span><span class="o">=</span><span class="s2">&quot;Set-Cookie:&quot;</span><span class="p">):</span>
+ <span class="c1"># type: (Optional[str]) -&gt; str</span>
<span class="sd">&quot;&quot;&quot;Return the cookie&#39;s output in &quot;Set-Cookie&quot; format.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cookie</span><span class="o">.</span><span class="n">output</span><span class="p">()</span>
-</div>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cookie</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">header</span><span class="o">=</span><span class="n">header</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="AuthCookie.value"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.value">[docs]</a> <span class="k">def</span> <span class="nf">value</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; str</span>
<span class="sd">&quot;&quot;&quot;Return the cookie&#39;s output minus the &quot;Set-Cookie: &quot; portion.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cookie</span><span class="p">[</span><span class="n">_TOKEN</span><span class="p">]</span><span class="o">.</span><span class="n">value</span>
-</div>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cookie</span><span class="p">[</span><span class="n">_TOKEN</span><span class="p">]</span><span class="o">.</span><span class="n">value</span></div>
+
<div class="viewcode-block" id="AuthCookie.isExpired"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.isExpired">[docs]</a> <span class="k">def</span> <span class="nf">isExpired</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bool</span>
<span class="sd">&quot;&quot;&quot;Return 1 if the cookie has expired, 0 otherwise.&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_expiry</span><span class="p">,</span> <span class="p">(</span><span class="nb">float</span><span class="p">,</span> <span class="n">six</span><span class="o">.</span><span class="n">integer_types</span><span class="p">))</span> <span class="ow">and</span> \
- <span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">&gt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">_expiry</span><span class="p">)</span>
+ <span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">&gt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">_expiry</span><span class="p">)</span></div>
<span class="c1"># Following two methods are for WebKit only.</span>
<span class="c1"># I may wish to push them to WKAuthCookie, but they are part</span>
- <span class="c1"># of the API now. Oh well.</span></div>
+ <span class="c1"># of the API now. Oh well.</span>
<div class="viewcode-block" id="AuthCookie.name"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.name">[docs]</a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; str</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_name</span>
-</div>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_name</span></div>
+
<div class="viewcode-block" id="AuthCookie.headerValue"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.headerValue">[docs]</a> <span class="k">def</span> <span class="nf">headerValue</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; str</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">()</span></div></div>
@@ -223,41 +213,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/BIO.html b/doc/html/_modules/M2Crypto/BIO.html
index 753291c..a252b48 100644
--- a/doc/html/_modules/M2Crypto/BIO.html
+++ b/doc/html/_modules/M2Crypto/BIO.html
@@ -1,83 +1,72 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.BIO &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.BIO &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.BIO</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;M2Crypto wrapper for OpenSSL BIO API.</span>
<span class="sd">Copyright (c) 1999-2004 Ng Pheng Siong. All rights reserved.&quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">logging</span>
-<span class="kn">import</span> <span class="nn">io</span> <span class="c1"># noqa</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">m2</span><span class="p">,</span> <span class="n">six</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">m2</span><span class="p">,</span> <span class="n">six</span><span class="p">,</span> <span class="n">util</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Iterable</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Union</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Iterable</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Union</span> <span class="c1"># noqa</span>
<span class="n">log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="s1">&#39;BIO&#39;</span><span class="p">)</span>
<div class="viewcode-block" id="BIOError"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIOError">[docs]</a><span class="k">class</span> <span class="nc">BIOError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
- <span class="k">pass</span>
-</div>
+ <span class="k">pass</span></div>
+
+
<span class="n">m2</span><span class="o">.</span><span class="n">bio_init</span><span class="p">(</span><span class="n">BIOError</span><span class="p">)</span>
<div class="viewcode-block" id="BIO"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO">[docs]</a><span class="k">class</span> <span class="nc">BIO</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
-
<span class="sd">&quot;&quot;&quot;Abstract object interface to the BIO API.&quot;&quot;&quot;</span>
<span class="n">m2_bio_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_free</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bio</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">_close_cb</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bio</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">_close_cb</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (Optional[BIO], int, Optional[Callable]) -&gt; None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">bio</span> <span class="o">=</span> <span class="n">bio</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pyfree</span> <span class="o">=</span> <span class="n">_pyfree</span>
@@ -97,17 +86,17 @@
<div class="viewcode-block" id="BIO.fileno"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.fileno">[docs]</a> <span class="k">def</span> <span class="nf">fileno</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_get_fd</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_get_fd</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="BIO.readable"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.readable">[docs]</a> <span class="k">def</span> <span class="nf">readable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bool</span>
- <span class="k">return</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">closed</span>
-</div>
-<div class="viewcode-block" id="BIO.read"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.read">[docs]</a> <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">return</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">closed</span></div>
+
+<div class="viewcode-block" id="BIO.read"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.read">[docs]</a> <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; Union[bytes, bytearray]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">readable</span><span class="p">():</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="s1">&#39;cannot read&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">size</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">size</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">buf</span> <span class="o">=</span> <span class="nb">bytearray</span><span class="p">()</span>
<span class="k">while</span> <span class="mi">1</span><span class="p">:</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="mi">4096</span><span class="p">)</span>
@@ -116,19 +105,20 @@
<span class="n">buf</span> <span class="o">+=</span> <span class="n">data</span>
<span class="k">return</span> <span class="n">buf</span>
<span class="k">elif</span> <span class="n">size</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">b</span><span class="s1">&#39;&#39;</span>
+ <span class="k">return</span> <span class="sa">b</span><span class="s1">&#39;&#39;</span>
<span class="k">elif</span> <span class="n">size</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;read count is negative&#39;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="nb">bytes</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="n">size</span><span class="p">))</span>
-</div>
+ <span class="k">return</span> <span class="nb">bytes</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="n">size</span><span class="p">))</span></div>
+
<div class="viewcode-block" id="BIO.readline"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.readline">[docs]</a> <span class="k">def</span> <span class="nf">readline</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">4096</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; bytes</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">readable</span><span class="p">():</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="s1">&#39;cannot read&#39;</span><span class="p">)</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_gets</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">buf</span>
-</div>
+ <span class="n">buf</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> <span class="k">if</span> <span class="n">buf</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">buf</span>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3bytes</span><span class="p">(</span><span class="n">buf</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="BIO.readlines"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.readlines">[docs]</a> <span class="k">def</span> <span class="nf">readlines</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sizehint</span><span class="o">=</span><span class="s1">&#39;ignored&#39;</span><span class="p">):</span>
<span class="c1"># type: (Union[AnyStr, int]) -&gt; Iterable[bytes]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">readable</span><span class="p">():</span>
@@ -136,18 +126,18 @@
<span class="n">lines</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">while</span> <span class="mi">1</span><span class="p">:</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_gets</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="mi">4096</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">buf</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">buf</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">break</span>
- <span class="n">lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">buf</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">lines</span>
-</div>
+ <span class="n">lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">util</span><span class="o">.</span><span class="n">py3bytes</span><span class="p">(</span><span class="n">buf</span><span class="p">))</span>
+ <span class="k">return</span> <span class="n">lines</span></div>
+
<div class="viewcode-block" id="BIO.writeable"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.writeable">[docs]</a> <span class="k">def</span> <span class="nf">writeable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bool</span>
- <span class="k">return</span> <span class="p">(</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">closed</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">write_closed</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="p">(</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">closed</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">write_closed</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="BIO.write"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.write">[docs]</a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; int</span>
- <span class="sd">&quot;&quot;&quot;</span>
+ <span class="sd">&quot;&quot;&quot;Write data to BIO.</span>
<span class="sd"> :return: either data written, or [0, -1] for nothing written,</span>
<span class="sd"> -2 not implemented</span>
@@ -156,34 +146,34 @@
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="s1">&#39;cannot write&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">six</span><span class="o">.</span><span class="n">text_type</span><span class="p">):</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;utf8&#39;</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="BIO.write_close"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.write_close">[docs]</a> <span class="k">def</span> <span class="nf">write_close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">write_closed</span> <span class="o">=</span> <span class="mi">1</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">write_closed</span> <span class="o">=</span> <span class="mi">1</span></div>
+
<div class="viewcode-block" id="BIO.flush"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.flush">[docs]</a> <span class="k">def</span> <span class="nf">flush</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="sd">&quot;&quot;&quot;</span>
+ <span class="sd">&quot;&quot;&quot;Flush the buffers.</span>
<span class="sd"> :return: 1 for success, and 0 or -1 for failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">bio_flush</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">bio_flush</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="BIO.reset"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.reset">[docs]</a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Sets the bio to its initial state</span>
+ <span class="sd">&quot;&quot;&quot;Set the bio to its initial state.</span>
+
<span class="sd"> :return: 1 for success, and 0 or -1 for failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_reset</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_reset</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="BIO.close"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">closed</span> <span class="o">=</span> <span class="mi">1</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_close_cb</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_close_cb</span><span class="p">()</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">_close_cb</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="BIO.should_retry"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.should_retry">[docs]</a> <span class="k">def</span> <span class="nf">should_retry</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -191,46 +181,37 @@
<span class="sd"> ie do_handshake</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_should_retry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_should_retry</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="BIO.should_read"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.should_read">[docs]</a> <span class="k">def</span> <span class="nf">should_read</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Returns whether the cause of the condition is the bio</span>
-<span class="sd"> should read more data</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_should_read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span>
-</div>
+ <span class="sd">&quot;&quot;&quot;Should we read more data?&quot;&quot;&quot;</span>
+
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_should_read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="BIO.should_write"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.should_write">[docs]</a> <span class="k">def</span> <span class="nf">should_write</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Returns whether the cause of the condition is the bio</span>
-<span class="sd"> should write more data</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_should_write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span>
-</div>
+ <span class="sd">&quot;&quot;&quot;Should we write more data?&quot;&quot;&quot;</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_should_write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="BIO.tell"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.tell">[docs]</a> <span class="k">def</span> <span class="nf">tell</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Return the current offset.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_tell</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span>
-</div>
+ <span class="sd">&quot;&quot;&quot;Return the current offset.&quot;&quot;&quot;</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_tell</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="BIO.seek"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.BIO.seek">[docs]</a> <span class="k">def</span> <span class="nf">seek</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">off</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Seek to the specified absolute offset.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_seek</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="n">off</span><span class="p">)</span>
-</div>
+ <span class="sd">&quot;&quot;&quot;Seek to the specified absolute offset.&quot;&quot;&quot;</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_seek</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="n">off</span><span class="p">)</span></div>
+
<span class="k">def</span> <span class="nf">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span>
<span class="k">def</span> <span class="nf">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+ <span class="c1"># type: (*Any) -&gt; int</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">close</span><span class="p">()</span></div>
+
-</div>
<div class="viewcode-block" id="MemoryBuffer"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.MemoryBuffer">[docs]</a><span class="k">class</span> <span class="nc">MemoryBuffer</span><span class="p">(</span><span class="n">BIO</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Object interface to BIO_s_mem.</span>
+ <span class="sd">&quot;&quot;&quot;Object interface to BIO_s_mem.</span>
<span class="sd"> Empirical testing suggests that this class performs less well than</span>
<span class="sd"> cStringIO, because cStringIO is implemented in C, whereas this class</span>
@@ -239,15 +220,15 @@
<span class="sd"> a MemoryBuffer object only when necessary.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (Optional[bytes]) -&gt; None</span>
- <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span>
+ <span class="nb">super</span><span class="p">(</span><span class="n">MemoryBuffer</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span>
- <span class="s2">&quot;data must be bytes or None, not </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span> <span class="p">))</span>
- <span class="n">BIO</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
+ <span class="s2">&quot;data must be bytes or None, not </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">bio</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_new</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_s_mem</span><span class="p">())</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pyfree</span> <span class="o">=</span> <span class="mi">1</span>
- <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">m2</span><span class="o">.</span><span class="n">bio_write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__len__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
@@ -261,33 +242,43 @@
<span class="k">if</span> <span class="n">size</span><span class="p">:</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_ctrl_pending</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">))</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_ctrl_pending</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">))</span></div>
- <span class="c1"># Backwards-compatibility.</span></div>
+ <span class="c1"># Backwards-compatibility.</span>
<span class="n">getvalue</span> <span class="o">=</span> <span class="n">read_all</span> <span class="o">=</span> <span class="n">read</span>
<div class="viewcode-block" id="MemoryBuffer.write_close"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.MemoryBuffer.write_close">[docs]</a> <span class="k">def</span> <span class="nf">write_close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">write_closed</span> <span class="o">=</span> <span class="mi">1</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">bio_set_mem_eof_return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
-</div>
- <span class="n">close</span> <span class="o">=</span> <span class="n">write_close</span>
+ <span class="nb">super</span><span class="p">(</span><span class="n">MemoryBuffer</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">write_close</span><span class="p">()</span>
+ <span class="n">m2</span><span class="o">.</span><span class="n">bio_set_mem_eof_return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span></div>
+
+ <span class="n">close</span> <span class="o">=</span> <span class="n">write_close</span></div>
-</div>
-<div class="viewcode-block" id="File"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.File">[docs]</a><span class="k">class</span> <span class="nc">File</span><span class="p">(</span><span class="n">BIO</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Object interface to BIO_s_pyfd</span>
+<div class="viewcode-block" id="File"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.File">[docs]</a><span class="k">class</span> <span class="nc">File</span><span class="p">(</span><span class="n">BIO</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;Object interface to BIO_s_pyfd.</span>
-<span class="sd"> This class interfaces Python to OpenSSL functions that expect BIO \*. For</span>
+<span class="sd"> This class interfaces Python to OpenSSL functions that expect BIO. For</span>
<span class="sd"> general file manipulation in Python, use Python&#39;s builtin file object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pyfile</span><span class="p">,</span> <span class="n">close_pyfile</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
- <span class="c1"># type: (io.BytesIO, int) -&gt; None</span>
- <span class="n">BIO</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pyfile</span><span class="p">,</span> <span class="n">close_pyfile</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">&#39;rb&#39;</span><span class="p">):</span>
+ <span class="c1"># type: (Union[io.BytesIO, AnyStr], int, AnyStr) -&gt; None</span>
+ <span class="nb">super</span><span class="p">(</span><span class="n">File</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">pyfile</span><span class="p">,</span> <span class="n">six</span><span class="o">.</span><span class="n">string_types</span><span class="p">):</span>
+ <span class="n">pyfile</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">pyfile</span><span class="p">,</span> <span class="n">mode</span><span class="p">)</span>
+
+ <span class="c1"># This is for downward compatibility, but I don&#39;t think, that it is</span>
+ <span class="c1"># good practice to have two handles for the same file. Whats about</span>
+ <span class="c1"># concurrent write access? Last write, last wins? Especially since Py3</span>
+ <span class="c1"># has its own buffer management. See:</span>
+ <span class="c1">#</span>
+ <span class="c1"># https://docs.python.org/3.3/c-api/file.html</span>
+ <span class="c1">#</span>
+ <span class="n">pyfile</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fname</span> <span class="o">=</span> <span class="n">pyfile</span><span class="o">.</span><span class="n">name</span>
<span class="bp">self</span><span class="o">.</span><span class="n">pyfile</span> <span class="o">=</span> <span class="n">pyfile</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">close_pyfile</span> <span class="o">=</span> <span class="n">close_pyfile</span>
<span class="c1"># Be wary of https://github.com/openssl/openssl/pull/1925</span>
<span class="c1"># BIO_new_fd is NEVER to be used before OpenSSL 1.1.1</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="s2">&quot;bio_new_pyfd&quot;</span><span class="p">):</span>
@@ -295,30 +286,41 @@
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">bio</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_new_pyfile</span><span class="p">(</span><span class="n">pyfile</span><span class="p">,</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_noclose</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">close_pyfile</span> <span class="o">=</span> <span class="n">close_pyfile</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">closed</span> <span class="o">=</span> <span class="kc">False</span>
+
+<div class="viewcode-block" id="File.flush"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.File.flush">[docs]</a> <span class="k">def</span> <span class="nf">flush</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="c1"># type: () -&gt; None</span>
+ <span class="nb">super</span><span class="p">(</span><span class="n">File</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">pyfile</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="File.close"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.File.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">closed</span> <span class="o">=</span> <span class="mi">1</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
+ <span class="nb">super</span><span class="p">(</span><span class="n">File</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">close_pyfile</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">pyfile</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">pyfile</span><span class="o">.</span><span class="n">close</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="File.reset"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.File.reset">[docs]</a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Sets the bio to its initial state</span>
+ <span class="sd">&quot;&quot;&quot;Set the bio to its initial state.</span>
+
<span class="sd"> :return: 0 for success, and -1 for failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">File</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span>
+ <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">File</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span></div>
+
+ <span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">closed</span><span class="p">:</span>
+ <span class="n">m2</span><span class="o">.</span><span class="n">bio_free</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span></div>
+
-</div></div>
<div class="viewcode-block" id="openfile"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.openfile">[docs]</a><span class="k">def</span> <span class="nf">openfile</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">&#39;rb&#39;</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, AnyStr) -&gt; File</span>
- <span class="k">return</span> <span class="n">File</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">mode</span><span class="p">))</span>
+ <span class="k">return</span> <span class="n">File</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">mode</span><span class="p">))</span></div>
-</div>
-<div class="viewcode-block" id="IOBuffer"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.IOBuffer">[docs]</a><span class="k">class</span> <span class="nc">IOBuffer</span><span class="p">(</span><span class="n">BIO</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Object interface to BIO_f_buffer.</span>
+<div class="viewcode-block" id="IOBuffer"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.IOBuffer">[docs]</a><span class="k">class</span> <span class="nc">IOBuffer</span><span class="p">(</span><span class="n">BIO</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;Object interface to BIO_f_buffer.</span>
<span class="sd"> Its principal function is to be BIO_push()&#39;ed on top of a BIO_f_ssl, so</span>
<span class="sd"> that makefile() of said underlying SSL socket works.</span>
@@ -329,7 +331,7 @@
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">under_bio</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">&#39;rwb&#39;</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
<span class="c1"># type: (BIO, str, int) -&gt; None</span>
- <span class="n">BIO</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="n">_pyfree</span><span class="p">)</span>
+ <span class="nb">super</span><span class="p">(</span><span class="n">IOBuffer</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="n">_pyfree</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">io</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_new</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_f_buffer</span><span class="p">())</span>
<span class="bp">self</span><span class="o">.</span><span class="n">bio</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_push</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">io</span><span class="p">,</span> <span class="n">under_bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
<span class="c1"># This reference keeps the underlying BIO alive while we&#39;re not closed.</span>
@@ -347,14 +349,11 @@
<div class="viewcode-block" id="IOBuffer.close"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.IOBuffer.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="n">BIO</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
+ <span class="n">BIO</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div></div>
-</div></div>
-<div class="viewcode-block" id="CipherStream"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.CipherStream">[docs]</a><span class="k">class</span> <span class="nc">CipherStream</span><span class="p">(</span><span class="n">BIO</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Object interface to BIO_f_cipher.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
+<div class="viewcode-block" id="CipherStream"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.CipherStream">[docs]</a><span class="k">class</span> <span class="nc">CipherStream</span><span class="p">(</span><span class="n">BIO</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;Object interface to BIO_f_cipher.&quot;&quot;&quot;</span>
<span class="n">SALT_LEN</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">PKCS5_SALT_LEN</span>
@@ -363,7 +362,7 @@
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obio</span><span class="p">):</span>
<span class="c1"># type: (BIO) -&gt; None</span>
- <span class="n">BIO</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
+ <span class="nb">super</span><span class="p">(</span><span class="n">CipherStream</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">obio</span> <span class="o">=</span> <span class="n">obio</span>
<span class="bp">self</span><span class="o">.</span><span class="n">bio</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_new</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_f_cipher</span><span class="p">())</span>
<span class="bp">self</span><span class="o">.</span><span class="n">closed</span> <span class="o">=</span> <span class="mi">0</span>
@@ -377,16 +376,16 @@
<span class="c1"># type: () -&gt; None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">m2_bio_pop</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">m2_bio_free</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">closed</span> <span class="o">=</span> <span class="mi">1</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">closed</span> <span class="o">=</span> <span class="mi">1</span></div>
+
<div class="viewcode-block" id="CipherStream.write_close"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.CipherStream.write_close">[docs]</a> <span class="k">def</span> <span class="nf">write_close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">obio</span><span class="o">.</span><span class="n">write_close</span><span class="p">()</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">obio</span><span class="o">.</span><span class="n">write_close</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="CipherStream.set_cipher"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.CipherStream.set_cipher">[docs]</a> <span class="k">def</span> <span class="nf">set_cipher</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">iv</span><span class="p">,</span> <span class="n">op</span><span class="p">):</span>
<span class="c1"># type: (str, AnyStr, AnyStr, int) -&gt; None</span>
- <span class="n">cipher</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">cipher</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">cipher</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">cipher</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;unknown cipher&#39;</span><span class="p">,</span> <span class="n">algo</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span>
@@ -394,16 +393,15 @@
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">iv</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span>
<span class="n">iv</span> <span class="o">=</span> <span class="n">iv</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;utf8&#39;</span><span class="p">)</span>
<span class="n">m2</span><span class="o">.</span><span class="n">bio_set_cipher</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="n">cipher</span><span class="p">(),</span> <span class="n">key</span><span class="p">,</span> <span class="n">iv</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">op</span><span class="p">))</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">bio_push</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">obio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
+ <span class="n">m2</span><span class="o">.</span><span class="n">bio_push</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">obio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="SSLBio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.SSLBio">[docs]</a><span class="k">class</span> <span class="nc">SSLBio</span><span class="p">(</span><span class="n">BIO</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Object interface to BIO_f_ssl</span>
-<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="sd">&quot;&quot;&quot;Object interface to BIO_f_ssl.&quot;&quot;&quot;</span>
+
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; None</span>
- <span class="n">BIO</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="n">_pyfree</span><span class="p">)</span>
+ <span class="nb">super</span><span class="p">(</span><span class="n">SSLBio</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="n">_pyfree</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">bio</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_new</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_f_ssl</span><span class="p">())</span>
<span class="bp">self</span><span class="o">.</span><span class="n">closed</span> <span class="o">=</span> <span class="mi">0</span>
@@ -416,12 +414,11 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_pyfree</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">m2</span><span class="o">.</span><span class="n">bio_set_ssl</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">,</span> <span class="n">conn</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">close_flag</span><span class="p">)</span>
<span class="k">if</span> <span class="n">close_flag</span> <span class="o">==</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_noclose</span><span class="p">:</span>
- <span class="n">conn</span><span class="o">.</span><span class="n">set_ssl_close_flag</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_close</span><span class="p">)</span>
-</div>
+ <span class="n">conn</span><span class="o">.</span><span class="n">set_ssl_close_flag</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_close</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="SSLBio.do_handshake"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BIO.SSLBio.do_handshake">[docs]</a> <span class="k">def</span> <span class="nf">do_handshake</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Do the handshake.</span>
+ <span class="sd">&quot;&quot;&quot;Do the handshake.</span>
<span class="sd"> Return 1 if the handshake completes</span>
<span class="sd"> Return 0 or a negative number if there is a problem</span>
@@ -432,41 +429,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/BN.html b/doc/html/_modules/M2Crypto/BN.html
index 139fb19..5a6c2f4 100644
--- a/doc/html/_modules/M2Crypto/BN.html
+++ b/doc/html/_modules/M2Crypto/BN.html
@@ -1,55 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.BN &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.BN &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.BN</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">M2Crypto wrapper for OpenSSL BN (BIGNUM) API.</span>
@@ -57,9 +47,9 @@
<span class="sd">Copyright (c) 2005 Open Source Applications Foundation. All rights reserved.</span>
<span class="sd">&quot;&quot;&quot;</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
<div class="viewcode-block" id="rand"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BN.rand">[docs]</a><span class="k">def</span> <span class="nf">rand</span><span class="p">(</span><span class="n">bits</span><span class="p">,</span> <span class="n">top</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="n">bottom</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
@@ -73,9 +63,9 @@
<span class="sd"> bits will be 1.</span>
<span class="sd"> :param bottom: If bottom is true, the number will be odd.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bn_rand</span><span class="p">(</span><span class="n">bits</span><span class="p">,</span> <span class="n">top</span><span class="p">,</span> <span class="n">bottom</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bn_rand</span><span class="p">(</span><span class="n">bits</span><span class="p">,</span> <span class="n">top</span><span class="p">,</span> <span class="n">bottom</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="rand_range"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BN.rand_range">[docs]</a><span class="k">def</span> <span class="nf">rand_range</span><span class="p">(</span><span class="nb">range</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -84,9 +74,9 @@
<span class="sd"> :param range: Upper limit for range.</span>
<span class="sd"> :return: A random number in the range [0, range)</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bn_rand_range</span><span class="p">(</span><span class="nb">range</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">bn_rand_range</span><span class="p">(</span><span class="nb">range</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="randfname"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.BN.randfname">[docs]</a><span class="k">def</span> <span class="nf">randfname</span><span class="p">(</span><span class="n">length</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; str</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -112,41 +102,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/DH.html b/doc/html/_modules/M2Crypto/DH.html
index 20e4120..2f94b2e 100644
--- a/doc/html/_modules/M2Crypto/DH.html
+++ b/doc/html/_modules/M2Crypto/DH.html
@@ -1,77 +1,64 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.DH &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.DH &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.DH</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;M2Crypto wrapper for OpenSSL DH API.</span>
<span class="sd">Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.&quot;&quot;&quot;</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.util</span> <span class="kn">import</span> <span class="n">genparam_callback</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.util</span> <span class="k">import</span> <span class="n">genparam_callback</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span> <span class="c1"># noqa</span>
<div class="viewcode-block" id="DHError"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DH.DHError">[docs]</a><span class="k">class</span> <span class="nc">DHError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
- <span class="k">pass</span>
-</div>
+ <span class="k">pass</span></div>
+
<span class="n">m2</span><span class="o">.</span><span class="n">dh_init</span><span class="p">(</span><span class="n">DHError</span><span class="p">)</span>
<div class="viewcode-block" id="DH"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DH.DH">[docs]</a><span class="k">class</span> <span class="nc">DH</span><span class="p">:</span>
-
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Object interface to the Diffie-Hellman key exchange</span>
-<span class="sd"> protocol.</span>
+ <span class="sd">&quot;&quot;&quot;Object interface to the Diffie-Hellman key exchange protocol.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">m2_dh_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">dh_free</span>
@@ -108,7 +95,7 @@
<span class="k">elif</span> <span class="n">name</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;pub&#39;</span><span class="p">,</span> <span class="s1">&#39;priv&#39;</span><span class="p">):</span>
<span class="k">raise</span> <span class="n">DHError</span><span class="p">(</span><span class="s1">&#39;generate (pub, priv) via gen_key()&#39;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
+ <span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
<span class="k">def</span> <span class="nf">_ptr</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">dh</span>
@@ -116,52 +103,53 @@
<div class="viewcode-block" id="DH.check_params"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DH.DH.check_params">[docs]</a> <span class="k">def</span> <span class="nf">check_params</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">dh_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dh</span><span class="p">),</span> <span class="s2">&quot;&#39;dh&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dh_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dh</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dh_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dh</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="DH.gen_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DH.DH.gen_key">[docs]</a> <span class="k">def</span> <span class="nf">gen_key</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">dh_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dh</span><span class="p">),</span> <span class="s2">&quot;&#39;dh&#39; type error&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">dh_generate_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dh</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">dh_generate_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dh</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="DH.compute_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DH.DH.compute_key">[docs]</a> <span class="k">def</span> <span class="nf">compute_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pubkey</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; bytes</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">dh_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dh</span><span class="p">),</span> <span class="s2">&quot;&#39;dh&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dh_compute_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dh</span><span class="p">,</span> <span class="n">pubkey</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dh_compute_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dh</span><span class="p">,</span> <span class="n">pubkey</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="DH.print_params"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DH.DH.print_params">[docs]</a> <span class="k">def</span> <span class="nf">print_params</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bio</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO) -&gt; int</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">dh_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dh</span><span class="p">),</span> <span class="s2">&quot;&#39;dh&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dhparams_print</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">dh</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dhparams_print</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">dh</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="gen_params"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DH.gen_params">[docs]</a><span class="k">def</span> <span class="nf">gen_params</span><span class="p">(</span><span class="n">plen</span><span class="p">,</span> <span class="n">g</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">genparam_callback</span><span class="p">):</span>
<span class="c1"># type: (int, int, Optional[Callable]) -&gt; DH</span>
<span class="n">dh_parms</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">dh_generate_parameters</span><span class="p">(</span><span class="n">plen</span><span class="p">,</span> <span class="n">g</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
<span class="n">dh_obj</span> <span class="o">=</span> <span class="n">DH</span><span class="p">(</span><span class="n">dh_parms</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">dh_obj</span>
+ <span class="k">return</span> <span class="n">dh_obj</span></div>
-</div>
-<div class="viewcode-block" id="load_params"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DH.load_params">[docs]</a><span class="k">def</span> <span class="nf">load_params</span><span class="p">(</span><span class="nb">file</span><span class="p">):</span>
+
+<div class="viewcode-block" id="load_params"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DH.load_params">[docs]</a><span class="k">def</span> <span class="nf">load_params</span><span class="p">(</span><span class="n">file</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; DH</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">load_params_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">)</span>
-</div>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">load_params_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">)</span></div>
+
+
<div class="viewcode-block" id="load_params_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DH.load_params_bio">[docs]</a><span class="k">def</span> <span class="nf">load_params_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO) -&gt; DH</span>
- <span class="k">return</span> <span class="n">DH</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">dh_read_parameters</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">()),</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">DH</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">dh_read_parameters</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">()),</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="set_params"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DH.set_params">[docs]</a><span class="k">def</span> <span class="nf">set_params</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">g</span><span class="p">):</span>
<span class="c1"># type: (bytes, bytes) -&gt; DH</span>
<span class="n">dh</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">dh_new</span><span class="p">()</span>
<span class="n">m2</span><span class="o">.</span><span class="n">dh_set_pg</span><span class="p">(</span><span class="n">dh</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="n">g</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">DH</span><span class="p">(</span><span class="n">dh</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">DH</span><span class="p">(</span><span class="n">dh</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
<span class="c1"># def free_params(cptr):</span>
<span class="c1"># m2.dh_free(cptr)</span>
-</div>
+
<span class="n">DH_GENERATOR_2</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">DH_GENERATOR_2</span>
<span class="n">DH_GENERATOR_5</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">DH_GENERATOR_5</span>
</pre></div>
@@ -169,41 +157,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/DSA.html b/doc/html/_modules/M2Crypto/DSA.html
index 680b32e..902b028 100644
--- a/doc/html/_modules/M2Crypto/DSA.html
+++ b/doc/html/_modules/M2Crypto/DSA.html
@@ -1,55 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.DSA &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.DSA &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.DSA</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span><span class="p">,</span> <span class="n">print_function</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span><span class="p">,</span> <span class="n">print_function</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> M2Crypto wrapper for OpenSSL DSA API.</span>
@@ -60,14 +50,14 @@
<span class="sd"> Copyright (C) 2004 OSAF. All Rights Reserved.</span>
<span class="sd">&quot;&quot;&quot;</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Tuple</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Tuple</span> <span class="c1"># noqa</span>
<div class="viewcode-block" id="DSAError"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSAError">[docs]</a><span class="k">class</span> <span class="nc">DSAError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
- <span class="k">pass</span>
-</div>
+ <span class="k">pass</span></div>
+
<span class="n">m2</span><span class="o">.</span><span class="n">dsa_init</span><span class="p">(</span><span class="n">DSAError</span><span class="p">)</span>
@@ -146,7 +136,7 @@
<span class="k">elif</span> <span class="n">name</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;pub&#39;</span><span class="p">,</span> <span class="s1">&#39;priv&#39;</span><span class="p">]:</span>
<span class="k">raise</span> <span class="n">DSAError</span><span class="p">(</span><span class="s1">&#39;generate (pub, priv) via gen_key()&#39;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
+ <span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
<div class="viewcode-block" id="DSA.set_params"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSA.set_params">[docs]</a> <span class="k">def</span> <span class="nf">set_params</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">g</span><span class="p">):</span>
<span class="c1"># type: (bytes, bytes, bytes) -&gt; None</span>
@@ -166,16 +156,16 @@
<span class="sd"> unsafe to use this method. It is better to use</span>
<span class="sd"> gen_params function to create a new DSA object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">dsa_set_pqg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">g</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">dsa_set_pqg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">g</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="DSA.gen_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSA.gen_key">[docs]</a> <span class="k">def</span> <span class="nf">gen_key</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Generate a key pair.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">),</span> <span class="s2">&quot;&#39;dsa&#39; type error&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">dsa_gen_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">dsa_gen_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="DSA.save_params"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSA.save_params">[docs]</a> <span class="k">def</span> <span class="nf">save_params</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -187,8 +177,8 @@
<span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
<span class="n">ret</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_write_params_bio</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">ret</span>
-</div>
+ <span class="k">return</span> <span class="n">ret</span></div>
+
<div class="viewcode-block" id="DSA.save_params_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSA.save_params_bio">[docs]</a> <span class="k">def</span> <span class="nf">save_params_bio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bio</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -197,8 +187,8 @@
<span class="sd"> :param bio: Save DSA parameters to this object.</span>
<span class="sd"> :return: 1 (true) if successful</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_write_params_bio</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_write_params_bio</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="DSA.save_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSA.save_key">[docs]</a> <span class="k">def</span> <span class="nf">save_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">cipher</span><span class="o">=</span><span class="s1">&#39;aes_128_cbc&#39;</span><span class="p">,</span>
<span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, str, Callable) -&gt; int</span>
@@ -213,8 +203,8 @@
<span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
<span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">save_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">ret</span>
-</div>
+ <span class="k">return</span> <span class="n">ret</span></div>
+
<div class="viewcode-block" id="DSA.save_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSA.save_key_bio">[docs]</a> <span class="k">def</span> <span class="nf">save_key_bio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bio</span><span class="p">,</span> <span class="n">cipher</span><span class="o">=</span><span class="s1">&#39;aes_128_cbc&#39;</span><span class="p">,</span>
<span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, str, Callable) -&gt; int</span>
@@ -226,17 +216,17 @@
<span class="sd"> to encrypt the private key.</span>
<span class="sd"> :return: 1 (true) if successful</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">cipher</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cipher</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_write_key_bio_no_cipher</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span>
<span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">callback</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
- <span class="n">ciph</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">ciph</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">ciph</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">ciph</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">DSAError</span><span class="p">(</span><span class="s1">&#39;no such cipher: </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">cipher</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">ciph</span> <span class="o">=</span> <span class="n">ciph</span><span class="p">()</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_write_key_bio</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">ciph</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_write_key_bio</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">ciph</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="DSA.save_pub_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSA.save_pub_key">[docs]</a> <span class="k">def</span> <span class="nf">save_pub_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -249,8 +239,8 @@
<span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
<span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">save_pub_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">ret</span>
-</div>
+ <span class="k">return</span> <span class="n">ret</span></div>
+
<div class="viewcode-block" id="DSA.save_pub_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSA.save_pub_key_bio">[docs]</a> <span class="k">def</span> <span class="nf">save_pub_key_bio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bio</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -260,8 +250,8 @@
<span class="sd"> to this object.</span>
<span class="sd"> :return: 1 (true) if successful</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_write_pub_key_bio</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_write_pub_key_bio</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="DSA.sign"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSA.sign">[docs]</a> <span class="k">def</span> <span class="nf">sign</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">digest</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; Tuple[bytes, bytes]</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -273,8 +263,8 @@
<span class="sd"> both &quot;byte strings&quot;.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_key</span><span class="p">(),</span> <span class="s1">&#39;key is not initialised&#39;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_sign</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">digest</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_sign</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">digest</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="DSA.verify"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSA.verify">[docs]</a> <span class="k">def</span> <span class="nf">verify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="n">s</span><span class="p">):</span>
<span class="c1"># type: (bytes, bytes, bytes) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -288,16 +278,16 @@
<span class="sd"> :return: 1 (true) if verify succeeded, 0 if failed</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_key</span><span class="p">(),</span> <span class="s1">&#39;key is not initialised&#39;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_verify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="n">s</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_verify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="n">s</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="DSA.sign_asn1"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSA.sign_asn1">[docs]</a> <span class="k">def</span> <span class="nf">sign_asn1</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">digest</span><span class="p">):</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_key</span><span class="p">(),</span> <span class="s1">&#39;key is not initialised&#39;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_sign_asn1</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">digest</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_sign_asn1</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">digest</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="DSA.verify_asn1"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSA.verify_asn1">[docs]</a> <span class="k">def</span> <span class="nf">verify_asn1</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">blob</span><span class="p">):</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_key</span><span class="p">(),</span> <span class="s1">&#39;key is not initialised&#39;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_verify_asn1</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">blob</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_verify_asn1</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">blob</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="DSA.check_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSA.check_key">[docs]</a> <span class="k">def</span> <span class="nf">check_key</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check to be sure the DSA object has a valid private key.</span>
@@ -305,9 +295,9 @@
<span class="sd"> :return: 1 (true) if a valid private key</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">),</span> <span class="s2">&quot;&#39;dsa&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_check_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_check_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="DSA_pub"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSA_pub">[docs]</a><span class="k">class</span> <span class="nc">DSA_pub</span><span class="p">(</span><span class="n">DSA</span><span class="p">):</span> <span class="c1"># noqa</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -318,9 +308,9 @@
<span class="sd"> &quot;&quot;&quot;</span>
<div class="viewcode-block" id="DSA_pub.sign"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSA_pub.sign">[docs]</a> <span class="k">def</span> <span class="nf">sign</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">argv</span><span class="p">):</span>
- <span class="c1"># type: (Any) -&gt; None</span>
- <span class="k">raise</span> <span class="n">DSAError</span><span class="p">(</span><span class="s1">&#39;DSA_pub object has no private key&#39;</span><span class="p">)</span>
-</div>
+ <span class="c1"># type: (*Any) -&gt; None</span>
+ <span class="k">raise</span> <span class="n">DSAError</span><span class="p">(</span><span class="s1">&#39;DSA_pub object has no private key&#39;</span><span class="p">)</span></div>
+
<span class="n">sign_asn1</span> <span class="o">=</span> <span class="n">sign</span>
<div class="viewcode-block" id="DSA_pub.check_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.DSA_pub.check_key">[docs]</a> <span class="k">def</span> <span class="nf">check_key</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
@@ -328,16 +318,16 @@
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> :return: does DSA_pub contain a pub key?</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_check_pub_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_check_pub_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dsa</span><span class="p">)</span></div>
+
<span class="n">save_key</span> <span class="o">=</span> <span class="n">DSA</span><span class="o">.</span><span class="n">save_pub_key</span>
- <span class="n">save_key_bio</span> <span class="o">=</span> <span class="n">DSA</span><span class="o">.</span><span class="n">save_pub_key_bio</span>
+ <span class="n">save_key_bio</span> <span class="o">=</span> <span class="n">DSA</span><span class="o">.</span><span class="n">save_pub_key_bio</span></div>
<span class="c1"># --------------------------------------------------------------</span>
<span class="c1"># factories and other functions</span>
-</div>
+
<div class="viewcode-block" id="gen_params"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.gen_params">[docs]</a><span class="k">def</span> <span class="nf">gen_params</span><span class="p">(</span><span class="n">bits</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">genparam_callback</span><span class="p">):</span>
<span class="c1"># type: (int, Callable) -&gt; DSA</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -352,11 +342,11 @@
<span class="sd"> :return: instance of DSA.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">dsa</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_generate_parameters</span><span class="p">(</span><span class="n">bits</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">dsa</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">dsa</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">DSAError</span><span class="p">(</span><span class="s1">&#39;problem generating DSA parameters&#39;</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">DSA</span><span class="p">(</span><span class="n">dsa</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">DSA</span><span class="p">(</span><span class="n">dsa</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="set_params"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.set_params">[docs]</a><span class="k">def</span> <span class="nf">set_params</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">g</span><span class="p">):</span>
<span class="c1"># type: (bytes, bytes, bytes) -&gt; DSA</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -370,10 +360,10 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">dsa</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_new</span><span class="p">()</span>
<span class="n">m2</span><span class="o">.</span><span class="n">dsa_set_pqg</span><span class="p">(</span><span class="n">dsa</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">g</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">DSA</span><span class="p">(</span><span class="n">dsa</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">DSA</span><span class="p">(</span><span class="n">dsa</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
-</div>
-<div class="viewcode-block" id="load_params"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.load_params">[docs]</a><span class="k">def</span> <span class="nf">load_params</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
+
+<div class="viewcode-block" id="load_params"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.load_params">[docs]</a><span class="k">def</span> <span class="nf">load_params</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, Callable) -&gt; DSA</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Factory function that instantiates a DSA object with DSA</span>
@@ -386,12 +376,12 @@
<span class="sd"> passphrase-protected.</span>
<span class="sd"> :return: instance of DSA.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
<span class="n">ret</span> <span class="o">=</span> <span class="n">load_params_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">ret</span>
+ <span class="k">return</span> <span class="n">ret</span></div>
+
-</div>
<div class="viewcode-block" id="load_params_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.load_params_bio">[docs]</a><span class="k">def</span> <span class="nf">load_params_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, Callable) -&gt; DSA</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -406,12 +396,12 @@
<span class="sd"> :return: instance of DSA.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">dsa</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_read_params</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">callback</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">dsa</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">dsa</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">DSAError</span><span class="p">(</span><span class="s1">&#39;problem loading DSA parameters&#39;</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">DSA</span><span class="p">(</span><span class="n">dsa</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">DSA</span><span class="p">(</span><span class="n">dsa</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
-</div>
-<div class="viewcode-block" id="load_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.load_key">[docs]</a><span class="k">def</span> <span class="nf">load_key</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
+
+<div class="viewcode-block" id="load_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.load_key">[docs]</a><span class="k">def</span> <span class="nf">load_key</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, Callable) -&gt; DSA</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Factory function that instantiates a DSA object from a</span>
@@ -424,12 +414,12 @@
<span class="sd"> passphrase-protected.</span>
<span class="sd"> :return: instance of DSA.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
<span class="n">ret</span> <span class="o">=</span> <span class="n">load_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">ret</span>
+ <span class="k">return</span> <span class="n">ret</span></div>
+
-</div>
<div class="viewcode-block" id="load_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.load_key_bio">[docs]</a><span class="k">def</span> <span class="nf">load_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, Callable) -&gt; DSA</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -446,9 +436,9 @@
<span class="n">dsa</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_read_key</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">callback</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">dsa</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">DSAError</span><span class="p">(</span><span class="s1">&#39;problem loading DSA key pair&#39;</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">DSA</span><span class="p">(</span><span class="n">dsa</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">DSA</span><span class="p">(</span><span class="n">dsa</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="pub_key_from_params"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.pub_key_from_params">[docs]</a><span class="k">def</span> <span class="nf">pub_key_from_params</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">g</span><span class="p">,</span> <span class="n">pub</span><span class="p">):</span>
<span class="c1"># type: (bytes, bytes, bytes, bytes) -&gt; DSA_pub</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -464,10 +454,10 @@
<span class="n">dsa</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">dsa_new</span><span class="p">()</span>
<span class="n">m2</span><span class="o">.</span><span class="n">dsa_set_pqg</span><span class="p">(</span><span class="n">dsa</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">g</span><span class="p">)</span>
<span class="n">m2</span><span class="o">.</span><span class="n">dsa_set_pub</span><span class="p">(</span><span class="n">dsa</span><span class="p">,</span> <span class="n">pub</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">DSA_pub</span><span class="p">(</span><span class="n">dsa</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">DSA_pub</span><span class="p">(</span><span class="n">dsa</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
-</div>
-<div class="viewcode-block" id="load_pub_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.load_pub_key">[docs]</a><span class="k">def</span> <span class="nf">load_pub_key</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
+
+<div class="viewcode-block" id="load_pub_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.load_pub_key">[docs]</a><span class="k">def</span> <span class="nf">load_pub_key</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, Callable) -&gt; DSA_pub</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Factory function that instantiates a DSA_pub object using</span>
@@ -481,12 +471,12 @@
<span class="sd"> passphrase-protected.</span>
<span class="sd"> :return: instance of DSA_pub.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
<span class="n">ret</span> <span class="o">=</span> <span class="n">load_pub_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">ret</span>
+ <span class="k">return</span> <span class="n">ret</span></div>
+
-</div>
<div class="viewcode-block" id="load_pub_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.DSA.load_pub_key_bio">[docs]</a><span class="k">def</span> <span class="nf">load_pub_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, Callable) -&gt; DSA_pub</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -510,41 +500,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/EC.html b/doc/html/_modules/M2Crypto/EC.html
index 65e6690..c252714 100644
--- a/doc/html/_modules/M2Crypto/EC.html
+++ b/doc/html/_modules/M2Crypto/EC.html
@@ -1,55 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.EC &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.EC &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.EC</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">M2Crypto wrapper for OpenSSL ECDH/ECDSA API.</span>
@@ -61,16 +51,16 @@
<span class="sd">Portions copyright (c) 2005-2006 Vrije Universiteit Amsterdam.</span>
<span class="sd">All rights reserved.&quot;&quot;&quot;</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">Err</span><span class="p">,</span> <span class="n">EVP</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Union</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Union</span> <span class="c1"># noqa</span>
<span class="n">EC_Key</span> <span class="o">=</span> <span class="nb">bytes</span>
<div class="viewcode-block" id="ECError"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.ECError">[docs]</a><span class="k">class</span> <span class="nc">ECError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
- <span class="k">pass</span>
-</div>
+ <span class="k">pass</span></div>
+
<span class="n">m2</span><span class="o">.</span><span class="n">ec_init</span><span class="p">(</span><span class="n">ECError</span><span class="p">)</span>
<span class="c1"># Curve identifier constants</span>
@@ -214,13 +204,13 @@
<span class="sd"> to create an EC key pair.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">),</span> <span class="s2">&quot;&#39;ec&#39; type error&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_gen_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_gen_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="EC.pub"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC.pub">[docs]</a> <span class="k">def</span> <span class="nf">pub</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; EC_pub</span>
<span class="c1"># Don&#39;t let python free</span>
- <span class="k">return</span> <span class="n">EC_pub</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">EC_pub</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="EC.sign_dsa"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC.sign_dsa">[docs]</a> <span class="k">def</span> <span class="nf">sign_dsa</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">digest</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; Tuple[bytes, bytes]</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -228,8 +218,8 @@
<span class="sd"> ECDSA signature parameters.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">_check_key_type</span><span class="p">(),</span> <span class="s2">&quot;&#39;ec&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ecdsa_sign</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">digest</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ecdsa_sign</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">digest</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="EC.verify_dsa"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC.verify_dsa">[docs]</a> <span class="k">def</span> <span class="nf">verify_dsa</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="n">s</span><span class="p">):</span>
<span class="c1"># type: (bytes, bytes, bytes) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -237,17 +227,17 @@
<span class="sd"> signature parameters.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">_check_key_type</span><span class="p">(),</span> <span class="s2">&quot;&#39;ec&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ecdsa_verify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="n">s</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ecdsa_verify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="n">s</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="EC.sign_dsa_asn1"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC.sign_dsa_asn1">[docs]</a> <span class="k">def</span> <span class="nf">sign_dsa_asn1</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">digest</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; bytes</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">_check_key_type</span><span class="p">(),</span> <span class="s2">&quot;&#39;ec&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ecdsa_sign_asn1</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">digest</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ecdsa_sign_asn1</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">digest</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="EC.verify_dsa_asn1"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC.verify_dsa_asn1">[docs]</a> <span class="k">def</span> <span class="nf">verify_dsa_asn1</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">blob</span><span class="p">):</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">_check_key_type</span><span class="p">(),</span> <span class="s2">&quot;&#39;ec&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ecdsa_verify_asn1</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">blob</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ecdsa_verify_asn1</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">blob</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="EC.compute_dh_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC.compute_dh_key">[docs]</a> <span class="k">def</span> <span class="nf">compute_dh_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pub_key</span><span class="p">):</span>
<span class="c1"># type: (EC) -&gt; Optional[bytes]</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -257,8 +247,8 @@
<span class="sd"> applied.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_key</span><span class="p">(),</span> <span class="s1">&#39;key is not initialised&#39;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ecdh_compute_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">pub_key</span><span class="o">.</span><span class="n">ec</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ecdh_compute_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">pub_key</span><span class="o">.</span><span class="n">ec</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="EC.save_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC.save_key_bio">[docs]</a> <span class="k">def</span> <span class="nf">save_key_bio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bio</span><span class="p">,</span> <span class="n">cipher</span><span class="o">=</span><span class="s1">&#39;aes_128_cbc&#39;</span><span class="p">,</span>
<span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, Optional[str], Callable) -&gt; int</span>
@@ -276,15 +266,15 @@
<span class="sd"> the key. The default is</span>
<span class="sd"> util.passphrase_callback.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">cipher</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cipher</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_write_bio_no_cipher</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">callback</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
- <span class="n">ciph</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">ciph</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">ciph</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">ciph</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;not such cipher </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">cipher</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_write_bio</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">ciph</span><span class="p">(),</span> <span class="n">callback</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="EC.save_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC.save_key">[docs]</a> <span class="k">def</span> <span class="nf">save_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">file</span><span class="p">,</span> <span class="n">cipher</span><span class="o">=</span><span class="s1">&#39;aes_128_cbc&#39;</span><span class="p">,</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_write_bio</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">ciph</span><span class="p">(),</span> <span class="n">callback</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="EC.save_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC.save_key">[docs]</a> <span class="k">def</span> <span class="nf">save_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file</span><span class="p">,</span> <span class="n">cipher</span><span class="o">=</span><span class="s1">&#39;aes_128_cbc&#39;</span><span class="p">,</span>
<span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, Optional[str], Callable) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -301,9 +291,9 @@
<span class="sd"> the key. The default is</span>
<span class="sd"> util.passphrase_callback.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">save_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
-</div>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">save_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="EC.save_pub_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC.save_pub_key_bio">[docs]</a> <span class="k">def</span> <span class="nf">save_pub_key_bio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bio</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -311,18 +301,18 @@
<span class="sd"> :param bio: M2Crypto.BIO.BIO object to save key to.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_write_pubkey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
-<div class="viewcode-block" id="EC.save_pub_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC.save_pub_key">[docs]</a> <span class="k">def</span> <span class="nf">save_pub_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">file</span><span class="p">):</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_write_pubkey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
+<div class="viewcode-block" id="EC.save_pub_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC.save_pub_key">[docs]</a> <span class="k">def</span> <span class="nf">save_pub_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Save the public key to a filename in PEM format.</span>
<span class="sd"> :param file: Name of filename to save key to.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_write_pubkey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_write_pubkey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="EC.as_pem"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC.as_pem">[docs]</a> <span class="k">def</span> <span class="nf">as_pem</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cipher</span><span class="o">=</span><span class="s1">&#39;aes_128_cbc&#39;</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Returns the key(pair) as a string in PEM format.</span>
@@ -331,8 +321,8 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">()</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">save_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">bio</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
-</div>
+ <span class="k">return</span> <span class="n">bio</span><span class="o">.</span><span class="n">read</span><span class="p">()</span></div>
+
<span class="k">def</span> <span class="nf">_check_key_type</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">)</span>
@@ -340,9 +330,9 @@
<div class="viewcode-block" id="EC.check_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC.check_key">[docs]</a> <span class="k">def</span> <span class="nf">check_key</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">),</span> <span class="s2">&quot;&#39;ec&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_check_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_check_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="EC_pub"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC_pub">[docs]</a><span class="k">class</span> <span class="nc">EC_pub</span><span class="p">(</span><span class="n">EC</span><span class="p">):</span> <span class="c1"># noqa</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -351,8 +341,8 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ec</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (EC, int) -&gt; None</span>
- <span class="n">EC</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ec</span><span class="p">,</span> <span class="n">_pyfree</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">der</span> <span class="o">=</span> <span class="bp">None</span> <span class="c1"># type: Optional[bytes]</span>
+ <span class="n">EC</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ec</span><span class="p">,</span> <span class="n">_pyfree</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">der</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1"># type: Optional[bytes]</span>
<div class="viewcode-block" id="EC_pub.get_der"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC_pub.get_der">[docs]</a> <span class="k">def</span> <span class="nf">get_der</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
@@ -360,23 +350,23 @@
<span class="sd"> Returns the public key in DER format as a buffer object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_key</span><span class="p">(),</span> <span class="s1">&#39;key is not initialised&#39;</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">der</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">der</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">der</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_get_public_der</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">)</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">der</span>
-</div>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">der</span></div>
+
<div class="viewcode-block" id="EC_pub.get_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.EC_pub.get_key">[docs]</a> <span class="k">def</span> <span class="nf">get_key</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Returns the public key as a byte string.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_key</span><span class="p">(),</span> <span class="s1">&#39;key is not initialised&#39;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_get_public_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_get_public_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ec</span><span class="p">)</span></div>
+
<span class="n">save_key</span> <span class="o">=</span> <span class="n">EC</span><span class="o">.</span><span class="n">save_pub_key</span>
- <span class="n">save_key_bio</span> <span class="o">=</span> <span class="n">EC</span><span class="o">.</span><span class="n">save_pub_key_bio</span>
+ <span class="n">save_key_bio</span> <span class="o">=</span> <span class="n">EC</span><span class="o">.</span><span class="n">save_pub_key_bio</span></div>
+
-</div>
<div class="viewcode-block" id="gen_params"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.gen_params">[docs]</a><span class="k">def</span> <span class="nf">gen_params</span><span class="p">(</span><span class="n">curve</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; EC</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -388,10 +378,10 @@
<span class="k">assert</span> <span class="n">curve</span> <span class="ow">in</span> <span class="p">[</span><span class="n">x</span><span class="p">[</span><span class="s1">&#39;NID&#39;</span><span class="p">]</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_get_builtin_curves</span><span class="p">()],</span> \
<span class="s1">&#39;Elliptic curve </span><span class="si">%s</span><span class="s1"> is not available on this system.&#39;</span> <span class="o">%</span> \
<span class="n">m2</span><span class="o">.</span><span class="n">obj_nid2sn</span><span class="p">(</span><span class="n">curve</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">EC</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ec_key_new_by_curve_name</span><span class="p">(</span><span class="n">curve</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">EC</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ec_key_new_by_curve_name</span><span class="p">(</span><span class="n">curve</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span></div>
-</div>
-<div class="viewcode-block" id="load_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.load_key">[docs]</a><span class="k">def</span> <span class="nf">load_key</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
+
+<div class="viewcode-block" id="load_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.load_key">[docs]</a><span class="k">def</span> <span class="nf">load_key</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, Callable) -&gt; EC</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Factory function that instantiates a EC object.</span>
@@ -402,10 +392,10 @@
<span class="sd"> :param callback: Python callback object that will be invoked</span>
<span class="sd"> if the EC key pair is passphrase-protected.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">load_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">load_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="load_key_string"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.load_key_string">[docs]</a><span class="k">def</span> <span class="nf">load_key_string</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (str, Callable) -&gt; EC</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -420,9 +410,9 @@
<span class="sd"> :return: M2Crypto.EC.EC object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">(</span><span class="n">string</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">load_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">load_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="load_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.load_key_bio">[docs]</a><span class="k">def</span> <span class="nf">load_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, Callable) -&gt; EC</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -434,10 +424,10 @@
<span class="sd"> :param callback: Python callback object that will be invoked</span>
<span class="sd"> if the EC key pair is passphrase-protected.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">EC</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ec_key_read_bio</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">callback</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">EC</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ec_key_read_bio</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">callback</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span></div>
-</div>
-<div class="viewcode-block" id="load_pub_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.load_pub_key">[docs]</a><span class="k">def</span> <span class="nf">load_pub_key</span><span class="p">(</span><span class="nb">file</span><span class="p">):</span>
+
+<div class="viewcode-block" id="load_pub_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.load_pub_key">[docs]</a><span class="k">def</span> <span class="nf">load_pub_key</span><span class="p">(</span><span class="n">file</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; EC_pub</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Load an EC public key from filename.</span>
@@ -447,10 +437,10 @@
<span class="sd"> :return: M2Crypto.EC.EC_pub object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">load_pub_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">)</span>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">load_pub_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="load_key_string_pubkey"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.load_key_string_pubkey">[docs]</a><span class="k">def</span> <span class="nf">load_key_string_pubkey</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (str, Callable) -&gt; PKey</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -465,9 +455,9 @@
<span class="sd"> :return: M2Crypto.EC.PKey object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">(</span><span class="n">string</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">load_key_bio_pubkey</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">EVP</span><span class="o">.</span><span class="n">load_key_bio_pubkey</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="load_pub_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.load_pub_key_bio">[docs]</a><span class="k">def</span> <span class="nf">load_pub_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO) -&gt; EC_pub</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -479,32 +469,32 @@
<span class="sd"> :return: M2Crypto.EC.EC_pub object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">ec</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_key_read_pubkey</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
- <span class="k">if</span> <span class="n">ec</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">ec</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">ec_error</span><span class="p">()</span>
- <span class="k">return</span> <span class="n">EC_pub</span><span class="p">(</span><span class="n">ec</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">EC_pub</span><span class="p">(</span><span class="n">ec</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="ec_error"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.ec_error">[docs]</a><span class="k">def</span> <span class="nf">ec_error</span><span class="p">():</span>
<span class="c1"># type: () -&gt; ECError</span>
- <span class="k">raise</span> <span class="n">ECError</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">err_reason_error_string</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">err_get_error</span><span class="p">()))</span>
+ <span class="k">raise</span> <span class="n">ECError</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error_message</span><span class="p">())</span></div>
+
-</div>
<div class="viewcode-block" id="pub_key_from_der"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.pub_key_from_der">[docs]</a><span class="k">def</span> <span class="nf">pub_key_from_der</span><span class="p">(</span><span class="n">der</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; EC_pub</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Create EC_pub from DER.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">EC_pub</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ec_key_from_pubkey_der</span><span class="p">(</span><span class="n">der</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">EC_pub</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ec_key_from_pubkey_der</span><span class="p">(</span><span class="n">der</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="pub_key_from_params"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.pub_key_from_params">[docs]</a><span class="k">def</span> <span class="nf">pub_key_from_params</span><span class="p">(</span><span class="n">curve</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span>
<span class="c1"># type: (bytes, bytes) -&gt; EC_pub</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Create EC_pub from curve name and octet string.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">EC_pub</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ec_key_from_pubkey_params</span><span class="p">(</span><span class="n">curve</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">EC_pub</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ec_key_from_pubkey_params</span><span class="p">(</span><span class="n">curve</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="get_builtin_curves"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EC.get_builtin_curves">[docs]</a><span class="k">def</span> <span class="nf">get_builtin_curves</span><span class="p">():</span>
<span class="c1"># type: () -&gt; Tuple[Dict[str, Union[int, str]]]</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ec_get_builtin_curves</span><span class="p">()</span></div>
@@ -513,41 +503,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/EVP.html b/doc/html/_modules/M2Crypto/EVP.html
index 4c7d6e0..61dd3f9 100644
--- a/doc/html/_modules/M2Crypto/EVP.html
+++ b/doc/html/_modules/M2Crypto/EVP.html
@@ -1,55 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.EVP &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.EVP &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.EVP</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;M2Crypto wrapper for OpenSSL EVP API.</span>
@@ -59,14 +49,14 @@
<span class="sd">Author: Heikki Toivonen</span>
<span class="sd">&quot;&quot;&quot;</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">Err</span><span class="p">,</span> <span class="n">RSA</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">Err</span><span class="p">,</span> <span class="n">RSA</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Callable</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Callable</span> <span class="c1"># noqa</span>
<div class="viewcode-block" id="EVPError"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.EVPError">[docs]</a><span class="k">class</span> <span class="nc">EVPError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
- <span class="k">pass</span>
-</div>
+ <span class="k">pass</span></div>
+
<span class="n">m2</span><span class="o">.</span><span class="n">evp_init</span><span class="p">(</span><span class="n">EVPError</span><span class="p">)</span>
@@ -81,9 +71,9 @@
<span class="sd"> :param keylen: Length of key to produce.</span>
<span class="sd"> :return: Key.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs5_pbkdf2_hmac_sha1</span><span class="p">(</span><span class="n">password</span><span class="p">,</span> <span class="n">salt</span><span class="p">,</span> <span class="nb">iter</span><span class="p">,</span> <span class="n">keylen</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs5_pbkdf2_hmac_sha1</span><span class="p">(</span><span class="n">password</span><span class="p">,</span> <span class="n">salt</span><span class="p">,</span> <span class="nb">iter</span><span class="p">,</span> <span class="n">keylen</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="MessageDigest"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.MessageDigest">[docs]</a><span class="k">class</span> <span class="nc">MessageDigest</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Message Digest</span>
@@ -92,12 +82,12 @@
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">algo</span><span class="p">):</span>
<span class="c1"># type: (str) -&gt; None</span>
- <span class="n">md</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="c1"># type: Optional[Callable]</span>
- <span class="k">if</span> <span class="n">md</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">md</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="c1"># type: Optional[Callable]</span>
+ <span class="k">if</span> <span class="n">md</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="c1"># if the digest algorithm isn&#39;t found as an attribute of the m2</span>
<span class="c1"># module, try to look up the digest using get_digestbyname()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">md</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">get_digestbyname</span><span class="p">(</span><span class="n">algo</span><span class="p">)</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">md</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">md</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;unknown algorithm&#39;</span><span class="p">,</span> <span class="n">algo</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">md</span> <span class="o">=</span> <span class="n">md</span><span class="p">()</span>
@@ -106,7 +96,7 @@
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;ctx&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">):</span>
+ <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;ctx&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">m2_md_ctx_free</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
<div class="viewcode-block" id="MessageDigest.update"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.MessageDigest.update">[docs]</a> <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
@@ -116,23 +106,23 @@
<span class="sd"> :return: -1 for Python error, 1 for success, 0 for OpenSSL failure.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">digest_update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">digest_update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="MessageDigest.final"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.MessageDigest.final">[docs]</a> <span class="k">def</span> <span class="nf">final</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">digest_final</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">digest_final</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span></div>
+
+ <span class="c1"># Deprecated.</span>
+ <span class="n">digest</span> <span class="o">=</span> <span class="n">final</span></div>
- <span class="c1"># Deprecated.</span></div>
- <span class="n">digest</span> <span class="o">=</span> <span class="n">final</span>
-</div>
<div class="viewcode-block" id="HMAC"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.HMAC">[docs]</a><span class="k">class</span> <span class="nc">HMAC</span><span class="p">:</span>
<span class="n">m2_hmac_ctx_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">hmac_ctx_free</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">algo</span><span class="o">=</span><span class="s1">&#39;sha1&#39;</span><span class="p">):</span>
<span class="c1"># type: (bytes, str) -&gt; None</span>
- <span class="n">md</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">md</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">md</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">md</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;unknown algorithm&#39;</span><span class="p">,</span> <span class="n">algo</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">md</span> <span class="o">=</span> <span class="n">md</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ctx</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">hmac_ctx_new</span><span class="p">()</span>
@@ -140,46 +130,46 @@
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;ctx&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">):</span>
+ <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;ctx&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">m2_hmac_ctx_free</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
<div class="viewcode-block" id="HMAC.reset"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.HMAC.reset">[docs]</a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; None</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">hmac_init</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">md</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">hmac_init</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">md</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="HMAC.update"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.HMAC.update">[docs]</a> <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; None</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">hmac_update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">hmac_update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="HMAC.final"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.HMAC.final">[docs]</a> <span class="k">def</span> <span class="nf">final</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">hmac_final</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
-</div>
- <span class="n">digest</span> <span class="o">=</span> <span class="n">final</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">hmac_final</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span></div>
+
+ <span class="n">digest</span> <span class="o">=</span> <span class="n">final</span></div>
+
-</div>
<div class="viewcode-block" id="hmac"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.hmac">[docs]</a><span class="k">def</span> <span class="nf">hmac</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">algo</span><span class="o">=</span><span class="s1">&#39;sha1&#39;</span><span class="p">):</span>
<span class="c1"># type: (bytes, bytes, str) -&gt; bytes</span>
- <span class="n">md</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">md</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">md</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">md</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;unknown algorithm&#39;</span><span class="p">,</span> <span class="n">algo</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">hmac</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">md</span><span class="p">())</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">hmac</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">md</span><span class="p">())</span></div>
+
-</div>
<div class="viewcode-block" id="Cipher"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.Cipher">[docs]</a><span class="k">class</span> <span class="nc">Cipher</span><span class="p">:</span>
<span class="n">m2_cipher_ctx_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">cipher_ctx_free</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alg</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">iv</span><span class="p">,</span> <span class="n">op</span><span class="p">,</span> <span class="n">key_as_bytes</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">d</span><span class="o">=</span><span class="s1">&#39;md5&#39;</span><span class="p">,</span>
- <span class="n">salt</span><span class="o">=</span><span class="s1">&#39;12345678&#39;</span><span class="p">,</span> <span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
+ <span class="n">salt</span><span class="o">=</span><span class="sa">b</span><span class="s1">&#39;12345678&#39;</span><span class="p">,</span> <span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
<span class="c1"># type: (str, bytes, bytes, object, int, str, bytes, int, int) -&gt; None</span>
- <span class="n">cipher</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">alg</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">cipher</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">cipher</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">alg</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">cipher</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;unknown cipher&#39;</span><span class="p">,</span> <span class="n">alg</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cipher</span> <span class="o">=</span> <span class="n">cipher</span><span class="p">()</span>
<span class="k">if</span> <span class="n">key_as_bytes</span><span class="p">:</span>
- <span class="n">kmd</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">kmd</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">kmd</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">kmd</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;unknown message digest&#39;</span><span class="p">,</span> <span class="n">d</span><span class="p">)</span>
<span class="n">key</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bytes_to_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cipher</span><span class="p">,</span> <span class="n">kmd</span><span class="p">(),</span> <span class="n">key</span><span class="p">,</span> <span class="n">salt</span><span class="p">,</span> <span class="n">iv</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ctx</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">cipher_ctx_new</span><span class="p">()</span>
@@ -189,25 +179,25 @@
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;ctx&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">):</span>
+ <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;ctx&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">m2_cipher_ctx_free</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
<div class="viewcode-block" id="Cipher.update"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.Cipher.update">[docs]</a> <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; bytes</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">cipher_update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">cipher_update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Cipher.final"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.Cipher.final">[docs]</a> <span class="k">def</span> <span class="nf">final</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">cipher_final</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">cipher_final</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Cipher.set_padding"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.Cipher.set_padding">[docs]</a> <span class="k">def</span> <span class="nf">set_padding</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Actually always return 1</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">cipher_set_padding</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">padding</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">cipher_set_padding</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">padding</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="PKey"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.PKey">[docs]</a><span class="k">class</span> <span class="nc">PKey</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Public Key</span>
@@ -216,9 +206,9 @@
<span class="n">m2_pkey_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkey_free</span>
<span class="n">m2_md_ctx_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">md_ctx_free</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pkey</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">md</span><span class="o">=</span><span class="s1">&#39;sha1&#39;</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pkey</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">md</span><span class="o">=</span><span class="s1">&#39;sha1&#39;</span><span class="p">):</span>
<span class="c1"># type: (Optional[bytes], int, str) -&gt; None</span>
- <span class="k">if</span> <span class="n">pkey</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">pkey</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">pkey</span> <span class="o">=</span> <span class="n">pkey</span> <span class="c1"># type: bytes</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pyfree</span> <span class="o">=</span> <span class="n">_pyfree</span>
<span class="k">else</span><span class="p">:</span>
@@ -230,7 +220,7 @@
<span class="c1"># type: () -&gt; None</span>
<span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;_pyfree&#39;</span><span class="p">,</span> <span class="mi">0</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">m2_pkey_free</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span>
- <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;ctx&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">):</span>
+ <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;ctx&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">m2_md_ctx_free</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_ptr</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
@@ -238,8 +228,8 @@
<span class="k">def</span> <span class="nf">_set_context</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">md</span><span class="p">):</span>
<span class="c1"># type: (str) -&gt; None</span>
- <span class="n">mda</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">md</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="c1"># type: Optional[Callable]</span>
- <span class="k">if</span> <span class="n">mda</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">mda</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">md</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="c1"># type: Optional[Callable]</span>
+ <span class="k">if</span> <span class="n">mda</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;unknown message digest&#39;</span><span class="p">,</span> <span class="n">md</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">md</span> <span class="o">=</span> <span class="n">mda</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ctx</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">md_ctx_new</span><span class="p">()</span> <span class="c1"># type: Context</span>
@@ -251,15 +241,15 @@
<span class="sd"> :param md: The message digest algorithm.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_set_context</span><span class="p">(</span><span class="n">md</span><span class="p">)</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">_set_context</span><span class="p">(</span><span class="n">md</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="PKey.sign_init"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.PKey.sign_init">[docs]</a> <span class="k">def</span> <span class="nf">sign_init</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Initialise signing operation with self.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">sign_init</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">md</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">sign_init</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">md</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="PKey.sign_update"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.PKey.sign_update">[docs]</a> <span class="k">def</span> <span class="nf">sign_update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -267,8 +257,8 @@
<span class="sd"> :param data: Data to be signed.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">sign_update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">sign_update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="PKey.sign_final"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.PKey.sign_final">[docs]</a> <span class="k">def</span> <span class="nf">sign_final</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -276,9 +266,9 @@
<span class="sd"> :return: The signature.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">sign_final</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">sign_final</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span></div>
- <span class="c1"># Deprecated</span></div>
+ <span class="c1"># Deprecated</span>
<span class="n">update</span> <span class="o">=</span> <span class="n">sign_update</span>
<span class="n">final</span> <span class="o">=</span> <span class="n">sign_final</span>
@@ -287,8 +277,8 @@
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Initialise signature verification operation with self.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">verify_init</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">md</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">verify_init</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">md</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="PKey.verify_update"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.PKey.verify_update">[docs]</a> <span class="k">def</span> <span class="nf">verify_update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -297,8 +287,8 @@
<span class="sd"> :param data: Data to be verified.</span>
<span class="sd"> :return: -1 on Python error, 1 for success, 0 for OpenSSL error</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">verify_update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">verify_update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="PKey.verify_final"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.PKey.verify_final">[docs]</a> <span class="k">def</span> <span class="nf">verify_final</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sign</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -308,8 +298,8 @@
<span class="sd"> :return: Result of verification: 1 for success, 0 for failure, -1 on</span>
<span class="sd"> other error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">verify_final</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">sign</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">verify_final</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">sign</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="PKey.assign_rsa"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.PKey.assign_rsa">[docs]</a> <span class="k">def</span> <span class="nf">assign_rsa</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">rsa</span><span class="p">,</span> <span class="n">capture</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
<span class="c1"># type: (RSA.RSA, int) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -329,8 +319,8 @@
<span class="n">rsa</span><span class="o">.</span><span class="n">_pyfree</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">ret</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkey_set1_rsa</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="p">,</span> <span class="n">rsa</span><span class="o">.</span><span class="n">rsa</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">ret</span>
-</div>
+ <span class="k">return</span> <span class="n">ret</span></div>
+
<div class="viewcode-block" id="PKey.get_rsa"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.PKey.get_rsa">[docs]</a> <span class="k">def</span> <span class="nf">get_rsa</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; RSA.RSA_pub</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -338,13 +328,13 @@
<span class="sd"> instance is holding.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">rsa_ptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkey_get1_rsa</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">rsa_ptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">rsa_ptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;PKey instance is not holding a RSA key&quot;</span><span class="p">)</span>
<span class="n">rsa</span> <span class="o">=</span> <span class="n">RSA</span><span class="o">.</span><span class="n">RSA_pub</span><span class="p">(</span><span class="n">rsa_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">rsa</span>
-</div>
-<div class="viewcode-block" id="PKey.save_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.PKey.save_key">[docs]</a> <span class="k">def</span> <span class="nf">save_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">file</span><span class="p">,</span> <span class="n">cipher</span><span class="o">=</span><span class="s1">&#39;aes_128_cbc&#39;</span><span class="p">,</span>
+ <span class="k">return</span> <span class="n">rsa</span></div>
+
+<div class="viewcode-block" id="PKey.save_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.PKey.save_key">[docs]</a> <span class="k">def</span> <span class="nf">save_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file</span><span class="p">,</span> <span class="n">cipher</span><span class="o">=</span><span class="s1">&#39;aes_128_cbc&#39;</span><span class="p">,</span>
<span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, Optional[str], Callable) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -361,9 +351,9 @@
<span class="sd"> the key. The default is</span>
<span class="sd"> util.passphrase_callback.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">save_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
-</div>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">save_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="PKey.save_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.PKey.save_key_bio">[docs]</a> <span class="k">def</span> <span class="nf">save_key_bio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bio</span><span class="p">,</span> <span class="n">cipher</span><span class="o">=</span><span class="s1">&#39;aes_128_cbc&#39;</span><span class="p">,</span>
<span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, Optional[str], Callable) -&gt; int</span>
@@ -381,14 +371,14 @@
<span class="sd"> the key. The default is</span>
<span class="sd"> util.passphrase_callback.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">cipher</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cipher</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkey_write_pem_no_cipher</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">callback</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
- <span class="n">proto</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">proto</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">proto</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">proto</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;no such cipher </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">cipher</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkey_write_pem</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">proto</span><span class="p">(),</span> <span class="n">callback</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkey_write_pem</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">proto</span><span class="p">(),</span> <span class="n">callback</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="PKey.as_pem"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.PKey.as_pem">[docs]</a> <span class="k">def</span> <span class="nf">as_pem</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cipher</span><span class="o">=</span><span class="s1">&#39;aes_128_cbc&#39;</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (Optional[str], Callable) -&gt; bytes</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -405,8 +395,8 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">bio</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">save_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">bio</span><span class="o">.</span><span class="n">read_all</span><span class="p">()</span>
-</div>
+ <span class="k">return</span> <span class="n">bio</span><span class="o">.</span><span class="n">read_all</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="PKey.as_der"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.PKey.as_der">[docs]</a> <span class="k">def</span> <span class="nf">as_der</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -414,24 +404,24 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkey_as_der</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span>
<span class="n">bio</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">(</span><span class="n">buf</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">bio</span><span class="o">.</span><span class="n">read_all</span><span class="p">()</span>
-</div>
+ <span class="k">return</span> <span class="n">bio</span><span class="o">.</span><span class="n">read_all</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="PKey.size"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.PKey.size">[docs]</a> <span class="k">def</span> <span class="nf">size</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return the size of the key in bytes.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkey_size</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkey_size</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="PKey.get_modulus"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.PKey.get_modulus">[docs]</a> <span class="k">def</span> <span class="nf">get_modulus</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; Optional[bytes]</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return the modulus in hex format.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkey_get_modulus</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkey_get_modulus</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span></div></div>
-</div></div>
-<div class="viewcode-block" id="load_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.load_key">[docs]</a><span class="k">def</span> <span class="nf">load_key</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
+
+<div class="viewcode-block" id="load_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.load_key">[docs]</a><span class="k">def</span> <span class="nf">load_key</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, Callable) -&gt; PKey</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Load an M2Crypto.EVP.PKey from file.</span>
@@ -444,16 +434,16 @@
<span class="sd"> :return: M2Crypto.EVP.PKey object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">bio</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_new_file</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="s1">&#39;r&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">bio</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">bio</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_new_file</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="s1">&#39;r&#39;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">bio</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">BIO</span><span class="o">.</span><span class="n">BIOError</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
<span class="n">cptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkey_read_pem</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
<span class="n">m2</span><span class="o">.</span><span class="n">bio_free</span><span class="p">(</span><span class="n">bio</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">EVPError</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">PKey</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">PKey</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="load_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.load_key_bio">[docs]</a><span class="k">def</span> <span class="nf">load_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, Callable) -&gt; PKey</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -468,11 +458,11 @@
<span class="sd"> :return: M2Crypto.EVP.PKey object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">cptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkey_read_pem</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">callback</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">EVPError</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">PKey</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">PKey</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="load_key_bio_pubkey"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.load_key_bio_pubkey">[docs]</a><span class="k">def</span> <span class="nf">load_key_bio_pubkey</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, Callable) -&gt; PKey</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -487,11 +477,11 @@
<span class="sd"> :return: M2Crypto.EVP.PKey object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">cptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkey_read_pem_pubkey</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">callback</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">EVPError</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">PKey</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">PKey</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="load_key_string"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.load_key_string">[docs]</a><span class="k">def</span> <span class="nf">load_key_string</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, Callable) -&gt; PKey</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -506,9 +496,9 @@
<span class="sd"> :return: M2Crypto.EVP.PKey object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">bio</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">load_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">load_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="load_key_string_pubkey"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.EVP.load_key_string_pubkey">[docs]</a><span class="k">def</span> <span class="nf">load_key_string_pubkey</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, Callable) -&gt; PKey</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -529,41 +519,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/Engine.html b/doc/html/_modules/M2Crypto/Engine.html
index 9812dbb..1b74291 100644
--- a/doc/html/_modules/M2Crypto/Engine.html
+++ b/doc/html/_modules/M2Crypto/Engine.html
@@ -1,52 +1,42 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.Engine &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.Engine &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.Engine</h1><div class="highlight"><pre>
<span></span><span class="c1"># vim: sts=4 sw=4 et</span>
@@ -57,14 +47,14 @@
<span class="sd">IMEC MSU</span>
<span class="sd">&quot;&quot;&quot;</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">EVP</span><span class="p">,</span> <span class="n">Err</span><span class="p">,</span> <span class="n">X509</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">six</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">EVP</span><span class="p">,</span> <span class="n">Err</span><span class="p">,</span> <span class="n">X509</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">six</span><span class="p">,</span> <span class="n">util</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
<div class="viewcode-block" id="EngineError"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Engine.EngineError">[docs]</a><span class="k">class</span> <span class="nc">EngineError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
- <span class="k">pass</span>
-</div>
+ <span class="k">pass</span></div>
+
<span class="n">m2</span><span class="o">.</span><span class="n">engine_init_error</span><span class="p">(</span><span class="n">EngineError</span><span class="p">)</span>
@@ -73,7 +63,7 @@
<span class="n">m2_engine_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">engine_free</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">_ptr</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_ptr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
<span class="c1"># type: (Optional[bytes], Optional[bytes], int) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Create new Engine from ENGINE pointer or obtain by id&quot;&quot;&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">_ptr</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">id</span><span class="p">:</span>
@@ -95,29 +85,29 @@
<span class="sd">&quot;&quot;&quot;Obtain a functional reference to the engine.</span>
<span class="sd"> :return: 0 on error, non-zero on success.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">engine_init</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_ptr</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">engine_init</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_ptr</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Engine.finish"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Engine.Engine.finish">[docs]</a> <span class="k">def</span> <span class="nf">finish</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Release a functional and structural reference to the engine.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">engine_finish</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_ptr</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">engine_finish</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_ptr</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Engine.ctrl_cmd_string"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Engine.Engine.ctrl_cmd_string">[docs]</a> <span class="k">def</span> <span class="nf">ctrl_cmd_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd</span><span class="p">,</span> <span class="n">arg</span><span class="p">,</span> <span class="n">optional</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (bytes, Optional[bytes], int) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Call ENGINE_ctrl_cmd_string&quot;&quot;&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">m2</span><span class="o">.</span><span class="n">engine_ctrl_cmd_string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_ptr</span><span class="p">,</span> <span class="n">cmd</span><span class="p">,</span> <span class="n">arg</span><span class="p">,</span> <span class="n">optional</span><span class="p">):</span>
- <span class="k">raise</span> <span class="n">EngineError</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
-</div>
+ <span class="k">raise</span> <span class="n">EngineError</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="Engine.get_name"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Engine.Engine.get_name">[docs]</a> <span class="k">def</span> <span class="nf">get_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
<span class="sd">&quot;&quot;&quot;Return engine name&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">engine_get_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_ptr</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">engine_get_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_ptr</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Engine.get_id"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Engine.Engine.get_id">[docs]</a> <span class="k">def</span> <span class="nf">get_id</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
<span class="sd">&quot;&quot;&quot;Return engine id&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">engine_get_id</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_ptr</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">engine_get_id</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_ptr</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Engine.set_default"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Engine.Engine.set_default">[docs]</a> <span class="k">def</span> <span class="nf">set_default</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="n">m2</span><span class="o">.</span><span class="n">ENGINE_METHOD_ALL</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -125,9 +115,9 @@
<span class="sd"> :param methods: Possible values are bitwise OR of m2.ENGINE_METHOD_*</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">engine_set_default</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_ptr</span><span class="p">,</span> <span class="n">methods</span><span class="p">)</span>
-</div>
- <span class="k">def</span> <span class="nf">_engine_load_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">pin</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">engine_set_default</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_ptr</span><span class="p">,</span> <span class="n">methods</span><span class="p">)</span></div>
+
+ <span class="k">def</span> <span class="nf">_engine_load_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">pin</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (Callable, bytes, Optional[bytes]) -&gt; EVP.PKey</span>
<span class="sd">&quot;&quot;&quot;Helper function for loading keys&quot;&quot;&quot;</span>
<span class="n">ui</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ui_openssl</span><span class="p">()</span>
@@ -141,18 +131,18 @@
<span class="n">m2</span><span class="o">.</span><span class="n">engine_pkcs11_data_free</span><span class="p">(</span><span class="n">cbd</span><span class="p">)</span>
<span class="k">return</span> <span class="n">key</span>
-<div class="viewcode-block" id="Engine.load_private_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Engine.Engine.load_private_key">[docs]</a> <span class="k">def</span> <span class="nf">load_private_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">pin</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+<div class="viewcode-block" id="Engine.load_private_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Engine.Engine.load_private_key">[docs]</a> <span class="k">def</span> <span class="nf">load_private_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">pin</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (bytes, Optional[bytes]) -&gt; X509.X509</span>
<span class="sd">&quot;&quot;&quot;Load private key with engine methods (e.g from smartcard).</span>
<span class="sd"> If pin is not set it will be asked</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_engine_load_key</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">engine_load_private_key</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">pin</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="Engine.load_public_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Engine.Engine.load_public_key">[docs]</a> <span class="k">def</span> <span class="nf">load_public_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">pin</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_engine_load_key</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">engine_load_private_key</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">pin</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="Engine.load_public_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Engine.Engine.load_public_key">[docs]</a> <span class="k">def</span> <span class="nf">load_public_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">pin</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (bytes, Optional[bytes]) -&gt; EVP.PKey</span>
<span class="sd">&quot;&quot;&quot;Load public key with engine methods (e.g from smartcard).&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_engine_load_key</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">engine_load_public_key</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">pin</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_engine_load_key</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">engine_load_public_key</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">pin</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Engine.load_certificate"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Engine.Engine.load_certificate">[docs]</a> <span class="k">def</span> <span class="nf">load_certificate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; X509.X509</span>
<span class="sd">&quot;&quot;&quot;Load certificate from engine (e.g from smartcard).</span>
@@ -160,9 +150,9 @@
<span class="n">cptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">engine_load_certificate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_ptr</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">cptr</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">EngineError</span><span class="p">(</span><span class="s2">&quot;Certificate or card not found&quot;</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">X509</span><span class="o">.</span><span class="n">X509</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">X509</span><span class="o">.</span><span class="n">X509</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="load_dynamic_engine"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Engine.load_dynamic_engine">[docs]</a><span class="k">def</span> <span class="nf">load_dynamic_engine</span><span class="p">(</span><span class="nb">id</span><span class="p">,</span> <span class="n">sopath</span><span class="p">):</span>
<span class="c1"># type: (bytes, AnyStr) -&gt; Engine</span>
<span class="sd">&quot;&quot;&quot;Load and return dymanic engine from sopath and assign id to it&quot;&quot;&quot;</span>
@@ -170,25 +160,25 @@
<span class="n">sopath</span> <span class="o">=</span> <span class="n">sopath</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;utf8&#39;</span><span class="p">)</span>
<span class="n">m2</span><span class="o">.</span><span class="n">engine_load_dynamic</span><span class="p">()</span>
<span class="n">e</span> <span class="o">=</span> <span class="n">Engine</span><span class="p">(</span><span class="s1">&#39;dynamic&#39;</span><span class="p">)</span>
- <span class="n">e</span><span class="o">.</span><span class="n">ctrl_cmd_string</span><span class="p">(</span><span class="n">b</span><span class="s1">&#39;SO_PATH&#39;</span><span class="p">,</span> <span class="n">sopath</span><span class="p">)</span>
- <span class="n">e</span><span class="o">.</span><span class="n">ctrl_cmd_string</span><span class="p">(</span><span class="n">b</span><span class="s1">&#39;ID&#39;</span><span class="p">,</span> <span class="nb">id</span><span class="p">)</span>
- <span class="n">e</span><span class="o">.</span><span class="n">ctrl_cmd_string</span><span class="p">(</span><span class="n">b</span><span class="s1">&#39;LIST_ADD&#39;</span><span class="p">,</span> <span class="s1">&#39;1&#39;</span><span class="p">)</span>
- <span class="n">e</span><span class="o">.</span><span class="n">ctrl_cmd_string</span><span class="p">(</span><span class="n">b</span><span class="s1">&#39;LOAD&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">e</span>
+ <span class="n">e</span><span class="o">.</span><span class="n">ctrl_cmd_string</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;SO_PATH&#39;</span><span class="p">,</span> <span class="n">sopath</span><span class="p">)</span>
+ <span class="n">e</span><span class="o">.</span><span class="n">ctrl_cmd_string</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;ID&#39;</span><span class="p">,</span> <span class="nb">id</span><span class="p">)</span>
+ <span class="n">e</span><span class="o">.</span><span class="n">ctrl_cmd_string</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;LIST_ADD&#39;</span><span class="p">,</span> <span class="s1">&#39;1&#39;</span><span class="p">)</span>
+ <span class="n">e</span><span class="o">.</span><span class="n">ctrl_cmd_string</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;LOAD&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">e</span></div>
+
-</div>
<div class="viewcode-block" id="load_dynamic"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Engine.load_dynamic">[docs]</a><span class="k">def</span> <span class="nf">load_dynamic</span><span class="p">():</span>
<span class="c1"># type: () -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Load dynamic engine&quot;&quot;&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">engine_load_dynamic</span><span class="p">()</span>
+ <span class="n">m2</span><span class="o">.</span><span class="n">engine_load_dynamic</span><span class="p">()</span></div>
+
-</div>
<div class="viewcode-block" id="load_openssl"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Engine.load_openssl">[docs]</a><span class="k">def</span> <span class="nf">load_openssl</span><span class="p">():</span>
<span class="c1"># type: () -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Load openssl engine&quot;&quot;&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">engine_load_openssl</span><span class="p">()</span>
+ <span class="n">m2</span><span class="o">.</span><span class="n">engine_load_openssl</span><span class="p">()</span></div>
+
-</div>
<div class="viewcode-block" id="cleanup"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Engine.cleanup">[docs]</a><span class="k">def</span> <span class="nf">cleanup</span><span class="p">():</span>
<span class="c1"># type: () -&gt; None</span>
<span class="sd">&quot;&quot;&quot;If you load any engines, you need to clean up after your application</span>
@@ -199,41 +189,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/Err.html b/doc/html/_modules/M2Crypto/Err.html
index 955ab09..2e776ae 100644
--- a/doc/html/_modules/M2Crypto/Err.html
+++ b/doc/html/_modules/M2Crypto/Err.html
@@ -1,63 +1,53 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.Err &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.Err &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.Err</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;M2Crypto wrapper for OpenSSL Error API.</span>
<span class="sd">Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.&quot;&quot;&quot;</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span><span class="p">,</span> <span class="n">six</span> <span class="c1"># noqa</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span><span class="p">,</span> <span class="n">six</span> <span class="c1"># noqa</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
<div class="viewcode-block" id="get_error"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Err.get_error">[docs]</a><span class="k">def</span> <span class="nf">get_error</span><span class="p">():</span>
@@ -66,39 +56,44 @@
<span class="n">m2</span><span class="o">.</span><span class="n">err_print_errors</span><span class="p">(</span><span class="n">err</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">())</span>
<span class="n">err_msg</span> <span class="o">=</span> <span class="n">err</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
<span class="k">if</span> <span class="n">err_msg</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">err_msg</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">err_msg</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="get_error_code"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Err.get_error_code">[docs]</a><span class="k">def</span> <span class="nf">get_error_code</span><span class="p">():</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">err_get_error</span><span class="p">()</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">err_get_error</span><span class="p">()</span></div>
+
-</div>
<div class="viewcode-block" id="peek_error_code"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Err.peek_error_code">[docs]</a><span class="k">def</span> <span class="nf">peek_error_code</span><span class="p">():</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">err_peek_error</span><span class="p">()</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">err_peek_error</span><span class="p">()</span></div>
+
-</div>
<div class="viewcode-block" id="get_error_lib"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Err.get_error_lib">[docs]</a><span class="k">def</span> <span class="nf">get_error_lib</span><span class="p">(</span><span class="n">err</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; str</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">err_lib_error_string</span><span class="p">(</span><span class="n">err</span><span class="p">))</span>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">err_lib_error_string</span><span class="p">(</span><span class="n">err</span><span class="p">))</span></div>
+
-</div>
<div class="viewcode-block" id="get_error_func"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Err.get_error_func">[docs]</a><span class="k">def</span> <span class="nf">get_error_func</span><span class="p">(</span><span class="n">err</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; str</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">err_func_error_string</span><span class="p">(</span><span class="n">err</span><span class="p">))</span>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">err_func_error_string</span><span class="p">(</span><span class="n">err</span><span class="p">))</span></div>
+
-</div>
<div class="viewcode-block" id="get_error_reason"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Err.get_error_reason">[docs]</a><span class="k">def</span> <span class="nf">get_error_reason</span><span class="p">(</span><span class="n">err</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; str</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">err_reason_error_string</span><span class="p">(</span><span class="n">err</span><span class="p">))</span>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">err_reason_error_string</span><span class="p">(</span><span class="n">err</span><span class="p">))</span></div>
+
+
+<div class="viewcode-block" id="get_error_message"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Err.get_error_message">[docs]</a><span class="k">def</span> <span class="nf">get_error_message</span><span class="p">():</span>
+ <span class="c1"># type: () -&gt; str</span>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">get_error_reason</span><span class="p">(</span><span class="n">get_error_code</span><span class="p">()))</span></div>
+
-</div>
<div class="viewcode-block" id="get_x509_verify_error"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Err.get_x509_verify_error">[docs]</a><span class="k">def</span> <span class="nf">get_x509_verify_error</span><span class="p">(</span><span class="n">err</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; str</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_get_verify_error</span><span class="p">(</span><span class="n">err</span><span class="p">))</span>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_get_verify_error</span><span class="p">(</span><span class="n">err</span><span class="p">))</span></div>
+
-</div>
<div class="viewcode-block" id="SSLError"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Err.SSLError">[docs]</a><span class="k">class</span> <span class="nc">SSLError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">err</span><span class="p">,</span> <span class="n">client_addr</span><span class="p">):</span>
<span class="c1"># type: (int, util.AddrType) -&gt; None</span>
@@ -112,9 +107,9 @@
<span class="k">else</span><span class="p">:</span>
<span class="n">s</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client_addr</span>
<span class="k">return</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">get_error_func</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">err</span><span class="p">),</span> <span class="n">s</span><span class="p">,</span>
- <span class="n">get_error_reason</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">err</span><span class="p">))</span>
+ <span class="n">get_error_reason</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">err</span><span class="p">))</span></div>
+
-</div>
<div class="viewcode-block" id="M2CryptoError"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Err.M2CryptoError">[docs]</a><span class="k">class</span> <span class="nc">M2CryptoError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
<span class="k">pass</span></div>
</pre></div>
@@ -122,41 +117,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/PGP/PublicKey.html b/doc/html/_modules/M2Crypto/PGP/PublicKey.html
deleted file mode 100644
index 8e9593b..0000000
--- a/doc/html/_modules/M2Crypto/PGP/PublicKey.html
+++ /dev/null
@@ -1,169 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.PGP.PublicKey &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
- <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '../../../',
- VERSION: '',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="../../../_static/jquery.js"></script>
- <script type="text/javascript" src="../../../_static/underscore.js"></script>
- <script type="text/javascript" src="../../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../../index.html" />
- <link rel="up" title="Module code" href="../../index.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <h1>Source code for M2Crypto.PGP.PublicKey</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
-
-<span class="sd">&quot;&quot;&quot;M2Crypto PGP2.</span>
-
-<span class="sd">Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.&quot;&quot;&quot;</span>
-
-<span class="kn">from</span> <span class="nn">M2Crypto.PGP.RSA</span> <span class="kn">import</span> <span class="n">new_pub_key</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.RSA</span> <span class="kn">import</span> <span class="n">pkcs1_padding</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.PGP.packet</span> <span class="kn">import</span> <span class="n">PublicKeyPacket</span> <span class="c1"># noqa</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.PGP.constants</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.PGP.packet</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
-
-
-<div class="viewcode-block" id="PublicKey"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.PublicKey.PublicKey">[docs]</a><span class="k">class</span> <span class="nc">PublicKey</span><span class="p">:</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pubkey_pkt</span><span class="p">):</span>
- <span class="c1"># type: (PublicKeyPacket) -&gt; None</span>
- <span class="kn">import</span> <span class="nn">warnings</span>
- <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span>
- <span class="s1">&#39;Deprecated. No maintainer for PGP. If you use this, &#39;</span> <span class="o">+</span>
- <span class="s1">&#39;please inform M2Crypto maintainer.&#39;</span><span class="p">,</span>
- <span class="ne">DeprecationWarning</span><span class="p">)</span>
-
- <span class="bp">self</span><span class="o">.</span><span class="n">_pubkey_pkt</span> <span class="o">=</span> <span class="n">pubkey_pkt</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_pubkey</span> <span class="o">=</span> <span class="n">new_pub_key</span><span class="p">((</span><span class="n">pubkey_pkt</span><span class="o">.</span><span class="n">_e</span><span class="p">,</span> <span class="n">pubkey_pkt</span><span class="o">.</span><span class="n">_n</span><span class="p">))</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_userid</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1"># type: dict</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_signature</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1"># type: dict</span>
-
-<div class="viewcode-block" id="PublicKey.keyid"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.PublicKey.PublicKey.keyid">[docs]</a> <span class="k">def</span> <span class="nf">keyid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; bytes</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pubkey</span><span class="o">.</span><span class="n">n</span><span class="p">[</span><span class="o">-</span><span class="mi">8</span><span class="p">:]</span>
-</div>
-<div class="viewcode-block" id="PublicKey.add_userid"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.PublicKey.PublicKey.add_userid">[docs]</a> <span class="k">def</span> <span class="nf">add_userid</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">u_pkt</span><span class="p">):</span>
- <span class="c1"># type: (Packet.UserIDPacket) -&gt; None</span>
- <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">u_pkt</span><span class="p">,</span> <span class="n">UserIDPacket</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_userid</span><span class="p">[</span><span class="n">u_pkt</span><span class="o">.</span><span class="n">userid</span><span class="p">()]</span> <span class="o">=</span> <span class="n">u_pkt</span>
-</div>
-<div class="viewcode-block" id="PublicKey.remove_userid"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.PublicKey.PublicKey.remove_userid">[docs]</a> <span class="k">def</span> <span class="nf">remove_userid</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">userid</span><span class="p">):</span>
- <span class="c1"># type: (int) -&gt; None</span>
- <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_userid</span><span class="p">[</span><span class="n">userid</span><span class="p">]</span>
-</div>
-<div class="viewcode-block" id="PublicKey.add_signature"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.PublicKey.PublicKey.add_signature">[docs]</a> <span class="k">def</span> <span class="nf">add_signature</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">userid</span><span class="p">,</span> <span class="n">s_pkt</span><span class="p">):</span>
- <span class="c1"># type: (int, SignaturePacket) -&gt; None</span>
- <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">s_pkt</span><span class="p">,</span> <span class="n">SignaturePacket</span><span class="p">)</span>
- <span class="k">assert</span> <span class="n">userid</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_userid</span>
- <span class="k">if</span> <span class="n">userid</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_signature</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_signature</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">s_pkt</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_signature</span> <span class="o">=</span> <span class="p">[</span><span class="n">s_pkt</span><span class="p">]</span>
-</div>
- <span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="p">):</span>
- <span class="c1"># type: (int) -&gt; SignaturePacket</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_userid</span><span class="p">[</span><span class="nb">id</span><span class="p">]</span>
-
- <span class="k">def</span> <span class="nf">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
- <span class="k">raise</span> <span class="ne">NotImplementedError</span>
-
- <span class="k">def</span> <span class="nf">__delitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="p">):</span>
- <span class="c1"># type: (int) -&gt; None</span>
- <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_userid</span><span class="p">[</span><span class="nb">id</span><span class="p">]</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_signature</span><span class="p">[</span><span class="nb">id</span><span class="p">]:</span>
- <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_signature</span><span class="p">[</span><span class="nb">id</span><span class="p">]</span>
-
-<div class="viewcode-block" id="PublicKey.write"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.PublicKey.PublicKey.write">[docs]</a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stream</span><span class="p">):</span>
- <span class="c1"># type: (IO[bytes]) -&gt; None</span>
- <span class="k">pass</span>
-</div>
-<div class="viewcode-block" id="PublicKey.encrypt"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.PublicKey.PublicKey.encrypt">[docs]</a> <span class="k">def</span> <span class="nf">encrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ptxt</span><span class="p">):</span>
- <span class="c1"># type: (bytes) -&gt; bytes</span>
- <span class="c1"># XXX Munge ptxt into pgp format.</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pubkey</span><span class="o">.</span><span class="n">public_encrypt</span><span class="p">(</span><span class="n">ptxt</span><span class="p">,</span> <span class="n">pkcs1_padding</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="PublicKey.decrypt"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.PublicKey.PublicKey.decrypt">[docs]</a> <span class="k">def</span> <span class="nf">decrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">):</span>
- <span class="c1"># type: (bytes) -&gt; bytes</span>
- <span class="c1"># XXX Munge ctxt into pgp format.</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pubkey</span><span class="o">.</span><span class="n">public_encrypt</span><span class="p">(</span><span class="n">ctxt</span><span class="p">,</span> <span class="n">pkcs1_padding</span><span class="p">)</span></div></div>
-</pre></div>
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="../../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/PGP/PublicKeyRing.html b/doc/html/_modules/M2Crypto/PGP/PublicKeyRing.html
deleted file mode 100644
index 6ca29ed..0000000
--- a/doc/html/_modules/M2Crypto/PGP/PublicKeyRing.html
+++ /dev/null
@@ -1,192 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.PGP.PublicKeyRing &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
- <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '../../../',
- VERSION: '',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="../../../_static/jquery.js"></script>
- <script type="text/javascript" src="../../../_static/underscore.js"></script>
- <script type="text/javascript" src="../../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../../index.html" />
- <link rel="up" title="Module code" href="../../index.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <h1>Source code for M2Crypto.PGP.PublicKeyRing</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
-
-<span class="sd">&quot;&quot;&quot;M2Crypto PGP2.</span>
-
-<span class="sd">Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.&quot;&quot;&quot;</span>
-
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">util</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.PGP.PublicKey</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.PGP.constants</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.PGP.packet</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
-<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Tuple</span> <span class="c1"># noqa</span>
-
-
-<div class="viewcode-block" id="PublicKeyRing"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.PublicKeyRing.PublicKeyRing">[docs]</a><span class="k">class</span> <span class="nc">PublicKeyRing</span><span class="p">:</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyring</span><span class="p">):</span>
- <span class="c1"># type: (object) -&gt; None</span>
- <span class="kn">import</span> <span class="nn">warnings</span>
- <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span>
- <span class="s1">&#39;Deprecated. No maintainer for PGP. If you use this, &#39;</span> <span class="o">+</span>
- <span class="s1">&#39;please inform M2Crypto maintainer.&#39;</span><span class="p">,</span>
- <span class="ne">DeprecationWarning</span><span class="p">)</span>
-
- <span class="bp">self</span><span class="o">.</span><span class="n">_keyring</span> <span class="o">=</span> <span class="n">keyring</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_userid</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1"># type: dict</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_keyid</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1"># type: dict</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_spurious</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># type: list</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_pubkey</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># type: list</span>
-
-<div class="viewcode-block" id="PublicKeyRing.load"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.PublicKeyRing.PublicKeyRing.load">[docs]</a> <span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; None</span>
- <span class="n">curr_pub</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="n">curr_index</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
-
- <span class="n">ps</span> <span class="o">=</span> <span class="n">PacketStream</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_keyring</span><span class="p">)</span>
- <span class="k">while</span> <span class="mi">1</span><span class="p">:</span>
- <span class="n">pkt</span> <span class="o">=</span> <span class="n">ps</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
-
- <span class="k">if</span> <span class="n">pkt</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">break</span>
-
- <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">pkt</span><span class="p">,</span> <span class="n">PublicKeyPacket</span><span class="p">):</span>
- <span class="n">curr_index</span> <span class="o">=</span> <span class="n">curr_index</span> <span class="o">+</span> <span class="mi">1</span>
- <span class="n">curr_pub</span> <span class="o">=</span> <span class="n">PublicKey</span><span class="p">(</span><span class="n">pkt</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_pubkey</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">curr_pub</span><span class="p">)</span>
- <span class="c1"># self._keyid[curr_pub.keyid()] = (curr_pub, curr_index)</span>
-
- <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">pkt</span><span class="p">,</span> <span class="n">UserIDPacket</span><span class="p">):</span>
- <span class="k">if</span> <span class="n">curr_pub</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_spurious</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pkt</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">curr_pub</span><span class="o">.</span><span class="n">add_userid</span><span class="p">(</span><span class="n">pkt</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_userid</span><span class="p">[</span><span class="n">pkt</span><span class="o">.</span><span class="n">userid</span><span class="p">()]</span> <span class="o">=</span> <span class="p">(</span><span class="n">curr_pub</span><span class="p">,</span> <span class="n">curr_index</span><span class="p">)</span>
-
- <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">pkt</span><span class="p">,</span> <span class="n">SignaturePacket</span><span class="p">):</span>
- <span class="k">if</span> <span class="n">curr_pub</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_spurious</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pkt</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">curr_pub</span><span class="o">.</span><span class="n">add_signature</span><span class="p">(</span><span class="n">pkt</span><span class="p">)</span>
-
- <span class="k">else</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_spurious</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pkt</span><span class="p">)</span>
-
- <span class="n">ps</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
-</div>
- <span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="p">):</span>
- <span class="c1"># type: (int) -&gt; int</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_userid</span><span class="p">[</span><span class="nb">id</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
-
- <span class="k">def</span> <span class="nf">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
- <span class="c1"># type: (*List[Any]) -&gt; None</span>
- <span class="k">raise</span> <span class="ne">NotImplementedError</span>
-
- <span class="k">def</span> <span class="nf">__delitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="p">):</span>
- <span class="c1"># type: (int) -&gt; None</span>
- <span class="n">pkt</span><span class="p">,</span> <span class="n">idx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_userid</span><span class="p">[</span><span class="nb">id</span><span class="p">]</span>
- <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pubkey</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span>
- <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_userid</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span>
- <span class="n">pkt</span><span class="p">,</span> <span class="n">idx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_keyid</span><span class="p">[</span><span class="nb">id</span><span class="p">]</span>
- <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_keyid</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span>
-
-<div class="viewcode-block" id="PublicKeyRing.spurious"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.PublicKeyRing.PublicKeyRing.spurious">[docs]</a> <span class="k">def</span> <span class="nf">spurious</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; Tuple[SignaturePacket]</span>
- <span class="k">return</span> <span class="nb">tuple</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_spurious</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="PublicKeyRing.save"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.PublicKeyRing.PublicKeyRing.save">[docs]</a> <span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyring</span><span class="p">):</span>
- <span class="c1"># type: (file) -&gt; None</span>
- <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pubkey</span><span class="p">:</span>
- <span class="n">pp</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">pack</span><span class="p">()</span>
- <span class="n">keyring</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">pp</span><span class="p">)</span>
-
-</div></div>
-<div class="viewcode-block" id="load_pubring"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.PublicKeyRing.load_pubring">[docs]</a><span class="k">def</span> <span class="nf">load_pubring</span><span class="p">(</span><span class="n">filename</span><span class="o">=</span><span class="s1">&#39;pubring.pgp&#39;</span><span class="p">):</span>
- <span class="c1"># type: (AnyStr) -&gt; PublicKeyRing</span>
- <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="s1">&#39;rb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">pkr_f</span><span class="p">:</span>
- <span class="n">pkr</span> <span class="o">=</span> <span class="n">PublicKeyRing</span><span class="p">(</span><span class="n">pkr_f</span><span class="p">)</span>
- <span class="n">pkr</span><span class="o">.</span><span class="n">load</span><span class="p">()</span>
- <span class="k">return</span> <span class="n">pkr</span></div>
-</pre></div>
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="../../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/PGP/RSA.html b/doc/html/_modules/M2Crypto/PGP/RSA.html
deleted file mode 100644
index 4c2151d..0000000
--- a/doc/html/_modules/M2Crypto/PGP/RSA.html
+++ /dev/null
@@ -1,122 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.PGP.RSA &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
- <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '../../../',
- VERSION: '',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="../../../_static/jquery.js"></script>
- <script type="text/javascript" src="../../../_static/underscore.js"></script>
- <script type="text/javascript" src="../../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../../index.html" />
- <link rel="up" title="Module code" href="../../index.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <h1>Source code for M2Crypto.PGP.RSA</h1><div class="highlight"><pre>
-<span></span><span class="sd">&quot;&quot;&quot;M2Crypto PGP2 RSA.</span>
-
-<span class="sd">Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.&quot;&quot;&quot;</span>
-
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.RSA</span> <span class="kn">import</span> <span class="n">RSA_pub</span> <span class="c1"># noqa</span>
-<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Tuple</span> <span class="c1"># noqa</span>
-
-
-<div class="viewcode-block" id="new_pub_key"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.RSA.new_pub_key">[docs]</a><span class="k">def</span> <span class="nf">new_pub_key</span><span class="p">(</span><span class="n">e_n</span><span class="p">):</span>
- <span class="c1"># type: (Tuple[int, int]) -&gt; RSA_pub</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Factory function that instantiates an RSA_pub object from a (e, n) tuple.</span>
-
-<span class="sd"> &#39;e&#39; is the RSA public exponent; it is a string in OpenSSL&#39;s binary format,</span>
-<span class="sd"> i.e., a number of bytes in big-endian.</span>
-
-<span class="sd"> &#39;n&#39; is the RSA composite of primes; it is a string in OpenSSL&#39;s</span>
-<span class="sd"> binary format, i.e., a number of bytes in big-endian.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="kn">import</span> <span class="nn">warnings</span>
- <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s1">&#39;Deprecated. No maintainer for PGP. If you use this, please inform M2Crypto maintainer.&#39;</span><span class="p">,</span> <span class="ne">DeprecationWarning</span><span class="p">)</span>
-
- <span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span> <span class="o">=</span> <span class="n">e_n</span>
- <span class="n">rsa</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_new</span><span class="p">()</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">rsa_set_en_bin</span><span class="p">(</span><span class="n">rsa</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">RSA_pub</span><span class="p">(</span><span class="n">rsa</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
-</pre></div>
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="../../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/PGP/packet.html b/doc/html/_modules/M2Crypto/PGP/packet.html
deleted file mode 100644
index bef4f47..0000000
--- a/doc/html/_modules/M2Crypto/PGP/packet.html
+++ /dev/null
@@ -1,514 +0,0 @@
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.PGP.packet &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
- <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '../../../',
- VERSION: '',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="../../../_static/jquery.js"></script>
- <script type="text/javascript" src="../../../_static/underscore.js"></script>
- <script type="text/javascript" src="../../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../../index.html" />
- <link rel="up" title="Module code" href="../../index.html" />
- </head>
- <body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <h1>Source code for M2Crypto.PGP.packet</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
-
-<span class="sd">&quot;&quot;&quot;M2Crypto PGP2.</span>
-
-<span class="sd">This module implements PGP packets per RFC1991 and various source</span>
-<span class="sd">distributions.</span>
-
-<span class="sd">Each Packet type is represented by a class; Packet classes derive from</span>
-<span class="sd">the abstract &#39;Packet&#39; class.</span>
-
-<span class="sd">The &#39;message digest&#39; Packet type, mentioned but not documented in RFC1991,</span>
-<span class="sd">is not implemented.</span>
-
-<span class="sd">Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.&quot;&quot;&quot;</span>
-
-<span class="c1"># XXX Work-in-progress. UNFINISHED, type hinting is probably wrong!!!</span>
-
-<span class="c1"># Be liberal in what you accept.</span>
-<span class="c1"># Be conservative in what you send.</span>
-<span class="c1"># Be lazy in what you eval.</span>
-
-<span class="kn">import</span> <span class="nn">struct</span>
-
-<span class="kn">from</span> <span class="nn">io</span> <span class="kn">import</span> <span class="n">BytesIO</span>
-
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">util</span> <span class="c1"># noqa</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.util</span> <span class="kn">import</span> <span class="n">octx_to_num</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.PGP</span> <span class="kn">import</span> <span class="n">constants</span> <span class="c1"># noqa</span>
-<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">IO</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span> <span class="c1"># noqa</span>
-
-<span class="n">_OK_VERSION</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;</span><span class="se">\002</span><span class="s1">&#39;</span><span class="p">,</span> <span class="s1">&#39;</span><span class="se">\003</span><span class="s1">&#39;</span><span class="p">)</span>
-<span class="n">_OK_VALIDITY</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;</span><span class="se">\000</span><span class="s1">&#39;</span><span class="p">,)</span>
-<span class="n">_OK_PKC</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;</span><span class="se">\001</span><span class="s1">&#39;</span><span class="p">,)</span>
-
-
-<div class="viewcode-block" id="XXXError"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.XXXError">[docs]</a><span class="k">class</span> <span class="nc">XXXError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
- <span class="k">pass</span>
-
-</div>
-<div class="viewcode-block" id="Packet"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.Packet">[docs]</a><span class="k">class</span> <span class="nc">Packet</span><span class="p">:</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="c1"># type: (int, Optional[str]) -&gt; None</span>
- <span class="kn">import</span> <span class="nn">warnings</span>
- <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span>
- <span class="s1">&#39;Deprecated. No maintainer for PGP. If you use this, &#39;</span> <span class="o">+</span>
- <span class="s1">&#39;please inform M2Crypto maintainer.&#39;</span><span class="p">,</span>
- <span class="ne">DeprecationWarning</span><span class="p">)</span>
-
- <span class="bp">self</span><span class="o">.</span><span class="n">ctb</span> <span class="o">=</span> <span class="n">ctb</span>
- <span class="k">if</span> <span class="n">body</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">=</span> <span class="n">BytesIO</span><span class="p">(</span><span class="n">body</span><span class="p">)</span> <span class="c1"># type: Optional[IO[str]]</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">=</span> <span class="bp">None</span>
-
-<div class="viewcode-block" id="Packet.validate"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.Packet.validate">[docs]</a> <span class="k">def</span> <span class="nf">validate</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; int</span>
- <span class="k">return</span> <span class="mi">1</span>
-</div>
-<div class="viewcode-block" id="Packet.pack"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.Packet.pack">[docs]</a> <span class="k">def</span> <span class="nf">pack</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; None</span>
- <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1">.pack(): abstract method&#39;</span> <span class="o">%</span>
- <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="p">,))</span>
-</div>
-<div class="viewcode-block" id="Packet.version"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.Packet.version">[docs]</a> <span class="k">def</span> <span class="nf">version</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; Optional[int]</span>
- <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;_version&#39;</span><span class="p">):</span>
- <span class="k">return</span> <span class="nb">ord</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_version</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">None</span>
-</div>
-<div class="viewcode-block" id="Packet.timestamp"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.Packet.timestamp">[docs]</a> <span class="k">def</span> <span class="nf">timestamp</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; Optional[int]</span>
- <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;_timestamp&#39;</span><span class="p">):</span>
- <span class="k">return</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;&gt;L&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_timestamp</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">None</span>
-</div>
-<div class="viewcode-block" id="Packet.validity"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.Packet.validity">[docs]</a> <span class="k">def</span> <span class="nf">validity</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; Optional[int]</span>
- <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;_validity&#39;</span><span class="p">):</span>
- <span class="k">return</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;&gt;H&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_validity</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">None</span>
-</div>
-<div class="viewcode-block" id="Packet.pkc"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.Packet.pkc">[docs]</a> <span class="k">def</span> <span class="nf">pkc</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; Optional[bytes]</span>
- <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;_pkc&#39;</span><span class="p">):</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pkc</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">None</span>
-</div>
- <span class="k">def</span> <span class="nf">_llf</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lenf</span><span class="p">):</span>
- <span class="c1"># type: (int) -&gt; Tuple[int, bytes]</span>
- <span class="k">if</span> <span class="n">lenf</span> <span class="o">&lt;</span> <span class="mi">256</span><span class="p">:</span>
- <span class="k">return</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">chr</span><span class="p">(</span><span class="n">lenf</span><span class="p">)</span>
- <span class="k">elif</span> <span class="n">lenf</span> <span class="o">&lt;</span> <span class="mi">65536</span><span class="p">:</span>
- <span class="k">return</span> <span class="mi">1</span><span class="p">,</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s1">&#39;&gt;H&#39;</span><span class="p">,</span> <span class="n">lenf</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">assert</span> <span class="n">lenf</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="o">**</span><span class="mi">32</span>
- <span class="k">return</span> <span class="mi">2</span><span class="p">,</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s1">&#39;&gt;L&#39;</span><span class="p">,</span> <span class="n">lenf</span><span class="p">)</span>
-
- <span class="k">def</span> <span class="nf">_ctb</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">llf</span><span class="p">):</span>
- <span class="c1"># type: (int) -&gt; int</span>
- <span class="n">ctbv</span> <span class="o">=</span> <span class="n">_FACTORY</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="p">]</span>
- <span class="k">return</span> <span class="nb">chr</span><span class="p">((</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">7</span><span class="p">)</span> <span class="o">|</span> <span class="p">(</span><span class="n">ctbv</span> <span class="o">&lt;&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="o">|</span> <span class="n">llf</span><span class="p">)</span>
-
-</div>
-<div class="viewcode-block" id="PublicKeyPacket"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.PublicKeyPacket">[docs]</a><span class="k">class</span> <span class="nc">PublicKeyPacket</span><span class="p">(</span><span class="n">Packet</span><span class="p">):</span> <span class="c1"># noqa</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="c1"># type: (int, Optional[IO[str]) -&gt; None</span>
- <span class="n">Packet</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="p">)</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_version</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_timestamp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_validity</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_pkc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
-
- <span class="bp">self</span><span class="o">.</span><span class="n">_nlen</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
- <span class="n">nlen</span> <span class="o">=</span> <span class="p">(</span><span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;&gt;H&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_nlen</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="mi">7</span><span class="p">)</span> <span class="o">/</span> <span class="mi">8</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_n</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">nlen</span><span class="p">)</span>
-
- <span class="bp">self</span><span class="o">.</span><span class="n">_elen</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
- <span class="n">elen</span> <span class="o">=</span> <span class="p">(</span><span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;&gt;H&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_elen</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="mi">7</span><span class="p">)</span> <span class="o">/</span> <span class="mi">8</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_e</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">elen</span><span class="p">)</span>
-
-<div class="viewcode-block" id="PublicKeyPacket.pack"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.PublicKeyPacket.pack">[docs]</a> <span class="k">def</span> <span class="nf">pack</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; str</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">=</span> <span class="n">BytesIO</span><span class="p">()</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_version</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_timestamp</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_validity</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_pkc</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_nlen</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_n</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_elen</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_e</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">getvalue</span><span class="p">()</span>
- <span class="n">llf</span><span class="p">,</span> <span class="n">lenf</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_llf</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="p">))</span>
- <span class="n">ctb</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ctb</span><span class="p">(</span><span class="n">llf</span><span class="p">)</span>
- <span class="k">return</span> <span class="s1">&#39;</span><span class="si">%s%s%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">ctb</span><span class="p">,</span> <span class="n">lenf</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="PublicKeyPacket.pubkey"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.PublicKeyPacket.pubkey">[docs]</a> <span class="k">def</span> <span class="nf">pubkey</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; bytes</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pubkey</span><span class="o">.</span><span class="n">pub</span><span class="p">()</span>
-
-</div></div>
-<div class="viewcode-block" id="TrustPacket"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.TrustPacket">[docs]</a><span class="k">class</span> <span class="nc">TrustPacket</span><span class="p">(</span><span class="n">Packet</span><span class="p">):</span> <span class="c1"># noqa</span>
- <span class="c1"># This implementation neither interprets nor emits trust packets.</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="c1"># type: (int, Optional[AnyStr]) -&gt; None</span>
- <span class="n">Packet</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">body</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">trust</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
-
-</div>
-<div class="viewcode-block" id="UserIDPacket"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.UserIDPacket">[docs]</a><span class="k">class</span> <span class="nc">UserIDPacket</span><span class="p">(</span><span class="n">Packet</span><span class="p">):</span> <span class="c1"># noqa</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="c1"># type: (int, Optional[str]) -&gt; None</span>
- <span class="n">Packet</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">body</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_userid</span> <span class="o">=</span> <span class="n">body</span>
-
-<div class="viewcode-block" id="UserIDPacket.pack"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.UserIDPacket.pack">[docs]</a> <span class="k">def</span> <span class="nf">pack</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; int</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">+=</span> <span class="nb">chr</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_userid</span><span class="p">))</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_userid</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ctb</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span>
-</div>
-<div class="viewcode-block" id="UserIDPacket.userid"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.UserIDPacket.userid">[docs]</a> <span class="k">def</span> <span class="nf">userid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; int</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_userid</span>
-
-</div></div>
-<div class="viewcode-block" id="CommentPacket"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.CommentPacket">[docs]</a><span class="k">class</span> <span class="nc">CommentPacket</span><span class="p">(</span><span class="n">Packet</span><span class="p">):</span> <span class="c1"># noqa</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="c1"># type: (int, Optional[int]) -&gt; None</span>
- <span class="n">Packet</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">body</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">comment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">getvalue</span><span class="p">()</span>
-
-<div class="viewcode-block" id="CommentPacket.pack"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.CommentPacket.pack">[docs]</a> <span class="k">def</span> <span class="nf">pack</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; int</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">comment</span><span class="p">))</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">comment</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ctb</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span>
-
-</div></div>
-<div class="viewcode-block" id="SignaturePacket"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.SignaturePacket">[docs]</a><span class="k">class</span> <span class="nc">SignaturePacket</span><span class="p">(</span><span class="n">Packet</span><span class="p">):</span> <span class="c1"># noqa</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="c1"># type: (int, Optional[IO[bytes]]) -&gt; None</span>
- <span class="n">Packet</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">body</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_version</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_len_md_stuff</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_classification</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_timestamp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_keyid</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_pkc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_md_algo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_md_chksum</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_sig</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
-
-<div class="viewcode-block" id="SignaturePacket.pack"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.SignaturePacket.pack">[docs]</a> <span class="k">def</span> <span class="nf">pack</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; str</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_version</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_len_md_stuff</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_classification</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_timestamp</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_keyid</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pkc</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_md_algo</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_md_chksum</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sig</span>
- <span class="n">llf</span><span class="p">,</span> <span class="n">lenf</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_llf</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="p">))</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">ctb</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ctb</span> <span class="o">|</span> <span class="n">llf</span>
- <span class="k">return</span> <span class="s1">&#39;</span><span class="si">%s%s%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctb</span><span class="p">,</span> <span class="n">lenf</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="SignaturePacket.validate"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.SignaturePacket.validate">[docs]</a> <span class="k">def</span> <span class="nf">validate</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; None</span>
- <span class="c1"># FIXME this looks broken ... returning None always?</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_version</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">_OK_VERSION</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">None</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_len_md_stuff</span> <span class="o">!=</span> <span class="s1">&#39;</span><span class="se">\005</span><span class="s1">&#39;</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">None</span>
-
-</div></div>
-<div class="viewcode-block" id="PrivateKeyPacket"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.PrivateKeyPacket">[docs]</a><span class="k">class</span> <span class="nc">PrivateKeyPacket</span><span class="p">(</span><span class="n">Packet</span><span class="p">):</span> <span class="c1"># noqa</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="c1"># type: (int, IO[bytes]) -&gt; None</span>
- <span class="n">Packet</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">body</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_version</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_timestamp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_validity</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_pkc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
-
- <span class="bp">self</span><span class="o">.</span><span class="n">_nlen</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
- <span class="n">nlen</span> <span class="o">=</span> <span class="p">(</span><span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;&gt;H&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_nlen</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="mi">7</span><span class="p">)</span> <span class="o">/</span> <span class="mi">8</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_n</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">nlen</span><span class="p">)</span>
-
- <span class="bp">self</span><span class="o">.</span><span class="n">_elen</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
- <span class="n">elen</span> <span class="o">=</span> <span class="p">(</span><span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;&gt;H&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_elen</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="mi">7</span><span class="p">)</span> <span class="o">/</span> <span class="mi">8</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_e</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">elen</span><span class="p">)</span>
-
- <span class="bp">self</span><span class="o">.</span><span class="n">_cipher</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cipher</span> <span class="o">==</span> <span class="s1">&#39;</span><span class="se">\001</span><span class="s1">&#39;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_iv</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_iv</span> <span class="o">=</span> <span class="bp">None</span>
-
- <span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;d&#39;</span><span class="p">,</span> <span class="s1">&#39;p&#39;</span><span class="p">,</span> <span class="s1">&#39;q&#39;</span><span class="p">,</span> <span class="s1">&#39;u&#39;</span><span class="p">]:</span>
- <span class="n">_plen</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
- <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;_&#39;</span> <span class="o">+</span> <span class="n">param</span> <span class="o">+</span> <span class="s1">&#39;len&#39;</span><span class="p">,</span> <span class="n">_plen</span><span class="p">)</span>
- <span class="n">plen</span> <span class="o">=</span> <span class="p">(</span><span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;&gt;H&#39;</span><span class="p">,</span> <span class="n">_plen</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="mi">7</span><span class="p">)</span> <span class="o">/</span> <span class="mi">8</span>
- <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;_&#39;</span> <span class="o">+</span> <span class="n">param</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">plen</span><span class="p">))</span>
-
- <span class="bp">self</span><span class="o">.</span><span class="n">_cksum</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
-
-<div class="viewcode-block" id="PrivateKeyPacket.is_encrypted"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.PrivateKeyPacket.is_encrypted">[docs]</a> <span class="k">def</span> <span class="nf">is_encrypted</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; int</span>
- <span class="k">return</span> <span class="nb">ord</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_cipher</span><span class="p">)</span>
-
-</div></div>
-<div class="viewcode-block" id="CKEPacket"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.CKEPacket">[docs]</a><span class="k">class</span> <span class="nc">CKEPacket</span><span class="p">(</span><span class="n">Packet</span><span class="p">):</span> <span class="c1"># noqa</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="c1"># type: (int, IO[bytes]) -&gt; None</span>
- <span class="n">Packet</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">body</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_iv</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_cksum</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_ctxt</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
-
-</div>
-<div class="viewcode-block" id="PKEPacket"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.PKEPacket">[docs]</a><span class="k">class</span> <span class="nc">PKEPacket</span><span class="p">(</span><span class="n">Packet</span><span class="p">):</span> <span class="c1"># noqa</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="c1"># type: (int, IO[bytes]) -&gt; None</span>
- <span class="n">Packet</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">body</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_version</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_keyid</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_pkc</span> <span class="o">=</span> <span class="nb">ord</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span>
-
- <span class="n">deklen</span> <span class="o">=</span> <span class="p">(</span><span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;&gt;H&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">2</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="mi">7</span><span class="p">)</span> <span class="o">/</span> <span class="mi">8</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_dek</span> <span class="o">=</span> <span class="n">octx_to_num</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">deklen</span><span class="p">))</span>
-
-</div>
-<div class="viewcode-block" id="LiteralPacket"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.LiteralPacket">[docs]</a><span class="k">class</span> <span class="nc">LiteralPacket</span><span class="p">(</span><span class="n">Packet</span><span class="p">):</span> <span class="c1"># noqa</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="c1"># type: (int, IO[bytes]) -&gt; None</span>
- <span class="n">Packet</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">body</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">body</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">fmode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
- <span class="n">fnlen</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">fname</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">fnlen</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">ftime</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
- <span class="c1"># self.data = self.body.read()</span>
-
-</div>
-<div class="viewcode-block" id="CompressedPacket"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.CompressedPacket">[docs]</a><span class="k">class</span> <span class="nc">CompressedPacket</span><span class="p">(</span><span class="n">Packet</span><span class="p">):</span> <span class="c1"># noqa</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="n">stream</span><span class="p">):</span>
- <span class="c1"># type: (int, IO[bytes]) -&gt; None</span>
- <span class="n">Packet</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctb</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">body</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">algo</span> <span class="o">=</span> <span class="n">stream</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
- <span class="c1"># This reads the entire stream into memory.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">stream</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
-
-<div class="viewcode-block" id="CompressedPacket.validate"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.CompressedPacket.validate">[docs]</a> <span class="k">def</span> <span class="nf">validate</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; bool</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">algo</span> <span class="o">==</span> <span class="s1">&#39;</span><span class="se">\001</span><span class="s1">&#39;</span>
-</div>
-<div class="viewcode-block" id="CompressedPacket.uncompress"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.CompressedPacket.uncompress">[docs]</a> <span class="k">def</span> <span class="nf">uncompress</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; IO[bytes]</span>
- <span class="kn">import</span> <span class="nn">zlib</span>
- <span class="n">decomp</span> <span class="o">=</span> <span class="n">zlib</span><span class="o">.</span><span class="n">decompressobj</span><span class="p">(</span><span class="o">-</span><span class="mi">13</span><span class="p">)</span> <span class="c1"># RFC 2440, pg 61.</span>
- <span class="c1"># This doubles the memory usage.</span>
- <span class="n">stream</span> <span class="o">=</span> <span class="n">BytesIO</span><span class="p">(</span><span class="n">decomp</span><span class="o">.</span><span class="n">decompress</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">))</span>
- <span class="k">return</span> <span class="n">stream</span>
-
-</div></div>
-<span class="n">_FACTORY</span> <span class="o">=</span> <span class="p">{</span>
- <span class="mi">1</span><span class="p">:</span> <span class="n">PKEPacket</span><span class="p">,</span>
- <span class="mi">2</span><span class="p">:</span> <span class="n">SignaturePacket</span><span class="p">,</span>
- <span class="c1"># 3 : message_digest_packet, # XXX not implemented</span>
- <span class="mi">5</span><span class="p">:</span> <span class="n">PrivateKeyPacket</span><span class="p">,</span>
- <span class="mi">6</span><span class="p">:</span> <span class="n">PublicKeyPacket</span><span class="p">,</span>
- <span class="c1"># 8 : CompressedPacket, # special case</span>
- <span class="mi">9</span><span class="p">:</span> <span class="n">CKEPacket</span><span class="p">,</span>
- <span class="mi">11</span><span class="p">:</span> <span class="n">LiteralPacket</span><span class="p">,</span>
- <span class="mi">12</span><span class="p">:</span> <span class="n">TrustPacket</span><span class="p">,</span>
- <span class="mi">13</span><span class="p">:</span> <span class="n">UserIDPacket</span><span class="p">,</span>
- <span class="mi">14</span><span class="p">:</span> <span class="n">CommentPacket</span><span class="p">,</span>
- <span class="n">PKEPacket</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
- <span class="n">SignaturePacket</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span>
- <span class="c1"># 3 : message_digest_packet,</span>
- <span class="n">PrivateKeyPacket</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span>
- <span class="n">PublicKeyPacket</span><span class="p">:</span> <span class="mi">6</span><span class="p">,</span>
- <span class="c1"># 8 : CompressedPacket,</span>
- <span class="n">CKEPacket</span><span class="p">:</span> <span class="mi">9</span><span class="p">,</span>
- <span class="n">LiteralPacket</span><span class="p">:</span> <span class="mi">11</span><span class="p">,</span>
- <span class="n">TrustPacket</span><span class="p">:</span> <span class="mi">12</span><span class="p">,</span>
- <span class="n">UserIDPacket</span><span class="p">:</span> <span class="mi">13</span><span class="p">,</span>
- <span class="n">CommentPacket</span><span class="p">:</span> <span class="mi">14</span>
-<span class="p">}</span>
-
-
-<div class="viewcode-block" id="PacketStream"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.PacketStream">[docs]</a><span class="k">class</span> <span class="nc">PacketStream</span><span class="p">:</span> <span class="c1"># noqa</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">input</span><span class="p">):</span>
- <span class="c1"># type: (IO[bytes]) -&gt; None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">stream</span> <span class="o">=</span> <span class="nb">input</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">under_current</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_count</span> <span class="o">=</span> <span class="mi">0</span>
-
-<div class="viewcode-block" id="PacketStream.close"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.PacketStream.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">stream</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">under_current</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">under_current</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
-</div>
-<div class="viewcode-block" id="PacketStream.read"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.PacketStream.read">[docs]</a> <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keep_trying</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
- <span class="c1"># type: (int) -&gt; Packet</span>
- <span class="k">while</span> <span class="mi">1</span><span class="p">:</span>
- <span class="n">ctb0</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">stream</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="n">ctb0</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">None</span>
- <span class="n">ctb</span> <span class="o">=</span> <span class="nb">ord</span><span class="p">(</span><span class="n">ctb0</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">is_ctb</span><span class="p">(</span><span class="n">ctb</span><span class="p">):</span>
- <span class="k">break</span>
- <span class="k">elif</span> <span class="n">keep_trying</span><span class="p">:</span>
- <span class="k">continue</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">raise</span> <span class="n">XXXError</span>
- <span class="n">ctbt</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctb</span> <span class="o">&amp;</span> <span class="mh">0x3c</span><span class="p">)</span> <span class="o">&gt;&gt;</span> <span class="mi">2</span>
-
- <span class="k">if</span> <span class="n">ctbt</span> <span class="o">==</span> <span class="n">constants</span><span class="o">.</span><span class="n">CTB_COMPRESSED_DATA</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">under_current</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">stream</span>
- <span class="n">cp</span> <span class="o">=</span> <span class="n">CompressedPacket</span><span class="p">(</span><span class="n">ctb0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">stream</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">stream</span> <span class="o">=</span> <span class="n">cp</span><span class="o">.</span><span class="n">uncompress</span><span class="p">()</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
-
- <span class="c1"># Decode the length of following data. See RFC for details.</span>
- <span class="n">llf</span> <span class="o">=</span> <span class="n">ctb</span> <span class="o">&amp;</span> <span class="mi">3</span>
- <span class="k">if</span> <span class="n">llf</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
- <span class="n">lenf</span> <span class="o">=</span> <span class="nb">ord</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stream</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span>
- <span class="k">elif</span> <span class="n">llf</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
- <span class="n">lenf</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;&gt;H&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">stream</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">2</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span>
- <span class="k">elif</span> <span class="n">llf</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
- <span class="n">lenf</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;&gt;L&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">stream</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span>
- <span class="k">else</span><span class="p">:</span> <span class="c1"># llf == 3</span>
- <span class="k">raise</span> <span class="n">XXXError</span><span class="p">(</span><span class="s1">&#39;impossible case&#39;</span><span class="p">)</span>
-
- <span class="n">body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">stream</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">lenf</span><span class="p">)</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="n">body</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">body</span><span class="p">)</span> <span class="o">!=</span> <span class="n">lenf</span><span class="p">):</span>
- <span class="k">raise</span> <span class="n">XXXError</span><span class="p">(</span><span class="s1">&#39;corrupted Packet&#39;</span><span class="p">)</span>
-
- <span class="bp">self</span><span class="o">.</span><span class="n">_count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">stream</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">_FACTORY</span><span class="p">[</span><span class="n">ctbt</span><span class="p">](</span><span class="n">ctb0</span><span class="p">,</span> <span class="n">body</span><span class="p">)</span>
- <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">Packet</span><span class="p">(</span><span class="n">ctb0</span><span class="p">,</span> <span class="n">body</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="PacketStream.count"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.PacketStream.count">[docs]</a> <span class="k">def</span> <span class="nf">count</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; int</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_count</span>
-
-</div></div>
-<div class="viewcode-block" id="is_ctb"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.is_ctb">[docs]</a><span class="k">def</span> <span class="nf">is_ctb</span><span class="p">(</span><span class="n">ctb</span><span class="p">):</span>
- <span class="c1"># type: (int) -&gt; bool</span>
- <span class="k">return</span> <span class="n">ctb</span> <span class="o">&amp;</span> <span class="mh">0xc0</span>
-
-</div>
-<div class="viewcode-block" id="make_ctb"><a class="viewcode-back" href="../../../M2Crypto.PGP.html#M2Crypto.PGP.packet.make_ctb">[docs]</a><span class="k">def</span> <span class="nf">make_ctb</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">llf</span><span class="p">):</span>
- <span class="c1"># type: (int, int) -&gt; str</span>
- <span class="k">return</span> <span class="nb">chr</span><span class="p">((</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">7</span><span class="p">)</span> <span class="o">|</span> <span class="p">(</span><span class="n">value</span> <span class="o">&lt;&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="o">|</span> <span class="n">llf</span><span class="p">)</span></div>
-</pre></div>
-
- </div>
- </div>
- </div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
- <h3>Quick search</h3>
- <form class="search" action="../../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
- <div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/RC4.html b/doc/html/_modules/M2Crypto/RC4.html
index dc7b374..9c2e976 100644
--- a/doc/html/_modules/M2Crypto/RC4.html
+++ b/doc/html/_modules/M2Crypto/RC4.html
@@ -1,69 +1,59 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.RC4 &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.RC4 &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.RC4</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;M2Crypto wrapper for OpenSSL RC4 API.</span>
<span class="sd">Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.&quot;&quot;&quot;</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.m2</span> <span class="kn">import</span> <span class="n">rc4_free</span><span class="p">,</span> <span class="n">rc4_new</span><span class="p">,</span> <span class="n">rc4_set_key</span><span class="p">,</span> <span class="n">rc4_update</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.m2</span> <span class="k">import</span> <span class="n">rc4_free</span><span class="p">,</span> <span class="n">rc4_new</span><span class="p">,</span> <span class="n">rc4_set_key</span><span class="p">,</span> <span class="n">rc4_update</span>
-<div class="viewcode-block" id="RC4"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RC4.RC4">[docs]</a><span class="k">class</span> <span class="nc">RC4</span><span class="p">:</span>
+<div class="viewcode-block" id="RC4"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RC4.RC4">[docs]</a><span class="k">class</span> <span class="nc">RC4</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Object interface to the stream cipher RC4.&quot;&quot;&quot;</span>
<span class="n">rc4_free</span> <span class="o">=</span> <span class="n">rc4_free</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cipher</span> <span class="o">=</span> <span class="n">rc4_new</span><span class="p">()</span>
<span class="k">if</span> <span class="n">key</span><span class="p">:</span>
@@ -71,17 +61,17 @@
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;cipher&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">):</span>
+ <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;cipher&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">rc4_free</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cipher</span><span class="p">)</span>
<div class="viewcode-block" id="RC4.set_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RC4.RC4.set_key">[docs]</a> <span class="k">def</span> <span class="nf">set_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; None</span>
- <span class="n">rc4_set_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cipher</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span>
-</div>
+ <span class="n">rc4_set_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cipher</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="RC4.update"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RC4.RC4.update">[docs]</a> <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; bytes</span>
- <span class="k">return</span> <span class="n">rc4_update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cipher</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">rc4_update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cipher</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="RC4.final"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RC4.RC4.final">[docs]</a> <span class="k">def</span> <span class="nf">final</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; str</span>
<span class="k">return</span> <span class="s1">&#39;&#39;</span></div></div>
@@ -90,41 +80,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/RSA.html b/doc/html/_modules/M2Crypto/RSA.html
index 30933d1..f8509c8 100644
--- a/doc/html/_modules/M2Crypto/RSA.html
+++ b/doc/html/_modules/M2Crypto/RSA.html
@@ -1,55 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.RSA &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.RSA &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.RSA</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;M2Crypto wrapper for OpenSSL RSA API.</span>
@@ -57,14 +47,14 @@
<span class="kn">import</span> <span class="nn">sys</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">Err</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">IO</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">IO</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span> <span class="c1"># noqa</span>
<div class="viewcode-block" id="RSAError"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSAError">[docs]</a><span class="k">class</span> <span class="nc">RSAError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
- <span class="k">pass</span>
-</div>
+ <span class="k">pass</span></div>
+
<span class="n">m2</span><span class="o">.</span><span class="n">rsa_init</span><span class="p">(</span><span class="n">RSAError</span><span class="p">)</span>
<span class="n">no_padding</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">no_padding</span>
@@ -110,28 +100,28 @@
<div class="viewcode-block" id="RSA.pub"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.pub">[docs]</a> <span class="k">def</span> <span class="nf">pub</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; Tuple[bytes, bytes]</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_key</span><span class="p">(),</span> <span class="s1">&#39;key is not initialised&#39;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_get_e</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">),</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_get_n</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_get_e</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">),</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_get_n</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="RSA.public_encrypt"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.public_encrypt">[docs]</a> <span class="k">def</span> <span class="nf">public_encrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">padding</span><span class="p">):</span>
<span class="c1"># type: (bytes, int) -&gt; bytes</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_key</span><span class="p">(),</span> <span class="s1">&#39;key is not initialised&#39;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_public_encrypt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">padding</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_public_encrypt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">padding</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="RSA.public_decrypt"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.public_decrypt">[docs]</a> <span class="k">def</span> <span class="nf">public_decrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">padding</span><span class="p">):</span>
<span class="c1"># type: (bytes, int) -&gt; bytes</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_key</span><span class="p">(),</span> <span class="s1">&#39;key is not initialised&#39;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_public_decrypt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">padding</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_public_decrypt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">padding</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="RSA.private_encrypt"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.private_encrypt">[docs]</a> <span class="k">def</span> <span class="nf">private_encrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">padding</span><span class="p">):</span>
<span class="c1"># type: (bytes, int) -&gt; bytes</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_key</span><span class="p">(),</span> <span class="s1">&#39;key is not initialised&#39;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_private_encrypt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">padding</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_private_encrypt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">padding</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="RSA.private_decrypt"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.private_decrypt">[docs]</a> <span class="k">def</span> <span class="nf">private_decrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">padding</span><span class="p">):</span>
<span class="c1"># type: (bytes, int) -&gt; bytes</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_key</span><span class="p">(),</span> <span class="s1">&#39;key is not initialised&#39;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_private_decrypt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">padding</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_private_decrypt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">padding</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="RSA.save_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.save_key_bio">[docs]</a> <span class="k">def</span> <span class="nf">save_key_bio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bio</span><span class="p">,</span> <span class="n">cipher</span><span class="o">=</span><span class="s1">&#39;aes_128_cbc&#39;</span><span class="p">,</span>
<span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, Optional[str], Callable) -&gt; int</span>
@@ -149,17 +139,17 @@
<span class="sd"> the key. The default is</span>
<span class="sd"> util.passphrase_callback.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">cipher</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cipher</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_write_key_no_cipher</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">callback</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
- <span class="n">ciph</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">ciph</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">ciph</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">ciph</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">RSAError</span><span class="p">(</span><span class="s1">&#39;not such cipher </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">cipher</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">ciph</span> <span class="o">=</span> <span class="n">ciph</span><span class="p">()</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_write_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">ciph</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="RSA.save_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.save_key">[docs]</a> <span class="k">def</span> <span class="nf">save_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">file</span><span class="p">,</span> <span class="n">cipher</span><span class="o">=</span><span class="s1">&#39;aes_128_cbc&#39;</span><span class="p">,</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_write_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">ciph</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="RSA.save_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.save_key">[docs]</a> <span class="k">def</span> <span class="nf">save_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file</span><span class="p">,</span> <span class="n">cipher</span><span class="o">=</span><span class="s1">&#39;aes_128_cbc&#39;</span><span class="p">,</span>
<span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, Optional[str], Callable) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -176,9 +166,9 @@
<span class="sd"> the key. The default is</span>
<span class="sd"> util.passphrase_callback.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">save_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
-</div>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">save_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span></div>
+
<span class="n">save_pem</span> <span class="o">=</span> <span class="n">save_key</span>
<div class="viewcode-block" id="RSA.as_pem"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.as_pem">[docs]</a> <span class="k">def</span> <span class="nf">as_pem</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cipher</span><span class="o">=</span><span class="s1">&#39;aes_128_cbc&#39;</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
@@ -188,8 +178,8 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">bio</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">save_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">cipher</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">bio</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
-</div>
+ <span class="k">return</span> <span class="n">bio</span><span class="o">.</span><span class="n">read</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="RSA.save_key_der_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.save_key_der_bio">[docs]</a> <span class="k">def</span> <span class="nf">save_key_der_bio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bio</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -197,18 +187,18 @@
<span class="sd"> :param bio: M2Crypto.BIO.BIO object to save key to.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_write_key_der</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
-<div class="viewcode-block" id="RSA.save_key_der"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.save_key_der">[docs]</a> <span class="k">def</span> <span class="nf">save_key_der</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">file</span><span class="p">):</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_write_key_der</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
+<div class="viewcode-block" id="RSA.save_key_der"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.save_key_der">[docs]</a> <span class="k">def</span> <span class="nf">save_key_der</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Save the key pair to a file in DER format.</span>
<span class="sd"> :param file: Filename to save key to</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">save_key_der_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">)</span>
-</div>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">save_key_der_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="RSA.save_pub_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.save_pub_key_bio">[docs]</a> <span class="k">def</span> <span class="nf">save_pub_key_bio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bio</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -216,18 +206,18 @@
<span class="sd"> :param bio: M2Crypto.BIO.BIO object to save key to.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_write_pub_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
-<div class="viewcode-block" id="RSA.save_pub_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.save_pub_key">[docs]</a> <span class="k">def</span> <span class="nf">save_pub_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">file</span><span class="p">):</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_write_pub_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
+<div class="viewcode-block" id="RSA.save_pub_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.save_pub_key">[docs]</a> <span class="k">def</span> <span class="nf">save_pub_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Save the public key to a file in PEM format.</span>
<span class="sd"> :param file: Name of file to save key to.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_write_pub_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_write_pub_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="RSA.check_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.check_key">[docs]</a> <span class="k">def</span> <span class="nf">check_key</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -237,8 +227,8 @@
<span class="sd"> If the key is invalid or an error occurred, the reason</span>
<span class="sd"> code can be obtained using ERR_get_error(3).</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_check_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_check_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="RSA.sign_rsassa_pss"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.sign_rsassa_pss">[docs]</a> <span class="k">def</span> <span class="nf">sign_rsassa_pss</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">algo</span><span class="o">=</span><span class="s1">&#39;sha1&#39;</span><span class="p">,</span> <span class="n">salt_length</span><span class="o">=</span><span class="mi">20</span><span class="p">):</span>
<span class="c1"># type: (bytes, str, int) -&gt; bytes</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -254,15 +244,15 @@
<span class="sd"> :return: a string which is the signature</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="nb">hash</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
+ <span class="nb">hash</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="nb">hash</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">hash</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">RSAError</span><span class="p">(</span><span class="s1">&#39;not such hash algorithm </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">algo</span><span class="p">)</span>
<span class="n">signature</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_padding_add_pkcs1_pss</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="nb">hash</span><span class="p">(),</span> <span class="n">salt_length</span><span class="p">)</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">private_encrypt</span><span class="p">(</span><span class="n">signature</span><span class="p">,</span> <span class="n">m2</span><span class="o">.</span><span class="n">no_padding</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">private_encrypt</span><span class="p">(</span><span class="n">signature</span><span class="p">,</span> <span class="n">m2</span><span class="o">.</span><span class="n">no_padding</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="RSA.verify_rsassa_pss"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.verify_rsassa_pss">[docs]</a> <span class="k">def</span> <span class="nf">verify_rsassa_pss</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">signature</span><span class="p">,</span> <span class="n">algo</span><span class="o">=</span><span class="s1">&#39;sha1&#39;</span><span class="p">,</span> <span class="n">salt_length</span><span class="o">=</span><span class="mi">20</span><span class="p">):</span>
<span class="c1"># type: (bytes, bytes, str, int) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -281,15 +271,15 @@
<span class="sd"> :return: 1 or 0, depending on whether the signature was</span>
<span class="sd"> verified or not.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="nb">hash</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
+ <span class="nb">hash</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="nb">hash</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">hash</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">RSAError</span><span class="p">(</span><span class="s1">&#39;not such hash algorithm </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">algo</span><span class="p">)</span>
<span class="n">plain_signature</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">public_decrypt</span><span class="p">(</span><span class="n">signature</span><span class="p">,</span> <span class="n">m2</span><span class="o">.</span><span class="n">no_padding</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_verify_pkcs1_pss</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">plain_signature</span><span class="p">,</span> <span class="nb">hash</span><span class="p">(),</span> <span class="n">salt_length</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_verify_pkcs1_pss</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">plain_signature</span><span class="p">,</span> <span class="nb">hash</span><span class="p">(),</span> <span class="n">salt_length</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="RSA.sign"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.sign">[docs]</a> <span class="k">def</span> <span class="nf">sign</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">algo</span><span class="o">=</span><span class="s1">&#39;sha1&#39;</span><span class="p">):</span>
<span class="c1"># type: (bytes, str) -&gt; bytes</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -303,12 +293,12 @@
<span class="sd"> :return: a string which is the signature</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">digest_type</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="s1">&#39;NID_&#39;</span> <span class="o">+</span> <span class="n">algo</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">digest_type</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">digest_type</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="s1">&#39;NID_&#39;</span> <span class="o">+</span> <span class="n">algo</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">digest_type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;unknown algorithm&#39;</span><span class="p">,</span> <span class="n">algo</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_sign</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">digest_type</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_sign</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">digest_type</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="RSA.verify"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA.verify">[docs]</a> <span class="k">def</span> <span class="nf">verify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">signature</span><span class="p">,</span> <span class="n">algo</span><span class="o">=</span><span class="s1">&#39;sha1&#39;</span><span class="p">):</span>
<span class="c1"># type: (bytes, bytes, str) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -325,13 +315,13 @@
<span class="sd"> :return: 1 or 0, depending on whether the signature was</span>
<span class="sd"> verified or not.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">digest_type</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="s1">&#39;NID_&#39;</span> <span class="o">+</span> <span class="n">algo</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">digest_type</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">digest_type</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="s1">&#39;NID_&#39;</span> <span class="o">+</span> <span class="n">algo</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">digest_type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;unknown algorithm&#39;</span><span class="p">,</span> <span class="n">algo</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_verify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">signature</span><span class="p">,</span> <span class="n">digest_type</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_verify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">signature</span><span class="p">,</span> <span class="n">digest_type</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="RSA_pub"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA_pub">[docs]</a><span class="k">class</span> <span class="nc">RSA_pub</span><span class="p">(</span><span class="n">RSA</span><span class="p">):</span> <span class="c1"># noqa</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -343,44 +333,44 @@
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;e&#39;</span><span class="p">,</span> <span class="s1">&#39;n&#39;</span><span class="p">]:</span>
<span class="k">raise</span> <span class="n">RSAError</span><span class="p">(</span><span class="s1">&#39;use factory function new_pub_key() to set (e, n)&#39;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
+ <span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
<div class="viewcode-block" id="RSA_pub.private_encrypt"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA_pub.private_encrypt">[docs]</a> <span class="k">def</span> <span class="nf">private_encrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">argv</span><span class="p">):</span>
- <span class="c1"># type: (*List[Any]) -&gt; None</span>
- <span class="k">raise</span> <span class="n">RSAError</span><span class="p">(</span><span class="s1">&#39;RSA_pub object has no private key&#39;</span><span class="p">)</span>
-</div>
+ <span class="c1"># type: (*Any) -&gt; None</span>
+ <span class="k">raise</span> <span class="n">RSAError</span><span class="p">(</span><span class="s1">&#39;RSA_pub object has no private key&#39;</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="RSA_pub.private_decrypt"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA_pub.private_decrypt">[docs]</a> <span class="k">def</span> <span class="nf">private_decrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">argv</span><span class="p">):</span>
- <span class="c1"># type: (*List[Any]) -&gt; None</span>
- <span class="k">raise</span> <span class="n">RSAError</span><span class="p">(</span><span class="s1">&#39;RSA_pub object has no private key&#39;</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="RSA_pub.save_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA_pub.save_key">[docs]</a> <span class="k">def</span> <span class="nf">save_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">file</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
- <span class="c1"># type: (AnyStr, *List[Any], **Dict[Any, Any]) -&gt; int</span>
+ <span class="c1"># type: (*Any) -&gt; None</span>
+ <span class="k">raise</span> <span class="n">RSAError</span><span class="p">(</span><span class="s1">&#39;RSA_pub object has no private key&#39;</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="RSA_pub.save_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA_pub.save_key">[docs]</a> <span class="k">def</span> <span class="nf">save_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
+ <span class="c1"># type: (AnyStr, *Any, **Any) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Save public key to file.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">save_pub_key</span><span class="p">(</span><span class="nb">file</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">save_pub_key</span><span class="p">(</span><span class="n">file</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="RSA_pub.save_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA_pub.save_key_bio">[docs]</a> <span class="k">def</span> <span class="nf">save_key_bio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bio</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
- <span class="c1"># type: (BIO.BIO, *List[Any], **Dict[Any, Any]) -&gt; int</span>
+ <span class="c1"># type: (BIO.BIO, *Any, **Any) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Save public key to BIO.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">save_pub_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">)</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">save_pub_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">)</span></div>
<span class="c1"># save_key_der</span>
<span class="c1"># save_key_der_bio</span>
-</div>
+
<div class="viewcode-block" id="RSA_pub.check_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.RSA_pub.check_key">[docs]</a> <span class="k">def</span> <span class="nf">check_key</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_check_pub_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_check_pub_key</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rsa</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="rsa_error"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.rsa_error">[docs]</a><span class="k">def</span> <span class="nf">rsa_error</span><span class="p">():</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="k">raise</span> <span class="n">RSAError</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">err_reason_error_string</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">err_get_error</span><span class="p">()))</span>
+ <span class="k">raise</span> <span class="n">RSAError</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error_message</span><span class="p">())</span></div>
+
-</div>
<div class="viewcode-block" id="keygen_callback"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.keygen_callback">[docs]</a><span class="k">def</span> <span class="nf">keygen_callback</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">out</span><span class="o">=</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">):</span>
<span class="c1"># type: (int, Any, IO[str]) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -388,9 +378,9 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">ch</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;.&#39;</span><span class="p">,</span> <span class="s1">&#39;+&#39;</span><span class="p">,</span> <span class="s1">&#39;*&#39;</span><span class="p">,</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">]</span>
<span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">ch</span><span class="p">[</span><span class="n">p</span><span class="p">])</span>
- <span class="n">out</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
+ <span class="n">out</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span></div>
+
-</div>
<div class="viewcode-block" id="gen_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.gen_key">[docs]</a><span class="k">def</span> <span class="nf">gen_key</span><span class="p">(</span><span class="n">bits</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">keygen_callback</span><span class="p">):</span>
<span class="c1"># type: (int, int, Callable) -&gt; RSA</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -407,10 +397,10 @@
<span class="sd"> :return: M2Crypto.RSA.RSA object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">RSA</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">rsa_generate_key</span><span class="p">(</span><span class="n">bits</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="n">callback</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">RSA</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">rsa_generate_key</span><span class="p">(</span><span class="n">bits</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="n">callback</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span></div>
-</div>
-<div class="viewcode-block" id="load_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.load_key">[docs]</a><span class="k">def</span> <span class="nf">load_key</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
+
+<div class="viewcode-block" id="load_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.load_key">[docs]</a><span class="k">def</span> <span class="nf">load_key</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, Callable) -&gt; RSA</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Load an RSA key pair from file.</span>
@@ -423,10 +413,10 @@
<span class="sd"> :return: M2Crypto.RSA.RSA object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">load_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">load_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="load_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.load_key_bio">[docs]</a><span class="k">def</span> <span class="nf">load_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, Callable) -&gt; RSA</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -442,11 +432,11 @@
<span class="sd"> :return: M2Crypto.RSA.RSA object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">rsa</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_read_key</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">callback</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">rsa</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">rsa</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">rsa_error</span><span class="p">()</span>
- <span class="k">return</span> <span class="n">RSA</span><span class="p">(</span><span class="n">rsa</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">RSA</span><span class="p">(</span><span class="n">rsa</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="load_key_string"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.load_key_string">[docs]</a><span class="k">def</span> <span class="nf">load_key_string</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, Callable) -&gt; RSA</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -461,10 +451,10 @@
<span class="sd"> :return: M2Crypto.RSA.RSA object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">bio</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">load_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">load_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span></div>
-</div>
-<div class="viewcode-block" id="load_pub_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.load_pub_key">[docs]</a><span class="k">def</span> <span class="nf">load_pub_key</span><span class="p">(</span><span class="nb">file</span><span class="p">):</span>
+
+<div class="viewcode-block" id="load_pub_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.load_pub_key">[docs]</a><span class="k">def</span> <span class="nf">load_pub_key</span><span class="p">(</span><span class="n">file</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; RSA_pub</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Load an RSA public key from file.</span>
@@ -473,10 +463,10 @@
<span class="sd"> :return: M2Crypto.RSA.RSA_pub object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">load_pub_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">)</span>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">load_pub_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="load_pub_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.load_pub_key_bio">[docs]</a><span class="k">def</span> <span class="nf">load_pub_key_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO) -&gt; RSA_pub</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -488,11 +478,11 @@
<span class="sd"> :return: M2Crypto.RSA.RSA_pub object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">rsa</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">rsa_read_pub_key</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
- <span class="k">if</span> <span class="n">rsa</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">rsa</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">rsa_error</span><span class="p">()</span>
- <span class="k">return</span> <span class="n">RSA_pub</span><span class="p">(</span><span class="n">rsa</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">RSA_pub</span><span class="p">(</span><span class="n">rsa</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="new_pub_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.RSA.new_pub_key">[docs]</a><span class="k">def</span> <span class="nf">new_pub_key</span><span class="p">(</span><span class="n">e_n</span><span class="p">):</span>
<span class="c1"># type: (Tuple[bytes, bytes]) -&gt; RSA_pub</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -517,41 +507,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/Rand.html b/doc/html/_modules/M2Crypto/Rand.html
index f22a12f..2915acd 100644
--- a/doc/html/_modules/M2Crypto/Rand.html
+++ b/doc/html/_modules/M2Crypto/Rand.html
@@ -1,127 +1,235 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.Rand &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.Rand &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.Rand</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="sd">&quot;&quot;&quot;M2Crypto wrapper for OpenSSL PRNG. Requires OpenSSL 0.9.5 and above.</span>
-<span class="sd">&quot;&quot;&quot;M2Crypto wrapper for OpenSSL PRNG. Requires OpenSSL 0.9.5 and above.</span>
+<span class="sd">Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.</span>
+<span class="sd">Copyright (c) 2014-2017 Matej Cepl. All rights reserved.</span>
-<span class="sd">Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.&quot;&quot;&quot;</span>
+<span class="sd">See LICENCE for the license information.</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">List</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Tuple</span>
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;rand_seed&#39;</span><span class="p">,</span> <span class="s1">&#39;rand_add&#39;</span><span class="p">,</span> <span class="s1">&#39;load_file&#39;</span><span class="p">,</span> <span class="s1">&#39;save_file&#39;</span><span class="p">,</span> <span class="s1">&#39;rand_bytes&#39;</span><span class="p">,</span>
<span class="s1">&#39;rand_pseudo_bytes&#39;</span><span class="p">,</span> <span class="s1">&#39;rand_file_name&#39;</span><span class="p">,</span> <span class="s1">&#39;rand_status&#39;</span><span class="p">]</span>
-<span class="n">rand_seed</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">rand_seed</span> <span class="c1"># type: (bytes) -&gt; None</span>
-<span class="n">rand_add</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">rand_add</span> <span class="c1"># type: (bytes, float) -&gt; None</span>
-<span class="n">load_file</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">rand_load_file</span> <span class="c1"># type: (AnyStr, int) -&gt; int</span>
-<span class="n">save_file</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">rand_save_file</span> <span class="c1"># type: (AnyStr) -&gt; int</span>
-<span class="n">rand_bytes</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">rand_bytes</span> <span class="c1"># type: (int) -&gt; bytes</span>
-<span class="n">rand_status</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">rand_status</span> <span class="c1"># type: () -&gt; int</span>
+<div class="viewcode-block" id="rand_add"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Rand.rand_add">[docs]</a><span class="k">def</span> <span class="nf">rand_add</span><span class="p">(</span><span class="n">blob</span><span class="p">,</span> <span class="n">entropy</span><span class="p">):</span>
+ <span class="c1"># type: (bytes, float) -&gt; None</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Mixes blob into the PRNG state.</span>
+
+<span class="sd"> :param blob: added data</span>
+<span class="sd"> :param entropy: (the lower bound of) an estimate of how much randomness</span>
+<span class="sd"> is contained in blob, measured in bytes.</span>
+
+<span class="sd"> Thus, if the data at buf are unpredictable to an adversary, this</span>
+<span class="sd"> increases the uncertainty about the state and makes the PRNG output less</span>
+<span class="sd"> predictable. Suitable input comes from user interaction (random key</span>
+<span class="sd"> presses, mouse movements) and certain hardware events.</span>
+
+<span class="sd"> Details about sources of randomness and how to estimate their entropy</span>
+<span class="sd"> can be found in the literature, e.g. RFC 1750.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="n">m2</span><span class="o">.</span><span class="n">rand_add</span><span class="p">(</span><span class="n">blob</span><span class="p">,</span> <span class="n">entropy</span><span class="p">)</span> <span class="c1"># pylint: disable=no-member</span></div>
+
+
+<div class="viewcode-block" id="rand_seed"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Rand.rand_seed">[docs]</a><span class="k">def</span> <span class="nf">rand_seed</span><span class="p">(</span><span class="n">seed</span><span class="p">):</span>
+ <span class="c1"># type: (bytes) -&gt; None</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Equivalent to rand_add() when len(seed) == entropy.</span>
+
+<span class="sd"> :param seed: added data (see description at rand_add)</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="n">m2</span><span class="o">.</span><span class="n">rand_seed</span><span class="p">(</span><span class="n">seed</span><span class="p">)</span> <span class="c1"># pylint: disable=no-member</span></div>
+
+
+<div class="viewcode-block" id="rand_status"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Rand.rand_status">[docs]</a><span class="k">def</span> <span class="nf">rand_status</span><span class="p">():</span>
+ <span class="c1"># type: () -&gt; int</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Check whether there is enough entropy in PRNG.</span>
+
+<span class="sd"> :return: 1 if the PRNG has been seeded with enough</span>
+<span class="sd"> data, 0 otherwise.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rand_status</span><span class="p">()</span> <span class="c1"># pylint: disable=no-member</span></div>
+
+
+<div class="viewcode-block" id="rand_file_name"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Rand.rand_file_name">[docs]</a><span class="k">def</span> <span class="nf">rand_file_name</span><span class="p">():</span>
+ <span class="c1"># type: () -&gt; AnyStr</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Generate a default path for the random seed file.</span>
+
+<span class="sd"> :return: string with the filename.</span>
+<span class="sd"> The seed file is $RANDFILE if that environment variable</span>
+<span class="sd"> is set, $HOME/.rnd otherwise. If $HOME is not set either,</span>
+<span class="sd"> an error occurs.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">rand_file_name</span><span class="p">())</span> <span class="c1"># pylint: disable=no-member</span></div>
+
+
+<div class="viewcode-block" id="load_file"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Rand.load_file">[docs]</a><span class="k">def</span> <span class="nf">load_file</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">max_bytes</span><span class="p">):</span>
+ <span class="c1"># type: (bytes, int) -&gt; int</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Read a number of bytes from file filename and adds them to the PRNG.</span>
+
+<span class="sd"> If max_bytes is non-negative, up to to max_bytes are read; starting with</span>
+<span class="sd"> OpenSSL 0.9.5, if max_bytes is -1, the complete file is read.</span>
-<div class="viewcode-block" id="rand_pseudo_bytes"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Rand.rand_pseudo_bytes">[docs]</a><span class="k">def</span> <span class="nf">rand_pseudo_bytes</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
+<span class="sd"> :param filename:</span>
+<span class="sd"> :param max_bytes:</span>
+<span class="sd"> :return: the number of bytes read.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rand_load_file</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">max_bytes</span><span class="p">)</span> <span class="c1"># pylint: disable=no-member</span></div>
+
+
+<div class="viewcode-block" id="save_file"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Rand.save_file">[docs]</a><span class="k">def</span> <span class="nf">save_file</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span>
+ <span class="c1"># type: (AnyStr) -&gt; int</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Write a number of random bytes (currently 1024) to file.</span>
+
+<span class="sd"> The file then can be used to initialize the PRNG by calling load_file() in</span>
+<span class="sd"> a later session.</span>
+
+<span class="sd"> :param filename:</span>
+<span class="sd"> :return: returns the number of bytes written, and -1 if the bytes</span>
+<span class="sd"> written were generated without appropriate seed.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rand_save_file</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span> <span class="c1"># pylint: disable=no-member</span></div>
+
+
+<div class="viewcode-block" id="rand_bytes"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Rand.rand_bytes">[docs]</a><span class="k">def</span> <span class="nf">rand_bytes</span><span class="p">(</span><span class="n">num</span><span class="p">):</span>
+ <span class="c1"># type: (int) -&gt; bytes</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Return n cryptographically strong pseudo-random bytes.</span>
+
+<span class="sd"> An error occurs if the PRNG has not been seeded with enough randomness</span>
+<span class="sd"> to ensure an unpredictable byte sequence.</span>
+
+<span class="sd"> :param num: number of bytes to be returned</span>
+<span class="sd"> :return: random bytes</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="n">out</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">rand_bytes</span><span class="p">(</span><span class="n">num</span><span class="p">)</span> <span class="c1"># pylint: disable=no-member</span>
+ <span class="k">if</span> <span class="n">out</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Not enough randomness.&#39;</span><span class="p">)</span>
+ <span class="k">elif</span> <span class="n">out</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Not supported by the current RAND method.&#39;</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">out</span></div>
+
+
+<div class="viewcode-block" id="rand_pseudo_bytes"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Rand.rand_pseudo_bytes">[docs]</a><span class="k">def</span> <span class="nf">rand_pseudo_bytes</span><span class="p">(</span><span class="n">num</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; Tuple[bytes, int]</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> Return num pseudo-random bytes into buf.</span>
+
+<span class="sd"> Pseudo-random byte sequences generated by this method will be unique</span>
+<span class="sd"> if they are of sufficient length, but are not necessarily</span>
+<span class="sd"> unpredictable. They can be used for non-cryptographic purposes and for</span>
+<span class="sd"> certain purposes in cryptographic protocols, but usually not for key</span>
+<span class="sd"> generation etc.</span>
+
+<span class="sd"> Output of the function is mixed into the entropy pool before</span>
+<span class="sd"> retrieving the new pseudo-random bytes unless disabled at compile</span>
+<span class="sd"> time (see FAQ).</span>
+
+<span class="sd"> :param num: number of bytes to be returned</span>
+<span class="sd"> :return: random bytes</span>
+<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">warnings</span>
- <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s1">&#39;The underlying OpenSSL method has been &#39;</span> <span class="o">+</span>
- <span class="s1">&#39;deprecated. Use Rand.rand_bytes instead.&#39;</span><span class="p">,</span> <span class="ne">DeprecationWarning</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">rand_pseudo_bytes</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">m2</span><span class="o">.</span><span class="n">OPENSSL_VERSION_NUMBER</span> <span class="o">&gt;=</span> <span class="mh">0x10100000</span><span class="p">:</span>
+ <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s1">&#39;The underlying OpenSSL method has been &#39;</span> <span class="o">+</span>
+ <span class="s1">&#39;deprecated. Use Rand.rand_bytes instead.&#39;</span><span class="p">,</span>
+ <span class="ne">DeprecationWarning</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="rand_file_name"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.Rand.rand_file_name">[docs]</a><span class="k">def</span> <span class="nf">rand_file_name</span><span class="p">():</span>
- <span class="c1"># type: () -&gt; str</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">rand_file_name</span><span class="p">())</span></div>
+ <span class="n">out</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">rand_pseudo_bytes</span><span class="p">(</span><span class="n">num</span><span class="p">)</span> <span class="c1"># pylint: disable=no-member</span>
+ <span class="k">if</span> <span class="n">out</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Not enough randomness.&#39;</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">out</span></div>
</pre></div>
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/SMIME.html b/doc/html/_modules/M2Crypto/SMIME.html
index 18a768d..2b0bb6f 100644
--- a/doc/html/_modules/M2Crypto/SMIME.html
+++ b/doc/html/_modules/M2Crypto/SMIME.html
@@ -1,63 +1,53 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.SMIME &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.SMIME &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.SMIME</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;M2Crypto wrapper for OpenSSL S/MIME API.</span>
<span class="sd">Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.&quot;&quot;&quot;</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">EVP</span><span class="p">,</span> <span class="n">Err</span><span class="p">,</span> <span class="n">X509</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">EVP</span><span class="p">,</span> <span class="n">Err</span><span class="p">,</span> <span class="n">X509</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
<span class="n">PKCS7_TEXT</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">PKCS7_TEXT</span> <span class="c1"># type: int</span>
<span class="n">PKCS7_NOCERTS</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">PKCS7_NOCERTS</span> <span class="c1"># type: int</span>
@@ -76,8 +66,8 @@
<div class="viewcode-block" id="PKCS7_Error"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.PKCS7_Error">[docs]</a><span class="k">class</span> <span class="nc">PKCS7_Error</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span> <span class="c1"># noqa</span>
- <span class="k">pass</span>
-</div>
+ <span class="k">pass</span></div>
+
<span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_init</span><span class="p">(</span><span class="n">PKCS7_Error</span><span class="p">)</span>
@@ -85,13 +75,14 @@
<span class="n">m2_pkcs7_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_free</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pkcs7</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pkcs7</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (Optional[bytes], int) -&gt; None</span>
- <span class="sd">&quot;&quot;&quot;</span>
+ <span class="sd">&quot;&quot;&quot;PKCS7 object.</span>
+
<span class="sd"> :param pkcs7: binary representation of</span>
<span class="sd"> the OpenSSL type PKCS7</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">pkcs7</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">pkcs7</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">pkcs7</span> <span class="o">=</span> <span class="n">pkcs7</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pyfree</span> <span class="o">=</span> <span class="n">_pyfree</span>
<span class="k">else</span><span class="p">:</span>
@@ -111,26 +102,26 @@
<span class="k">if</span> <span class="n">text_name</span><span class="p">:</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_type_sn</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkcs7</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_type_nid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkcs7</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_type_nid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkcs7</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="PKCS7.write"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.PKCS7.write">[docs]</a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bio</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO) -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_write_bio</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkcs7</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_write_bio</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkcs7</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="PKCS7.write_der"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.PKCS7.write_der">[docs]</a> <span class="k">def</span> <span class="nf">write_der</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bio</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO) -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_write_bio_der</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkcs7</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_write_bio_der</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkcs7</span><span class="p">,</span> <span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="PKCS7.get0_signers"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.PKCS7.get0_signers">[docs]</a> <span class="k">def</span> <span class="nf">get0_signers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">certs</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (X509.X509_Stack, int) -&gt; X509.X509_Stack</span>
<span class="k">return</span> <span class="n">X509</span><span class="o">.</span><span class="n">X509_Stack</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_get0_signers</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pkcs7</span><span class="p">,</span>
- <span class="n">certs</span><span class="o">.</span><span class="n">stack</span><span class="p">,</span> <span class="n">flags</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="n">certs</span><span class="o">.</span><span class="n">stack</span><span class="p">,</span> <span class="n">flags</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="load_pkcs7"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.load_pkcs7">[docs]</a><span class="k">def</span> <span class="nf">load_pkcs7</span><span class="p">(</span><span class="n">p7file</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; PKCS7</span>
<span class="n">bio</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_new_file</span><span class="p">(</span><span class="n">p7file</span><span class="p">,</span> <span class="s1">&#39;r&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">bio</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">bio</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">BIO</span><span class="o">.</span><span class="n">BIOError</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
<span class="k">try</span><span class="p">:</span>
@@ -138,15 +129,15 @@
<span class="k">finally</span><span class="p">:</span>
<span class="n">m2</span><span class="o">.</span><span class="n">bio_free</span><span class="p">(</span><span class="n">bio</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">p7_ptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">p7_ptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">PKCS7_Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">p7_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">p7_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="load_pkcs7_der"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.load_pkcs7_der">[docs]</a><span class="k">def</span> <span class="nf">load_pkcs7_der</span><span class="p">(</span><span class="n">p7file</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; PKCS7</span>
<span class="n">bio</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_new_file</span><span class="p">(</span><span class="n">p7file</span><span class="p">,</span> <span class="s1">&#39;r&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">bio</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">bio</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">BIO</span><span class="o">.</span><span class="n">BIOError</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
<span class="k">try</span><span class="p">:</span>
@@ -154,31 +145,31 @@
<span class="k">finally</span><span class="p">:</span>
<span class="n">m2</span><span class="o">.</span><span class="n">bio_free</span><span class="p">(</span><span class="n">bio</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">p7_ptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">p7_ptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">PKCS7_Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">p7_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">p7_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="load_pkcs7_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.load_pkcs7_bio">[docs]</a><span class="k">def</span> <span class="nf">load_pkcs7_bio</span><span class="p">(</span><span class="n">p7_bio</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO) -&gt; PKCS7</span>
<span class="n">p7_ptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_read_bio</span><span class="p">(</span><span class="n">p7_bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
- <span class="k">if</span> <span class="n">p7_ptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">p7_ptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">PKCS7_Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">p7_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">p7_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="load_pkcs7_bio_der"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.load_pkcs7_bio_der">[docs]</a><span class="k">def</span> <span class="nf">load_pkcs7_bio_der</span><span class="p">(</span><span class="n">p7_bio</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO) -&gt; PKCS7</span>
<span class="n">p7_ptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_read_bio_der</span><span class="p">(</span><span class="n">p7_bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
- <span class="k">if</span> <span class="n">p7_ptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">p7_ptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">PKCS7_Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">p7_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">p7_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="smime_load_pkcs7"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.smime_load_pkcs7">[docs]</a><span class="k">def</span> <span class="nf">smime_load_pkcs7</span><span class="p">(</span><span class="n">p7file</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; PKCS7</span>
<span class="n">bio</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_new_file</span><span class="p">(</span><span class="n">p7file</span><span class="p">,</span> <span class="s1">&#39;r&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">bio</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">bio</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">BIO</span><span class="o">.</span><span class="n">BIOError</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
<span class="k">try</span><span class="p">:</span>
@@ -186,97 +177,97 @@
<span class="k">finally</span><span class="p">:</span>
<span class="n">m2</span><span class="o">.</span><span class="n">bio_free</span><span class="p">(</span><span class="n">bio</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">p7_ptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">p7_ptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">SMIME_Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">if</span> <span class="n">bio_ptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">p7_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="bp">None</span>
+ <span class="k">if</span> <span class="n">bio_ptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">p7_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">p7_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">BIO</span><span class="o">.</span><span class="n">BIO</span><span class="p">(</span><span class="n">bio_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">p7_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">BIO</span><span class="o">.</span><span class="n">BIO</span><span class="p">(</span><span class="n">bio_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="smime_load_pkcs7_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.smime_load_pkcs7_bio">[docs]</a><span class="k">def</span> <span class="nf">smime_load_pkcs7_bio</span><span class="p">(</span><span class="n">p7_bio</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO) -&gt; PKCS7</span>
<span class="n">p7_ptr</span><span class="p">,</span> <span class="n">bio_ptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">smime_read_pkcs7</span><span class="p">(</span><span class="n">p7_bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
- <span class="k">if</span> <span class="n">p7_ptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">p7_ptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">SMIME_Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">if</span> <span class="n">bio_ptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">p7_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="bp">None</span>
+ <span class="k">if</span> <span class="n">bio_ptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">p7_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">p7_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">BIO</span><span class="o">.</span><span class="n">BIO</span><span class="p">(</span><span class="n">bio_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">p7_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">BIO</span><span class="o">.</span><span class="n">BIO</span><span class="p">(</span><span class="n">bio_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
-</div>
-<div class="viewcode-block" id="Cipher"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.Cipher">[docs]</a><span class="k">class</span> <span class="nc">Cipher</span><span class="p">:</span>
+<div class="viewcode-block" id="Cipher"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.Cipher">[docs]</a><span class="k">class</span> <span class="nc">Cipher</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Object interface to EVP_CIPHER without all the frills of</span>
<span class="sd"> M2Crypto.EVP.Cipher.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">algo</span><span class="p">):</span>
<span class="c1"># type: (str) -&gt; None</span>
- <span class="n">cipher</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">cipher</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">cipher</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">cipher</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;unknown cipher&#39;</span><span class="p">,</span> <span class="n">algo</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cipher</span> <span class="o">=</span> <span class="n">cipher</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">_ptr</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cipher</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cipher</span></div>
+
-</div>
<div class="viewcode-block" id="SMIME_Error"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME_Error">[docs]</a><span class="k">class</span> <span class="nc">SMIME_Error</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span> <span class="c1"># noqa</span>
- <span class="k">pass</span>
-</div>
+ <span class="k">pass</span></div>
+
<span class="n">m2</span><span class="o">.</span><span class="n">smime_init</span><span class="p">(</span><span class="n">SMIME_Error</span><span class="p">)</span>
+
<span class="c1"># FIXME class has no __init__ method</span>
<div class="viewcode-block" id="SMIME"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME">[docs]</a><span class="k">class</span> <span class="nc">SMIME</span><span class="p">:</span>
-<div class="viewcode-block" id="SMIME.load_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.load_key">[docs]</a> <span class="k">def</span> <span class="nf">load_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyfile</span><span class="p">,</span> <span class="n">certfile</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
+<div class="viewcode-block" id="SMIME.load_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.load_key">[docs]</a> <span class="k">def</span> <span class="nf">load_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyfile</span><span class="p">,</span> <span class="n">certfile</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, Optional[AnyStr], Callable) -&gt; None</span>
- <span class="k">if</span> <span class="n">certfile</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">certfile</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">certfile</span> <span class="o">=</span> <span class="n">keyfile</span>
<span class="bp">self</span><span class="o">.</span><span class="n">pkey</span> <span class="o">=</span> <span class="n">EVP</span><span class="o">.</span><span class="n">load_key</span><span class="p">(</span><span class="n">keyfile</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">x509</span> <span class="o">=</span> <span class="n">X509</span><span class="o">.</span><span class="n">load_cert</span><span class="p">(</span><span class="n">certfile</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="SMIME.load_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.load_key_bio">[docs]</a> <span class="k">def</span> <span class="nf">load_key_bio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keybio</span><span class="p">,</span> <span class="n">certbio</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">x509</span> <span class="o">=</span> <span class="n">X509</span><span class="o">.</span><span class="n">load_cert</span><span class="p">(</span><span class="n">certfile</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="SMIME.load_key_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.load_key_bio">[docs]</a> <span class="k">def</span> <span class="nf">load_key_bio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keybio</span><span class="p">,</span> <span class="n">certbio</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, Optional[BIO.BIO], Callable) -&gt; None</span>
- <span class="k">if</span> <span class="n">certbio</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">certbio</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">certbio</span> <span class="o">=</span> <span class="n">keybio</span>
<span class="bp">self</span><span class="o">.</span><span class="n">pkey</span> <span class="o">=</span> <span class="n">EVP</span><span class="o">.</span><span class="n">load_key_bio</span><span class="p">(</span><span class="n">keybio</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">x509</span> <span class="o">=</span> <span class="n">X509</span><span class="o">.</span><span class="n">load_cert_bio</span><span class="p">(</span><span class="n">certbio</span><span class="p">)</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">x509</span> <span class="o">=</span> <span class="n">X509</span><span class="o">.</span><span class="n">load_cert_bio</span><span class="p">(</span><span class="n">certbio</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="SMIME.set_x509_stack"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.set_x509_stack">[docs]</a> <span class="k">def</span> <span class="nf">set_x509_stack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stack</span><span class="p">):</span>
<span class="c1"># type: (X509.X509_Stack) -&gt; None</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">stack</span><span class="p">,</span> <span class="n">X509</span><span class="o">.</span><span class="n">X509_Stack</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">x509_stack</span> <span class="o">=</span> <span class="n">stack</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">x509_stack</span> <span class="o">=</span> <span class="n">stack</span></div>
+
<div class="viewcode-block" id="SMIME.set_x509_store"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.set_x509_store">[docs]</a> <span class="k">def</span> <span class="nf">set_x509_store</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">store</span><span class="p">):</span>
<span class="c1"># type: (X509.X509_Store) -&gt; None</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">store</span><span class="p">,</span> <span class="n">X509</span><span class="o">.</span><span class="n">X509_Store</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">x509_store</span> <span class="o">=</span> <span class="n">store</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">x509_store</span> <span class="o">=</span> <span class="n">store</span></div>
+
<div class="viewcode-block" id="SMIME.set_cipher"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.set_cipher">[docs]</a> <span class="k">def</span> <span class="nf">set_cipher</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cipher</span><span class="p">):</span>
<span class="c1"># type: (Cipher) -&gt; None</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cipher</span><span class="p">,</span> <span class="n">Cipher</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">cipher</span> <span class="o">=</span> <span class="n">cipher</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">cipher</span> <span class="o">=</span> <span class="n">cipher</span></div>
+
<div class="viewcode-block" id="SMIME.unset_key"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.unset_key">[docs]</a> <span class="k">def</span> <span class="nf">unset_key</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">pkey</span>
- <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">x509</span>
-</div>
+ <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">x509</span></div>
+
<div class="viewcode-block" id="SMIME.unset_x509_stack"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.unset_x509_stack">[docs]</a> <span class="k">def</span> <span class="nf">unset_x509_stack</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">x509_stack</span>
-</div>
+ <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">x509_stack</span></div>
+
<div class="viewcode-block" id="SMIME.unset_x509_store"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.unset_x509_store">[docs]</a> <span class="k">def</span> <span class="nf">unset_x509_store</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">x509_store</span>
-</div>
+ <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">x509_store</span></div>
+
<div class="viewcode-block" id="SMIME.unset_cipher"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.unset_cipher">[docs]</a> <span class="k">def</span> <span class="nf">unset_cipher</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">cipher</span>
-</div>
+ <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">cipher</span></div>
+
<div class="viewcode-block" id="SMIME.encrypt"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.encrypt">[docs]</a> <span class="k">def</span> <span class="nf">encrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_bio</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, int) -&gt; PKCS7</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;cipher&#39;</span><span class="p">):</span>
@@ -285,10 +276,10 @@
<span class="k">raise</span> <span class="n">SMIME_Error</span><span class="p">(</span><span class="s1">&#39;no recipient certs: use set_x509_stack()&#39;</span><span class="p">)</span>
<span class="n">pkcs7</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_encrypt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_stack</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">data_bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cipher</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">flags</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">pkcs7</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">pkcs7</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">SMIME_Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">pkcs7</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">pkcs7</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="SMIME.decrypt"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.decrypt">[docs]</a> <span class="k">def</span> <span class="nf">decrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pkcs7</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (PKCS7, int) -&gt; Optional[bytes]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;pkey&#39;</span><span class="p">):</span>
@@ -297,35 +288,35 @@
<span class="k">raise</span> <span class="n">SMIME_Error</span><span class="p">(</span><span class="s1">&#39;no certificate: load_key() used incorrectly?&#39;</span><span class="p">)</span>
<span class="n">blob</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_decrypt</span><span class="p">(</span><span class="n">pkcs7</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span>
<span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">flags</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">blob</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">blob</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">SMIME_Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">blob</span>
-</div>
+ <span class="k">return</span> <span class="n">blob</span></div>
+
<div class="viewcode-block" id="SMIME.sign"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.sign">[docs]</a> <span class="k">def</span> <span class="nf">sign</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_bio</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">algo</span><span class="o">=</span><span class="s1">&#39;sha1&#39;</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, int, Optional[str]) -&gt; PKCS7</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;pkey&#39;</span><span class="p">):</span>
<span class="k">raise</span> <span class="n">SMIME_Error</span><span class="p">(</span><span class="s1">&#39;no private key: use load_key()&#39;</span><span class="p">)</span>
- <span class="nb">hash</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
+ <span class="nb">hash</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">algo</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="nb">hash</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">hash</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">SMIME_Error</span><span class="p">(</span><span class="s1">&#39;no such hash algorithm </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">algo</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;x509_stack&#39;</span><span class="p">):</span>
<span class="n">pkcs7</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_sign1</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span>
<span class="bp">self</span><span class="o">.</span><span class="n">x509_stack</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span>
<span class="n">data_bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="nb">hash</span><span class="p">(),</span> <span class="n">flags</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">pkcs7</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">pkcs7</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">SMIME_Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
<span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">pkcs7</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">pkcs7</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_sign0</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">pkey</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span>
<span class="n">data_bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="nb">hash</span><span class="p">(),</span> <span class="n">flags</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">pkcs7</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">pkcs7</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">SMIME_Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">pkcs7</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="SMIME.verify"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.verify">[docs]</a> <span class="k">def</span> <span class="nf">verify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pkcs7</span><span class="p">,</span> <span class="n">data_bio</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+ <span class="k">return</span> <span class="n">PKCS7</span><span class="p">(</span><span class="n">pkcs7</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="SMIME.verify"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.verify">[docs]</a> <span class="k">def</span> <span class="nf">verify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pkcs7</span><span class="p">,</span> <span class="n">data_bio</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (PKCS7, BIO.BIO, int) -&gt; Optional[bytes]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;x509_stack&#39;</span><span class="p">):</span>
<span class="k">raise</span> <span class="n">SMIME_Error</span><span class="p">(</span><span class="s1">&#39;no signer certs: use set_x509_stack()&#39;</span><span class="p">)</span>
@@ -333,27 +324,27 @@
<span class="k">raise</span> <span class="n">SMIME_Error</span><span class="p">(</span><span class="s1">&#39;no x509 cert store: use set_x509_store()&#39;</span><span class="p">)</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">pkcs7</span><span class="p">,</span> <span class="n">PKCS7</span><span class="p">),</span> <span class="s1">&#39;pkcs7 not an instance of PKCS7&#39;</span>
<span class="n">p7</span> <span class="o">=</span> <span class="n">pkcs7</span><span class="o">.</span><span class="n">_ptr</span><span class="p">()</span>
- <span class="k">if</span> <span class="n">data_bio</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">data_bio</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">blob</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_verify0</span><span class="p">(</span><span class="n">p7</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">x509_stack</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span>
<span class="bp">self</span><span class="o">.</span><span class="n">x509_store</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">flags</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">blob</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">pkcs7_verify1</span><span class="p">(</span><span class="n">p7</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">x509_stack</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span>
<span class="bp">self</span><span class="o">.</span><span class="n">x509_store</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span>
<span class="n">data_bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">flags</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">blob</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">blob</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">SMIME_Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">blob</span>
-</div>
-<div class="viewcode-block" id="SMIME.write"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.write">[docs]</a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">out_bio</span><span class="p">,</span> <span class="n">pkcs7</span><span class="p">,</span> <span class="n">data_bio</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+ <span class="k">return</span> <span class="n">blob</span></div>
+
+<div class="viewcode-block" id="SMIME.write"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.SMIME.write">[docs]</a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">out_bio</span><span class="p">,</span> <span class="n">pkcs7</span><span class="p">,</span> <span class="n">data_bio</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, PKCS7, Optional[BIO.BIO], int) -&gt; int</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">pkcs7</span><span class="p">,</span> <span class="n">PKCS7</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">data_bio</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">data_bio</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">smime_write_pkcs7</span><span class="p">(</span><span class="n">out_bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">pkcs7</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">flags</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">smime_write_pkcs7_multi</span><span class="p">(</span><span class="n">out_bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">pkcs7</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span>
- <span class="n">data_bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">flags</span><span class="p">)</span>
+ <span class="n">data_bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">flags</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="text_crlf"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.text_crlf">[docs]</a><span class="k">def</span> <span class="nf">text_crlf</span><span class="p">(</span><span class="n">text</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; bytes</span>
<span class="n">bio_in</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
@@ -361,9 +352,9 @@
<span class="k">if</span> <span class="n">m2</span><span class="o">.</span><span class="n">smime_crlf_copy</span><span class="p">(</span><span class="n">bio_in</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">bio_out</span><span class="o">.</span><span class="n">_ptr</span><span class="p">()):</span>
<span class="k">return</span> <span class="n">bio_out</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">raise</span> <span class="n">SMIME_Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
+ <span class="k">raise</span> <span class="n">SMIME_Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span></div>
+
-</div>
<div class="viewcode-block" id="text_crlf_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.SMIME.text_crlf_bio">[docs]</a><span class="k">def</span> <span class="nf">text_crlf_bio</span><span class="p">(</span><span class="n">bio_in</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO) -&gt; BIO.BIO</span>
<span class="n">bio_out</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">()</span>
@@ -376,41 +367,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/SSL.html b/doc/html/_modules/M2Crypto/SSL.html
index 6659f09..a7db7e9 100644
--- a/doc/html/_modules/M2Crypto/SSL.html
+++ b/doc/html/_modules/M2Crypto/SSL.html
@@ -1,55 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.SSL &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.SSL &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.SSL</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;M2Crypto SSL services.</span>
@@ -58,26 +48,26 @@
<span class="kn">import</span> <span class="nn">socket</span>
<span class="c1"># M2Crypto</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">m2</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">_m2crypto</span> <span class="k">as</span> <span class="n">m2</span>
<div class="viewcode-block" id="SSLError"><a class="viewcode-back" href="../../M2Crypto.SSL.html#M2Crypto.SSL.SSLError">[docs]</a><span class="k">class</span> <span class="nc">SSLError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
- <span class="k">pass</span>
+ <span class="k">pass</span></div>
+
-</div>
<div class="viewcode-block" id="SSLTimeoutError"><a class="viewcode-back" href="../../M2Crypto.SSL.html#M2Crypto.SSL.SSLTimeoutError">[docs]</a><span class="k">class</span> <span class="nc">SSLTimeoutError</span><span class="p">(</span><span class="n">SSLError</span><span class="p">,</span> <span class="n">socket</span><span class="o">.</span><span class="n">timeout</span><span class="p">):</span>
- <span class="k">pass</span>
-</div>
+ <span class="k">pass</span></div>
+
<span class="n">m2</span><span class="o">.</span><span class="n">ssl_init</span><span class="p">(</span><span class="n">SSLError</span><span class="p">,</span> <span class="n">SSLTimeoutError</span><span class="p">)</span>
<span class="c1"># M2Crypto.SSL</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Cipher</span> <span class="kn">import</span> <span class="n">Cipher</span><span class="p">,</span> <span class="n">Cipher_Stack</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Connection</span> <span class="kn">import</span> <span class="n">Connection</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Context</span> <span class="kn">import</span> <span class="n">Context</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL.SSLServer</span> <span class="kn">import</span> <span class="p">(</span><span class="n">ForkingSSLServer</span><span class="p">,</span> <span class="n">SSLServer</span><span class="p">,</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Cipher</span> <span class="k">import</span> <span class="n">Cipher</span><span class="p">,</span> <span class="n">Cipher_Stack</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Connection</span> <span class="k">import</span> <span class="n">Connection</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Context</span> <span class="k">import</span> <span class="n">Context</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL.SSLServer</span> <span class="k">import</span> <span class="p">(</span><span class="n">ForkingSSLServer</span><span class="p">,</span> <span class="n">SSLServer</span><span class="p">,</span>
<span class="n">ThreadingSSLServer</span><span class="p">)</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL.ssl_dispatcher</span> <span class="kn">import</span> <span class="n">ssl_dispatcher</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL.timeout</span> <span class="kn">import</span> <span class="n">timeout</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL.ssl_dispatcher</span> <span class="k">import</span> <span class="n">ssl_dispatcher</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL.timeout</span> <span class="k">import</span> <span class="n">timeout</span>
<span class="n">verify_none</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">SSL_VERIFY_NONE</span> <span class="c1"># type: int</span>
<span class="n">verify_peer</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">SSL_VERIFY_PEER</span> <span class="c1"># type: int</span>
@@ -94,41 +84,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/SSL/Checker.html b/doc/html/_modules/M2Crypto/SSL/Checker.html
index 98338bb..93b884c 100644
--- a/doc/html/_modules/M2Crypto/SSL/Checker.html
+++ b/doc/html/_modules/M2Crypto/SSL/Checker.html
@@ -1,53 +1,42 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.SSL.Checker &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
+ <title>M2Crypto.SSL.Checker &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../../index.html" />
- <link rel="up" title="M2Crypto.SSL" href="../SSL.html" />
+ <link rel="index" title="Index" href="../../../genindex.html" />
+ <link rel="search" title="Search" href="../../../search.html" />
+
+ <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" accesskey="U">M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.SSL.Checker</h1><div class="highlight"><pre>
<span></span><span class="sd">&quot;&quot;&quot;</span>
@@ -65,23 +54,23 @@
<span class="kn">import</span> <span class="nn">re</span>
<span class="kn">import</span> <span class="nn">socket</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">X509</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span> <span class="c1"># noqa</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">X509</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span> <span class="c1"># noqa</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
<div class="viewcode-block" id="SSLVerificationError"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Checker.SSLVerificationError">[docs]</a><span class="k">class</span> <span class="nc">SSLVerificationError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
- <span class="k">pass</span>
+ <span class="k">pass</span></div>
+
-</div>
<div class="viewcode-block" id="NoCertificate"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Checker.NoCertificate">[docs]</a><span class="k">class</span> <span class="nc">NoCertificate</span><span class="p">(</span><span class="n">SSLVerificationError</span><span class="p">):</span>
- <span class="k">pass</span>
+ <span class="k">pass</span></div>
+
-</div>
<div class="viewcode-block" id="WrongCertificate"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Checker.WrongCertificate">[docs]</a><span class="k">class</span> <span class="nc">WrongCertificate</span><span class="p">(</span><span class="n">SSLVerificationError</span><span class="p">):</span>
- <span class="k">pass</span>
+ <span class="k">pass</span></div>
+
-</div>
<div class="viewcode-block" id="WrongHost"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Checker.WrongHost">[docs]</a><span class="k">class</span> <span class="nc">WrongHost</span><span class="p">(</span><span class="n">SSLVerificationError</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expectedHost</span><span class="p">,</span> <span class="n">actualHost</span><span class="p">,</span> <span class="n">fieldName</span><span class="o">=</span><span class="s1">&#39;commonName&#39;</span><span class="p">):</span>
<span class="c1"># type: (str, AnyStr, str) -&gt; None</span>
@@ -102,7 +91,7 @@
<span class="s1">&#39;Unknown fieldName, should be either commonName &#39;</span> <span class="o">+</span>
<span class="s1">&#39;or subjectAltName&#39;</span><span class="p">)</span>
- <span class="n">SSLVerificationError</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
+ <span class="n">SSLVerificationError</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">expectedHost</span> <span class="o">=</span> <span class="n">expectedHost</span>
<span class="bp">self</span><span class="o">.</span><span class="n">actualHost</span> <span class="o">=</span> <span class="n">actualHost</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fieldName</span> <span class="o">=</span> <span class="n">fieldName</span>
@@ -111,27 +100,27 @@
<span class="c1"># type: () -&gt; str</span>
<span class="n">s</span> <span class="o">=</span> <span class="s1">&#39;Peer certificate </span><span class="si">%s</span><span class="s1"> does not match host, expected </span><span class="si">%s</span><span class="s1">, got </span><span class="si">%s</span><span class="s1">&#39;</span> \
<span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fieldName</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">expectedHost</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">actualHost</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">s</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="Checker"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Checker.Checker">[docs]</a><span class="k">class</span> <span class="nc">Checker</span><span class="p">:</span>
<span class="n">numericIpMatch</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s1">&#39;^[0-9]+(\.[0-9]+)*$&#39;</span><span class="p">)</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">peerCertHash</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">peerCertDigest</span><span class="o">=</span><span class="s1">&#39;sha1&#39;</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">peerCertHash</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">peerCertDigest</span><span class="o">=</span><span class="s1">&#39;sha1&#39;</span><span class="p">):</span>
<span class="c1"># type: (Optional[str], Optional[bytes], str) -&gt; None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">host</span> <span class="o">=</span> <span class="n">host</span>
- <span class="k">if</span> <span class="n">peerCertHash</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">peerCertHash</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">peerCertHash</span> <span class="o">=</span> <span class="n">util</span><span class="o">.</span><span class="n">py3bytes</span><span class="p">(</span><span class="n">peerCertHash</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fingerprint</span> <span class="o">=</span> <span class="n">peerCertHash</span>
<span class="bp">self</span><span class="o">.</span><span class="n">digest</span> <span class="o">=</span> <span class="n">peerCertDigest</span> <span class="c1"># type: str</span>
- <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">peerCert</span><span class="p">,</span> <span class="n">host</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">peerCert</span><span class="p">,</span> <span class="n">host</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (X509.X509, Optional[str]) -&gt; bool</span>
- <span class="k">if</span> <span class="n">peerCert</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">peerCert</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">NoCertificate</span><span class="p">(</span><span class="s1">&#39;peer did not return certificate&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">host</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">host</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">host</span> <span class="o">=</span> <span class="n">host</span> <span class="c1"># type: str</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fingerprint</span><span class="p">:</span>
@@ -143,13 +132,13 @@
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">digest</span> <span class="o">==</span> <span class="s1">&#39;md5&#39;</span><span class="p">:</span>
<span class="n">expected_len</span> <span class="o">=</span> <span class="mi">32</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Unexpected digest {0}&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">digest</span><span class="p">))</span>
+ <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Unexpected digest </span><span class="si">{0}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">digest</span><span class="p">))</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fingerprint</span><span class="p">)</span> <span class="o">!=</span> <span class="n">expected_len</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">WrongCertificate</span><span class="p">(</span>
<span class="p">(</span><span class="s1">&#39;peer certificate fingerprint length does not match</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span>
- <span class="s1">&#39;fingerprint: {0}</span><span class="se">\n</span><span class="s1">expected = {1}</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span>
- <span class="s1">&#39;observed = {2}&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fingerprint</span><span class="p">,</span>
+ <span class="s1">&#39;fingerprint: </span><span class="si">{0}</span><span class="se">\n</span><span class="s1">expected = </span><span class="si">{1}</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span>
+ <span class="s1">&#39;observed = </span><span class="si">{2}</span><span class="s1">&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fingerprint</span><span class="p">,</span>
<span class="n">expected_len</span><span class="p">,</span>
<span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fingerprint</span><span class="p">)))</span>
@@ -158,19 +147,19 @@
<span class="k">if</span> <span class="n">observed_fingerprint</span> <span class="o">!=</span> <span class="n">expected_fingerprint</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">WrongCertificate</span><span class="p">(</span>
<span class="p">(</span><span class="s1">&#39;peer certificate fingerprint does not match</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span>
- <span class="s1">&#39;expected = {0},</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span>
- <span class="s1">&#39;observed = {1}&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">expected_fingerprint</span><span class="p">,</span>
+ <span class="s1">&#39;expected = </span><span class="si">{0}</span><span class="s1">,</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">+</span>
+ <span class="s1">&#39;observed = </span><span class="si">{1}</span><span class="s1">&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">expected_fingerprint</span><span class="p">,</span>
<span class="n">observed_fingerprint</span><span class="p">))</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">:</span>
- <span class="n">hostValidationPassed</span> <span class="o">=</span> <span class="bp">False</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">useSubjectAltNameOnly</span> <span class="o">=</span> <span class="bp">False</span>
+ <span class="n">hostValidationPassed</span> <span class="o">=</span> <span class="kc">False</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">useSubjectAltNameOnly</span> <span class="o">=</span> <span class="kc">False</span>
<span class="c1"># subjectAltName=DNS:somehost[, ...]*</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">subjectAltName</span> <span class="o">=</span> <span class="n">peerCert</span><span class="o">.</span><span class="n">get_ext</span><span class="p">(</span><span class="s1">&#39;subjectAltName&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">get_value</span><span class="p">()</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_splitSubjectAltName</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">,</span> <span class="n">subjectAltName</span><span class="p">):</span>
- <span class="n">hostValidationPassed</span> <span class="o">=</span> <span class="bp">True</span>
+ <span class="n">hostValidationPassed</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">useSubjectAltNameOnly</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">WrongHost</span><span class="p">(</span><span class="n">expectedHost</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">,</span>
<span class="n">actualHost</span><span class="o">=</span><span class="n">subjectAltName</span><span class="p">,</span>
@@ -180,18 +169,18 @@
<span class="c1"># commonName=somehost[, ...]*</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">hostValidationPassed</span><span class="p">:</span>
- <span class="n">hasCommonName</span> <span class="o">=</span> <span class="bp">False</span>
+ <span class="n">hasCommonName</span> <span class="o">=</span> <span class="kc">False</span>
<span class="n">commonNames</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
<span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">peerCert</span><span class="o">.</span><span class="n">get_subject</span><span class="p">()</span><span class="o">.</span><span class="n">get_entries_by_nid</span><span class="p">(</span>
<span class="n">m2</span><span class="o">.</span><span class="n">NID_commonName</span><span class="p">):</span>
- <span class="n">hasCommonName</span> <span class="o">=</span> <span class="bp">True</span>
+ <span class="n">hasCommonName</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">commonName</span> <span class="o">=</span> <span class="n">entry</span><span class="o">.</span><span class="n">get_data</span><span class="p">()</span><span class="o">.</span><span class="n">as_text</span><span class="p">()</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">commonNames</span><span class="p">:</span>
<span class="n">commonNames</span> <span class="o">=</span> <span class="n">commonName</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">commonNames</span> <span class="o">+=</span> <span class="s1">&#39;,&#39;</span> <span class="o">+</span> <span class="n">commonName</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">,</span> <span class="n">commonName</span><span class="p">):</span>
- <span class="n">hostValidationPassed</span> <span class="o">=</span> <span class="bp">True</span>
+ <span class="n">hostValidationPassed</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">break</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">hasCommonName</span><span class="p">:</span>
@@ -202,7 +191,7 @@
<span class="n">actualHost</span><span class="o">=</span><span class="n">commonNames</span><span class="p">,</span>
<span class="n">fieldName</span><span class="o">=</span><span class="s1">&#39;commonName&#39;</span><span class="p">)</span>
- <span class="k">return</span> <span class="bp">True</span>
+ <span class="k">return</span> <span class="kc">True</span>
<span class="k">def</span> <span class="nf">_splitSubjectAltName</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">subjectAltName</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, AnyStr) -&gt; bool</span>
@@ -245,18 +234,18 @@
<span class="sd"> &gt;&gt;&gt; check.useSubjectAltNameOnly</span>
<span class="sd"> False</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">useSubjectAltNameOnly</span> <span class="o">=</span> <span class="bp">False</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">useSubjectAltNameOnly</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">for</span> <span class="n">certHost</span> <span class="ow">in</span> <span class="n">subjectAltName</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;,&#39;</span><span class="p">):</span>
<span class="n">certHost</span> <span class="o">=</span> <span class="n">certHost</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
<span class="k">if</span> <span class="n">certHost</span><span class="p">[:</span><span class="mi">4</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;dns:&#39;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">useSubjectAltNameOnly</span> <span class="o">=</span> <span class="bp">True</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">useSubjectAltNameOnly</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">certHost</span><span class="p">[</span><span class="mi">4</span><span class="p">:]):</span>
- <span class="k">return</span> <span class="bp">True</span>
+ <span class="k">return</span> <span class="kc">True</span>
<span class="k">elif</span> <span class="n">certHost</span><span class="p">[:</span><span class="mi">11</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;ip address:&#39;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">useSubjectAltNameOnly</span> <span class="o">=</span> <span class="bp">True</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">useSubjectAltNameOnly</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_matchIPAddress</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">certHost</span><span class="p">[</span><span class="mi">11</span><span class="p">:]):</span>
- <span class="k">return</span> <span class="bp">True</span>
- <span class="k">return</span> <span class="bp">False</span>
+ <span class="k">return</span> <span class="kc">True</span>
+ <span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">_match</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">certHost</span><span class="p">):</span>
<span class="c1"># type: (str, str) -&gt; bool</span>
@@ -288,30 +277,30 @@
<span class="n">certHost</span> <span class="o">=</span> <span class="n">certHost</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
<span class="k">if</span> <span class="n">host</span> <span class="o">==</span> <span class="n">certHost</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">True</span>
+ <span class="k">return</span> <span class="kc">True</span>
<span class="k">if</span> <span class="n">certHost</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="s1">&#39;*&#39;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
<span class="c1"># Not sure about this, but being conservative</span>
- <span class="k">return</span> <span class="bp">False</span>
+ <span class="k">return</span> <span class="kc">False</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">numericIpMatch</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">host</span><span class="p">)</span> <span class="ow">or</span> \
<span class="bp">self</span><span class="o">.</span><span class="n">numericIpMatch</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">certHost</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;*&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)):</span>
<span class="c1"># Not sure if * allowed in numeric IP, but think not.</span>
- <span class="k">return</span> <span class="bp">False</span>
+ <span class="k">return</span> <span class="kc">False</span>
<span class="k">if</span> <span class="n">certHost</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\\</span><span class="s1">&#39;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
<span class="c1"># Not sure about this, maybe some encoding might have these.</span>
<span class="c1"># But being conservative for now, because regex below relies</span>
<span class="c1"># on this.</span>
- <span class="k">return</span> <span class="bp">False</span>
+ <span class="k">return</span> <span class="kc">False</span>
<span class="c1"># Massage certHost so that it can be used in regex</span>
<span class="n">certHost</span> <span class="o">=</span> <span class="n">certHost</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;.&#39;</span><span class="p">,</span> <span class="s1">&#39;\.&#39;</span><span class="p">)</span>
<span class="n">certHost</span> <span class="o">=</span> <span class="n">certHost</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;*&#39;</span><span class="p">,</span> <span class="s1">&#39;[^\.]*&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s1">&#39;^</span><span class="si">%s</span><span class="s1">$&#39;</span> <span class="o">%</span> <span class="n">certHost</span><span class="p">)</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">host</span><span class="p">):</span>
- <span class="k">return</span> <span class="bp">True</span>
+ <span class="k">return</span> <span class="kc">True</span>
- <span class="k">return</span> <span class="bp">False</span>
+ <span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">_matchIPAddress</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">certHost</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, AnyStr) -&gt; bool</span>
@@ -340,11 +329,11 @@
<span class="n">socket</span><span class="o">.</span><span class="n">SOCK_STREAM</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span>
<span class="n">socket</span><span class="o">.</span><span class="n">AI_NUMERICHOST</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">False</span>
- <span class="k">return</span> <span class="n">canonical</span> <span class="o">==</span> <span class="n">certCanonical</span>
+ <span class="k">return</span> <span class="kc">False</span>
+ <span class="k">return</span> <span class="n">canonical</span> <span class="o">==</span> <span class="n">certCanonical</span></div>
-</div>
-<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s1">&#39;__main__&#39;</span><span class="p">:</span>
+
+<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">&#39;__main__&#39;</span><span class="p">:</span>
<span class="kn">import</span> <span class="nn">doctest</span>
<span class="n">doctest</span><span class="o">.</span><span class="n">testmod</span><span class="p">()</span>
</pre></div>
@@ -352,42 +341,43 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../../index.html">Documentation overview</a><ul>
+ <li><a href="../../index.html">Module code</a><ul>
+ <li><a href="../SSL.html">M2Crypto.SSL</a><ul>
+ </ul></li>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" >M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/SSL/Cipher.html b/doc/html/_modules/M2Crypto/SSL/Cipher.html
index 754babf..1f8ca81 100644
--- a/doc/html/_modules/M2Crypto/SSL/Cipher.html
+++ b/doc/html/_modules/M2Crypto/SSL/Cipher.html
@@ -1,53 +1,42 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.SSL.Cipher &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
+ <title>M2Crypto.SSL.Cipher &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../../index.html" />
- <link rel="up" title="M2Crypto.SSL" href="../SSL.html" />
+ <link rel="index" title="Index" href="../../../genindex.html" />
+ <link rel="search" title="Search" href="../../../search.html" />
+
+ <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" accesskey="U">M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.SSL.Cipher</h1><div class="highlight"><pre>
<span></span><span class="sd">&quot;&quot;&quot;SSL Ciphers</span>
@@ -56,9 +45,9 @@
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;Cipher&#39;</span><span class="p">,</span> <span class="s1">&#39;Cipher_Stack&#39;</span><span class="p">]</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Iterable</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">Iterable</span> <span class="c1"># noqa</span>
<div class="viewcode-block" id="Cipher"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Cipher.Cipher">[docs]</a><span class="k">class</span> <span class="nc">Cipher</span><span class="p">:</span>
@@ -80,13 +69,13 @@
<div class="viewcode-block" id="Cipher.version"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Cipher.Cipher.version">[docs]</a> <span class="k">def</span> <span class="nf">version</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_cipher_get_version</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cipher</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_cipher_get_version</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cipher</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Cipher.name"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Cipher.Cipher.name">[docs]</a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; str</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ssl_cipher_get_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cipher</span><span class="p">))</span>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ssl_cipher_get_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cipher</span><span class="p">))</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="Cipher_Stack"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Cipher.Cipher_Stack">[docs]</a><span class="k">class</span> <span class="nc">Cipher_Stack</span><span class="p">:</span> <span class="c1"># noqa</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stack</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; None</span>
@@ -108,49 +97,50 @@
<span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; Iterable</span>
- <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">xrange</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">sk_ssl_cipher_num</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stack</span><span class="p">)):</span>
+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">sk_ssl_cipher_num</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stack</span><span class="p">)):</span>
<span class="k">yield</span> <span class="bp">self</span><span class="p">[</span><span class="n">i</span><span class="p">]</span></div>
</pre></div>
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../../index.html">Documentation overview</a><ul>
+ <li><a href="../../index.html">Module code</a><ul>
+ <li><a href="../SSL.html">M2Crypto.SSL</a><ul>
+ </ul></li>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" >M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/SSL/Connection.html b/doc/html/_modules/M2Crypto/SSL/Connection.html
index a1fb4c8..68462e0 100644
--- a/doc/html/_modules/M2Crypto/SSL/Connection.html
+++ b/doc/html/_modules/M2Crypto/SSL/Connection.html
@@ -1,56 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.SSL.Connection &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
+ <title>M2Crypto.SSL.Connection &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../../index.html" />
- <link rel="up" title="M2Crypto.SSL" href="../SSL.html" />
+ <link rel="index" title="Index" href="../../../genindex.html" />
+ <link rel="search" title="Search" href="../../../search.html" />
+
+ <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" accesskey="U">M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.SSL.Connection</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;SSL Connection aka socket</span>
@@ -65,28 +54,27 @@
<span class="kn">import</span> <span class="nn">logging</span>
<span class="kn">import</span> <span class="nn">socket</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">X509</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span> <span class="c1"># noqa</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL</span> <span class="kn">import</span> <span class="n">Checker</span><span class="p">,</span> <span class="n">Context</span><span class="p">,</span> <span class="n">timeout</span> <span class="c1"># noqa</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL</span> <span class="kn">import</span> <span class="n">SSLError</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Cipher</span> <span class="kn">import</span> <span class="n">Cipher</span><span class="p">,</span> <span class="n">Cipher_Stack</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Session</span> <span class="kn">import</span> <span class="n">Session</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">Err</span><span class="p">,</span> <span class="n">X509</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">six</span><span class="p">,</span> <span class="n">util</span> <span class="c1"># noqa</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL</span> <span class="k">import</span> <span class="n">Checker</span><span class="p">,</span> <span class="n">Context</span><span class="p">,</span> <span class="n">timeout</span> <span class="c1"># noqa</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL</span> <span class="k">import</span> <span class="n">SSLError</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Cipher</span> <span class="k">import</span> <span class="n">Cipher</span><span class="p">,</span> <span class="n">Cipher_Stack</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Session</span> <span class="k">import</span> <span class="n">Session</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Union</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Union</span> <span class="c1"># noqa</span>
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;Connection&#39;</span><span class="p">,</span>
<span class="s1">&#39;timeout&#39;</span><span class="p">,</span> <span class="c1"># XXX Not really, but for documentation purposes</span>
<span class="p">]</span>
-<span class="n">log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
+<span class="n">log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_serverPostConnectionCheck</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
- <span class="c1"># type: (*List[Any], **Dict[Any, Any]) -&gt; int</span>
+ <span class="c1"># type: (*Any, **Any) -&gt; int</span>
<span class="k">return</span> <span class="mi">1</span>
<div class="viewcode-block" id="Connection"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection">[docs]</a><span class="k">class</span> <span class="nc">Connection</span><span class="p">:</span>
-
<span class="sd">&quot;&quot;&quot;An SSL connection.&quot;&quot;&quot;</span>
<span class="n">clientPostConnectionCheck</span> <span class="o">=</span> <span class="n">Checker</span><span class="o">.</span><span class="n">Checker</span><span class="p">()</span>
@@ -95,7 +83,7 @@
<span class="n">m2_bio_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_free</span>
<span class="n">m2_ssl_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_free</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctx</span><span class="p">,</span> <span class="n">sock</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">family</span><span class="o">=</span><span class="n">socket</span><span class="o">.</span><span class="n">AF_INET</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctx</span><span class="p">,</span> <span class="n">sock</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">family</span><span class="o">=</span><span class="n">socket</span><span class="o">.</span><span class="n">AF_INET</span><span class="p">):</span>
<span class="c1"># type: (Context, socket.socket, int) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -104,8 +92,8 @@
<span class="sd"> :param family: socket family</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ctx</span> <span class="o">=</span> <span class="n">ctx</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">ssl</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_new</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">sock</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">ssl</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_new</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span> <span class="c1"># type: bytes</span>
+ <span class="k">if</span> <span class="n">sock</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">socket</span> <span class="o">=</span> <span class="n">sock</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">socket</span> <span class="o">=</span> <span class="n">socket</span><span class="o">.</span><span class="n">socket</span><span class="p">(</span><span class="n">family</span><span class="p">,</span> <span class="n">socket</span><span class="o">.</span><span class="n">SOCK_STREAM</span><span class="p">)</span>
@@ -113,30 +101,33 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_fileno</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">fileno</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">gettimeout</span><span class="p">()</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span> <span class="o">=</span> <span class="o">-</span><span class="mf">1.0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ssl_close_flag</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_noclose</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="o">.</span><span class="n">post_connection_check</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="o">.</span><span class="n">post_connection_check</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">set_post_connection_check_callback</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="o">.</span><span class="n">post_connection_check</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;sslbio&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">):</span>
+ <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;sslbio&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">m2_bio_free</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sslbio</span><span class="p">)</span>
- <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;sockbio&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">):</span>
+ <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;sockbio&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">m2_bio_free</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sockbio</span><span class="p">)</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ssl_close_flag</span> <span class="o">==</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_noclose</span> <span class="ow">and</span> \
- <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;ssl&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">):</span>
+ <span class="c1"># in __del__ method we have to check whether m2.bio_noclose</span>
+ <span class="c1"># exists at all.</span>
+ <span class="k">if</span> <span class="n">m2</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_noclose</span> <span class="ow">and</span> \
+ <span class="bp">self</span><span class="o">.</span><span class="n">ssl_close_flag</span> <span class="o">==</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_noclose</span> <span class="ow">and</span> \
+ <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;ssl&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">m2_ssl_free</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<div class="viewcode-block" id="Connection.close"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">ssl_shutdown</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">ssl_shutdown</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.clear"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.clear">[docs]</a> <span class="k">def</span> <span class="nf">clear</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -144,8 +135,8 @@
<span class="sd"> than close() to end it, so that bad sessions will be cleared</span>
<span class="sd"> from cache.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_clear</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_clear</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.set_shutdown"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_shutdown">[docs]</a> <span class="k">def</span> <span class="nf">set_shutdown</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mode</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Sets the shutdown state of the Connection to mode.</span>
@@ -169,25 +160,25 @@
<span class="sd"> :param mode: set the mode bitmask.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_shutdown1</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">mode</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_shutdown1</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">mode</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.get_shutdown"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_shutdown">[docs]</a> <span class="k">def</span> <span class="nf">get_shutdown</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Get the current shutdown mode of the Connection.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_shutdown</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_shutdown</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.bind"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.bind">[docs]</a> <span class="k">def</span> <span class="nf">bind</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">):</span>
<span class="c1"># type: (util.AddrType) -&gt; None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">bind</span><span class="p">(</span><span class="n">addr</span><span class="p">)</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">bind</span><span class="p">(</span><span class="n">addr</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.listen"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.listen">[docs]</a> <span class="k">def</span> <span class="nf">listen</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">qlen</span><span class="o">=</span><span class="mi">5</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="n">qlen</span><span class="p">)</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="n">qlen</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.ssl_get_error"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.ssl_get_error">[docs]</a> <span class="k">def</span> <span class="nf">ssl_get_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ret</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_error</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">ret</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_error</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">ret</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.set_bio"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_bio">[docs]</a> <span class="k">def</span> <span class="nf">set_bio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">readbio</span><span class="p">,</span> <span class="n">writebio</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, BIO.BIO) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Explicitly set read and write bios</span>
@@ -206,8 +197,8 @@
<span class="sd"> :param readbio: BIO for reading</span>
<span class="sd"> :param writebio: BIO for writing.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_bio</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">readbio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">writebio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_bio</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">readbio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span> <span class="n">writebio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="Connection.set_client_CA_list_from_file"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_client_CA_list_from_file">[docs]</a> <span class="k">def</span> <span class="nf">set_client_CA_list_from_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cafile</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Set the acceptable client CA list.</span>
@@ -226,8 +217,8 @@
<span class="sd"> 1 The operation succeeded.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_client_CA_list_from_file</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">cafile</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_client_CA_list_from_file</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">cafile</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.set_client_CA_list_from_context"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_client_CA_list_from_context">[docs]</a> <span class="k">def</span> <span class="nf">set_client_CA_list_from_context</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -237,12 +228,12 @@
<span class="sd"> Makes sense only for servers.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_client_CA_list_from_context</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_client_CA_list_from_context</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.setup_addr"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.setup_addr">[docs]</a> <span class="k">def</span> <span class="nf">setup_addr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">):</span>
<span class="c1"># type: (util.AddrType) -&gt; None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">addr</span> <span class="o">=</span> <span class="n">addr</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addr</span> <span class="o">=</span> <span class="n">addr</span></div>
+
<div class="viewcode-block" id="Connection.set_ssl_close_flag"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_ssl_close_flag">[docs]</a> <span class="k">def</span> <span class="nf">set_ssl_close_flag</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">flag</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -253,8 +244,8 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">flag</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_close</span><span class="p">,</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_noclose</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;flag must be m2.bio_close or m2.bio_noclose&quot;</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">ssl_close_flag</span> <span class="o">=</span> <span class="n">flag</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">ssl_close_flag</span> <span class="o">=</span> <span class="n">flag</span></div>
+
<div class="viewcode-block" id="Connection.setup_ssl"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.setup_ssl">[docs]</a> <span class="k">def</span> <span class="nf">setup_ssl</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
<span class="c1"># Make a BIO_s_socket.</span>
@@ -264,8 +255,8 @@
<span class="c1"># Make a BIO_f_ssl.</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sslbio</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_new</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_f_ssl</span><span class="p">())</span>
<span class="c1"># Link BIO_f_ssl with the SSL struct.</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">bio_set_ssl</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sslbio</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_noclose</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">bio_set_ssl</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sslbio</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_noclose</span><span class="p">)</span></div>
+
<span class="k">def</span> <span class="nf">_setup_ssl</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">):</span>
<span class="c1"># type: (util.AddrType) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Deprecated&quot;&quot;&quot;</span>
@@ -275,8 +266,8 @@
<div class="viewcode-block" id="Connection.set_accept_state"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_accept_state">[docs]</a> <span class="k">def</span> <span class="nf">set_accept_state</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Sets Connection to work in the server mode.&quot;&quot;&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_accept_state</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_accept_state</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.accept_ssl"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.accept_ssl">[docs]</a> <span class="k">def</span> <span class="nf">accept_ssl</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; Optional[int]</span>
<span class="sd">&quot;&quot;&quot;Waits for a TLS/SSL client to initiate the TLS/SSL handshake.</span>
@@ -300,8 +291,8 @@
<span class="sd"> get_error() with the return value ret to find</span>
<span class="sd"> out the reason.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_accept</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_accept</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.accept"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.accept">[docs]</a> <span class="k">def</span> <span class="nf">accept</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; Tuple[Connection, util.AddrType]</span>
<span class="sd">&quot;&quot;&quot;Accept an SSL connection.</span>
@@ -324,21 +315,21 @@
<span class="n">ssl</span><span class="o">.</span><span class="n">accept_ssl</span><span class="p">()</span>
<span class="n">check</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;postConnectionCheck&#39;</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">serverPostConnectionCheck</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">check</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">check</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">check</span><span class="p">(</span><span class="n">ssl</span><span class="o">.</span><span class="n">get_peer_cert</span><span class="p">(),</span> <span class="n">ssl</span><span class="o">.</span><span class="n">addr</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span>
<span class="k">raise</span> <span class="n">Checker</span><span class="o">.</span><span class="n">SSLVerificationError</span><span class="p">(</span>
<span class="s1">&#39;post connection check failed&#39;</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">ssl</span><span class="p">,</span> <span class="n">addr</span>
-</div>
+ <span class="k">return</span> <span class="n">ssl</span><span class="p">,</span> <span class="n">addr</span></div>
+
<div class="viewcode-block" id="Connection.set_connect_state"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_connect_state">[docs]</a> <span class="k">def</span> <span class="nf">set_connect_state</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Sets Connection to work in the client mode.&quot;&quot;&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_connect_state</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_connect_state</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.connect_ssl"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.connect_ssl">[docs]</a> <span class="k">def</span> <span class="nf">connect_ssl</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; Optional[int]</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.connect"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.connect">[docs]</a> <span class="k">def</span> <span class="nf">connect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">):</span>
<span class="c1"># type: (util.AddrType) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Overloading socket.connect()</span>
@@ -354,26 +345,26 @@
<span class="n">ret</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">connect_ssl</span><span class="p">()</span>
<span class="n">check</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;postConnectionCheck&#39;</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">clientPostConnectionCheck</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">check</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">check</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_peer_cert</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">addr</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span>
<span class="k">raise</span> <span class="n">Checker</span><span class="o">.</span><span class="n">SSLVerificationError</span><span class="p">(</span>
<span class="s1">&#39;post connection check failed&#39;</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">ret</span>
-</div>
+ <span class="k">return</span> <span class="n">ret</span></div>
+
<div class="viewcode-block" id="Connection.shutdown"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.shutdown">[docs]</a> <span class="k">def</span> <span class="nf">shutdown</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">how</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; None</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_shutdown</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">how</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_shutdown</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">how</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.renegotiate"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.renegotiate">[docs]</a> <span class="k">def</span> <span class="nf">renegotiate</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Renegotiate this connection&#39;s SSL parameters.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_renegotiate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_renegotiate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.pending"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.pending">[docs]</a> <span class="k">def</span> <span class="nf">pending</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Return the numbers of octets that can be read from the connection.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_pending</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_pending</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span></div>
+
<span class="k">def</span> <span class="nf">_write_bio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; int</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span><span class="p">)</span>
@@ -401,6 +392,33 @@
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_write_nbio</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></div>
<span class="n">sendall</span> <span class="o">=</span> <span class="n">send</span> <span class="o">=</span> <span class="n">write</span>
+ <span class="k">def</span> <span class="nf">_decref_socketios</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">pass</span>
+
+<div class="viewcode-block" id="Connection.recv_into"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.recv_into">[docs]</a> <span class="k">def</span> <span class="nf">recv_into</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">buff</span><span class="p">,</span> <span class="n">nbytes</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+ <span class="c1"># type: (bytearray, int) -&gt; int</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> A version of recv() that stores its data into a buffer rather</span>
+<span class="sd"> than creating a new string. Receive up to buffersize bytes from</span>
+<span class="sd"> the socket. If buffersize is not specified (or 0), receive up</span>
+<span class="sd"> to the size available in the given buffer.</span>
+
+<span class="sd"> @param buffer: a buffer for the received bytes</span>
+<span class="sd"> @param nbytes: maximum number of bytes to read</span>
+<span class="sd"> @return: number of bytes added</span>
+
+<span class="sd"> See recv() for documentation about the flags.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="n">n</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">buff</span><span class="p">)</span> <span class="k">if</span> <span class="n">nbytes</span> <span class="o">==</span> <span class="mi">0</span> <span class="k">else</span> <span class="n">nbytes</span>
+
+ <span class="k">if</span> <span class="n">n</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;size &lt;= 0&#39;</span><span class="p">)</span>
+ <span class="n">buff_bytes</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span><span class="p">)</span>
+ <span class="n">buff</span><span class="p">[:]</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">&#39;&#39;</span>
+ <span class="n">buff</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">buff_bytes</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="n">buff</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.read"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.read">[docs]</a> <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">1024</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; bytes</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span> <span class="o">!=</span> <span class="mf">0.0</span><span class="p">:</span>
@@ -427,21 +445,21 @@
<span class="k">if</span> <span class="n">mode</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span> <span class="o">=</span> <span class="o">-</span><span class="mf">1.0</span>
<span class="k">else</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span> <span class="o">=</span> <span class="mf">0.0</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span> <span class="o">=</span> <span class="mf">0.0</span></div>
+
<div class="viewcode-block" id="Connection.settimeout"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.settimeout">[docs]</a> <span class="k">def</span> <span class="nf">settimeout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="p">):</span>
<span class="c1"># type: (float) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Set this connection&#39;s underlying socket&#39;s timeout to _timeout_.&quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">settimeout</span><span class="p">(</span><span class="n">timeout</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span> <span class="o">=</span> <span class="n">timeout</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span> <span class="o">=</span> <span class="o">-</span><span class="mf">1.0</span>
-</div>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">_timeout</span> <span class="o">=</span> <span class="o">-</span><span class="mf">1.0</span></div>
+
<div class="viewcode-block" id="Connection.fileno"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.fileno">[docs]</a> <span class="k">def</span> <span class="nf">fileno</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">fileno</span><span class="p">()</span>
-</div>
-<div class="viewcode-block" id="Connection.getsockopt"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.getsockopt">[docs]</a> <span class="k">def</span> <span class="nf">getsockopt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">level</span><span class="p">,</span> <span class="n">optname</span><span class="p">,</span> <span class="n">buflen</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">fileno</span><span class="p">()</span></div>
+
+<div class="viewcode-block" id="Connection.getsockopt"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.getsockopt">[docs]</a> <span class="k">def</span> <span class="nf">getsockopt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">level</span><span class="p">,</span> <span class="n">optname</span><span class="p">,</span> <span class="n">buflen</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (int, int, Optional[int]) -&gt; Union[int, bytes]</span>
<span class="sd">&quot;&quot;&quot;Get the value of the given socket option.</span>
@@ -458,43 +476,43 @@
<span class="sd"> described in the Unix man page getsockopt(2)). The needed</span>
<span class="sd"> symbolic constants (SO_* etc.) are defined in the socket</span>
<span class="sd"> module.</span>
-<span class="sd"> </span>
+
<span class="sd"> :param buflen: If it is absent, an integer option is assumed</span>
<span class="sd"> and its integer value is returned by the function. If</span>
<span class="sd"> buflen is present, it specifies the maximum length of the</span>
<span class="sd"> buffer used to receive the option in, and this buffer is</span>
<span class="sd"> returned as a bytes object.</span>
-<span class="sd"> </span>
+
<span class="sd"> :return: Either integer or bytes value of the option. It is up</span>
<span class="sd"> to the caller to decode the contents of the buffer (see</span>
<span class="sd"> the optional built-in module struct for a way to decode</span>
<span class="sd"> C structures encoded as byte strings).</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">getsockopt</span><span class="p">(</span><span class="n">level</span><span class="p">,</span> <span class="n">optname</span><span class="p">,</span> <span class="n">buflen</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="Connection.setsockopt"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.setsockopt">[docs]</a> <span class="k">def</span> <span class="nf">setsockopt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">level</span><span class="p">,</span> <span class="n">optname</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">getsockopt</span><span class="p">(</span><span class="n">level</span><span class="p">,</span> <span class="n">optname</span><span class="p">,</span> <span class="n">buflen</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="Connection.setsockopt"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.setsockopt">[docs]</a> <span class="k">def</span> <span class="nf">setsockopt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">level</span><span class="p">,</span> <span class="n">optname</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (int, int, Union[int, bytes, None]) -&gt; Optional[bytes]</span>
<span class="sd">&quot;&quot;&quot;Set the value of the given socket option.</span>
<span class="sd"> :param level: same as with getsockopt() above</span>
-<span class="sd"> </span>
+
<span class="sd"> :param optname: same as with getsockopt() above</span>
-<span class="sd"> </span>
+
<span class="sd"> :param value: an integer or a string representing a buffer. In</span>
<span class="sd"> the latter case it is up to the caller to ensure</span>
<span class="sd"> that the string contains the proper bits (see the</span>
<span class="sd"> optional built-in module struct for a way to</span>
<span class="sd"> encode C structures as strings).</span>
-<span class="sd"> </span>
+
<span class="sd"> :return: None for success or the error handler for failure.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">setsockopt</span><span class="p">(</span><span class="n">level</span><span class="p">,</span> <span class="n">optname</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">setsockopt</span><span class="p">(</span><span class="n">level</span><span class="p">,</span> <span class="n">optname</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.get_context"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_context">[docs]</a> <span class="k">def</span> <span class="nf">get_context</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; SSL.Context</span>
- <span class="sd">&quot;&quot;&quot;Return the SSL.Context object associated with this connection.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_ssl_ctx</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
-</div>
+ <span class="c1"># type: () -&gt; Context</span>
+ <span class="sd">&quot;&quot;&quot;Return the Context object associated with this connection.&quot;&quot;&quot;</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_ssl_ctx</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.get_state"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_state">[docs]</a> <span class="k">def</span> <span class="nf">get_state</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
<span class="sd">&quot;&quot;&quot;Return the SSL state of this connection.</span>
@@ -508,27 +526,27 @@
<span class="sd"> :return: 6 letter string indicating the current state of the SSL</span>
<span class="sd"> object ssl.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_state</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_state</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.verify_ok"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.verify_ok">[docs]</a> <span class="k">def</span> <span class="nf">verify_ok</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bool</span>
- <span class="k">return</span> <span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_verify_result</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span> <span class="o">==</span> <span class="n">m2</span><span class="o">.</span><span class="n">X509_V_OK</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_verify_result</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span> <span class="o">==</span> <span class="n">m2</span><span class="o">.</span><span class="n">X509_V_OK</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.get_verify_mode"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_verify_mode">[docs]</a> <span class="k">def</span> <span class="nf">get_verify_mode</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Return the peer certificate verification mode.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_verify_mode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_verify_mode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.get_verify_depth"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_verify_depth">[docs]</a> <span class="k">def</span> <span class="nf">get_verify_depth</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Return the peer certificate verification depth.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_verify_depth</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_verify_depth</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.get_verify_result"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_verify_result">[docs]</a> <span class="k">def</span> <span class="nf">get_verify_result</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Return the peer certificate verification result.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_verify_result</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_verify_result</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.get_peer_cert"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_peer_cert">[docs]</a> <span class="k">def</span> <span class="nf">get_peer_cert</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; X509.X509</span>
<span class="sd">&quot;&quot;&quot;Return the peer certificate.</span>
@@ -536,11 +554,11 @@
<span class="sd"> If the peer did not provide a certificate, return None.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">c</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_peer_cert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">c</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">None</span>
+ <span class="k">if</span> <span class="n">c</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">return</span> <span class="kc">None</span>
<span class="c1"># Need to free the pointer coz OpenSSL doesn&#39;t.</span>
- <span class="k">return</span> <span class="n">X509</span><span class="o">.</span><span class="n">X509</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">X509</span><span class="o">.</span><span class="n">X509</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.get_peer_cert_chain"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_peer_cert_chain">[docs]</a> <span class="k">def</span> <span class="nf">get_peer_cert_chain</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; Optional[X509.X509_Stack]</span>
<span class="sd">&quot;&quot;&quot;Return the peer certificate chain; if the peer did not provide</span>
@@ -551,46 +569,49 @@
<span class="sd"> gets freed, the chain will be freed as well.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">c</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_peer_cert_chain</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">c</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">None</span>
+ <span class="k">if</span> <span class="n">c</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">return</span> <span class="kc">None</span>
<span class="c1"># No need to free the pointer coz OpenSSL does.</span>
- <span class="k">return</span> <span class="n">X509</span><span class="o">.</span><span class="n">X509_Stack</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">X509</span><span class="o">.</span><span class="n">X509_Stack</span><span class="p">(</span><span class="n">c</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.get_cipher"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_cipher">[docs]</a> <span class="k">def</span> <span class="nf">get_cipher</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; Optional[SSL.Cipher]</span>
+ <span class="c1"># type: () -&gt; Optional[Cipher]</span>
<span class="sd">&quot;&quot;&quot;Return an M2Crypto.SSL.Cipher object for this connection; if the</span>
<span class="sd"> connection has not been initialised with a cipher suite, return None.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">c</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_current_cipher</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">c</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">None</span>
- <span class="k">return</span> <span class="n">Cipher</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
-</div>
+ <span class="k">if</span> <span class="n">c</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">return</span> <span class="kc">None</span>
+ <span class="k">return</span> <span class="n">Cipher</span><span class="p">(</span><span class="n">c</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.get_ciphers"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_ciphers">[docs]</a> <span class="k">def</span> <span class="nf">get_ciphers</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; Optional[SSL:Cipher_Stack]</span>
+ <span class="c1"># type: () -&gt; Optional[Cipher_Stack]</span>
<span class="sd">&quot;&quot;&quot;Return an M2Crypto.SSL.Cipher_Stack object for this</span>
<span class="sd"> connection; if the connection has not been initialised with</span>
<span class="sd"> cipher suites, return None.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">c</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_ciphers</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">c</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">None</span>
- <span class="k">return</span> <span class="n">Cipher_Stack</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
-</div>
+ <span class="k">if</span> <span class="n">c</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">return</span> <span class="kc">None</span>
+ <span class="k">return</span> <span class="n">Cipher_Stack</span><span class="p">(</span><span class="n">c</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.get_cipher_list"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_cipher_list">[docs]</a> <span class="k">def</span> <span class="nf">get_cipher_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">idx</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; str</span>
<span class="sd">&quot;&quot;&quot;Return the cipher suites for this connection as a string object.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_cipher_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">idx</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_cipher_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">idx</span><span class="p">))</span></div>
+
<div class="viewcode-block" id="Connection.set_cipher_list"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_cipher_list">[docs]</a> <span class="k">def</span> <span class="nf">set_cipher_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cipher_list</span><span class="p">):</span>
<span class="c1"># type: (str) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Set the cipher suites for this connection.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_cipher_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">cipher_list</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_cipher_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">cipher_list</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.makefile"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.makefile">[docs]</a> <span class="k">def</span> <span class="nf">makefile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">&#39;rb&#39;</span><span class="p">,</span> <span class="n">bufsize</span><span class="o">=-</span><span class="mi">1</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, int) -&gt; socket._fileobject</span>
- <span class="k">return</span> <span class="n">socket</span><span class="o">.</span><span class="n">_fileobject</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mode</span><span class="p">,</span> <span class="n">bufsize</span><span class="p">)</span>
-</div>
+ <span class="k">if</span> <span class="n">six</span><span class="o">.</span><span class="n">PY3</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">socket</span><span class="o">.</span><span class="n">SocketIO</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mode</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">socket</span><span class="o">.</span><span class="n">_fileobject</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mode</span><span class="p">,</span> <span class="n">bufsize</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.getsockname"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.getsockname">[docs]</a> <span class="k">def</span> <span class="nf">getsockname</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; util.AddrType</span>
<span class="sd">&quot;&quot;&quot;Return the socket&#39;s own address.</span>
@@ -601,8 +622,8 @@
<span class="sd"> :return:socket&#39;s address as addr type</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">getsockname</span><span class="p">()</span>
-</div>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">getsockname</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="Connection.getpeername"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.getpeername">[docs]</a> <span class="k">def</span> <span class="nf">getpeername</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; util.AddrType</span>
<span class="sd">&quot;&quot;&quot;Return the remote address to which the socket is connected.</span>
@@ -613,60 +634,60 @@
<span class="sd"> :return:</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">getpeername</span><span class="p">()</span>
-</div>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">getpeername</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="Connection.set_session_id_ctx"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_session_id_ctx">[docs]</a> <span class="k">def</span> <span class="nf">set_session_id_ctx</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; int</span>
<span class="n">ret</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_session_id_context</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="nb">id</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">ret</span><span class="p">:</span>
- <span class="k">raise</span> <span class="n">SSLError</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">err_reason_error_string</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">err_get_error</span><span class="p">()))</span>
-</div>
+ <span class="k">raise</span> <span class="n">SSLError</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error_message</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="Connection.get_session"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_session">[docs]</a> <span class="k">def</span> <span class="nf">get_session</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; SSL.Session</span>
+ <span class="c1"># type: () -&gt; Session</span>
<span class="n">sess</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_session</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">Session</span><span class="p">(</span><span class="n">sess</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">Session</span><span class="p">(</span><span class="n">sess</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.set_session"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_session">[docs]</a> <span class="k">def</span> <span class="nf">set_session</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="p">):</span>
- <span class="c1"># type: (SSL.Session) -&gt; None</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_session</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">session</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
+ <span class="c1"># type: (Session) -&gt; None</span>
+ <span class="n">m2</span><span class="o">.</span><span class="n">ssl_set_session</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">,</span> <span class="n">session</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="Connection.get_default_session_timeout"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_default_session_timeout">[docs]</a> <span class="k">def</span> <span class="nf">get_default_session_timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_default_session_timeout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_default_session_timeout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Connection.get_socket_read_timeout"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_socket_read_timeout">[docs]</a> <span class="k">def</span> <span class="nf">get_socket_read_timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; SSL.timeout</span>
+ <span class="c1"># type: () -&gt; timeout</span>
<span class="k">return</span> <span class="n">timeout</span><span class="o">.</span><span class="n">struct_to_timeout</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">getsockopt</span><span class="p">(</span><span class="n">socket</span><span class="o">.</span><span class="n">SOL_SOCKET</span><span class="p">,</span> <span class="n">socket</span><span class="o">.</span><span class="n">SO_RCVTIMEO</span><span class="p">,</span>
- <span class="n">timeout</span><span class="o">.</span><span class="n">struct_size</span><span class="p">()))</span>
-</div>
+ <span class="n">timeout</span><span class="o">.</span><span class="n">struct_size</span><span class="p">()))</span></div>
+
<div class="viewcode-block" id="Connection.get_socket_write_timeout"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_socket_write_timeout">[docs]</a> <span class="k">def</span> <span class="nf">get_socket_write_timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="c1"># type: () -&gt; SSL.timeout</span>
+ <span class="c1"># type: () -&gt; timeout</span>
<span class="k">return</span> <span class="n">timeout</span><span class="o">.</span><span class="n">struct_to_timeout</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">getsockopt</span><span class="p">(</span><span class="n">socket</span><span class="o">.</span><span class="n">SOL_SOCKET</span><span class="p">,</span> <span class="n">socket</span><span class="o">.</span><span class="n">SO_SNDTIMEO</span><span class="p">,</span>
- <span class="n">timeout</span><span class="o">.</span><span class="n">struct_size</span><span class="p">()))</span>
-</div>
+ <span class="n">timeout</span><span class="o">.</span><span class="n">struct_size</span><span class="p">()))</span></div>
+
<div class="viewcode-block" id="Connection.set_socket_read_timeout"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_socket_read_timeout">[docs]</a> <span class="k">def</span> <span class="nf">set_socket_read_timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeo</span><span class="p">):</span>
- <span class="c1"># type: (SSL.timeout) -&gt; None</span>
+ <span class="c1"># type: (timeout) -&gt; None</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">timeo</span><span class="p">,</span> <span class="n">timeout</span><span class="o">.</span><span class="n">timeout</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">setsockopt</span><span class="p">(</span>
- <span class="n">socket</span><span class="o">.</span><span class="n">SOL_SOCKET</span><span class="p">,</span> <span class="n">socket</span><span class="o">.</span><span class="n">SO_RCVTIMEO</span><span class="p">,</span> <span class="n">timeo</span><span class="o">.</span><span class="n">pack</span><span class="p">())</span>
-</div>
+ <span class="n">socket</span><span class="o">.</span><span class="n">SOL_SOCKET</span><span class="p">,</span> <span class="n">socket</span><span class="o">.</span><span class="n">SO_RCVTIMEO</span><span class="p">,</span> <span class="n">timeo</span><span class="o">.</span><span class="n">pack</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="Connection.set_socket_write_timeout"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_socket_write_timeout">[docs]</a> <span class="k">def</span> <span class="nf">set_socket_write_timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeo</span><span class="p">):</span>
- <span class="c1"># type: (SSL.timeout) -&gt; None</span>
+ <span class="c1"># type: (timeout) -&gt; None</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">timeo</span><span class="p">,</span> <span class="n">timeout</span><span class="o">.</span><span class="n">timeout</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">setsockopt</span><span class="p">(</span>
- <span class="n">socket</span><span class="o">.</span><span class="n">SOL_SOCKET</span><span class="p">,</span> <span class="n">socket</span><span class="o">.</span><span class="n">SO_SNDTIMEO</span><span class="p">,</span> <span class="n">timeo</span><span class="o">.</span><span class="n">pack</span><span class="p">())</span>
-</div>
+ <span class="n">socket</span><span class="o">.</span><span class="n">SOL_SOCKET</span><span class="p">,</span> <span class="n">socket</span><span class="o">.</span><span class="n">SO_SNDTIMEO</span><span class="p">,</span> <span class="n">timeo</span><span class="o">.</span><span class="n">pack</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="Connection.get_version"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_version">[docs]</a> <span class="k">def</span> <span class="nf">get_version</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; str</span>
- <span class="sd">&quot;&quot;&quot;Return the TLS/SSL protocol version for this connection.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_version</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
-</div>
+ <span class="s2">&quot;Return the TLS/SSL protocol version for this connection.&quot;</span>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_version</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">))</span></div>
+
<div class="viewcode-block" id="Connection.set_post_connection_check_callback"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_post_connection_check_callback">[docs]</a> <span class="k">def</span> <span class="nf">set_post_connection_check_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">postConnectionCheck</span><span class="p">):</span> <span class="c1"># noqa</span>
<span class="c1"># type: (Callable) -&gt; None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">postConnectionCheck</span> <span class="o">=</span> <span class="n">postConnectionCheck</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">postConnectionCheck</span> <span class="o">=</span> <span class="n">postConnectionCheck</span></div>
+
<div class="viewcode-block" id="Connection.set_tlsext_host_name"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_tlsext_host_name">[docs]</a> <span class="k">def</span> <span class="nf">set_tlsext_host_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Set the requested hostname for the SNI (Server Name Indication)</span>
@@ -678,42 +699,43 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../../index.html">Documentation overview</a><ul>
+ <li><a href="../../index.html">Module code</a><ul>
+ <li><a href="../SSL.html">M2Crypto.SSL</a><ul>
+ </ul></li>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" >M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/SSL/Context.html b/doc/html/_modules/M2Crypto/SSL/Context.html
index 1a377ba..d15f92c 100644
--- a/doc/html/_modules/M2Crypto/SSL/Context.html
+++ b/doc/html/_modules/M2Crypto/SSL/Context.html
@@ -1,73 +1,62 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.SSL.Context &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
+ <title>M2Crypto.SSL.Context &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../../index.html" />
- <link rel="up" title="M2Crypto.SSL" href="../SSL.html" />
+ <link rel="index" title="Index" href="../../../genindex.html" />
+ <link rel="search" title="Search" href="../../../search.html" />
+
+ <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" accesskey="U">M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.SSL.Context</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;SSL Context</span>
<span class="sd">Copyright (c) 1999-2004 Ng Pheng Siong. All rights reserved.&quot;&quot;&quot;</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">Err</span><span class="p">,</span> <span class="n">RSA</span><span class="p">,</span> <span class="n">X509</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span> <span class="c1"># noqa</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL</span> <span class="kn">import</span> <span class="n">cb</span> <span class="c1"># noqa</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Session</span> <span class="kn">import</span> <span class="n">Session</span> <span class="c1"># noqa</span>
-<span class="kn">from</span> <span class="nn">weakref</span> <span class="kn">import</span> <span class="n">WeakValueDictionary</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">Err</span><span class="p">,</span> <span class="n">RSA</span><span class="p">,</span> <span class="n">X509</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span> <span class="c1"># noqa</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL</span> <span class="k">import</span> <span class="n">cb</span> <span class="c1"># noqa</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Session</span> <span class="k">import</span> <span class="n">Session</span> <span class="c1"># noqa</span>
+<span class="kn">from</span> <span class="nn">weakref</span> <span class="k">import</span> <span class="n">WeakValueDictionary</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Union</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Union</span> <span class="c1"># noqa</span>
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;ctxmap&#39;</span><span class="p">,</span> <span class="s1">&#39;Context&#39;</span><span class="p">,</span> <span class="s1">&#39;map&#39;</span><span class="p">]</span>
<span class="k">class</span> <span class="nc">_ctxmap</span><span class="p">:</span> <span class="c1"># noqa</span>
- <span class="n">singleton</span> <span class="o">=</span> <span class="bp">None</span> <span class="c1"># type: Optional[_ctxmap]</span>
+ <span class="n">singleton</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1"># type: Optional[_ctxmap]</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
@@ -90,10 +79,10 @@
<div class="viewcode-block" id="ctxmap"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.ctxmap">[docs]</a><span class="k">def</span> <span class="nf">ctxmap</span><span class="p">():</span>
<span class="c1"># type: () -&gt; _ctxmap</span>
- <span class="k">if</span> <span class="n">_ctxmap</span><span class="o">.</span><span class="n">singleton</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">_ctxmap</span><span class="o">.</span><span class="n">singleton</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">_ctxmap</span><span class="o">.</span><span class="n">singleton</span> <span class="o">=</span> <span class="n">_ctxmap</span><span class="p">()</span>
- <span class="k">return</span> <span class="n">_ctxmap</span><span class="o">.</span><span class="n">singleton</span>
-<span class="c1"># deprecated!!!</span></div>
+ <span class="k">return</span> <span class="n">_ctxmap</span><span class="o">.</span><span class="n">singleton</span></div>
+<span class="c1"># deprecated!!!</span>
<span class="nb">map</span> <span class="o">=</span> <span class="n">ctxmap</span>
@@ -103,11 +92,11 @@
<span class="n">m2_ssl_ctx_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_free</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">protocol</span><span class="o">=</span><span class="s1">&#39;tls&#39;</span><span class="p">,</span> <span class="n">weak_crypto</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
- <span class="n">post_connection_check</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">protocol</span><span class="o">=</span><span class="s1">&#39;tls&#39;</span><span class="p">,</span> <span class="n">weak_crypto</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
+ <span class="n">post_connection_check</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (str, Optional[int], Optional[Callable]) -&gt; None</span>
- <span class="n">proto</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">protocol</span> <span class="o">+</span> <span class="s1">&#39;_method&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">proto</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">proto</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">protocol</span> <span class="o">+</span> <span class="s1">&#39;_method&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">proto</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="c1"># default is &#39;sslv23&#39; for older versions of OpenSSL</span>
<span class="k">if</span> <span class="n">protocol</span> <span class="o">==</span> <span class="s1">&#39;tls&#39;</span><span class="p">:</span>
<span class="n">proto</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="s1">&#39;sslv23_method&#39;</span><span class="p">)</span>
@@ -118,20 +107,20 @@
<span class="bp">self</span><span class="o">.</span><span class="n">post_connection_check</span> <span class="o">=</span> <span class="n">post_connection_check</span>
<span class="n">ctxmap</span><span class="p">()[</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)]</span> <span class="o">=</span> <span class="bp">self</span>
<span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_cache_size</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="mi">128</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">weak_crypto</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">protocol</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;sslv23&#39;</span><span class="p">,</span> <span class="s1">&#39;tls&#39;</span><span class="p">):</span>
+ <span class="k">if</span> <span class="n">weak_crypto</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">protocol</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;sslv23&#39;</span><span class="p">,</span> <span class="s1">&#39;tls&#39;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">set_options</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">SSL_OP_ALL</span> <span class="o">|</span> <span class="n">m2</span><span class="o">.</span><span class="n">SSL_OP_NO_SSLv2</span> <span class="o">|</span>
<span class="n">m2</span><span class="o">.</span><span class="n">SSL_OP_NO_SSLv3</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;ctx&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">):</span>
+ <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;ctx&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">m2_ssl_ctx_free</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
<div class="viewcode-block" id="Context.close"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="k">del</span> <span class="n">ctxmap</span><span class="p">()[</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)]</span>
-</div>
-<div class="viewcode-block" id="Context.load_cert"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_cert">[docs]</a> <span class="k">def</span> <span class="nf">load_cert</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">certfile</span><span class="p">,</span> <span class="n">keyfile</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
+ <span class="k">del</span> <span class="n">ctxmap</span><span class="p">()[</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)]</span></div>
+
+<div class="viewcode-block" id="Context.load_cert"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_cert">[docs]</a> <span class="k">def</span> <span class="nf">load_cert</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">certfile</span><span class="p">,</span> <span class="n">keyfile</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, Optional[AnyStr], Callable) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Load certificate and private key into the context.</span>
@@ -150,9 +139,9 @@
<span class="n">keyfile</span> <span class="o">=</span> <span class="n">certfile</span>
<span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_use_privkey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">keyfile</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_check_privkey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">):</span>
- <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;public/private key mismatch&#39;</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="Context.load_cert_chain"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_cert_chain">[docs]</a> <span class="k">def</span> <span class="nf">load_cert_chain</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">certchainfile</span><span class="p">,</span> <span class="n">keyfile</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
+ <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;public/private key mismatch&#39;</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="Context.load_cert_chain"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_cert_chain">[docs]</a> <span class="k">def</span> <span class="nf">load_cert_chain</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">certchainfile</span><span class="p">,</span> <span class="n">keyfile</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">callback</span><span class="o">=</span><span class="n">util</span><span class="o">.</span><span class="n">passphrase_callback</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, Optional[AnyStr], Callable) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Load certificate chain and private key into the context.</span>
@@ -173,8 +162,8 @@
<span class="n">keyfile</span> <span class="o">=</span> <span class="n">certchainfile</span>
<span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_use_privkey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">keyfile</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_check_privkey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">):</span>
- <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;public/private key mismatch&#39;</span><span class="p">)</span>
-</div>
+ <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;public/private key mismatch&#39;</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Context.set_client_CA_list_from_file"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_client_CA_list_from_file">[docs]</a> <span class="k">def</span> <span class="nf">set_client_CA_list_from_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cafile</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Load CA certs into the context. These CA certs are sent to the</span>
@@ -183,12 +172,12 @@
<span class="sd"> :param cafile: File object containing one or more PEM-encoded CA</span>
<span class="sd"> certificates concatenated together.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_client_CA_list_from_file</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">cafile</span><span class="p">)</span>
+ <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_client_CA_list_from_file</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">cafile</span><span class="p">)</span></div>
- <span class="c1"># Deprecated.</span></div>
+ <span class="c1"># Deprecated.</span>
<span class="n">load_client_CA</span> <span class="o">=</span> <span class="n">load_client_ca</span> <span class="o">=</span> <span class="n">set_client_CA_list_from_file</span>
-<div class="viewcode-block" id="Context.load_verify_locations"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_verify_locations">[docs]</a> <span class="k">def</span> <span class="nf">load_verify_locations</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cafile</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">capath</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+<div class="viewcode-block" id="Context.load_verify_locations"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_verify_locations">[docs]</a> <span class="k">def</span> <span class="nf">load_verify_locations</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cafile</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">capath</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (Optional[AnyStr], Optional[AnyStr]) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Load CA certs into the context.</span>
@@ -207,11 +196,11 @@
<span class="sd"> 1 The operation succeeded.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">cafile</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">capath</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cafile</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">capath</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;cafile and capath can not both be None.&quot;</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_load_verify_locations</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">cafile</span><span class="p">,</span> <span class="n">capath</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_load_verify_locations</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">cafile</span><span class="p">,</span> <span class="n">capath</span><span class="p">)</span></div>
- <span class="c1"># Deprecated.</span></div>
+ <span class="c1"># Deprecated.</span>
<span class="n">load_verify_info</span> <span class="o">=</span> <span class="n">load_verify_locations</span>
<div class="viewcode-block" id="Context.set_session_id_ctx"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_session_id_ctx">[docs]</a> <span class="k">def</span> <span class="nf">set_session_id_ctx</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="p">):</span>
@@ -233,8 +222,8 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">ret</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_session_id_context</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="nb">id</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">ret</span><span class="p">:</span>
- <span class="k">raise</span> <span class="n">Err</span><span class="o">.</span><span class="n">SSLError</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error_code</span><span class="p">(),</span> <span class="s1">&#39;&#39;</span><span class="p">)</span>
-</div>
+ <span class="k">raise</span> <span class="n">Err</span><span class="o">.</span><span class="n">SSLError</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error_code</span><span class="p">(),</span> <span class="s1">&#39;&#39;</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Context.set_default_verify_paths"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_default_verify_paths">[docs]</a> <span class="k">def</span> <span class="nf">set_default_verify_paths</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -256,8 +245,8 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">ret</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_default_verify_paths</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">ret</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Cannot use default SSL certificate store!&#39;</span><span class="p">)</span>
-</div>
+ <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;Cannot use default SSL certificate store!&#39;</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Context.set_allow_unknown_ca"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_allow_unknown_ca">[docs]</a> <span class="k">def</span> <span class="nf">set_allow_unknown_ca</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ok</span><span class="p">):</span>
<span class="c1"># type: (Union[int, bool]) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Set the context to accept/reject a peer certificate if the</span>
@@ -265,8 +254,8 @@
<span class="sd"> :param ok: True to accept, False to reject.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">allow_unknown_ca</span> <span class="o">=</span> <span class="n">ok</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">allow_unknown_ca</span> <span class="o">=</span> <span class="n">ok</span></div>
+
<div class="viewcode-block" id="Context.get_allow_unknown_ca"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_allow_unknown_ca">[docs]</a> <span class="k">def</span> <span class="nf">get_allow_unknown_ca</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; Union[int, bool]</span>
<span class="sd">&quot;&quot;&quot;Get the context&#39;s setting that accepts/rejects a peer</span>
@@ -274,9 +263,9 @@
<span class="sd"> FIXME 2Bconverted to bool</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">allow_unknown_ca</span>
-</div>
-<div class="viewcode-block" id="Context.set_verify"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_verify">[docs]</a> <span class="k">def</span> <span class="nf">set_verify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mode</span><span class="p">,</span> <span class="n">depth</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">allow_unknown_ca</span></div>
+
+<div class="viewcode-block" id="Context.set_verify"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_verify">[docs]</a> <span class="k">def</span> <span class="nf">set_verify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mode</span><span class="p">,</span> <span class="n">depth</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (int, int, Optional[Callable]) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Set verify options. Most applications will need to call this</span>
@@ -290,21 +279,21 @@
<span class="sd"> :param callback: Callable that can be used to specify custom</span>
<span class="sd"> verification checks.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">callback</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">callback</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_verify_default</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">mode</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_verify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">mode</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_verify_depth</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">depth</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_verify_depth</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">depth</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Context.get_verify_mode"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_verify_mode">[docs]</a> <span class="k">def</span> <span class="nf">get_verify_mode</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_get_verify_mode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_get_verify_mode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Context.get_verify_depth"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_verify_depth">[docs]</a> <span class="k">def</span> <span class="nf">get_verify_depth</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Returns the verification mode currently set in the SSL Context.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_get_verify_depth</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_get_verify_depth</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Context.set_tmp_dh"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_tmp_dh">[docs]</a> <span class="k">def</span> <span class="nf">set_tmp_dh</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dhpfile</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Load ephemeral DH parameters into the context.</span>
@@ -314,17 +303,17 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">f</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">dhpfile</span><span class="p">)</span>
<span class="n">dhp</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">dh_read_parameters</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_tmp_dh</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">dhp</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="Context.set_tmp_dh_callback"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_tmp_dh_callback">[docs]</a> <span class="k">def</span> <span class="nf">set_tmp_dh_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_tmp_dh</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">dhp</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="Context.set_tmp_dh_callback"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_tmp_dh_callback">[docs]</a> <span class="k">def</span> <span class="nf">set_tmp_dh_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (Optional[Callable]) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Sets the callback function for SSL.Context.</span>
<span class="sd"> :param callback: Callable to be used when a DH parameters are required.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">callback</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_tmp_dh_callback</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
-</div>
+ <span class="k">if</span> <span class="n">callback</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_tmp_dh_callback</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Context.set_tmp_rsa"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_tmp_rsa">[docs]</a> <span class="k">def</span> <span class="nf">set_tmp_rsa</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">rsa</span><span class="p">):</span>
<span class="c1"># type: (RSA.RSA) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Load ephemeral RSA key into the context.</span>
@@ -334,16 +323,16 @@
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">rsa</span><span class="p">,</span> <span class="n">RSA</span><span class="o">.</span><span class="n">RSA</span><span class="p">):</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_tmp_rsa</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">rsa</span><span class="o">.</span><span class="n">rsa</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;Expected an instance of RSA.RSA, got </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">rsa</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="Context.set_tmp_rsa_callback"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_tmp_rsa_callback">[docs]</a> <span class="k">def</span> <span class="nf">set_tmp_rsa_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;Expected an instance of RSA.RSA, got </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">rsa</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="Context.set_tmp_rsa_callback"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_tmp_rsa_callback">[docs]</a> <span class="k">def</span> <span class="nf">set_tmp_rsa_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (Optional[Callable]) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Sets the callback function to be used when</span>
<span class="sd"> a temporary/ephemeral RSA key is required.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">callback</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_tmp_rsa_callback</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
-</div>
+ <span class="k">if</span> <span class="n">callback</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_tmp_rsa_callback</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Context.set_info_callback"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_info_callback">[docs]</a> <span class="k">def</span> <span class="nf">set_info_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">cb</span><span class="o">.</span><span class="n">ssl_info_callback</span><span class="p">):</span>
<span class="c1"># type: (Callable) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;Set a callback function to get state information.</span>
@@ -354,8 +343,8 @@
<span class="sd"> :param callback: Callback function. The default prints</span>
<span class="sd"> information to stderr.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_info_callback</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_info_callback</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Context.set_cipher_list"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_cipher_list">[docs]</a> <span class="k">def</span> <span class="nf">set_cipher_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cipher_list</span><span class="p">):</span>
<span class="c1"># type: (str) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Sets the list of available ciphers.</span>
@@ -365,8 +354,8 @@
<span class="sd"> :return: 1 if any cipher could be selected and 0 on complete</span>
<span class="sd"> failure.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_cipher_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">cipher_list</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_cipher_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">cipher_list</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Context.add_session"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.add_session">[docs]</a> <span class="k">def</span> <span class="nf">add_session</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="p">):</span>
<span class="c1"># type: (Session) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Add the session to the context.</span>
@@ -378,8 +367,8 @@
<span class="sd"> 1 The operation succeeded.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_add_session</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">session</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_add_session</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">session</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="Context.remove_session"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.remove_session">[docs]</a> <span class="k">def</span> <span class="nf">remove_session</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="p">):</span>
<span class="c1"># type: (Session) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Remove the session from the context.</span>
@@ -391,8 +380,8 @@
<span class="sd"> 1 The operation succeeded.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_remove_session</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">session</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_remove_session</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">session</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="Context.get_session_timeout"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_session_timeout">[docs]</a> <span class="k">def</span> <span class="nf">get_session_timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Get current session timeout.</span>
@@ -422,8 +411,8 @@
<span class="sd"> :return: the currently set timeout value.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_get_session_timeout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_get_session_timeout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Context.set_session_timeout"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_session_timeout">[docs]</a> <span class="k">def</span> <span class="nf">set_session_timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Set new session timeout.</span>
@@ -435,8 +424,8 @@
<span class="sd"> :return: the previously set timeout value.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_session_timeout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">timeout</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_session_timeout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">timeout</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Context.set_session_cache_mode"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_session_cache_mode">[docs]</a> <span class="k">def</span> <span class="nf">set_session_cache_mode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mode</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Enables/disables session caching.</span>
@@ -447,8 +436,8 @@
<span class="sd"> :return: the previously set cache mode value.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_session_cache_mode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">mode</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_session_cache_mode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">mode</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Context.get_session_cache_mode"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_session_cache_mode">[docs]</a> <span class="k">def</span> <span class="nf">get_session_cache_mode</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Gets the current session caching.</span>
@@ -457,8 +446,8 @@
<span class="sd"> :return: the previously set cache mode value.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_get_session_cache_mode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_get_session_cache_mode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Context.set_options"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_options">[docs]</a> <span class="k">def</span> <span class="nf">set_options</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">op</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Adds the options set via bitmask in options to the Context.</span>
@@ -485,8 +474,8 @@
<span class="sd"> :return: the new options bitmask after adding options.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">op</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_ctx_set_options</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">,</span> <span class="n">op</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Context.get_cert_store"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_cert_store">[docs]</a> <span class="k">def</span> <span class="nf">get_cert_store</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; X509.X509</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -501,42 +490,43 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../../index.html">Documentation overview</a><ul>
+ <li><a href="../../index.html">Module code</a><ul>
+ <li><a href="../SSL.html">M2Crypto.SSL</a><ul>
+ </ul></li>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" >M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/SSL/SSLServer.html b/doc/html/_modules/M2Crypto/SSL/SSLServer.html
index 898c32a..301630f 100644
--- a/doc/html/_modules/M2Crypto/SSL/SSLServer.html
+++ b/doc/html/_modules/M2Crypto/SSL/SSLServer.html
@@ -1,85 +1,75 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.SSL.SSLServer &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
+ <title>M2Crypto.SSL.SSLServer &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../../index.html" />
- <link rel="up" title="M2Crypto.SSL" href="../SSL.html" />
+ <link rel="index" title="Index" href="../../../genindex.html" />
+ <link rel="search" title="Search" href="../../../search.html" />
+
+ <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" accesskey="U">M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.SSL.SSLServer</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span><span class="p">,</span> <span class="n">print_function</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span><span class="p">,</span> <span class="n">print_function</span>
<span class="sd">&quot;&quot;&quot;SSLServer</span>
<span class="sd">Copyright (c) 1999-2002 Ng Pheng Siong. All rights reserved.&quot;&quot;&quot;</span>
+
<span class="c1"># M2Crypto</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL</span> <span class="kn">import</span> <span class="n">SSLError</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Connection</span> <span class="kn">import</span> <span class="n">Connection</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Context</span> <span class="kn">import</span> <span class="n">Context</span> <span class="c1"># noqa</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">six</span> <span class="c1"># noqa</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">util</span> <span class="c1"># noqa</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.socketserver</span> <span class="kn">import</span> <span class="p">(</span><span class="n">BaseServer</span><span class="p">,</span> <span class="n">ForkingMixIn</span><span class="p">,</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL</span> <span class="k">import</span> <span class="n">SSLError</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Connection</span> <span class="k">import</span> <span class="n">Connection</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Context</span> <span class="k">import</span> <span class="n">Context</span> <span class="c1"># noqa</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">six</span> <span class="c1"># noqa</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">util</span> <span class="c1"># noqa</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.socketserver</span> <span class="k">import</span> <span class="p">(</span><span class="n">BaseServer</span><span class="p">,</span> <span class="n">ForkingMixIn</span><span class="p">,</span>
<span class="n">TCPServer</span><span class="p">,</span> <span class="n">ThreadingMixIn</span><span class="p">)</span>
-<span class="kn">from</span> <span class="nn">socket</span> <span class="kn">import</span> <span class="n">socket</span> <span class="c1"># noqa</span>
+<span class="kn">from</span> <span class="nn">socket</span> <span class="k">import</span> <span class="n">socket</span> <span class="c1"># noqa</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Union</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">Union</span> <span class="c1"># noqa</span>
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;SSLServer&#39;</span><span class="p">,</span> <span class="s1">&#39;ForkingSSLServer&#39;</span><span class="p">,</span> <span class="s1">&#39;ThreadingSSLServer&#39;</span><span class="p">]</span>
<div class="viewcode-block" id="SSLServer"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.SSLServer.SSLServer">[docs]</a><span class="k">class</span> <span class="nc">SSLServer</span><span class="p">(</span><span class="n">TCPServer</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server_address</span><span class="p">,</span> <span class="n">RequestHandlerClass</span><span class="p">,</span> <span class="n">ssl_context</span><span class="p">,</span> <span class="c1"># noqa</span>
- <span class="n">bind_and_activate</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
+ <span class="n">bind_and_activate</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="c1"># type: (util.AddrType, socketserver.BaseRequestHandler, Context, bool) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Superclass says: Constructor. May be extended, do not override.</span>
<span class="sd"> This class says: Ho-hum.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">BaseServer</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server_address</span><span class="p">,</span> <span class="n">RequestHandlerClass</span><span class="p">)</span>
+ <span class="n">BaseServer</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">server_address</span><span class="p">,</span> <span class="n">RequestHandlerClass</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ssl_ctx</span> <span class="o">=</span> <span class="n">ssl_context</span>
<span class="bp">self</span><span class="o">.</span><span class="n">socket</span> <span class="o">=</span> <span class="n">Connection</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl_ctx</span><span class="p">)</span>
<span class="k">if</span> <span class="n">bind_and_activate</span><span class="p">:</span>
@@ -88,27 +78,27 @@
<div class="viewcode-block" id="SSLServer.handle_request"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.SSLServer.SSLServer.handle_request">[docs]</a> <span class="k">def</span> <span class="nf">handle_request</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="n">request</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="n">client_address</span> <span class="o">=</span> <span class="bp">None</span>
+ <span class="n">request</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="n">client_address</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">request</span><span class="p">,</span> <span class="n">client_address</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_request</span><span class="p">()</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">verify_request</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">client_address</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">process_request</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">client_address</span><span class="p">)</span>
<span class="k">except</span> <span class="n">SSLError</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">handle_error</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">client_address</span><span class="p">)</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">handle_error</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">client_address</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="SSLServer.handle_error"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.SSLServer.SSLServer.handle_error">[docs]</a> <span class="k">def</span> <span class="nf">handle_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">client_address</span><span class="p">):</span>
<span class="c1"># type: (Union[socket, Connection], util.AddrType) -&gt; None</span>
- <span class="k">print</span><span class="p">(</span><span class="s1">&#39;-&#39;</span> <span class="o">*</span> <span class="mi">40</span><span class="p">)</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;-&#39;</span> <span class="o">*</span> <span class="mi">40</span><span class="p">)</span>
<span class="kn">import</span> <span class="nn">traceback</span>
<span class="n">traceback</span><span class="o">.</span><span class="n">print_exc</span><span class="p">()</span>
- <span class="k">print</span><span class="p">(</span><span class="s1">&#39;-&#39;</span> <span class="o">*</span> <span class="mi">40</span><span class="p">)</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;-&#39;</span> <span class="o">*</span> <span class="mi">40</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="ForkingSSLServer"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.SSLServer.ForkingSSLServer">[docs]</a><span class="k">class</span> <span class="nc">ForkingSSLServer</span><span class="p">(</span><span class="n">ForkingMixIn</span><span class="p">,</span> <span class="n">SSLServer</span><span class="p">):</span>
- <span class="k">pass</span>
+ <span class="k">pass</span></div>
+
-</div>
<div class="viewcode-block" id="ThreadingSSLServer"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.SSLServer.ThreadingSSLServer">[docs]</a><span class="k">class</span> <span class="nc">ThreadingSSLServer</span><span class="p">(</span><span class="n">ThreadingMixIn</span><span class="p">,</span> <span class="n">SSLServer</span><span class="p">):</span>
<span class="k">pass</span></div>
</pre></div>
@@ -116,42 +106,43 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../../index.html">Documentation overview</a><ul>
+ <li><a href="../../index.html">Module code</a><ul>
+ <li><a href="../SSL.html">M2Crypto.SSL</a><ul>
+ </ul></li>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" >M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/SSL/Session.html b/doc/html/_modules/M2Crypto/SSL/Session.html
index cd54906..0673387 100644
--- a/doc/html/_modules/M2Crypto/SSL/Session.html
+++ b/doc/html/_modules/M2Crypto/SSL/Session.html
@@ -1,53 +1,42 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.SSL.Session &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
+ <title>M2Crypto.SSL.Session &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../../index.html" />
- <link rel="up" title="M2Crypto.SSL" href="../SSL.html" />
+ <link rel="index" title="Index" href="../../../genindex.html" />
+ <link rel="search" title="Search" href="../../../search.html" />
+
+ <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" accesskey="U">M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.SSL.Session</h1><div class="highlight"><pre>
<span></span><span class="sd">&quot;&quot;&quot;SSL Session</span>
@@ -56,10 +45,10 @@
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;Session&#39;</span><span class="p">,</span> <span class="s1">&#39;load_session&#39;</span><span class="p">]</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">Err</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL</span> <span class="kn">import</span> <span class="n">SSLError</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">Err</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL</span> <span class="k">import</span> <span class="n">SSLError</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">AnyStr</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">AnyStr</span> <span class="c1"># noqa</span>
<div class="viewcode-block" id="Session"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Session.Session">[docs]</a><span class="k">class</span> <span class="nc">Session</span><span class="p">:</span>
@@ -68,7 +57,7 @@
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (bytes, int) -&gt; None</span>
- <span class="k">assert</span> <span class="n">session</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span>
+ <span class="k">assert</span> <span class="n">session</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">session</span> <span class="o">=</span> <span class="n">session</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pyfree</span> <span class="o">=</span> <span class="n">_pyfree</span>
@@ -85,40 +74,40 @@
<span class="c1"># type: () -&gt; bytes</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">()</span>
<span class="n">m2</span><span class="o">.</span><span class="n">ssl_session_print</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">()</span>
-</div>
+ <span class="k">return</span> <span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="Session.as_der"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.as_der">[docs]</a> <span class="k">def</span> <span class="nf">as_der</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">()</span>
<span class="n">m2</span><span class="o">.</span><span class="n">i2d_ssl_session</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">()</span>
-</div>
+ <span class="k">return</span> <span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="Session.write_bio"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.write_bio">[docs]</a> <span class="k">def</span> <span class="nf">write_bio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bio</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO) -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_session_write_bio</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_session_write_bio</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Session.get_time"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.get_time">[docs]</a> <span class="k">def</span> <span class="nf">get_time</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_session_get_time</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_session_get_time</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Session.set_time"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.set_time">[docs]</a> <span class="k">def</span> <span class="nf">set_time</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_session_set_time</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_session_set_time</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Session.get_timeout"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.get_timeout">[docs]</a> <span class="k">def</span> <span class="nf">get_timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_session_get_timeout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_session_get_timeout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Session.set_timeout"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.set_timeout">[docs]</a> <span class="k">def</span> <span class="nf">set_timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_session_set_timeout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_session_set_timeout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="load_session"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.Session.load_session">[docs]</a><span class="k">def</span> <span class="nf">load_session</span><span class="p">(</span><span class="n">pemfile</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; Session</span>
<span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">pemfile</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="n">cptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_session_read_pem</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">())</span>
- <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">SSLError</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
<span class="k">return</span> <span class="n">Session</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
</pre></div>
@@ -126,42 +115,43 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../../index.html">Documentation overview</a><ul>
+ <li><a href="../../index.html">Module code</a><ul>
+ <li><a href="../SSL.html">M2Crypto.SSL</a><ul>
+ </ul></li>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" >M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/SSL/TwistedProtocolWrapper.html b/doc/html/_modules/M2Crypto/SSL/TwistedProtocolWrapper.html
index c0b7245..56561fb 100644
--- a/doc/html/_modules/M2Crypto/SSL/TwistedProtocolWrapper.html
+++ b/doc/html/_modules/M2Crypto/SSL/TwistedProtocolWrapper.html
@@ -1,53 +1,42 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.SSL.TwistedProtocolWrapper &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
+ <title>M2Crypto.SSL.TwistedProtocolWrapper &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../../index.html" />
- <link rel="up" title="M2Crypto.SSL" href="../SSL.html" />
+ <link rel="index" title="Index" href="../../../genindex.html" />
+ <link rel="search" title="Search" href="../../../search.html" />
+
+ <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" accesskey="U">M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.SSL.TwistedProtocolWrapper</h1><div class="highlight"><pre>
<span></span><span class="sd">&quot;&quot;&quot;</span>
@@ -66,19 +55,21 @@
<span class="kn">import</span> <span class="nn">logging</span>
+<span class="kn">from</span> <span class="nn">functools</span> <span class="k">import</span> <span class="n">partial</span>
+
<span class="kn">import</span> <span class="nn">twisted.internet.reactor</span>
-<span class="kn">import</span> <span class="nn">twisted.protocols.policies</span> <span class="kn">as</span> <span class="nn">policies</span>
+<span class="kn">import</span> <span class="nn">twisted.protocols.policies</span> <span class="k">as</span> <span class="nn">policies</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">X509</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Checker</span> <span class="kn">import</span> <span class="n">Checker</span><span class="p">,</span> <span class="n">SSLVerificationError</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">X509</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Checker</span> <span class="k">import</span> <span class="n">Checker</span><span class="p">,</span> <span class="n">SSLVerificationError</span>
-<span class="kn">from</span> <span class="nn">twisted.internet.interfaces</span> <span class="kn">import</span> <span class="n">ITLSTransport</span>
-<span class="kn">from</span> <span class="nn">twisted.protocols.policies</span> <span class="kn">import</span> <span class="n">ProtocolWrapper</span>
+<span class="kn">from</span> <span class="nn">twisted.internet.interfaces</span> <span class="k">import</span> <span class="n">ITLSTransport</span>
+<span class="kn">from</span> <span class="nn">twisted.protocols.policies</span> <span class="k">import</span> <span class="n">ProtocolWrapper</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
- <span class="kn">from</span> <span class="nn">zope.interface</span> <span class="kn">import</span> <span class="n">implementer</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Iterable</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">zope.interface</span> <span class="k">import</span> <span class="n">implementer</span>
-<span class="n">log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
+<span class="n">log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_alwaysSucceedsPostConnectionCheck</span><span class="p">(</span><span class="n">peerX509</span><span class="p">,</span> <span class="n">expectedHost</span><span class="p">):</span>
@@ -86,7 +77,7 @@
<div class="viewcode-block" id="connectSSL"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.connectSSL">[docs]</a><span class="k">def</span> <span class="nf">connectSSL</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="n">factory</span><span class="p">,</span> <span class="n">contextFactory</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span>
- <span class="n">bindAddress</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
+ <span class="n">bindAddress</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">reactor</span><span class="o">=</span><span class="n">twisted</span><span class="o">.</span><span class="n">internet</span><span class="o">.</span><span class="n">reactor</span><span class="p">,</span>
<span class="n">postConnectionCheck</span><span class="o">=</span><span class="n">Checker</span><span class="p">()):</span>
<span class="c1"># type: (str, int, object, object, int, Optional[str], twisted.internet.reactor, Checker) -&gt; reactor.connectTCP</span>
@@ -103,10 +94,10 @@
<span class="n">client</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="n">contextFactory</span><span class="o">=</span><span class="n">contextFactory</span><span class="p">,</span>
<span class="n">postConnectionCheck</span><span class="o">=</span><span class="n">postConnectionCheck</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">reactor</span><span class="o">.</span><span class="n">connectTCP</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="n">wrappingFactory</span><span class="p">,</span> <span class="n">timeout</span><span class="p">,</span> <span class="n">bindAddress</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">reactor</span><span class="o">.</span><span class="n">connectTCP</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="n">wrappingFactory</span><span class="p">,</span> <span class="n">timeout</span><span class="p">,</span> <span class="n">bindAddress</span><span class="p">)</span></div>
-</div>
-<div class="viewcode-block" id="connectTCP"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.connectTCP">[docs]</a><span class="k">def</span> <span class="nf">connectTCP</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="n">factory</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">bindAddress</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
+
+<div class="viewcode-block" id="connectTCP"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.connectTCP">[docs]</a><span class="k">def</span> <span class="nf">connectTCP</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="n">factory</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">bindAddress</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">reactor</span><span class="o">=</span><span class="n">twisted</span><span class="o">.</span><span class="n">internet</span><span class="o">.</span><span class="n">reactor</span><span class="p">,</span>
<span class="n">postConnectionCheck</span><span class="o">=</span><span class="n">Checker</span><span class="p">()):</span>
<span class="c1"># type: (str, int, object, int, Optional[util.AddrType], object, Callable) -&gt; object</span>
@@ -123,11 +114,11 @@
<span class="n">wrappedProtocol</span><span class="p">,</span>
<span class="n">startPassThrough</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="n">client</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
- <span class="n">contextFactory</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
+ <span class="n">contextFactory</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">postConnectionCheck</span><span class="o">=</span><span class="n">postConnectionCheck</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">reactor</span><span class="o">.</span><span class="n">connectTCP</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="n">wrappingFactory</span><span class="p">,</span> <span class="n">timeout</span><span class="p">,</span> <span class="n">bindAddress</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">reactor</span><span class="o">.</span><span class="n">connectTCP</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="n">wrappingFactory</span><span class="p">,</span> <span class="n">timeout</span><span class="p">,</span> <span class="n">bindAddress</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="listenSSL"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.listenSSL">[docs]</a><span class="k">def</span> <span class="nf">listenSSL</span><span class="p">(</span><span class="n">port</span><span class="p">,</span> <span class="n">factory</span><span class="p">,</span> <span class="n">contextFactory</span><span class="p">,</span> <span class="n">backlog</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">interface</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">,</span>
<span class="n">reactor</span><span class="o">=</span><span class="n">twisted</span><span class="o">.</span><span class="n">internet</span><span class="o">.</span><span class="n">reactor</span><span class="p">,</span>
<span class="n">postConnectionCheck</span><span class="o">=</span><span class="n">_alwaysSucceedsPostConnectionCheck</span><span class="p">):</span>
@@ -144,12 +135,12 @@
<span class="n">client</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="n">contextFactory</span><span class="o">=</span><span class="n">contextFactory</span><span class="p">,</span>
<span class="n">postConnectionCheck</span><span class="o">=</span><span class="n">postConnectionCheck</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">reactor</span><span class="o">.</span><span class="n">listenTCP</span><span class="p">(</span><span class="n">port</span><span class="p">,</span> <span class="n">wrappingFactory</span><span class="p">,</span> <span class="n">backlog</span><span class="p">,</span> <span class="n">interface</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">reactor</span><span class="o">.</span><span class="n">listenTCP</span><span class="p">(</span><span class="n">port</span><span class="p">,</span> <span class="n">wrappingFactory</span><span class="p">,</span> <span class="n">backlog</span><span class="p">,</span> <span class="n">interface</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="listenTCP"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.listenTCP">[docs]</a><span class="k">def</span> <span class="nf">listenTCP</span><span class="p">(</span><span class="n">port</span><span class="p">,</span> <span class="n">factory</span><span class="p">,</span> <span class="n">backlog</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">interface</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">,</span>
<span class="n">reactor</span><span class="o">=</span><span class="n">twisted</span><span class="o">.</span><span class="n">internet</span><span class="o">.</span><span class="n">reactor</span><span class="p">,</span>
- <span class="n">postConnectionCheck</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="n">postConnectionCheck</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A convenience function to listen for TCP connections using Twisted.</span>
@@ -163,11 +154,11 @@
<span class="n">wrappedProtocol</span><span class="p">,</span>
<span class="n">startPassThrough</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="n">client</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
- <span class="n">contextFactory</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
+ <span class="n">contextFactory</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">postConnectionCheck</span><span class="o">=</span><span class="n">postConnectionCheck</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">reactor</span><span class="o">.</span><span class="n">listenTCP</span><span class="p">(</span><span class="n">port</span><span class="p">,</span> <span class="n">wrappingFactory</span><span class="p">,</span> <span class="n">backlog</span><span class="p">,</span> <span class="n">interface</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">reactor</span><span class="o">.</span><span class="n">listenTCP</span><span class="p">(</span><span class="n">port</span><span class="p">,</span> <span class="n">wrappingFactory</span><span class="p">,</span> <span class="n">backlog</span><span class="p">,</span> <span class="n">interface</span><span class="p">)</span></div>
+
-</div>
<span class="k">class</span> <span class="nc">_BioProxy</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The purpose of this class is to eliminate the __del__ method from</span>
@@ -183,7 +174,7 @@
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">bio</span>
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">bio</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">bio</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">m2_bio_free_all</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bio</span><span class="p">)</span>
@@ -202,12 +193,12 @@
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ssl</span>
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ssl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ssl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">m2_ssl_free</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="p">)</span>
-<span class="nd">@implementer</span><span class="p">(</span><span class="n">ITLSTransport</span><span class="p">)</span>
-<div class="viewcode-block" id="TLSProtocolWrapper"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper">[docs]</a><span class="k">class</span> <span class="nc">TLSProtocolWrapper</span><span class="p">(</span><span class="n">ProtocolWrapper</span><span class="p">):</span>
+<div class="viewcode-block" id="TLSProtocolWrapper"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper">[docs]</a><span class="nd">@implementer</span><span class="p">(</span><span class="n">ITLSTransport</span><span class="p">)</span>
+<span class="k">class</span> <span class="nc">TLSProtocolWrapper</span><span class="p">(</span><span class="n">ProtocolWrapper</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A SSL/TLS protocol wrapper to be used with Twisted. Typically</span>
<span class="sd"> you would not use this class directly. Use connectTCP,</span>
@@ -217,6 +208,7 @@
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">factory</span><span class="p">,</span> <span class="n">wrappedProtocol</span><span class="p">,</span> <span class="n">startPassThrough</span><span class="p">,</span> <span class="n">client</span><span class="p">,</span>
<span class="n">contextFactory</span><span class="p">,</span> <span class="n">postConnectionCheck</span><span class="p">):</span>
+ <span class="c1"># type: policies.WrappingFactory, object, int, int, object, Checker</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> :param factory:</span>
<span class="sd"> :param wrappedProtocol:</span>
@@ -245,13 +237,13 @@
<span class="c1"># wrappedProtocol == client/server instance</span>
<span class="c1"># factory.wrappedFactory == client/server factory</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">b</span><span class="s1">&#39;&#39;</span> <span class="c1"># Clear text to encrypt and send</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">encrypted</span> <span class="o">=</span> <span class="n">b</span><span class="s1">&#39;&#39;</span> <span class="c1"># Encrypted data we need to decrypt and pass on</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">&#39;&#39;</span> <span class="c1"># Clear text to encrypt and send</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">encrypted</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">&#39;&#39;</span> <span class="c1"># Encrypted data we need to decrypt and pass on</span>
<span class="bp">self</span><span class="o">.</span><span class="n">tlsStarted</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># SSL/TLS mode or pass through</span>
<span class="bp">self</span><span class="o">.</span><span class="n">checked</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># Post connection check done or not</span>
<span class="bp">self</span><span class="o">.</span><span class="n">isClient</span> <span class="o">=</span> <span class="n">client</span>
<span class="bp">self</span><span class="o">.</span><span class="n">helloDone</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># True when hello has been sent</span>
- <span class="k">if</span> <span class="n">postConnectionCheck</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">postConnectionCheck</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">postConnectionCheck</span> <span class="o">=</span> <span class="n">_alwaysSucceedsPostConnectionCheck</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">postConnectionCheck</span> <span class="o">=</span> <span class="n">postConnectionCheck</span>
@@ -264,19 +256,19 @@
<span class="sd"> Clear this instance, after which it is ready for reuse.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;tlsStarted&#39;</span><span class="p">,</span> <span class="mi">0</span><span class="p">):</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">sslBio</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">ssl</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">internalBio</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">networkBio</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">encrypted</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">sslBio</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">ssl</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">internalBio</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">networkBio</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">&#39;&#39;</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">encrypted</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">&#39;&#39;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">tlsStarted</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">checked</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">isClient</span> <span class="o">=</span> <span class="mi">1</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">helloDone</span> <span class="o">=</span> <span class="mi">0</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">helloDone</span> <span class="o">=</span> <span class="mi">0</span></div>
<span class="c1"># We can reuse self.ctx and it will be deleted automatically</span>
<span class="c1"># when this instance dies</span>
-</div>
+
<div class="viewcode-block" id="TLSProtocolWrapper.startTLS"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.startTLS">[docs]</a> <span class="k">def</span> <span class="nf">startTLS</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctx</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Start SSL/TLS. If this is not called, this instance just passes data</span>
@@ -315,9 +307,10 @@
<span class="n">m2</span><span class="o">.</span><span class="n">SSL_MODE_ENABLE_PARTIAL_WRITE</span> <span class="o">|</span>
<span class="n">m2</span><span class="o">.</span><span class="n">SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">tlsStarted</span> <span class="o">=</span> <span class="mi">1</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">tlsStarted</span> <span class="o">=</span> <span class="mi">1</span></div>
+
<div class="viewcode-block" id="TLSProtocolWrapper.write"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.write">[docs]</a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
+ <span class="c1"># type: (bytes) -&gt; None</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">tlsStarted</span><span class="p">:</span>
<span class="n">ProtocolWrapper</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
<span class="k">return</span>
@@ -330,25 +323,27 @@
<span class="c1"># See http://www.openssl.org/docs/apps/verify.html#DIAGNOSTICS</span>
<span class="c1"># for the error codes returned by SSL_get_verify_result.</span>
<span class="n">e</span><span class="o">.</span><span class="n">args</span> <span class="o">=</span> <span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_verify_result</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="o">.</span><span class="n">_ptr</span><span class="p">()),</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
- <span class="k">raise</span> <span class="n">e</span>
-</div>
+ <span class="k">raise</span> <span class="n">e</span></div>
+
<div class="viewcode-block" id="TLSProtocolWrapper.writeSequence"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.writeSequence">[docs]</a> <span class="k">def</span> <span class="nf">writeSequence</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
+ <span class="c1"># type: (Iterable[bytes]) -&gt; None</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">tlsStarted</span><span class="p">:</span>
- <span class="n">ProtocolWrapper</span><span class="o">.</span><span class="n">writeSequence</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
+ <span class="n">ProtocolWrapper</span><span class="o">.</span><span class="n">writeSequence</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
<span class="k">return</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">data</span><span class="p">))</span></div>
+
<div class="viewcode-block" id="TLSProtocolWrapper.loseConnection"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.loseConnection">[docs]</a> <span class="k">def</span> <span class="nf">loseConnection</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># XXX Do we need to do m2.ssl_shutdown(self.ssl._ptr())?</span>
- <span class="n">ProtocolWrapper</span><span class="o">.</span><span class="n">loseConnection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
-</div>
+ <span class="n">ProtocolWrapper</span><span class="o">.</span><span class="n">loseConnection</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="TLSProtocolWrapper.connectionMade"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.connectionMade">[docs]</a> <span class="k">def</span> <span class="nf">connectionMade</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">ProtocolWrapper</span><span class="o">.</span><span class="n">connectionMade</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tlsStarted</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">isClient</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">helloDone</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_clientHello</span><span class="p">()</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">_clientHello</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="TLSProtocolWrapper.dataReceived"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.dataReceived">[docs]</a> <span class="k">def</span> <span class="nf">dataReceived</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
+ <span class="c1"># type: (bytes) -&gt; None</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">tlsStarted</span><span class="p">:</span>
<span class="n">ProtocolWrapper</span><span class="o">.</span><span class="n">dataReceived</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
<span class="k">return</span>
@@ -366,23 +361,23 @@
<span class="n">ProtocolWrapper</span><span class="o">.</span><span class="n">dataReceived</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">decryptedData</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">decryptedData</span> <span class="o">==</span> <span class="s1">&#39;&#39;</span> <span class="ow">and</span> <span class="n">encryptedData</span> <span class="o">==</span> <span class="s1">&#39;&#39;</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">decryptedData</span> <span class="o">==</span> <span class="sa">b</span><span class="s1">&#39;&#39;</span> <span class="ow">and</span> <span class="n">encryptedData</span> <span class="o">==</span> <span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="p">:</span>
<span class="k">break</span>
<span class="k">except</span> <span class="n">BIO</span><span class="o">.</span><span class="n">BIOError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="c1"># See http://www.openssl.org/docs/apps/verify.html#DIAGNOSTICS</span>
<span class="c1"># for the error codes returned by SSL_get_verify_result.</span>
<span class="n">e</span><span class="o">.</span><span class="n">args</span> <span class="o">=</span> <span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_verify_result</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="o">.</span><span class="n">_ptr</span><span class="p">()),</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
- <span class="k">raise</span> <span class="n">e</span>
-</div>
+ <span class="k">raise</span> <span class="n">e</span></div>
+
<div class="viewcode-block" id="TLSProtocolWrapper.connectionLost"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.connectionLost">[docs]</a> <span class="k">def</span> <span class="nf">connectionLost</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">reason</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
- <span class="n">ProtocolWrapper</span><span class="o">.</span><span class="n">connectionLost</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">reason</span><span class="p">)</span>
-</div>
+ <span class="n">ProtocolWrapper</span><span class="o">.</span><span class="n">connectionLost</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">reason</span><span class="p">)</span></div>
+
<span class="k">def</span> <span class="nf">_check</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">checked</span> <span class="ow">and</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_is_init_finished</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="o">.</span><span class="n">_ptr</span><span class="p">()):</span>
<span class="n">x509</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_peer_cert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
- <span class="k">if</span> <span class="n">x509</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">x509</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">x509</span> <span class="o">=</span> <span class="n">X509</span><span class="o">.</span><span class="n">X509</span><span class="p">(</span><span class="n">x509</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">isClient</span><span class="p">:</span>
<span class="n">host</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">transport</span><span class="o">.</span><span class="n">addr</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
@@ -405,69 +400,132 @@
<span class="n">e</span><span class="o">.</span><span class="n">args</span> <span class="o">=</span> <span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">ssl_get_verify_result</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl</span><span class="o">.</span><span class="n">_ptr</span><span class="p">()),</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="k">raise</span> <span class="n">e</span>
- <span class="k">def</span> <span class="nf">_encrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">clientHello</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
- <span class="c1"># XXX near mirror image of _decrypt - refactor</span>
- <span class="n">encryptedData</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+ <span class="c1"># Optimizations to reduce attribute accesses</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">_get_wr_guar_ssl</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="c1"># type: () -&gt; Callable[[], int]</span>
+ <span class="sd">&quot;&quot;&quot;Return max. length of data can be written to the BIO.</span>
+
+<span class="sd"> Writes larger than this value will return a value from</span>
+<span class="sd"> BIO_write() less than the amount requested or if the buffer is</span>
+<span class="sd"> full request a retry.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="k">return</span> <span class="n">partial</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_ctrl_get_write_guarantee</span><span class="p">,</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">sslBio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">_get_wr_guar_net</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="c1"># type: () -&gt; Callable[[], int]</span>
+ <span class="k">return</span> <span class="n">partial</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_ctrl_get_write_guarantee</span><span class="p">,</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">networkBio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">_shoud_retry_ssl</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="c1"># type: () -&gt; Callable[[], int]</span>
+ <span class="c1"># BIO_should_retry() is true if the call that produced this</span>
+ <span class="c1"># condition should then be retried at a later time.</span>
+ <span class="k">return</span> <span class="n">partial</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_should_retry</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sslBio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">_shoud_retry_net</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="c1"># type: () -&gt; Callable[[], int]</span>
+ <span class="k">return</span> <span class="n">partial</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_should_retry</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">networkBio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">_ctrl_pend_ssl</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="c1"># type: () -&gt; Callable[[], int]</span>
+ <span class="c1"># size_t BIO_ctrl_pending(BIO *b);</span>
+ <span class="c1"># BIO_ctrl_pending() return the number of pending characters in</span>
+ <span class="c1"># the BIOs read and write buffers.</span>
+ <span class="k">return</span> <span class="n">partial</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_ctrl_pending</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sslBio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">_ctrl_pend_net</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="c1"># type: () -&gt; Callable[[], int]</span>
+ <span class="k">return</span> <span class="n">partial</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_ctrl_pending</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">networkBio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">_write_ssl</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="c1"># type: () -&gt; Callable[[bytes], int]</span>
+ <span class="c1"># All these functions return either the amount of data</span>
+ <span class="c1"># successfully read or written (if the return value is</span>
+ <span class="c1"># positive) or that no data was successfully read or written</span>
+ <span class="c1"># if the result is 0 or -1. If the return value is -2 then</span>
+ <span class="c1"># the operation is not implemented in the specific BIO type.</span>
+ <span class="k">return</span> <span class="n">partial</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_write</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sslBio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">_write_net</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="c1"># type: () -&gt; Callable[[bytes], int]</span>
+ <span class="k">return</span> <span class="n">partial</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_write</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">networkBio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">_read_ssl</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="c1"># type: () -&gt; Callable[[int], Optional[bytes]]</span>
+ <span class="k">return</span> <span class="n">partial</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_read</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sslBio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
+
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">_read_net</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="c1"># type: () -&gt; Callable[[int], Optional[bytes]]</span>
+ <span class="k">return</span> <span class="n">partial</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">bio_read</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">networkBio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
+
+ <span class="k">def</span> <span class="nf">_encrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">clientHello</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+ <span class="c1"># type: (bytes, int) -&gt; bytes</span>
+ <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd"> @param data:</span>
+<span class="sd"> @param clientHello:</span>
+<span class="sd"> @return:</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="n">encryptedData</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">&#39;&#39;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">+=</span> <span class="n">data</span>
- <span class="c1"># Optimizations to reduce attribute accesses</span>
- <span class="n">sslBioPtr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sslBio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">()</span>
- <span class="n">networkBio</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">networkBio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">()</span>
- <span class="n">m2bio_ctrl_get_write_guarantee</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_ctrl_get_write_guarantee</span>
- <span class="n">m2bio_write</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_write</span>
- <span class="n">m2bio_should_retry</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_should_retry</span>
- <span class="n">m2bio_ctrl_pending</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_ctrl_pending</span>
- <span class="n">m2bio_read</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_read</span>
<span class="k">while</span> <span class="mi">1</span><span class="p">:</span>
- <span class="n">g</span> <span class="o">=</span> <span class="n">m2bio_ctrl_get_write_guarantee</span><span class="p">(</span><span class="n">sslBioPtr</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">g</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">!=</span> <span class="s1">&#39;&#39;</span> <span class="ow">or</span> <span class="n">clientHello</span><span class="p">:</span>
- <span class="n">r</span> <span class="o">=</span> <span class="n">m2bio_write</span><span class="p">(</span><span class="n">sslBioPtr</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
+ <span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_wr_guar_ssl</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">!=</span> <span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">clientHello</span><span class="p">:</span>
+ <span class="n">r</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_write_ssl</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
<span class="k">if</span> <span class="n">r</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">:</span>
- <span class="k">assert</span><span class="p">(</span><span class="n">m2bio_should_retry</span><span class="p">(</span><span class="n">sslBioPtr</span><span class="p">))</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_shoud_retry_ssl</span><span class="p">():</span>
+ <span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span>
+ <span class="p">(</span><span class="s1">&#39;Data left to be written to </span><span class="si">{}</span><span class="s1">, &#39;</span> <span class="o">+</span>
+ <span class="s1">&#39;but cannot retry SSL connection!&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sslBio</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">checked</span>
<span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="n">r</span><span class="p">:]</span>
- <span class="n">pending</span> <span class="o">=</span> <span class="n">m2bio_ctrl_pending</span><span class="p">(</span><span class="n">networkBio</span><span class="p">)</span>
+ <span class="n">pending</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ctrl_pend_net</span><span class="p">()</span>
<span class="k">if</span> <span class="n">pending</span><span class="p">:</span>
- <span class="n">d</span> <span class="o">=</span> <span class="n">m2bio_read</span><span class="p">(</span><span class="n">networkBio</span><span class="p">,</span> <span class="n">pending</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">d</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="c1"># This is strange, but d can be None</span>
+ <span class="n">d</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_read_net</span><span class="p">(</span><span class="n">pending</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">d</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># This is strange, but d can be None</span>
<span class="n">encryptedData</span> <span class="o">+=</span> <span class="n">d</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">assert</span><span class="p">(</span><span class="n">m2bio_should_retry</span><span class="p">(</span><span class="n">networkBio</span><span class="p">))</span>
+ <span class="k">assert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_shoud_retry_net</span><span class="p">())</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">break</span>
<span class="k">return</span> <span class="n">encryptedData</span>
- <span class="k">def</span> <span class="nf">_decrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">):</span>
- <span class="c1"># XXX near mirror image of _encrypt - refactor</span>
+ <span class="k">def</span> <span class="nf">_decrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="p">):</span>
+ <span class="c1"># type: (bytes) -&gt; bytes</span>
<span class="bp">self</span><span class="o">.</span><span class="n">encrypted</span> <span class="o">+=</span> <span class="n">data</span>
- <span class="n">decryptedData</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
- <span class="c1"># Optimizations to reduce attribute accesses</span>
- <span class="n">sslBioPtr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sslBio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">()</span>
- <span class="n">networkBio</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">networkBio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">()</span>
- <span class="n">m2bio_ctrl_get_write_guarantee</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_ctrl_get_write_guarantee</span>
- <span class="n">m2bio_write</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_write</span>
- <span class="n">m2bio_should_retry</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_should_retry</span>
- <span class="n">m2bio_ctrl_pending</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_ctrl_pending</span>
- <span class="n">m2bio_read</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">bio_read</span>
+ <span class="n">decryptedData</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">&#39;&#39;</span>
<span class="k">while</span> <span class="mi">1</span><span class="p">:</span>
- <span class="n">g</span> <span class="o">=</span> <span class="n">m2bio_ctrl_get_write_guarantee</span><span class="p">(</span><span class="n">networkBio</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">g</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">encrypted</span> <span class="o">!=</span> <span class="s1">&#39;&#39;</span><span class="p">:</span>
- <span class="n">r</span> <span class="o">=</span> <span class="n">m2bio_write</span><span class="p">(</span><span class="n">networkBio</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">encrypted</span><span class="p">)</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_wr_guar_ssl</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">encrypted</span> <span class="o">!=</span> <span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="p">:</span>
+ <span class="n">r</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_write_net</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">encrypted</span><span class="p">)</span>
<span class="k">if</span> <span class="n">r</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">:</span>
- <span class="k">assert</span><span class="p">(</span><span class="n">m2bio_should_retry</span><span class="p">(</span><span class="n">networkBio</span><span class="p">))</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_shoud_retry_net</span><span class="p">():</span>
+ <span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span>
+ <span class="p">(</span><span class="s1">&#39;Data left to be written to </span><span class="si">{}</span><span class="s1">, &#39;</span> <span class="o">+</span>
+ <span class="s1">&#39;but cannot retry SSL connection!&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">networkBio</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">encrypted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">encrypted</span><span class="p">[</span><span class="n">r</span><span class="p">:]</span>
- <span class="n">pending</span> <span class="o">=</span> <span class="n">m2bio_ctrl_pending</span><span class="p">(</span><span class="n">sslBioPtr</span><span class="p">)</span>
+ <span class="n">pending</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ctrl_pend_ssl</span><span class="p">()</span>
<span class="k">if</span> <span class="n">pending</span><span class="p">:</span>
- <span class="n">d</span> <span class="o">=</span> <span class="n">m2bio_read</span><span class="p">(</span><span class="n">sslBioPtr</span><span class="p">,</span> <span class="n">pending</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">d</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="c1"># This is strange, but d can be None</span>
+ <span class="n">d</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_read_ssl</span><span class="p">(</span><span class="n">pending</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">d</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># This is strange, but d can be None</span>
<span class="n">decryptedData</span> <span class="o">+=</span> <span class="n">d</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">assert</span><span class="p">(</span><span class="n">m2bio_should_retry</span><span class="p">(</span><span class="n">sslBioPtr</span><span class="p">))</span>
+ <span class="k">assert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_shoud_retry_ssl</span><span class="p">())</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">break</span>
@@ -477,42 +535,43 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../../index.html">Documentation overview</a><ul>
+ <li><a href="../../index.html">Module code</a><ul>
+ <li><a href="../SSL.html">M2Crypto.SSL</a><ul>
+ </ul></li>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" >M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/SSL/cb.html b/doc/html/_modules/M2Crypto/SSL/cb.html
index 73d515a..6d113d3 100644
--- a/doc/html/_modules/M2Crypto/SSL/cb.html
+++ b/doc/html/_modules/M2Crypto/SSL/cb.html
@@ -1,56 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.SSL.cb &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
+ <title>M2Crypto.SSL.cb &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../../index.html" />
- <link rel="up" title="M2Crypto.SSL" href="../SSL.html" />
+ <link rel="index" title="Index" href="../../../genindex.html" />
+ <link rel="search" title="Search" href="../../../search.html" />
+
+ <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" accesskey="U">M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.SSL.cb</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;SSL callbacks</span>
@@ -58,9 +47,9 @@
<span class="kn">import</span> <span class="nn">sys</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">List</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">List</span> <span class="c1"># noqa</span>
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;unknown_issuer&#39;</span><span class="p">,</span> <span class="s1">&#39;ssl_verify_callback_stub&#39;</span><span class="p">,</span> <span class="s1">&#39;ssl_verify_callback&#39;</span><span class="p">,</span>
<span class="s1">&#39;ssl_verify_callback_allow_unknown_ca&#39;</span><span class="p">,</span> <span class="s1">&#39;ssl_info_callback&#39;</span><span class="p">]</span>
@@ -68,9 +57,9 @@
<div class="viewcode-block" id="ssl_verify_callback_stub"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.cb.ssl_verify_callback_stub">[docs]</a><span class="k">def</span> <span class="nf">ssl_verify_callback_stub</span><span class="p">(</span><span class="n">ssl_ctx_ptr</span><span class="p">,</span> <span class="n">x509_ptr</span><span class="p">,</span> <span class="n">errnum</span><span class="p">,</span> <span class="n">errdepth</span><span class="p">,</span> <span class="n">ok</span><span class="p">):</span>
<span class="c1"># Deprecated</span>
- <span class="k">return</span> <span class="n">ok</span>
-</div>
-<span class="n">unknown_issuer</span> <span class="o">=</span> <span class="p">[</span> <span class="c1"># type: List[int]</span>
+ <span class="k">return</span> <span class="n">ok</span></div>
+
+<span class="n">unknown_issuer</span> <span class="o">=</span> <span class="p">[</span>
<span class="n">m2</span><span class="o">.</span><span class="n">X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT</span><span class="p">,</span>
<span class="n">m2</span><span class="o">.</span><span class="n">X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY</span><span class="p">,</span>
<span class="n">m2</span><span class="o">.</span><span class="n">X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE</span><span class="p">,</span>
@@ -82,7 +71,7 @@
<span class="c1"># type: (bytes, bytes, int, int, int) -&gt; int</span>
<span class="c1"># Deprecated</span>
- <span class="kn">from</span> <span class="nn">M2Crypto.SSL.Context</span> <span class="kn">import</span> <span class="n">Context</span>
+ <span class="kn">from</span> <span class="nn">M2Crypto.SSL.Context</span> <span class="k">import</span> <span class="n">Context</span>
<span class="n">ssl_ctx</span> <span class="o">=</span> <span class="n">Context</span><span class="o">.</span><span class="n">ctxmap</span><span class="p">()[</span><span class="nb">int</span><span class="p">(</span><span class="n">ssl_ctx_ptr</span><span class="p">)]</span>
<span class="k">if</span> <span class="n">errnum</span> <span class="ow">in</span> <span class="n">unknown_issuer</span><span class="p">:</span>
<span class="k">if</span> <span class="n">ssl_ctx</span><span class="o">.</span><span class="n">get_allow_unknown_ca</span><span class="p">():</span>
@@ -96,18 +85,18 @@
<span class="n">ok</span> <span class="o">=</span> <span class="mi">1</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">ok</span> <span class="o">=</span> <span class="mi">0</span>
- <span class="k">return</span> <span class="n">ok</span>
+ <span class="k">return</span> <span class="n">ok</span></div>
+
-</div>
<div class="viewcode-block" id="ssl_verify_callback_allow_unknown_ca"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.cb.ssl_verify_callback_allow_unknown_ca">[docs]</a><span class="k">def</span> <span class="nf">ssl_verify_callback_allow_unknown_ca</span><span class="p">(</span><span class="n">ok</span><span class="p">,</span> <span class="n">store</span><span class="p">):</span>
<span class="c1"># type: (int, Any) -&gt; int</span>
<span class="n">errnum</span> <span class="o">=</span> <span class="n">store</span><span class="o">.</span><span class="n">get_error</span><span class="p">()</span>
<span class="k">if</span> <span class="n">errnum</span> <span class="ow">in</span> <span class="n">unknown_issuer</span><span class="p">:</span>
<span class="n">ok</span> <span class="o">=</span> <span class="mi">1</span>
- <span class="k">return</span> <span class="n">ok</span>
+ <span class="k">return</span> <span class="n">ok</span></div>
-<span class="c1"># Cribbed from OpenSSL&#39;s apps/s_cb.c.</span></div>
+<span class="c1"># Cribbed from OpenSSL&#39;s apps/s_cb.c.</span>
<div class="viewcode-block" id="ssl_info_callback"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.cb.ssl_info_callback">[docs]</a><span class="k">def</span> <span class="nf">ssl_info_callback</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">ret</span><span class="p">,</span> <span class="n">ssl_ptr</span><span class="p">):</span>
<span class="c1"># type: (int, int, bytes) -&gt; None</span>
@@ -151,42 +140,43 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../../index.html">Documentation overview</a><ul>
+ <li><a href="../../index.html">Module code</a><ul>
+ <li><a href="../SSL.html">M2Crypto.SSL</a><ul>
+ </ul></li>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" >M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/SSL/ssl_dispatcher.html b/doc/html/_modules/M2Crypto/SSL/ssl_dispatcher.html
index 73709e3..e8dfd8d 100644
--- a/doc/html/_modules/M2Crypto/SSL/ssl_dispatcher.html
+++ b/doc/html/_modules/M2Crypto/SSL/ssl_dispatcher.html
@@ -1,56 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.SSL.ssl_dispatcher &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
+ <title>M2Crypto.SSL.ssl_dispatcher &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../../index.html" />
- <link rel="up" title="M2Crypto.SSL" href="../SSL.html" />
+ <link rel="index" title="Index" href="../../../genindex.html" />
+ <link rel="search" title="Search" href="../../../search.html" />
+
+ <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" accesskey="U">M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.SSL.ssl_dispatcher</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;SSL dispatcher</span>
@@ -61,9 +50,9 @@
<span class="kn">import</span> <span class="nn">socket</span>
<span class="c1"># M2Crypto</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">util</span> <span class="c1"># noqa</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Connection</span> <span class="kn">import</span> <span class="n">Connection</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Context</span> <span class="kn">import</span> <span class="n">Context</span> <span class="c1"># noqa</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">util</span> <span class="c1"># noqa</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Connection</span> <span class="k">import</span> <span class="n">Connection</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.SSL.Context</span> <span class="k">import</span> <span class="n">Context</span> <span class="c1"># noqa</span>
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;ssl_dispatcher&#39;</span><span class="p">]</span>
@@ -76,64 +65,65 @@
<span class="bp">self</span><span class="o">.</span><span class="n">ssl_ctx</span> <span class="o">=</span> <span class="n">ssl_context</span>
<span class="bp">self</span><span class="o">.</span><span class="n">socket</span> <span class="o">=</span> <span class="n">Connection</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl_ctx</span><span class="p">)</span>
<span class="c1"># self.socket.setblocking(0)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">add_channel</span><span class="p">()</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">add_channel</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="ssl_dispatcher.connect"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.connect">[docs]</a> <span class="k">def</span> <span class="nf">connect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">):</span>
<span class="c1"># type: (util.AddrType) -&gt; None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">setblocking</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">addr</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">setblocking</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">setblocking</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="ssl_dispatcher.recv"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.recv">[docs]</a> <span class="k">def</span> <span class="nf">recv</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">buffer_size</span><span class="o">=</span><span class="mi">4096</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; bytes</span>
<span class="sd">&quot;&quot;&quot;Receive data over SSL.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">recv</span><span class="p">(</span><span class="n">buffer_size</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="ssl_dispatcher.send"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.send">[docs]</a> <span class="k">def</span> <span class="nf">send</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">buffer</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">recv</span><span class="p">(</span><span class="n">buffer_size</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="ssl_dispatcher.send"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.send">[docs]</a> <span class="k">def</span> <span class="nf">send</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">buffer</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;Send data over SSL.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="nb">buffer</span><span class="p">)</span></div></div>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">socket</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">buffer</span><span class="p">)</span></div></div>
</pre></div>
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../../index.html">Documentation overview</a><ul>
+ <li><a href="../../index.html">Module code</a><ul>
+ <li><a href="../SSL.html">M2Crypto.SSL</a><ul>
+ </ul></li>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" >M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/SSL/timeout.html b/doc/html/_modules/M2Crypto/SSL/timeout.html
index 849ae6d..73ed18a 100644
--- a/doc/html/_modules/M2Crypto/SSL/timeout.html
+++ b/doc/html/_modules/M2Crypto/SSL/timeout.html
@@ -1,53 +1,42 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.SSL.timeout &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
+ <title>M2Crypto.SSL.timeout &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../../index.html" />
- <link rel="up" title="M2Crypto.SSL" href="../SSL.html" />
+ <link rel="index" title="Index" href="../../../genindex.html" />
+ <link rel="search" title="Search" href="../../../search.html" />
+
+ <link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" accesskey="U">M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.SSL.timeout</h1><div class="highlight"><pre>
<span></span><span class="sd">&quot;&quot;&quot;Support for SSL socket timeouts.</span>
@@ -64,7 +53,7 @@
<span class="n">DEFAULT_TIMEOUT</span> <span class="o">=</span> <span class="mi">600</span> <span class="c1"># type: int</span>
-<div class="viewcode-block" id="timeout"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.timeout.timeout">[docs]</a><span class="k">class</span> <span class="nc">timeout</span><span class="p">:</span>
+<div class="viewcode-block" id="timeout"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.timeout.timeout">[docs]</a><span class="k">class</span> <span class="nc">timeout</span><span class="p">:</span> <span class="c1"># noqa</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sec</span><span class="o">=</span><span class="n">DEFAULT_TIMEOUT</span><span class="p">,</span> <span class="n">microsec</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (int, int) -&gt; None</span>
@@ -72,15 +61,15 @@
<span class="bp">self</span><span class="o">.</span><span class="n">microsec</span> <span class="o">=</span> <span class="n">microsec</span>
<div class="viewcode-block" id="timeout.pack"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.timeout.timeout.pack">[docs]</a> <span class="k">def</span> <span class="nf">pack</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">return</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s1">&#39;ll&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sec</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">microsec</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s1">&#39;ll&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sec</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">microsec</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="struct_to_timeout"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.timeout.struct_to_timeout">[docs]</a><span class="k">def</span> <span class="nf">struct_to_timeout</span><span class="p">(</span><span class="n">binstr</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; timeout</span>
<span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">ms</span><span class="p">)</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;ll&#39;</span><span class="p">,</span> <span class="n">binstr</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">timeout</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">ms</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">timeout</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">ms</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="struct_size"><a class="viewcode-back" href="../../../M2Crypto.SSL.html#M2Crypto.SSL.timeout.struct_size">[docs]</a><span class="k">def</span> <span class="nf">struct_size</span><span class="p">():</span>
<span class="c1"># type: () -&gt; int</span>
<span class="k">return</span> <span class="n">struct</span><span class="o">.</span><span class="n">calcsize</span><span class="p">(</span><span class="s1">&#39;ll&#39;</span><span class="p">)</span></div>
@@ -89,42 +78,43 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../../index.html">Documentation overview</a><ul>
+ <li><a href="../../index.html">Module code</a><ul>
+ <li><a href="../SSL.html">M2Crypto.SSL</a><ul>
+ </ul></li>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../../index.html" >Module code</a> &raquo;</li>
- <li><a href="../SSL.html" >M2Crypto.SSL</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/X509.html b/doc/html/_modules/M2Crypto/X509.html
index 4682200..53e6fa5 100644
--- a/doc/html/_modules/M2Crypto/X509.html
+++ b/doc/html/_modules/M2Crypto/X509.html
@@ -1,55 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.X509 &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.X509 &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.X509</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;M2Crypto wrapper for OpenSSL X509 API.</span>
@@ -63,19 +53,19 @@
<span class="kn">import</span> <span class="nn">binascii</span>
<span class="kn">import</span> <span class="nn">logging</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">ASN1</span><span class="p">,</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">EVP</span><span class="p">,</span> <span class="n">Err</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span> <span class="c1"># noqa</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">ASN1</span><span class="p">,</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">EVP</span><span class="p">,</span> <span class="n">Err</span><span class="p">,</span> <span class="n">m2</span><span class="p">,</span> <span class="n">util</span> <span class="c1"># noqa</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
<span class="n">FORMAT_DER</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">FORMAT_PEM</span> <span class="o">=</span> <span class="mi">1</span>
-<span class="n">log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
+<span class="n">log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
<div class="viewcode-block" id="X509Error"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509Error">[docs]</a><span class="k">class</span> <span class="nc">X509Error</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
- <span class="k">pass</span>
-</div>
+ <span class="k">pass</span></div>
+
<span class="n">m2</span><span class="o">.</span><span class="n">x509_init</span><span class="p">(</span><span class="n">X509Error</span><span class="p">)</span>
<span class="n">V_OK</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">X509_V_OK</span> <span class="c1"># type: int</span>
@@ -83,9 +73,9 @@
<div class="viewcode-block" id="x509_store_default_cb"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.x509_store_default_cb">[docs]</a><span class="k">def</span> <span class="nf">x509_store_default_cb</span><span class="p">(</span><span class="n">ok</span><span class="p">,</span> <span class="n">ctx</span><span class="p">):</span>
<span class="c1"># type: (int, X509_Store_Context) -&gt; int</span>
- <span class="k">return</span> <span class="n">ok</span>
+ <span class="k">return</span> <span class="n">ok</span></div>
+
-</div>
<div class="viewcode-block" id="new_extension"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.new_extension">[docs]</a><span class="k">def</span> <span class="nf">new_extension</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">critical</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
<span class="c1"># type: (str, bytes, int, int) -&gt; X509_Extension</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -95,19 +85,19 @@
<span class="n">value</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s1">&#39;0123456789abcdefABCDEF:&#39;</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="s1">&#39;&#39;</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;value must be precomputed hash&#39;</span><span class="p">)</span>
<span class="n">ctx</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509v3_set_nconf</span><span class="p">()</span>
- <span class="k">if</span> <span class="n">ctx</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">ctx</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">MemoryError</span><span class="p">(</span>
<span class="s1">&#39;Not enough memory when creating a new X509 extension&#39;</span><span class="p">)</span>
- <span class="n">x509_ext_ptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509v3_ext_conf</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="n">ctx</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">x509_ext_ptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">x509_ext_ptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509v3_ext_conf</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">ctx</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">x509_ext_ptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">X509Error</span><span class="p">(</span>
<span class="s2">&quot;Cannot create X509_Extension with name &#39;</span><span class="si">%s</span><span class="s2">&#39; and value &#39;</span><span class="si">%s</span><span class="s2">&#39;&quot;</span> <span class="o">%</span>
<span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">))</span>
<span class="n">x509_ext</span> <span class="o">=</span> <span class="n">X509_Extension</span><span class="p">(</span><span class="n">x509_ext_ptr</span><span class="p">,</span> <span class="n">_pyfree</span><span class="p">)</span>
<span class="n">x509_ext</span><span class="o">.</span><span class="n">set_critical</span><span class="p">(</span><span class="n">critical</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">x509_ext</span>
+ <span class="k">return</span> <span class="n">x509_ext</span></div>
+
-</div>
<div class="viewcode-block" id="X509_Extension"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Extension">[docs]</a><span class="k">class</span> <span class="nc">X509_Extension</span><span class="p">:</span> <span class="c1"># noqa</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> X509 Extension</span>
@@ -115,7 +105,7 @@
<span class="n">m2_x509_extension_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_extension_free</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x509_ext_ptr</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x509_ext_ptr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
<span class="c1"># type: (Optional[bytes], int) -&gt; None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">x509_ext</span> <span class="o">=</span> <span class="n">x509_ext_ptr</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pyfree</span> <span class="o">=</span> <span class="n">_pyfree</span>
@@ -140,8 +130,8 @@
<span class="sd"> set this extension to critical.</span>
<span class="sd"> :return: 1 for success, 0 for failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_extension_set_critical</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_ext</span><span class="p">,</span> <span class="n">critical</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_extension_set_critical</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_ext</span><span class="p">,</span> <span class="n">critical</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509_Extension.get_critical"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Extension.get_critical">[docs]</a> <span class="k">def</span> <span class="nf">get_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -149,15 +139,15 @@
<span class="sd"> :return: Nonzero if this is a critical extension.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_extension_get_critical</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_ext</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_extension_get_critical</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_ext</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509_Extension.get_name"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Extension.get_name">[docs]</a> <span class="k">def</span> <span class="nf">get_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; str</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the extension name, for example &#39;subjectAltName&#39;.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_extension_get_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_ext</span><span class="p">))</span>
-</div>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_extension_get_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_ext</span><span class="p">))</span></div>
+
<div class="viewcode-block" id="X509_Extension.get_value"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Extension.get_value">[docs]</a> <span class="k">def</span> <span class="nf">get_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">flag</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (int, int) -&gt; str</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -168,9 +158,9 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">()</span>
<span class="n">m2</span><span class="o">.</span><span class="n">x509_ext_print</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">x509_ext</span><span class="p">,</span> <span class="n">flag</span><span class="p">,</span> <span class="n">indent</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">())</span>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">())</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="X509_Extension_Stack"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Extension_Stack">[docs]</a><span class="k">class</span> <span class="nc">X509_Extension_Stack</span><span class="p">:</span> <span class="c1"># noqa</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> X509 Extension Stack</span>
@@ -185,9 +175,9 @@
<span class="n">m2_sk_x509_extension_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">sk_x509_extension_free</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stack</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stack</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (Optional[bytes], int) -&gt; None</span>
- <span class="k">if</span> <span class="n">stack</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">stack</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">stack</span> <span class="o">=</span> <span class="n">stack</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pyfree</span> <span class="o">=</span> <span class="n">_pyfree</span>
<span class="n">num</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">sk_x509_extension_num</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stack</span><span class="p">)</span>
@@ -233,8 +223,8 @@
<span class="bp">self</span><span class="o">.</span><span class="n">pystack</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">x509_ext</span><span class="p">)</span>
<span class="n">ret</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">sk_x509_extension_push</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stack</span><span class="p">,</span> <span class="n">x509_ext</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
<span class="k">assert</span> <span class="n">ret</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pystack</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">ret</span>
-</div>
+ <span class="k">return</span> <span class="n">ret</span></div>
+
<div class="viewcode-block" id="X509_Extension_Stack.pop"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Extension_Stack.pop">[docs]</a> <span class="k">def</span> <span class="nf">pop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; X509_Extension</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -243,12 +233,12 @@
<span class="sd"> :return: X509_Extension popped</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">x509_ext_ptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">sk_x509_extension_pop</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stack</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">x509_ext_ptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">x509_ext_ptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pystack</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span>
- <span class="k">return</span> <span class="bp">None</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">pystack</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
+ <span class="k">return</span> <span class="kc">None</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">pystack</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="X509_Name_Entry"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Name_Entry">[docs]</a><span class="k">class</span> <span class="nc">X509_Name_Entry</span><span class="p">:</span> <span class="c1"># noqa</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> X509 Name Entry</span>
@@ -283,8 +273,8 @@
<span class="sd"> :return: 0 on failure, 1 on success</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_entry_set_object</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name_entry</span><span class="p">,</span>
- <span class="n">asn1obj</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
+ <span class="n">asn1obj</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="X509_Name_Entry.set_data"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Name_Entry.set_data">[docs]</a> <span class="k">def</span> <span class="nf">set_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">ASN1</span><span class="o">.</span><span class="n">MBSTRING_ASC</span><span class="p">):</span>
<span class="c1"># type: (bytes, int) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -293,24 +283,23 @@
<span class="sd"> :param data: data in a binary form to be set</span>
<span class="sd"> :return: 0 on failure, 1 on success</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_entry_set_data</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name_entry</span><span class="p">,</span>
- <span class="nb">type</span><span class="p">,</span> <span class="n">util</span><span class="o">.</span><span class="n">py3bytes</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_entry_set_data</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name_entry</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509_Name_Entry.get_object"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Name_Entry.get_object">[docs]</a> <span class="k">def</span> <span class="nf">get_object</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; ASN1.ASN1_Object</span>
<span class="k">return</span> <span class="n">ASN1</span><span class="o">.</span><span class="n">ASN1_Object</span><span class="p">(</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_entry_get_object</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name_entry</span><span class="p">))</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_entry_get_object</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name_entry</span><span class="p">))</span></div>
+
<div class="viewcode-block" id="X509_Name_Entry.get_data"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Name_Entry.get_data">[docs]</a> <span class="k">def</span> <span class="nf">get_data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; ASN1.ASN1_String</span>
<span class="k">return</span> <span class="n">ASN1</span><span class="o">.</span><span class="n">ASN1_String</span><span class="p">(</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_entry_get_data</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name_entry</span><span class="p">))</span>
-</div>
+ <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_entry_get_data</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name_entry</span><span class="p">))</span></div>
+
<div class="viewcode-block" id="X509_Name_Entry.create_by_txt"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Name_Entry.create_by_txt">[docs]</a> <span class="k">def</span> <span class="nf">create_by_txt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">field</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="n">entry</span><span class="p">,</span> <span class="nb">len</span><span class="p">):</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_entry_create_by_txt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name_entry</span><span class="o">.</span><span class="n">_ptr</span><span class="p">(),</span>
- <span class="n">field</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="n">entry</span><span class="p">,</span> <span class="nb">len</span><span class="p">)</span>
+ <span class="n">field</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="n">entry</span><span class="p">,</span> <span class="nb">len</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="X509_Name"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Name">[docs]</a><span class="k">class</span> <span class="nc">X509_Name</span><span class="p">:</span> <span class="c1"># noqa</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> X509 Name</span>
@@ -339,13 +328,13 @@
<span class="n">m2_x509_name_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_free</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x509_name</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x509_name</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (bytes, int) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> :param x509_name: this should be OpenSSL X509_NAME binary</span>
<span class="sd"> :param _pyfree:</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">x509_name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">x509_name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_type_check</span><span class="p">(</span><span class="n">x509_name</span><span class="p">),</span> <span class="s2">&quot;&#39;x509_name&#39; type error&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">x509_name</span> <span class="o">=</span> <span class="n">x509_name</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pyfree</span> <span class="o">=</span> <span class="n">_pyfree</span>
@@ -371,8 +360,8 @@
<span class="s2">&quot;&#39;x509_name&#39; type error&quot;</span>
<span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_name_by_nid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">nid</span><span class="p">[</span><span class="n">attr</span><span class="p">]))</span>
- <span class="k">if</span> <span class="n">attr</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="n">attr</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">attr</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">:</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">[</span><span class="n">attr</span><span class="p">]</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attr</span><span class="p">)</span>
@@ -387,7 +376,7 @@
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_set_by_nid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">nid</span><span class="p">[</span><span class="n">attr</span><span class="p">],</span>
<span class="n">util</span><span class="o">.</span><span class="n">py3bytes</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="n">attr</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
+ <span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">[</span><span class="n">attr</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
<span class="k">def</span> <span class="nf">__len__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
@@ -438,13 +427,13 @@
<span class="sd"> :return: 1 for success of 0 if an error occurred.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_add_entry_by_txt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name</span><span class="p">,</span>
- <span class="n">util</span><span class="o">.</span><span class="n">py3bytes</span><span class="p">(</span><span class="n">field</span><span class="p">),</span> <span class="nb">type</span><span class="p">,</span>
- <span class="n">entry</span><span class="p">,</span> <span class="nb">len</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="nb">set</span><span class="p">)</span>
-</div>
+ <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">field</span><span class="p">),</span> <span class="nb">type</span><span class="p">,</span>
+ <span class="n">entry</span><span class="p">,</span> <span class="nb">len</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="nb">set</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509_Name.entry_count"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Name.entry_count">[docs]</a> <span class="k">def</span> <span class="nf">entry_count</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_entry_count</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_entry_count</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509_Name.get_entries_by_nid"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Name.get_entries_by_nid">[docs]</a> <span class="k">def</span> <span class="nf">get_entries_by_nid</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">nid</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; List[X509_Name_Entry]</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -457,7 +446,7 @@
<span class="n">ret</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">lastpos</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
- <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
+ <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="n">lastpos</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_get_index_by_nid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name</span><span class="p">,</span> <span class="n">nid</span><span class="p">,</span>
<span class="n">lastpos</span><span class="p">)</span>
<span class="k">if</span> <span class="n">lastpos</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
@@ -465,8 +454,8 @@
<span class="n">ret</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="p">[</span><span class="n">lastpos</span><span class="p">])</span>
- <span class="k">return</span> <span class="n">ret</span>
-</div>
+ <span class="k">return</span> <span class="n">ret</span></div>
+
<div class="viewcode-block" id="X509_Name.as_text"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Name.as_text">[docs]</a> <span class="k">def</span> <span class="nf">as_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="n">m2</span><span class="o">.</span><span class="n">XN_FLAG_COMPAT</span><span class="p">):</span>
<span class="c1"># type: (int, int) -&gt; str</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -480,21 +469,21 @@
<span class="s2">&quot;&#39;x509_name&#39; type error&quot;</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">()</span>
<span class="n">m2</span><span class="o">.</span><span class="n">x509_name_print_ex</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">x509_name</span><span class="p">,</span> <span class="n">indent</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">())</span>
-</div>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="X509_Name.as_der"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Name.as_der">[docs]</a> <span class="k">def</span> <span class="nf">as_der</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name</span><span class="p">),</span> \
<span class="s2">&quot;&#39;x509_name&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_get_der</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_get_der</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509_Name.as_hash"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Name.as_hash">[docs]</a> <span class="k">def</span> <span class="nf">as_hash</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name</span><span class="p">),</span> \
<span class="s2">&quot;&#39;x509_name&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_hash</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_name_hash</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509_name</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="X509"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509">[docs]</a><span class="k">class</span> <span class="nc">X509</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> X.509 Certificate</span>
@@ -502,14 +491,14 @@
<span class="n">m2_x509_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_free</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x509</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x509</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (Optional[bytes], int) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> :param x509: binary representation of</span>
<span class="sd"> the underlying OpenSSL X509 object.</span>
<span class="sd"> :param _pyfree:</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">x509</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">x509</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">x509</span> <span class="o">=</span> <span class="n">x509</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pyfree</span> <span class="o">=</span> <span class="n">_pyfree</span>
@@ -532,19 +521,19 @@
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">()</span>
<span class="n">m2</span><span class="o">.</span><span class="n">x509_print</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">())</span>
-</div>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="X509.as_der"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.as_der">[docs]</a> <span class="k">def</span> <span class="nf">as_der</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">i2d_x509</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">i2d_x509</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.as_pem"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.as_pem">[docs]</a> <span class="k">def</span> <span class="nf">as_pem</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">()</span>
<span class="n">m2</span><span class="o">.</span><span class="n">x509_write_pem</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">()</span>
-</div>
+ <span class="k">return</span> <span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="X509.save_pem"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.save_pem">[docs]</a> <span class="k">def</span> <span class="nf">save_pem</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -552,9 +541,9 @@
<span class="sd"> :return: 1 for success or 0 for failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_write_pem</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="X509.save"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.save">[docs]</a> <span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="n">FORMAT_PEM</span><span class="p">):</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_write_pem</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="X509.save"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.save">[docs]</a> <span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="n">FORMAT_PEM</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, int) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Saves X.509 certificate to a file. Default output</span>
@@ -566,18 +555,18 @@
<span class="sd"> Either FORMAT_PEM or FORMAT_DER to save in PEM or</span>
<span class="sd"> DER format. Raises a ValueError if an unknow</span>
<span class="sd"> format is used.</span>
-<span class="sd"> </span>
+
<span class="sd"> :return: 1 for success or 0 for failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">if</span> <span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_PEM</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">format</span> <span class="o">==</span> <span class="n">FORMAT_PEM</span><span class="p">:</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_write_pem</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">)</span>
- <span class="k">elif</span> <span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DER</span><span class="p">:</span>
+ <span class="k">elif</span> <span class="nb">format</span> <span class="o">==</span> <span class="n">FORMAT_DER</span><span class="p">:</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">i2d_x509_bio</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
- <span class="s2">&quot;Unknown filetype. Must be either FORMAT_PEM or FORMAT_DER&quot;</span><span class="p">)</span>
-</div>
+ <span class="s2">&quot;Unknown filetype. Must be either FORMAT_PEM or FORMAT_DER&quot;</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.set_version"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.set_version">[docs]</a> <span class="k">def</span> <span class="nf">set_version</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">version</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -587,51 +576,51 @@
<span class="sd"> :return: Returns 0 on failure.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_set_version</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">version</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_set_version</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">version</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.set_not_before"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.set_not_before">[docs]</a> <span class="k">def</span> <span class="nf">set_not_before</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">asn1_time</span><span class="p">):</span>
<span class="c1"># type: (ASN1.ASN1_TIME) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> :return: 1 on success, 0 on failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_set_not_before</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">asn1_time</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_set_not_before</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">asn1_time</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="X509.set_not_after"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.set_not_after">[docs]</a> <span class="k">def</span> <span class="nf">set_not_after</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">asn1_time</span><span class="p">):</span>
<span class="c1"># type: (ASN1.ASN1_TIME) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> :return: 1 on success, 0 on failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_set_not_after</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">asn1_time</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_set_not_after</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">asn1_time</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="X509.set_subject_name"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.set_subject_name">[docs]</a> <span class="k">def</span> <span class="nf">set_subject_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="c1"># type: (X509_Name) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> :return: 1 on success, 0 on failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_set_subject_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">name</span><span class="o">.</span><span class="n">x509_name</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_set_subject_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">name</span><span class="o">.</span><span class="n">x509_name</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.set_issuer_name"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.set_issuer_name">[docs]</a> <span class="k">def</span> <span class="nf">set_issuer_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="c1"># type: (X509_Name) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> :return: 1 on success, 0 on failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_set_issuer_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">name</span><span class="o">.</span><span class="n">x509_name</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_set_issuer_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">name</span><span class="o">.</span><span class="n">x509_name</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.get_version"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.get_version">[docs]</a> <span class="k">def</span> <span class="nf">get_version</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_get_version</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_get_version</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.get_serial_number"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.get_serial_number">[docs]</a> <span class="k">def</span> <span class="nf">get_serial_number</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; ASN1.ASN1_Integer</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
<span class="n">asn1_integer</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_get_serial_number</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">asn1_integer_get</span><span class="p">(</span><span class="n">asn1_integer</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">asn1_integer_get</span><span class="p">(</span><span class="n">asn1_integer</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.set_serial_number"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.set_serial_number">[docs]</a> <span class="k">def</span> <span class="nf">set_serial_number</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">serial</span><span class="p">):</span>
<span class="c1"># type: (ASN1.ASN1_Integer) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -645,17 +634,17 @@
<span class="c1"># This &quot;magically&quot; changes serial since asn1_integer</span>
<span class="c1"># is C pointer to x509&#39;s internal serial number.</span>
<span class="n">asn1_integer</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_get_serial_number</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">asn1_integer_set</span><span class="p">(</span><span class="n">asn1_integer</span><span class="p">,</span> <span class="n">serial</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">asn1_integer_set</span><span class="p">(</span><span class="n">asn1_integer</span><span class="p">,</span> <span class="n">serial</span><span class="p">)</span></div>
<span class="c1"># XXX Or should I do this?</span>
<span class="c1"># asn1_integer = m2.asn1_integer_new()</span>
<span class="c1"># m2.asn1_integer_set(asn1_integer, serial)</span>
<span class="c1"># return m2.x509_set_serial_number(self.x509, asn1_integer)</span>
-</div>
+
<div class="viewcode-block" id="X509.get_not_before"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.get_not_before">[docs]</a> <span class="k">def</span> <span class="nf">get_not_before</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; ASN1.ASN1_TIME</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">ASN1</span><span class="o">.</span><span class="n">ASN1_TIME</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_get_not_before</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">))</span>
-</div>
+ <span class="k">return</span> <span class="n">ASN1</span><span class="o">.</span><span class="n">ASN1_TIME</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_get_not_before</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">))</span></div>
+
<div class="viewcode-block" id="X509.get_not_after"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.get_not_after">[docs]</a> <span class="k">def</span> <span class="nf">get_not_after</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; ASN1.ASN1_TIME</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
@@ -665,30 +654,30 @@
<span class="sd">&#39;&#39;&#39;M2Crypto cannot handle dates after year 2050.</span>
<span class="sd"> See RFC 5280 4.1.2.5 for more information.</span>
<span class="sd"> &#39;&#39;&#39;</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">out</span>
-</div>
+ <span class="k">return</span> <span class="n">out</span></div>
+
<div class="viewcode-block" id="X509.get_pubkey"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.get_pubkey">[docs]</a> <span class="k">def</span> <span class="nf">get_pubkey</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; EVP.PKey</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">EVP</span><span class="o">.</span><span class="n">PKey</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_get_pubkey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">EVP</span><span class="o">.</span><span class="n">PKey</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_get_pubkey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.set_pubkey"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.set_pubkey">[docs]</a> <span class="k">def</span> <span class="nf">set_pubkey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pkey</span><span class="p">):</span>
<span class="c1"># type: (EVP.PKey) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Set the public key for the certificate</span>
<span class="sd"> :param pkey: Public key</span>
-<span class="sd"> </span>
+
<span class="sd"> :return 1 for success and 0 for failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_set_pubkey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">pkey</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_set_pubkey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">pkey</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.get_issuer"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.get_issuer">[docs]</a> <span class="k">def</span> <span class="nf">get_issuer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; X509_Name</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">X509_Name</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_get_issuer_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">))</span>
-</div>
+ <span class="k">return</span> <span class="n">X509_Name</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_get_issuer_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">))</span></div>
+
<div class="viewcode-block" id="X509.set_issuer"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.set_issuer">[docs]</a> <span class="k">def</span> <span class="nf">set_issuer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="c1"># type: (X509_Name) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -699,25 +688,25 @@
<span class="sd"> :return 1 for success and 0 for failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_set_issuer_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">name</span><span class="o">.</span><span class="n">x509_name</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_set_issuer_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">name</span><span class="o">.</span><span class="n">x509_name</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.get_subject"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.get_subject">[docs]</a> <span class="k">def</span> <span class="nf">get_subject</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; X509_Name</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">X509_Name</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_get_subject_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">))</span>
-</div>
+ <span class="k">return</span> <span class="n">X509_Name</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_get_subject_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">))</span></div>
+
<div class="viewcode-block" id="X509.set_subject"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.set_subject">[docs]</a> <span class="k">def</span> <span class="nf">set_subject</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="c1"># type: (X509_Name) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Set subject name.</span>
<span class="sd"> :param name: subjectName field.</span>
-<span class="sd"> </span>
+
<span class="sd"> :return 1 for success and 0 for failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_set_subject_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">name</span><span class="o">.</span><span class="n">x509_name</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_set_subject_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">name</span><span class="o">.</span><span class="n">x509_name</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.add_ext"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.add_ext">[docs]</a> <span class="k">def</span> <span class="nf">add_ext</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ext</span><span class="p">):</span>
<span class="c1"># type: (X509_Extension) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -728,8 +717,8 @@
<span class="sd"> :return 1 for success and 0 for failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_add_ext</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">ext</span><span class="o">.</span><span class="n">x509_ext</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_add_ext</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">ext</span><span class="o">.</span><span class="n">x509_ext</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.get_ext"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.get_ext">[docs]</a> <span class="k">def</span> <span class="nf">get_ext</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="c1"># type: (str) -&gt; X509_Extension</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -750,8 +739,8 @@
<span class="k">if</span> <span class="n">m2x509_extension_get_name</span><span class="p">(</span><span class="n">ext_ptr</span><span class="p">)</span> <span class="o">==</span> <span class="n">name</span><span class="p">:</span>
<span class="k">return</span> <span class="n">X509_Extension</span><span class="p">(</span><span class="n">ext_ptr</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
- <span class="k">raise</span> <span class="ne">LookupError</span>
-</div>
+ <span class="k">raise</span> <span class="ne">LookupError</span></div>
+
<div class="viewcode-block" id="X509.get_ext_at"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.get_ext_at">[docs]</a> <span class="k">def</span> <span class="nf">get_ext_at</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; X509_Extension</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -765,41 +754,41 @@
<span class="k">raise</span> <span class="ne">IndexError</span>
<span class="k">return</span> <span class="n">X509_Extension</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_get_ext</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">index</span><span class="p">),</span>
- <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
-</div>
+ <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.get_ext_count"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.get_ext_count">[docs]</a> <span class="k">def</span> <span class="nf">get_ext_count</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get X509 extension count.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_get_ext_count</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_get_ext_count</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.sign"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.sign">[docs]</a> <span class="k">def</span> <span class="nf">sign</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pkey</span><span class="p">,</span> <span class="n">md</span><span class="p">):</span>
<span class="c1"># type: (EVP.PKey, str) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Sign the certificate.</span>
<span class="sd"> :param pkey: Public key</span>
-<span class="sd"> </span>
+
<span class="sd"> :param md: Message digest algorithm to use for signing,</span>
<span class="sd"> for example &#39;sha1&#39;.</span>
-<span class="sd"> </span>
+
<span class="sd"> :return int</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
- <span class="n">mda</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">md</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">mda</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">mda</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">md</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">mda</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;unknown message digest&#39;</span><span class="p">,</span> <span class="n">md</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_sign</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">pkey</span><span class="o">.</span><span class="n">pkey</span><span class="p">,</span> <span class="n">mda</span><span class="p">())</span>
-</div>
-<div class="viewcode-block" id="X509.verify"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.verify">[docs]</a> <span class="k">def</span> <span class="nf">verify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pkey</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_sign</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">pkey</span><span class="o">.</span><span class="n">pkey</span><span class="p">,</span> <span class="n">mda</span><span class="p">())</span></div>
+
+<div class="viewcode-block" id="X509.verify"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.verify">[docs]</a> <span class="k">def</span> <span class="nf">verify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pkey</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (Optional[EVP.PKey]) -&gt; int</span>
<span class="k">assert</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_type_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">),</span> <span class="s2">&quot;&#39;x509&#39; type error&quot;</span>
<span class="k">if</span> <span class="n">pkey</span><span class="p">:</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_verify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="n">pkey</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_verify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_pubkey</span><span class="p">()</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_verify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_pubkey</span><span class="p">()</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.check_ca"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.check_ca">[docs]</a> <span class="k">def</span> <span class="nf">check_ca</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -809,90 +798,86 @@
<span class="sd"> :requires: OpenSSL 0.9.8 or newer</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_check_ca</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_check_ca</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.check_purpose"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.check_purpose">[docs]</a> <span class="k">def</span> <span class="nf">check_purpose</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">ca</span><span class="p">):</span>
<span class="c1"># type: (int, int) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Check if the certificate&#39;s purpose matches the asked purpose.</span>
<span class="sd"> :param id: Purpose id. See X509_PURPOSE_* constants.</span>
-<span class="sd"> </span>
+
<span class="sd"> :param ca: 1 if the certificate should be CA, 0 otherwise.</span>
-<span class="sd"> </span>
+
<span class="sd"> :return: 0 if the certificate purpose does not match, nonzero</span>
<span class="sd"> otherwise.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_check_purpose</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">ca</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_check_purpose</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x509</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">ca</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509.get_fingerprint"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509.get_fingerprint">[docs]</a> <span class="k">def</span> <span class="nf">get_fingerprint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">md</span><span class="o">=</span><span class="s1">&#39;md5&#39;</span><span class="p">):</span>
<span class="c1"># type: (str) -&gt; str</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the fingerprint of the certificate.</span>
<span class="sd"> :param md: Message digest algorithm to use.</span>
-<span class="sd"> </span>
+
<span class="sd"> :return: String containing the fingerprint in hex format.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">der</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">as_der</span><span class="p">()</span>
<span class="n">md</span> <span class="o">=</span> <span class="n">EVP</span><span class="o">.</span><span class="n">MessageDigest</span><span class="p">(</span><span class="n">md</span><span class="p">)</span>
<span class="n">md</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">der</span><span class="p">)</span>
<span class="n">digest</span> <span class="o">=</span> <span class="n">md</span><span class="o">.</span><span class="n">final</span><span class="p">()</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">binascii</span><span class="o">.</span><span class="n">hexlify</span><span class="p">(</span><span class="n">digest</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">binascii</span><span class="o">.</span><span class="n">hexlify</span><span class="p">(</span><span class="n">digest</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span></div></div>
+
-</div></div>
-<div class="viewcode-block" id="load_cert"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.load_cert">[docs]</a><span class="k">def</span> <span class="nf">load_cert</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="n">FORMAT_PEM</span><span class="p">):</span>
+<div class="viewcode-block" id="load_cert"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.load_cert">[docs]</a><span class="k">def</span> <span class="nf">load_cert</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="n">FORMAT_PEM</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, int) -&gt; X509</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Load certificate from file.</span>
<span class="sd"> :param file: Name of file containing certificate in either DER or</span>
<span class="sd"> PEM format.</span>
-<span class="sd"> </span>
+
<span class="sd"> :param format: Describes the format of the file to be loaded,</span>
<span class="sd"> either PEM or DER.</span>
<span class="sd"> :return: M2Crypto.X509.X509 object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">if</span> <span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_PEM</span><span class="p">:</span>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">format</span> <span class="o">==</span> <span class="n">FORMAT_PEM</span><span class="p">:</span>
<span class="k">return</span> <span class="n">load_cert_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">)</span>
- <span class="k">elif</span> <span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DER</span><span class="p">:</span>
+ <span class="k">elif</span> <span class="nb">format</span> <span class="o">==</span> <span class="n">FORMAT_DER</span><span class="p">:</span>
<span class="n">cptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">d2i_x509</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
- <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">raise</span> <span class="n">X509Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
<span class="k">return</span> <span class="n">X509</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
- <span class="s2">&quot;Unknown format. Must be either FORMAT_DER or FORMAT_PEM&quot;</span><span class="p">)</span>
+ <span class="s2">&quot;Unknown format. Must be either FORMAT_DER or FORMAT_PEM&quot;</span><span class="p">)</span></div>
-</div>
-<div class="viewcode-block" id="load_cert_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.load_cert_bio">[docs]</a><span class="k">def</span> <span class="nf">load_cert_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="n">FORMAT_PEM</span><span class="p">):</span>
+
+<div class="viewcode-block" id="load_cert_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.load_cert_bio">[docs]</a><span class="k">def</span> <span class="nf">load_cert_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="n">FORMAT_PEM</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, int) -&gt; X509</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Load certificate from a bio.</span>
<span class="sd"> :param bio: BIO pointing at a certificate in either DER or PEM format.</span>
-<span class="sd"> </span>
+
<span class="sd"> :param format: Describes the format of the cert to be loaded,</span>
<span class="sd"> either PEM or DER (via constants FORMAT_PEM</span>
<span class="sd"> and FORMAT_FORMAT_DER)</span>
<span class="sd"> :return: M2Crypto.X509.X509 object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_PEM</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">format</span> <span class="o">==</span> <span class="n">FORMAT_PEM</span><span class="p">:</span>
<span class="n">cptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_read_pem</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
- <span class="k">elif</span> <span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DER</span><span class="p">:</span>
+ <span class="k">elif</span> <span class="nb">format</span> <span class="o">==</span> <span class="n">FORMAT_DER</span><span class="p">:</span>
<span class="n">cptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">d2i_x509</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
<span class="s2">&quot;Unknown format. Must be either FORMAT_DER or FORMAT_PEM&quot;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">raise</span> <span class="n">X509Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">X509</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">X509</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span></div>
-</div>
-<div class="viewcode-block" id="load_cert_string"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.load_cert_string">[docs]</a><span class="k">def</span> <span class="nf">load_cert_string</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="n">FORMAT_PEM</span><span class="p">):</span>
+
+<div class="viewcode-block" id="load_cert_string"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.load_cert_string">[docs]</a><span class="k">def</span> <span class="nf">load_cert_string</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="n">FORMAT_PEM</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, int) -&gt; X509</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Load certificate from a string.</span>
@@ -902,31 +887,29 @@
<span class="sd"> :param format: Describes the format of the cert to be loaded,</span>
<span class="sd"> either PEM or DER (via constants FORMAT_PEM</span>
<span class="sd"> and FORMAT_FORMAT_DER)</span>
-<span class="sd"> </span>
+
<span class="sd"> :return: M2Crypto.X509.X509 object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">string</span> <span class="o">=</span> <span class="n">util</span><span class="o">.</span><span class="n">py3bytes</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="n">bio</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">load_cert_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">format</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">load_cert_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="nb">format</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="load_cert_der_string"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.load_cert_der_string">[docs]</a><span class="k">def</span> <span class="nf">load_cert_der_string</span><span class="p">(</span><span class="n">string</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; X509</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Load certificate from a string.</span>
<span class="sd"> :param string: String containing a certificate in DER format.</span>
-<span class="sd"> </span>
+
<span class="sd"> :return: M2Crypto.X509.X509 object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">string</span> <span class="o">=</span> <span class="n">util</span><span class="o">.</span><span class="n">py3bytes</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="n">bio</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="n">cptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">d2i_x509</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
- <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">raise</span> <span class="n">X509Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">X509</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">X509</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="X509_Store_Context"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Store_Context">[docs]</a><span class="k">class</span> <span class="nc">X509_Store_Context</span><span class="p">:</span> <span class="c1"># noqa</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> X509 Store Context</span>
@@ -964,22 +947,22 @@
<span class="sd"> rely on it being valid once the store context goes</span>
<span class="sd"> away or is modified.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">X509</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_store_ctx_get_current_cert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">),</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">X509</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_store_ctx_get_current_cert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">),</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509_Store_Context.get_error"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Store_Context.get_error">[docs]</a> <span class="k">def</span> <span class="nf">get_error</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get error code.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_store_ctx_get_error</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_store_ctx_get_error</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509_Store_Context.get_error_depth"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Store_Context.get_error_depth">[docs]</a> <span class="k">def</span> <span class="nf">get_error_depth</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get error depth.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_store_ctx_get_error_depth</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_store_ctx_get_error_depth</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="X509_Store_Context.get1_chain"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Store_Context.get1_chain">[docs]</a> <span class="k">def</span> <span class="nf">get1_chain</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; X509_Stack</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -988,9 +971,9 @@
<span class="sd"> :return: Reference counted (i.e. safe to use even after the store</span>
<span class="sd"> context goes away) stack of certificates in the chain.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">X509_Stack</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_store_ctx_get1_chain</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">X509_Stack</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_store_ctx_get1_chain</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="X509_Store"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Store">[docs]</a><span class="k">class</span> <span class="nc">X509_Store</span><span class="p">:</span> <span class="c1"># noqa</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> X509 Store</span>
@@ -998,12 +981,12 @@
<span class="n">m2_x509_store_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_store_free</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">store</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">store</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (Optional[bytes], int) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> :param store: binary data for OpenSSL X509_STORE_CTX type.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">store</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">store</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">store</span> <span class="o">=</span> <span class="n">store</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pyfree</span> <span class="o">=</span> <span class="n">_pyfree</span>
<span class="k">else</span><span class="p">:</span>
@@ -1018,26 +1001,24 @@
<span class="k">def</span> <span class="nf">_ptr</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">store</span>
-<div class="viewcode-block" id="X509_Store.load_info"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Store.load_info">[docs]</a> <span class="k">def</span> <span class="nf">load_info</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">file</span><span class="p">):</span>
+<div class="viewcode-block" id="X509_Store.load_info"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Store.load_info">[docs]</a> <span class="k">def</span> <span class="nf">load_info</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> :param file: filename</span>
-<span class="sd"> </span>
+
<span class="sd"> :return: 1 on success, 0 on failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">ret</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_store_load_locations</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">store</span><span class="p">,</span> <span class="nb">file</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">ret</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">:</span>
- <span class="k">raise</span> <span class="n">X509Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">ret</span>
-</div>
+ <span class="n">ret</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_store_load_locations</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">store</span><span class="p">,</span> <span class="n">file</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">ret</span></div>
+
<span class="n">load_locations</span> <span class="o">=</span> <span class="n">load_info</span>
<div class="viewcode-block" id="X509_Store.add_x509"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Store.add_x509">[docs]</a> <span class="k">def</span> <span class="nf">add_x509</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x509</span><span class="p">):</span>
<span class="c1"># type: (X509) -&gt; int</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x509</span><span class="p">,</span> <span class="n">X509</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_store_add_cert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">store</span><span class="p">,</span> <span class="n">x509</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
-<div class="viewcode-block" id="X509_Store.set_verify_cb"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Store.set_verify_cb">[docs]</a> <span class="k">def</span> <span class="nf">set_verify_cb</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_store_add_cert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">store</span><span class="p">,</span> <span class="n">x509</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
+<div class="viewcode-block" id="X509_Store.set_verify_cb"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Store.set_verify_cb">[docs]</a> <span class="k">def</span> <span class="nf">set_verify_cb</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (Optional[callable]) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Set callback which will be called when the store is verified.</span>
@@ -1047,26 +1028,26 @@
<span class="sd"> Type of the callable must be:</span>
<span class="sd"> (int, X509_Store_Context) -&gt; int.</span>
<span class="sd"> If None: set the standard options.</span>
-<span class="sd"> </span>
+
<span class="sd"> :note: compile-time or run-time errors in the callback would result</span>
<span class="sd"> in mysterious errors during verification, which could be hard</span>
<span class="sd"> to trace.</span>
<span class="sd"> :note: Python exceptions raised in callbacks do not propagate to</span>
<span class="sd"> verify() call.</span>
-<span class="sd"> </span>
+
<span class="sd"> :return: None</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">callback</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">callback</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">set_verify_cb</span><span class="p">(</span><span class="n">x509_store_default_cb</span><span class="p">)</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="nb">callable</span><span class="p">(</span><span class="n">callback</span><span class="p">):</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">callable</span><span class="p">(</span><span class="n">callback</span><span class="p">):</span>
<span class="k">raise</span> <span class="n">X509Error</span><span class="p">(</span><span class="s2">&quot;set_verify(): callback is not callable&quot;</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_store_set_verify_cb</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">store</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
-</div>
- <span class="n">add_cert</span> <span class="o">=</span> <span class="n">add_x509</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_store_set_verify_cb</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">store</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span></div>
+
+ <span class="n">add_cert</span> <span class="o">=</span> <span class="n">add_x509</span></div>
+
-</div>
<div class="viewcode-block" id="X509_Stack"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Stack">[docs]</a><span class="k">class</span> <span class="nc">X509_Stack</span><span class="p">:</span> <span class="c1"># noqa</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> X509 Stack</span>
@@ -1081,9 +1062,9 @@
<span class="n">m2_sk_x509_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">sk_x509_free</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stack</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">_pyfree_x509</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stack</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">_pyfree_x509</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (bytes, int, int) -&gt; None</span>
- <span class="k">if</span> <span class="n">stack</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">stack</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">stack</span> <span class="o">=</span> <span class="n">stack</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pyfree</span> <span class="o">=</span> <span class="n">_pyfree</span>
<span class="bp">self</span><span class="o">.</span><span class="n">pystack</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># This must be kept in sync with self.stack</span>
@@ -1122,15 +1103,15 @@
<span class="sd"> push an X509 certificate onto the stack.</span>
<span class="sd"> :param x509: X509 object.</span>
-<span class="sd"> </span>
+
<span class="sd"> :return: The number of X509 objects currently on the stack.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x509</span><span class="p">,</span> <span class="n">X509</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">pystack</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">x509</span><span class="p">)</span>
<span class="n">ret</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">sk_x509_push</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stack</span><span class="p">,</span> <span class="n">x509</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
<span class="k">assert</span> <span class="n">ret</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pystack</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">ret</span>
-</div>
+ <span class="k">return</span> <span class="n">ret</span></div>
+
<div class="viewcode-block" id="X509_Stack.pop"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Stack.pop">[docs]</a> <span class="k">def</span> <span class="nf">pop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; X509</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -1140,19 +1121,19 @@
<span class="sd"> nothing to pop.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">x509_ptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">sk_x509_pop</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stack</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">x509_ptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">x509_ptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pystack</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span>
- <span class="k">return</span> <span class="bp">None</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">pystack</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
-</div>
+ <span class="k">return</span> <span class="kc">None</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">pystack</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="X509_Stack.as_der"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.X509_Stack.as_der">[docs]</a> <span class="k">def</span> <span class="nf">as_der</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Return the stack as a DER encoded string</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">get_der_encoding_stack</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stack</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">get_der_encoding_stack</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stack</span><span class="p">)</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="new_stack_from_der"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.new_stack_from_der">[docs]</a><span class="k">def</span> <span class="nf">new_stack_from_der</span><span class="p">(</span><span class="n">der_string</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; X509_Stack</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -1162,11 +1143,9 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">der_string</span> <span class="o">=</span> <span class="n">util</span><span class="o">.</span><span class="n">py3bytes</span><span class="p">(</span><span class="n">der_string</span><span class="p">)</span>
<span class="n">stack_ptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">make_stack_from_der_sequence</span><span class="p">(</span><span class="n">der_string</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">stack_ptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">raise</span> <span class="n">X509Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">X509_Stack</span><span class="p">(</span><span class="n">stack_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">X509_Stack</span><span class="p">(</span><span class="n">stack_ptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="Request"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.Request">[docs]</a><span class="k">class</span> <span class="nc">Request</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> X509 Certificate Request.</span>
@@ -1174,9 +1153,9 @@
<span class="n">m2_x509_req_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_free</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (Optional[int], int) -&gt; None</span>
- <span class="k">if</span> <span class="n">req</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">req</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">req</span> <span class="o">=</span> <span class="n">req</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pyfree</span> <span class="o">=</span> <span class="n">_pyfree</span>
<span class="k">else</span><span class="p">:</span>
@@ -1193,26 +1172,26 @@
<span class="c1"># type: () -&gt; str</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">()</span>
<span class="n">m2</span><span class="o">.</span><span class="n">x509_req_print</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">())</span>
-</div>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="Request.as_pem"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.Request.as_pem">[docs]</a> <span class="k">def</span> <span class="nf">as_pem</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">()</span>
<span class="n">m2</span><span class="o">.</span><span class="n">x509_req_write_pem</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">()</span>
-</div>
+ <span class="k">return</span> <span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="Request.as_der"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.Request.as_der">[docs]</a> <span class="k">def</span> <span class="nf">as_der</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">()</span>
<span class="n">m2</span><span class="o">.</span><span class="n">i2d_x509_req_bio</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">()</span>
-</div>
+ <span class="k">return</span> <span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="Request.save_pem"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.Request.save_pem">[docs]</a> <span class="k">def</span> <span class="nf">save_pem</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; int</span>
<span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_write_pem</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="Request.save"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.Request.save">[docs]</a> <span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="n">FORMAT_PEM</span><span class="p">):</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_write_pem</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="Request.save"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.Request.save">[docs]</a> <span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="n">FORMAT_PEM</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, int) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Saves X.509 certificate request to a file. Default output</span>
@@ -1229,14 +1208,14 @@
<span class="sd"> The error code can be obtained by ERR_get_error.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">bio</span><span class="p">:</span>
- <span class="k">if</span> <span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_PEM</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">format</span> <span class="o">==</span> <span class="n">FORMAT_PEM</span><span class="p">:</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_write_pem</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">)</span>
- <span class="k">elif</span> <span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DER</span><span class="p">:</span>
+ <span class="k">elif</span> <span class="nb">format</span> <span class="o">==</span> <span class="n">FORMAT_DER</span><span class="p">:</span>
<span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">i2d_x509_req_bio</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
- <span class="s2">&quot;Unknown filetype. Must be either FORMAT_DER or FORMAT_PEM&quot;</span><span class="p">)</span>
-</div>
+ <span class="s2">&quot;Unknown filetype. Must be either FORMAT_DER or FORMAT_PEM&quot;</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Request.get_pubkey"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.Request.get_pubkey">[docs]</a> <span class="k">def</span> <span class="nf">get_pubkey</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; EVP.PKey</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -1244,8 +1223,8 @@
<span class="sd"> :return: Public key from the request.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">EVP</span><span class="o">.</span><span class="n">PKey</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_req_get_pubkey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">),</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">EVP</span><span class="o">.</span><span class="n">PKey</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_req_get_pubkey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">),</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Request.set_pubkey"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.Request.set_pubkey">[docs]</a> <span class="k">def</span> <span class="nf">set_pubkey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pkey</span><span class="p">):</span>
<span class="c1"># type: (EVP.PKey) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -1255,8 +1234,8 @@
<span class="sd"> :return: Return 1 for success and 0 for failure.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_set_pubkey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">,</span> <span class="n">pkey</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_set_pubkey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">,</span> <span class="n">pkey</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Request.get_version"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.Request.get_version">[docs]</a> <span class="k">def</span> <span class="nf">get_version</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -1264,8 +1243,8 @@
<span class="sd"> :return: Returns version.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_get_version</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_get_version</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Request.set_version"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.Request.set_version">[docs]</a> <span class="k">def</span> <span class="nf">set_version</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">version</span><span class="p">):</span>
<span class="c1"># type: (int) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -1274,12 +1253,12 @@
<span class="sd"> :param version: Version number.</span>
<span class="sd"> :return: Returns 0 on failure.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_set_version</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">,</span> <span class="n">version</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_set_version</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">,</span> <span class="n">version</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Request.get_subject"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.Request.get_subject">[docs]</a> <span class="k">def</span> <span class="nf">get_subject</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; X509_Name</span>
- <span class="k">return</span> <span class="n">X509_Name</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_req_get_subject_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">))</span>
-</div>
+ <span class="k">return</span> <span class="n">X509_Name</span><span class="p">(</span><span class="n">m2</span><span class="o">.</span><span class="n">x509_req_get_subject_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">))</span></div>
+
<div class="viewcode-block" id="Request.set_subject_name"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.Request.set_subject_name">[docs]</a> <span class="k">def</span> <span class="nf">set_subject_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="c1"># type: (X509_Name) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -1288,8 +1267,8 @@
<span class="sd"> :param name: subjectName field.</span>
<span class="sd"> :return: 1 for success and 0 for failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_set_subject_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">,</span> <span class="n">name</span><span class="o">.</span><span class="n">x509_name</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_set_subject_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">,</span> <span class="n">name</span><span class="o">.</span><span class="n">x509_name</span><span class="p">)</span></div>
+
<span class="n">set_subject</span> <span class="o">=</span> <span class="n">set_subject_name</span>
<div class="viewcode-block" id="Request.add_extensions"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.Request.add_extensions">[docs]</a> <span class="k">def</span> <span class="nf">add_extensions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ext_stack</span><span class="p">):</span>
@@ -1300,8 +1279,8 @@
<span class="sd"> :param ext_stack: Stack of extensions to add.</span>
<span class="sd"> :return: 1 for success and 0 for failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_add_extensions</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">,</span> <span class="n">ext_stack</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_add_extensions</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">,</span> <span class="n">ext_stack</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span></div>
+
<div class="viewcode-block" id="Request.verify"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.Request.verify">[docs]</a> <span class="k">def</span> <span class="nf">verify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pkey</span><span class="p">):</span>
<span class="c1"># type: (EVP.PKey) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -1309,8 +1288,8 @@
<span class="sd"> :param pkey: PKey to be verified</span>
<span class="sd"> :return: 1 for success and 0 for failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_verify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">,</span> <span class="n">pkey</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span>
-</div>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_verify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">,</span> <span class="n">pkey</span><span class="o">.</span><span class="n">pkey</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="Request.sign"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.Request.sign">[docs]</a> <span class="k">def</span> <span class="nf">sign</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pkey</span><span class="p">,</span> <span class="n">md</span><span class="p">):</span>
<span class="c1"># type: (EVP.PKey, str) -&gt; int</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -1319,13 +1298,13 @@
<span class="sd"> :param md: used algorigthm</span>
<span class="sd"> :return: 1 for success and 0 for failure</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">mda</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">md</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">mda</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="n">mda</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">m2</span><span class="p">,</span> <span class="n">md</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">mda</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;unknown message digest&#39;</span><span class="p">,</span> <span class="n">md</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_sign</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">,</span> <span class="n">pkey</span><span class="o">.</span><span class="n">pkey</span><span class="p">,</span> <span class="n">mda</span><span class="p">())</span>
+ <span class="k">return</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_sign</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">req</span><span class="p">,</span> <span class="n">pkey</span><span class="o">.</span><span class="n">pkey</span><span class="p">,</span> <span class="n">mda</span><span class="p">())</span></div></div>
-</div></div>
-<div class="viewcode-block" id="load_request"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.load_request">[docs]</a><span class="k">def</span> <span class="nf">load_request</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="n">FORMAT_PEM</span><span class="p">):</span>
+
+<div class="viewcode-block" id="load_request"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.load_request">[docs]</a><span class="k">def</span> <span class="nf">load_request</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="n">FORMAT_PEM</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, int) -&gt; Request</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Load certificate request from file.</span>
@@ -1337,21 +1316,21 @@
<span class="sd"> and FORMAT_DER)</span>
<span class="sd"> :return: Request object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
- <span class="k">if</span> <span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_PEM</span><span class="p">:</span>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">format</span> <span class="o">==</span> <span class="n">FORMAT_PEM</span><span class="p">:</span>
<span class="n">cptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_read_pem</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">())</span>
- <span class="k">elif</span> <span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DER</span><span class="p">:</span>
+ <span class="k">elif</span> <span class="nb">format</span> <span class="o">==</span> <span class="n">FORMAT_DER</span><span class="p">:</span>
<span class="n">cptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">d2i_x509_req</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">())</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
<span class="s2">&quot;Unknown filetype. Must be either FORMAT_PEM or FORMAT_DER&quot;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">X509Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">Request</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">Request</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
-</div>
-<div class="viewcode-block" id="load_request_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.load_request_bio">[docs]</a><span class="k">def</span> <span class="nf">load_request_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="n">FORMAT_PEM</span><span class="p">):</span>
+
+<div class="viewcode-block" id="load_request_bio"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.load_request_bio">[docs]</a><span class="k">def</span> <span class="nf">load_request_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="n">FORMAT_PEM</span><span class="p">):</span>
<span class="c1"># type: (BIO.BIO, int) -&gt; Request</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Load certificate request from a bio.</span>
@@ -1363,19 +1342,19 @@
<span class="sd"> and FORMAT_DER)</span>
<span class="sd"> :return: M2Crypto.X509.Request object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_PEM</span><span class="p">:</span>
+ <span class="k">if</span> <span class="nb">format</span> <span class="o">==</span> <span class="n">FORMAT_PEM</span><span class="p">:</span>
<span class="n">cptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_req_read_pem</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
- <span class="k">elif</span> <span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DER</span><span class="p">:</span>
+ <span class="k">elif</span> <span class="nb">format</span> <span class="o">==</span> <span class="n">FORMAT_DER</span><span class="p">:</span>
<span class="n">cptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">d2i_x509_req</span><span class="p">(</span><span class="n">bio</span><span class="o">.</span><span class="n">_ptr</span><span class="p">())</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
<span class="s2">&quot;Unknown format. Must be either FORMAT_DER or FORMAT_PEM&quot;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">X509Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
- <span class="k">return</span> <span class="n">Request</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">Request</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span></div>
-</div>
-<div class="viewcode-block" id="load_request_string"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.load_request_string">[docs]</a><span class="k">def</span> <span class="nf">load_request_string</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="n">FORMAT_PEM</span><span class="p">):</span>
+
+<div class="viewcode-block" id="load_request_string"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.load_request_string">[docs]</a><span class="k">def</span> <span class="nf">load_request_string</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="n">FORMAT_PEM</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, int) -&gt; Request</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Load certificate request from a string.</span>
@@ -1390,9 +1369,9 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">string</span> <span class="o">=</span> <span class="n">util</span><span class="o">.</span><span class="n">py3bytes</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="n">bio</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">load_request_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">format</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">load_request_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="nb">format</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="load_request_der_string"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.load_request_der_string">[docs]</a><span class="k">def</span> <span class="nf">load_request_der_string</span><span class="p">(</span><span class="n">string</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; Request</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -1403,9 +1382,9 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">string</span> <span class="o">=</span> <span class="n">util</span><span class="o">.</span><span class="n">py3bytes</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="n">bio</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">load_request_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">FORMAT_DER</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">load_request_bio</span><span class="p">(</span><span class="n">bio</span><span class="p">,</span> <span class="n">FORMAT_DER</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="CRL"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.CRL">[docs]</a><span class="k">class</span> <span class="nc">CRL</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> X509 Certificate Revocation List</span>
@@ -1413,14 +1392,14 @@
<span class="n">m2_x509_crl_free</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_crl_free</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">crl</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">crl</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_pyfree</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (Optional[bytes], int) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> :param crl: binary representation of</span>
<span class="sd"> the underlying OpenSSL X509_CRL object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">crl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">crl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">crl</span> <span class="o">=</span> <span class="n">crl</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pyfree</span> <span class="o">=</span> <span class="n">_pyfree</span>
<span class="k">else</span><span class="p">:</span>
@@ -1441,10 +1420,10 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">()</span>
<span class="n">m2</span><span class="o">.</span><span class="n">x509_crl_print</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">crl</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">())</span>
+ <span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3str</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">read_all</span><span class="p">())</span></div></div>
-</div></div>
-<div class="viewcode-block" id="load_crl"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.load_crl">[docs]</a><span class="k">def</span> <span class="nf">load_crl</span><span class="p">(</span><span class="nb">file</span><span class="p">):</span>
+
+<div class="viewcode-block" id="load_crl"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.X509.load_crl">[docs]</a><span class="k">def</span> <span class="nf">load_crl</span><span class="p">(</span><span class="n">file</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; CRL</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Load CRL from file.</span>
@@ -1453,10 +1432,10 @@
<span class="sd"> :return: M2Crypto.X509.CRL object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="nb">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
+ <span class="k">with</span> <span class="n">BIO</span><span class="o">.</span><span class="n">openfile</span><span class="p">(</span><span class="n">file</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="n">cptr</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">x509_crl_read_pem</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">bio_ptr</span><span class="p">())</span>
- <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cptr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">X509Error</span><span class="p">(</span><span class="n">Err</span><span class="o">.</span><span class="n">get_error</span><span class="p">())</span>
<span class="k">return</span> <span class="n">CRL</span><span class="p">(</span><span class="n">cptr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div>
</pre></div>
@@ -1464,41 +1443,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/ftpslib.html b/doc/html/_modules/M2Crypto/ftpslib.html
index d1877a1..4a4e4f0 100644
--- a/doc/html/_modules/M2Crypto/ftpslib.html
+++ b/doc/html/_modules/M2Crypto/ftpslib.html
@@ -1,55 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.ftpslib &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.ftpslib &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.ftpslib</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;M2Crypto client-side FTP/TLS.</span>
@@ -86,23 +76,23 @@
<span class="c1"># We want to import whole stdlib ftplib objects, because our users want</span>
<span class="c1"># to use them.</span>
-<span class="kn">from</span> <span class="nn">ftplib</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
+<span class="kn">from</span> <span class="nn">ftplib</span> <span class="k">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
<span class="c1"># M2Crypto</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">SSL</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">SSL</span>
<div class="viewcode-block" id="FTP_TLS"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ftpslib.FTP_TLS">[docs]</a><span class="k">class</span> <span class="nc">FTP_TLS</span><span class="p">(</span><span class="n">FTP</span><span class="p">):</span> <span class="c1"># noqa</span>
<span class="sd">&quot;&quot;&quot;Python OO interface to client-side FTP/TLS.&quot;&quot;&quot;</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">ssl_ctx</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ssl_ctx</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Initialise the client. If &#39;host&#39; is supplied, connect to it.&quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">ssl_ctx</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">ssl_ctx</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ssl_ctx</span> <span class="o">=</span> <span class="n">ssl_ctx</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ssl_ctx</span> <span class="o">=</span> <span class="n">SSL</span><span class="o">.</span><span class="n">Context</span><span class="p">()</span>
- <span class="n">FTP</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">)</span>
+ <span class="n">FTP</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">prot</span> <span class="o">=</span> <span class="mi">0</span>
<div class="viewcode-block" id="FTP_TLS.auth_tls"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ftpslib.FTP_TLS.auth_tls">[docs]</a> <span class="k">def</span> <span class="nf">auth_tls</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
@@ -113,24 +103,24 @@
<span class="n">s</span><span class="o">.</span><span class="n">set_connect_state</span><span class="p">()</span>
<span class="n">s</span><span class="o">.</span><span class="n">connect_ssl</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sock</span> <span class="o">=</span> <span class="n">s</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">file</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sock</span><span class="o">.</span><span class="n">makefile</span><span class="p">()</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">file</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sock</span><span class="o">.</span><span class="n">makefile</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="FTP_TLS.auth_ssl"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ftpslib.FTP_TLS.auth_ssl">[docs]</a> <span class="k">def</span> <span class="nf">auth_ssl</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Secure the control connection per AUTH SSL, aka AUTH TLS-P.&quot;&quot;&quot;</span>
- <span class="k">raise</span> <span class="ne">NotImplementedError</span>
-</div>
+ <span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
+
<div class="viewcode-block" id="FTP_TLS.prot_p"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ftpslib.FTP_TLS.prot_p">[docs]</a> <span class="k">def</span> <span class="nf">prot_p</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Set up secure data connection.&quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">voidcmd</span><span class="p">(</span><span class="s1">&#39;PBSZ 0&#39;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">voidcmd</span><span class="p">(</span><span class="s1">&#39;PROT P&#39;</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">prot</span> <span class="o">=</span> <span class="mi">1</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">prot</span> <span class="o">=</span> <span class="mi">1</span></div>
+
<div class="viewcode-block" id="FTP_TLS.prot_c"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ftpslib.FTP_TLS.prot_c">[docs]</a> <span class="k">def</span> <span class="nf">prot_c</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Set up data connection in the clear.&quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">voidcmd</span><span class="p">(</span><span class="s1">&#39;PROT C&#39;</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">prot</span> <span class="o">=</span> <span class="mi">0</span>
-</div>
-<div class="viewcode-block" id="FTP_TLS.ntransfercmd"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ftpslib.FTP_TLS.ntransfercmd">[docs]</a> <span class="k">def</span> <span class="nf">ntransfercmd</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd</span><span class="p">,</span> <span class="n">rest</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">prot</span> <span class="o">=</span> <span class="mi">0</span></div>
+
+<div class="viewcode-block" id="FTP_TLS.ntransfercmd"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.ftpslib.FTP_TLS.ntransfercmd">[docs]</a> <span class="k">def</span> <span class="nf">ntransfercmd</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd</span><span class="p">,</span> <span class="n">rest</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Initiate a data transfer.&quot;&quot;&quot;</span>
<span class="n">conn</span><span class="p">,</span> <span class="n">size</span> <span class="o">=</span> <span class="n">FTP</span><span class="o">.</span><span class="n">ntransfercmd</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd</span><span class="p">,</span> <span class="n">rest</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">prot</span><span class="p">:</span>
@@ -145,41 +135,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/httpslib.html b/doc/html/_modules/M2Crypto/httpslib.html
index e8ab639..d9b35d3 100644
--- a/doc/html/_modules/M2Crypto/httpslib.html
+++ b/doc/html/_modules/M2Crypto/httpslib.html
@@ -1,55 +1,47 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.httpslib &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.httpslib &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.httpslib</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
+
+<span class="kn">import</span> <span class="nn">warnings</span>
<span class="sd">&quot;&quot;&quot;M2Crypto support for Python&#39;s httplib.</span>
@@ -58,13 +50,13 @@
<span class="kn">import</span> <span class="nn">base64</span>
<span class="kn">import</span> <span class="nn">socket</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">SSL</span><span class="p">,</span> <span class="n">six</span><span class="p">,</span> <span class="n">util</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.urllib_parse</span> <span class="kn">import</span> <span class="n">urlsplit</span><span class="p">,</span> <span class="n">urlunsplit</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.http_client</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">SSL</span><span class="p">,</span> <span class="n">six</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.urllib_parse</span> <span class="k">import</span> <span class="n">urlsplit</span><span class="p">,</span> <span class="n">urlunsplit</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.http_client</span> <span class="k">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
<span class="c1"># This is not imported with just &#39;*&#39;</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.http_client</span> <span class="kn">import</span> <span class="n">HTTPS_PORT</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.http_client</span> <span class="k">import</span> <span class="n">HTTPS_PORT</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
<div class="viewcode-block" id="HTTPSConnection"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.httpslib.HTTPSConnection">[docs]</a><span class="k">class</span> <span class="nc">HTTPSConnection</span><span class="p">(</span><span class="n">HTTPConnection</span><span class="p">):</span>
@@ -75,8 +67,8 @@
<span class="n">default_port</span> <span class="o">=</span> <span class="n">HTTPS_PORT</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="o">**</span><span class="n">ssl</span><span class="p">):</span>
- <span class="c1"># type: (str, Optional[int], Optional[bool], **Dict[Any, Any]) -&gt; None</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">ssl</span><span class="p">):</span>
+ <span class="c1"># type: (str, Optional[int], Optional[bool], **Any) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Represents one transaction with an HTTP server over the SSL</span>
<span class="sd"> connection.</span>
@@ -91,7 +83,7 @@
<span class="sd"> to be included with SSL.Context; if it is not</span>
<span class="sd"> default ``&#39;sslv23&#39;`` is substituted).</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">session</span> <span class="o">=</span> <span class="bp">None</span> <span class="c1"># type: bytes</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">session</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1"># type: bytes</span>
<span class="bp">self</span><span class="o">.</span><span class="n">host</span> <span class="o">=</span> <span class="n">host</span>
<span class="bp">self</span><span class="o">.</span><span class="n">port</span> <span class="o">=</span> <span class="n">port</span>
<span class="n">keys</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">ssl</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span> <span class="o">-</span> <span class="nb">set</span><span class="p">((</span><span class="s1">&#39;key_file&#39;</span><span class="p">,</span> <span class="s1">&#39;cert_file&#39;</span><span class="p">,</span> <span class="s1">&#39;ssl_context&#39;</span><span class="p">))</span>
@@ -102,38 +94,42 @@
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl_ctx</span><span class="p">,</span> <span class="n">SSL</span><span class="o">.</span><span class="n">Context</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">ssl_ctx</span>
<span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ssl_ctx</span> <span class="o">=</span> <span class="n">SSL</span><span class="o">.</span><span class="n">Context</span><span class="p">()</span>
- <span class="n">HTTPConnection</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="n">strict</span><span class="p">)</span>
+ <span class="n">HTTPConnection</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="n">strict</span><span class="p">)</span>
<div class="viewcode-block" id="HTTPSConnection.connect"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.httpslib.HTTPSConnection.connect">[docs]</a> <span class="k">def</span> <span class="nf">connect</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
- <span class="n">error</span> <span class="o">=</span> <span class="bp">None</span>
+ <span class="n">error</span> <span class="o">=</span> <span class="kc">None</span>
<span class="c1"># We ignore the returned sockaddr because SSL.Connection.connect needs</span>
<span class="c1"># a host name.</span>
<span class="k">for</span> <span class="p">(</span><span class="n">family</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="ow">in</span> \
<span class="n">socket</span><span class="o">.</span><span class="n">getaddrinfo</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">port</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span>
<span class="n">socket</span><span class="o">.</span><span class="n">SOCK_STREAM</span><span class="p">):</span>
- <span class="n">sock</span> <span class="o">=</span> <span class="bp">None</span>
+ <span class="n">sock</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">sock</span> <span class="o">=</span> <span class="n">SSL</span><span class="o">.</span><span class="n">Connection</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssl_ctx</span><span class="p">,</span> <span class="n">family</span><span class="o">=</span><span class="n">family</span><span class="p">)</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+
+ <span class="c1"># set SNI server name since we know it at this point</span>
+ <span class="n">sock</span><span class="o">.</span><span class="n">set_tlsext_host_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">sock</span><span class="o">.</span><span class="n">set_session</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
<span class="n">sock</span><span class="o">.</span><span class="n">connect</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">port</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">sock</span> <span class="o">=</span> <span class="n">sock</span>
- <span class="n">sock</span> <span class="o">=</span> <span class="bp">None</span>
+ <span class="n">sock</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">return</span>
<span class="k">except</span> <span class="n">socket</span><span class="o">.</span><span class="n">error</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="c1"># Other exception are probably SSL-related, in that case we</span>
<span class="c1"># abort and the exception is forwarded to the caller.</span>
<span class="n">error</span> <span class="o">=</span> <span class="n">e</span>
<span class="k">finally</span><span class="p">:</span>
- <span class="k">if</span> <span class="n">sock</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">sock</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">sock</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
- <span class="k">if</span> <span class="n">error</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">error</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span><span class="s2">&quot;Empty list returned by getaddrinfo&quot;</span><span class="p">)</span>
- <span class="k">raise</span> <span class="n">error</span>
-</div>
+ <span class="k">raise</span> <span class="n">error</span></div>
+
<div class="viewcode-block" id="HTTPSConnection.close"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.httpslib.HTTPSConnection.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
<span class="c1"># This kludges around line 545 of httplib.py,</span>
@@ -150,17 +146,17 @@
<span class="c1"># XXX 05-Jan-2002: This module works with Python 2.2,</span>
<span class="c1"># XXX but I&#39;ve not investigated if the above conditions</span>
<span class="c1"># XXX remain.</span>
- <span class="k">pass</span>
-</div>
+ <span class="k">pass</span></div>
+
<div class="viewcode-block" id="HTTPSConnection.get_session"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.httpslib.HTTPSConnection.get_session">[docs]</a> <span class="k">def</span> <span class="nf">get_session</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; SSL.Session.Session</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sock</span><span class="o">.</span><span class="n">get_session</span><span class="p">()</span>
-</div>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sock</span><span class="o">.</span><span class="n">get_session</span><span class="p">()</span></div>
+
<div class="viewcode-block" id="HTTPSConnection.set_session"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.httpslib.HTTPSConnection.set_session">[docs]</a> <span class="k">def</span> <span class="nf">set_session</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="p">):</span>
<span class="c1"># type: (SSL.Session.Session) -&gt; None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">session</span> <span class="o">=</span> <span class="n">session</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">session</span> <span class="o">=</span> <span class="n">session</span></div></div>
+
-</div></div>
<div class="viewcode-block" id="ProxyHTTPSConnection"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.httpslib.ProxyHTTPSConnection">[docs]</a><span class="k">class</span> <span class="nc">ProxyHTTPSConnection</span><span class="p">(</span><span class="n">HTTPSConnection</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> An HTTPS Connection that uses a proxy and the CONNECT request.</span>
@@ -178,9 +174,9 @@
<span class="n">_AUTH_HEADER</span> <span class="o">=</span> <span class="s2">&quot;Proxy-Authorization&quot;</span>
<span class="n">_UA_HEADER</span> <span class="o">=</span> <span class="s2">&quot;User-Agent&quot;</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">username</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
- <span class="n">password</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="o">**</span><span class="n">ssl</span><span class="p">):</span>
- <span class="c1"># type: (str, Optional[int], Optional[bool], Optional[AnyStr], Optional[AnyStr], **Dict[Any, Any]) -&gt; None</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">strict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">username</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
+ <span class="n">password</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">ssl</span><span class="p">):</span>
+ <span class="c1"># type: (str, Optional[int], Optional[bool], Optional[AnyStr], Optional[AnyStr], **Any) -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Create the ProxyHTTPSConnection object.</span>
@@ -202,14 +198,14 @@
<span class="sd"> to be included with SSL.Context; if it is not</span>
<span class="sd"> default ``&#39;sslv23&#39;`` is substituted).</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">HTTPSConnection</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="n">strict</span><span class="p">,</span> <span class="o">**</span><span class="n">ssl</span><span class="p">)</span>
+ <span class="n">HTTPSConnection</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="n">strict</span><span class="p">,</span> <span class="o">**</span><span class="n">ssl</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_username</span> <span class="o">=</span> <span class="n">username</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;utf8&#39;</span><span class="p">)</span> \
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">username</span><span class="p">,</span> <span class="n">six</span><span class="o">.</span><span class="n">string_types</span><span class="p">)</span> <span class="k">else</span> <span class="n">username</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_password</span> <span class="o">=</span> <span class="n">password</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;utf8&#39;</span><span class="p">)</span> \
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">password</span><span class="p">,</span> <span class="n">six</span><span class="o">.</span><span class="n">string_types</span><span class="p">)</span> <span class="k">else</span> <span class="n">password</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_proxy_auth</span> <span class="o">=</span> <span class="bp">None</span> <span class="c1"># type: str</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_proxy_UA</span> <span class="o">=</span> <span class="bp">None</span> <span class="c1"># type: str</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">_proxy_auth</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1"># type: str</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">_proxy_UA</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1"># type: str</span>
<div class="viewcode-block" id="ProxyHTTPSConnection.putrequest"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.httpslib.ProxyHTTPSConnection.putrequest">[docs]</a> <span class="k">def</span> <span class="nf">putrequest</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">skip_host</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">skip_accept_encoding</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, AnyStr, int, int) -&gt; None</span>
@@ -240,10 +236,10 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_real_host</span> <span class="o">=</span> <span class="n">host</span> <span class="c1"># type: str</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_real_port</span> <span class="o">=</span> <span class="n">port</span> <span class="c1"># type: int</span>
- <span class="n">rest</span> <span class="o">=</span> <span class="n">urlunsplit</span><span class="p">((</span><span class="bp">None</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">query</span><span class="p">,</span> <span class="n">fragment</span><span class="p">))</span>
+ <span class="n">rest</span> <span class="o">=</span> <span class="n">urlunsplit</span><span class="p">((</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">query</span><span class="p">,</span> <span class="n">fragment</span><span class="p">))</span>
<span class="n">HTTPSConnection</span><span class="o">.</span><span class="n">putrequest</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="n">rest</span><span class="p">,</span> <span class="n">skip_host</span><span class="p">,</span>
- <span class="n">skip_accept_encoding</span><span class="p">)</span>
-</div>
+ <span class="n">skip_accept_encoding</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="ProxyHTTPSConnection.putheader"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.httpslib.ProxyHTTPSConnection.putheader">[docs]</a> <span class="k">def</span> <span class="nf">putheader</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">header</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, AnyStr) -&gt; None</span>
<span class="c1"># Store the auth header if passed in.</span>
@@ -252,18 +248,18 @@
<span class="k">if</span> <span class="n">header</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_AUTH_HEADER</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_proxy_auth</span> <span class="o">=</span> <span class="n">value</span>
<span class="k">else</span><span class="p">:</span>
- <span class="n">HTTPSConnection</span><span class="o">.</span><span class="n">putheader</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">header</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
-</div>
+ <span class="n">HTTPSConnection</span><span class="o">.</span><span class="n">putheader</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">header</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="ProxyHTTPSConnection.endheaders"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.httpslib.ProxyHTTPSConnection.endheaders">[docs]</a> <span class="k">def</span> <span class="nf">endheaders</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
- <span class="c1"># type: (*List[Any], **Dict[Any, Any]) -&gt; None</span>
+ <span class="c1"># type: (*Any, **Any) -&gt; None</span>
<span class="c1"># We&#39;ve recieved all of hte headers. Use the supplied username</span>
<span class="c1"># and password for authorization, possibly overriding the authstring</span>
<span class="c1"># supplied in the headers.</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_proxy_auth</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_proxy_auth</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encode_auth</span><span class="p">()</span>
- <span class="n">HTTPSConnection</span><span class="o">.</span><span class="n">endheaders</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
-</div>
+ <span class="n">HTTPSConnection</span><span class="o">.</span><span class="n">endheaders</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
+
<div class="viewcode-block" id="ProxyHTTPSConnection.connect"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.httpslib.ProxyHTTPSConnection.connect">[docs]</a> <span class="k">def</span> <span class="nf">connect</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; None</span>
<span class="n">HTTPConnection</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
@@ -279,8 +275,8 @@
<span class="bp">self</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="k">raise</span> <span class="n">socket</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Proxy connection failed: </span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">code</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_start_ssl</span><span class="p">()</span>
-</div>
+ <span class="bp">self</span><span class="o">.</span><span class="n">_start_ssl</span><span class="p">()</span></div>
+
<span class="k">def</span> <span class="nf">_get_connect_msg</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># type: () -&gt; bytes</span>
<span class="sd">&quot;&quot;&quot; Return an HTTP CONNECT request to send to the proxy. &quot;&quot;&quot;</span>
@@ -305,51 +301,53 @@
<span class="c1"># type: () -&gt; Optional[bytes]</span>
<span class="sd">&quot;&quot;&quot; Encode the username and password for use in the auth header. &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_username</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_password</span><span class="p">):</span>
- <span class="k">return</span> <span class="bp">None</span>
+ <span class="k">return</span> <span class="kc">None</span>
<span class="c1"># Authenticated proxy</span>
<span class="n">userpass</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_username</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_password</span><span class="p">)</span>
- <span class="n">enc_userpass</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">encodestring</span><span class="p">(</span><span class="n">userpass</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span>
+ <span class="k">with</span> <span class="n">warnings</span><span class="o">.</span><span class="n">catch_warnings</span><span class="p">():</span>
+ <span class="n">warnings</span><span class="o">.</span><span class="n">simplefilter</span><span class="p">(</span><span class="s2">&quot;ignore&quot;</span><span class="p">,</span> <span class="ne">DeprecationWarning</span><span class="p">)</span>
+ <span class="n">enc_userpass</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">encodestring</span><span class="p">(</span><span class="n">userpass</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">util</span><span class="o">.</span><span class="n">py3bytes</span><span class="p">(</span><span class="s2">&quot;Basic </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">enc_userpass</span><span class="p">)</span></div>
</pre></div>
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/m2crypto.html b/doc/html/_modules/M2Crypto/m2crypto.html
index 00852dc..8454683 100644
--- a/doc/html/_modules/M2Crypto/m2crypto.html
+++ b/doc/html/_modules/M2Crypto/m2crypto.html
@@ -49,11 +49,11 @@
<div class="body">
<h1>Source code for M2Crypto.m2crypto</h1><div class="highlight"><pre>
-<span></span><span class="c1"># This file was automatically generated by SWIG (http://www.swig.org).</span>
-<span class="c1"># Version 2.0.10</span>
-<span class="c1">#</span>
-<span class="c1"># Do not make changes to this file unless you know what you are doing--modify</span>
-<span class="c1"># the SWIG interface file instead.</span>
+<span class="c"># This file was automatically generated by SWIG (http://www.swig.org).</span>
+<span class="c"># Version 2.0.10</span>
+<span class="c">#</span>
+<span class="c"># Do not make changes to this file unless you know what you are doing--modify</span>
+<span class="c"># the SWIG interface file instead.</span>
@@ -64,13 +64,13 @@
<span class="kn">import</span> <span class="nn">imp</span>
<span class="n">fp</span> <span class="o">=</span> <span class="bp">None</span>
<span class="k">try</span><span class="p">:</span>
- <span class="n">fp</span><span class="p">,</span> <span class="n">pathname</span><span class="p">,</span> <span class="n">description</span> <span class="o">=</span> <span class="n">imp</span><span class="o">.</span><span class="n">find_module</span><span class="p">(</span><span class="s1">&#39;_m2crypto&#39;</span><span class="p">,</span> <span class="p">[</span><span class="n">dirname</span><span class="p">(</span><span class="n">__file__</span><span class="p">)])</span>
+ <span class="n">fp</span><span class="p">,</span> <span class="n">pathname</span><span class="p">,</span> <span class="n">description</span> <span class="o">=</span> <span class="n">imp</span><span class="o">.</span><span class="n">find_module</span><span class="p">(</span><span class="s">&#39;_m2crypto&#39;</span><span class="p">,</span> <span class="p">[</span><span class="n">dirname</span><span class="p">(</span><span class="n">__file__</span><span class="p">)])</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
<span class="kn">import</span> <span class="nn">_m2crypto</span>
<span class="k">return</span> <span class="n">_m2crypto</span>
<span class="k">if</span> <span class="n">fp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
- <span class="n">_mod</span> <span class="o">=</span> <span class="n">imp</span><span class="o">.</span><span class="n">load_module</span><span class="p">(</span><span class="s1">&#39;_m2crypto&#39;</span><span class="p">,</span> <span class="n">fp</span><span class="p">,</span> <span class="n">pathname</span><span class="p">,</span> <span class="n">description</span><span class="p">)</span>
+ <span class="n">_mod</span> <span class="o">=</span> <span class="n">imp</span><span class="o">.</span><span class="n">load_module</span><span class="p">(</span><span class="s">&#39;_m2crypto&#39;</span><span class="p">,</span> <span class="n">fp</span><span class="p">,</span> <span class="n">pathname</span><span class="p">,</span> <span class="n">description</span><span class="p">)</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">fp</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="k">return</span> <span class="n">_mod</span>
@@ -83,11 +83,11 @@
<span class="k">try</span><span class="p">:</span>
<span class="n">_swig_property</span> <span class="o">=</span> <span class="nb">property</span>
<span class="k">except</span> <span class="ne">NameError</span><span class="p">:</span>
- <span class="k">pass</span> <span class="c1"># Python &lt; 2.2 doesn&#39;t have &#39;property&#39;.</span>
+ <span class="k">pass</span> <span class="c"># Python &lt; 2.2 doesn&#39;t have &#39;property&#39;.</span>
<span class="k">def</span> <span class="nf">_swig_setattr_nondynamic</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">class_type</span><span class="p">,</span><span class="n">name</span><span class="p">,</span><span class="n">value</span><span class="p">,</span><span class="n">static</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
- <span class="k">if</span> <span class="p">(</span><span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;thisown&quot;</span><span class="p">):</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">own</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
- <span class="k">if</span> <span class="p">(</span><span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;this&quot;</span><span class="p">):</span>
- <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">value</span><span class="p">)</span><span class="o">.</span><span class="n">__name__</span> <span class="o">==</span> <span class="s1">&#39;SwigPyObject&#39;</span><span class="p">:</span>
+ <span class="k">if</span> <span class="p">(</span><span class="n">name</span> <span class="o">==</span> <span class="s">&quot;thisown&quot;</span><span class="p">):</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">own</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
+ <span class="k">if</span> <span class="p">(</span><span class="n">name</span> <span class="o">==</span> <span class="s">&quot;this&quot;</span><span class="p">):</span>
+ <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">value</span><span class="p">)</span><span class="o">.</span><span class="n">__name__</span> <span class="o">==</span> <span class="s">&#39;SwigPyObject&#39;</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
<span class="k">return</span>
<span class="n">method</span> <span class="o">=</span> <span class="n">class_type</span><span class="o">.</span><span class="n">__swig_setmethods__</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span><span class="bp">None</span><span class="p">)</span>
@@ -95,21 +95,21 @@
<span class="k">if</span> <span class="p">(</span><span class="ow">not</span> <span class="n">static</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;You cannot add attributes to </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="p">)</span>
+ <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s">&quot;You cannot add attributes to </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_swig_setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">class_type</span><span class="p">,</span><span class="n">name</span><span class="p">,</span><span class="n">value</span><span class="p">):</span>
<span class="k">return</span> <span class="n">_swig_setattr_nondynamic</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">class_type</span><span class="p">,</span><span class="n">name</span><span class="p">,</span><span class="n">value</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_swig_getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">class_type</span><span class="p">,</span><span class="n">name</span><span class="p">):</span>
- <span class="k">if</span> <span class="p">(</span><span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;thisown&quot;</span><span class="p">):</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">own</span><span class="p">()</span>
+ <span class="k">if</span> <span class="p">(</span><span class="n">name</span> <span class="o">==</span> <span class="s">&quot;thisown&quot;</span><span class="p">):</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">own</span><span class="p">()</span>
<span class="n">method</span> <span class="o">=</span> <span class="n">class_type</span><span class="o">.</span><span class="n">__swig_getmethods__</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">,</span><span class="bp">None</span><span class="p">)</span>
<span class="k">if</span> <span class="n">method</span><span class="p">:</span> <span class="k">return</span> <span class="n">method</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_swig_repr</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">try</span><span class="p">:</span> <span class="n">strthis</span> <span class="o">=</span> <span class="s2">&quot;proxy of &quot;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">__repr__</span><span class="p">()</span>
- <span class="k">except</span><span class="p">:</span> <span class="n">strthis</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
- <span class="k">return</span> <span class="s2">&quot;&lt;</span><span class="si">%s</span><span class="s2">.</span><span class="si">%s</span><span class="s2">; </span><span class="si">%s</span><span class="s2"> &gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__module__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span> <span class="n">strthis</span><span class="p">,)</span>
+ <span class="k">try</span><span class="p">:</span> <span class="n">strthis</span> <span class="o">=</span> <span class="s">&quot;proxy of &quot;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">__repr__</span><span class="p">()</span>
+ <span class="k">except</span><span class="p">:</span> <span class="n">strthis</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
+ <span class="k">return</span> <span class="s">&quot;&lt;</span><span class="si">%s</span><span class="s">.</span><span class="si">%s</span><span class="s">; </span><span class="si">%s</span><span class="s"> &gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__module__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span> <span class="n">strthis</span><span class="p">,)</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">_object</span> <span class="o">=</span> <span class="nb">object</span>
@@ -121,11 +121,11 @@
<span class="k">def</span> <span class="nf">_swig_setattr_nondynamic_method</span><span class="p">(</span><span class="nb">set</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">set_attr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">name</span><span class="p">,</span><span class="n">value</span><span class="p">):</span>
- <span class="k">if</span> <span class="p">(</span><span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;thisown&quot;</span><span class="p">):</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">own</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
- <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;this&quot;</span><span class="p">):</span>
+ <span class="k">if</span> <span class="p">(</span><span class="n">name</span> <span class="o">==</span> <span class="s">&quot;thisown&quot;</span><span class="p">):</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">own</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
+ <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">name</span> <span class="o">==</span> <span class="s">&quot;this&quot;</span><span class="p">):</span>
<span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">name</span><span class="p">,</span><span class="n">value</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;You cannot add attributes to </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="p">)</span>
+ <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s">&quot;You cannot add attributes to </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="p">)</span>
<span class="k">return</span> <span class="n">set_attr</span>
</pre></div>
diff --git a/doc/html/_modules/M2Crypto/m2urllib.html b/doc/html/_modules/M2Crypto/m2urllib.html
index 44d3ac7..6c3ee9f 100644
--- a/doc/html/_modules/M2Crypto/m2urllib.html
+++ b/doc/html/_modules/M2Crypto/m2urllib.html
@@ -1,55 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.m2urllib &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.m2urllib &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.m2urllib</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span><span class="p">,</span> <span class="n">print_function</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span><span class="p">,</span> <span class="n">print_function</span>
<span class="sd">&quot;&quot;&quot;M2Crypto enhancement to Python&#39;s urllib for handling</span>
<span class="sd">&#39;https&#39; url&#39;s.</span>
@@ -59,22 +49,25 @@
<span class="sd">Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.&quot;&quot;&quot;</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">SSL</span><span class="p">,</span> <span class="n">httpslib</span><span class="p">,</span> <span class="n">six</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">import</span> <span class="nn">base64</span>
+<span class="kn">import</span> <span class="nn">warnings</span>
+
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">SSL</span><span class="p">,</span> <span class="n">httpslib</span><span class="p">,</span> <span class="n">six</span><span class="p">,</span> <span class="n">util</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.urllib_response</span> <span class="kn">import</span> <span class="n">addinfourl</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.urllib_response</span> <span class="k">import</span> <span class="n">addinfourl</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
<span class="c1"># six.moves doesn&#39;t support star imports</span>
<span class="k">if</span> <span class="n">six</span><span class="o">.</span><span class="n">PY3</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">urllib.request</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># noqa for other modules to import</span>
- <span class="kn">from</span> <span class="nn">urllib.parse</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># noqa for other modules to import</span>
- <span class="kn">from</span> <span class="nn">urllib.error</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># noqa for other modules to import</span>
+ <span class="kn">from</span> <span class="nn">urllib.request</span> <span class="k">import</span> <span class="o">*</span> <span class="c1"># noqa for other modules to import</span>
+ <span class="kn">from</span> <span class="nn">urllib.parse</span> <span class="k">import</span> <span class="o">*</span> <span class="c1"># noqa for other modules to import</span>
+ <span class="kn">from</span> <span class="nn">urllib.error</span> <span class="k">import</span> <span class="o">*</span> <span class="c1"># noqa for other modules to import</span>
<span class="k">else</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">urllib</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">urllib</span> <span class="k">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
-<div class="viewcode-block" id="open_https"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.m2urllib.open_https">[docs]</a><span class="k">def</span> <span class="nf">open_https</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">ssl_context</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+<div class="viewcode-block" id="open_https"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.m2urllib.open_https">[docs]</a><span class="k">def</span> <span class="nf">open_https</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ssl_context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (AnyStr, Optional[bytes], Optional[SSL.Context]) -&gt; addinfourl</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Open URL over the SSL connection.</span>
@@ -84,11 +77,14 @@
<span class="sd"> :param ssl_context: SSL.Context to be used</span>
<span class="sd"> :return:</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">ssl_context</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ssl_context</span><span class="p">,</span> <span class="n">SSL</span><span class="o">.</span><span class="n">Context</span><span class="p">):</span>
+ <span class="k">if</span> <span class="n">six</span><span class="o">.</span><span class="n">PY3</span><span class="p">:</span>
+ <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s1">&#39;URLOpener has been deprecated in Py3k&#39;</span><span class="p">,</span> <span class="ne">DeprecationWarning</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">ssl_context</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ssl_context</span><span class="p">,</span> <span class="n">SSL</span><span class="o">.</span><span class="n">Context</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ctx</span> <span class="o">=</span> <span class="n">ssl_context</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ctx</span> <span class="o">=</span> <span class="n">SSL</span><span class="o">.</span><span class="n">Context</span><span class="p">()</span>
- <span class="n">user_passwd</span> <span class="o">=</span> <span class="bp">None</span>
+ <span class="n">user_passwd</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">six</span><span class="o">.</span><span class="n">string_types</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span> <span class="c1"># python 2</span>
<span class="c1"># http://pydoc.org/2.5.1/urllib.html</span>
@@ -102,18 +98,18 @@
<span class="n">parsed</span> <span class="o">=</span> <span class="n">urlparse</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
<span class="n">host</span> <span class="o">=</span> <span class="n">parsed</span><span class="o">.</span><span class="n">hostname</span>
<span class="k">if</span> <span class="n">parsed</span><span class="o">.</span><span class="n">port</span><span class="p">:</span>
- <span class="n">host</span> <span class="o">+=</span> <span class="s2">&quot;:{0}&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">parsed</span><span class="o">.</span><span class="n">port</span><span class="p">)</span>
- <span class="n">user_passwd</span> <span class="o">=</span> <span class="n">parsed</span><span class="o">.</span><span class="n">username</span>
+ <span class="n">host</span> <span class="o">+=</span> <span class="s2">&quot;:</span><span class="si">{0}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">parsed</span><span class="o">.</span><span class="n">port</span><span class="p">)</span>
+ <span class="n">user_passwd</span> <span class="o">=</span> <span class="n">parsed</span><span class="o">.</span><span class="n">password</span>
<span class="k">if</span> <span class="n">parsed</span><span class="o">.</span><span class="n">password</span><span class="p">:</span>
- <span class="n">user_passwd</span> <span class="o">+=</span> <span class="s2">&quot;:{0}&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">parsed</span><span class="o">.</span><span class="n">password</span><span class="p">)</span>
+ <span class="n">user_passwd</span> <span class="o">+=</span> <span class="s2">&quot;:</span><span class="si">{0}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">parsed</span><span class="o">.</span><span class="n">password</span><span class="p">)</span>
<span class="n">selector</span> <span class="o">=</span> <span class="n">parsed</span><span class="o">.</span><span class="n">path</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">host</span><span class="p">,</span> <span class="n">selector</span> <span class="o">=</span> <span class="n">url</span>
<span class="n">urltype</span><span class="p">,</span> <span class="n">rest</span> <span class="o">=</span> <span class="n">splittype</span><span class="p">(</span><span class="n">selector</span><span class="p">)</span>
<span class="n">url</span> <span class="o">=</span> <span class="n">rest</span>
- <span class="n">user_passwd</span> <span class="o">=</span> <span class="bp">None</span>
+ <span class="n">user_passwd</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="n">urltype</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">!=</span> <span class="s1">&#39;http&#39;</span><span class="p">:</span>
- <span class="n">realhost</span> <span class="o">=</span> <span class="bp">None</span>
+ <span class="n">realhost</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span> <span class="c1"># python 2</span>
<span class="n">realhost</span><span class="p">,</span> <span class="n">rest</span> <span class="o">=</span> <span class="n">splithost</span><span class="p">(</span><span class="n">rest</span><span class="p">)</span>
@@ -125,23 +121,24 @@
<span class="n">parsed</span> <span class="o">=</span> <span class="n">urlparse</span><span class="p">(</span><span class="n">rest</span><span class="p">)</span>
<span class="n">host</span> <span class="o">=</span> <span class="n">parsed</span><span class="o">.</span><span class="n">hostname</span>
<span class="k">if</span> <span class="n">parsed</span><span class="o">.</span><span class="n">port</span><span class="p">:</span>
- <span class="n">host</span> <span class="o">+=</span> <span class="s2">&quot;:{0}&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">parsed</span><span class="o">.</span><span class="n">port</span><span class="p">)</span>
+ <span class="n">host</span> <span class="o">+=</span> <span class="s2">&quot;:</span><span class="si">{0}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">parsed</span><span class="o">.</span><span class="n">port</span><span class="p">)</span>
<span class="n">user_passwd</span> <span class="o">=</span> <span class="n">parsed</span><span class="o">.</span><span class="n">username</span>
<span class="k">if</span> <span class="n">parsed</span><span class="o">.</span><span class="n">password</span><span class="p">:</span>
- <span class="n">user_passwd</span> <span class="o">+=</span> <span class="s2">&quot;:{0}&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">parsed</span><span class="o">.</span><span class="n">password</span><span class="p">)</span>
+ <span class="n">user_passwd</span> <span class="o">+=</span> <span class="s2">&quot;:</span><span class="si">{0}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">parsed</span><span class="o">.</span><span class="n">password</span><span class="p">)</span>
<span class="c1"># print(&quot;proxy via http:&quot;, host, selector)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">host</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="s1">&#39;http error&#39;</span><span class="p">,</span> <span class="s1">&#39;no host given&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">user_passwd</span><span class="p">:</span>
- <span class="kn">import</span> <span class="nn">base64</span>
- <span class="n">auth</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">encodestring</span><span class="p">(</span><span class="n">user_passwd</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
+ <span class="k">with</span> <span class="n">warnings</span><span class="o">.</span><span class="n">catch_warnings</span><span class="p">():</span>
+ <span class="n">warnings</span><span class="o">.</span><span class="n">simplefilter</span><span class="p">(</span><span class="s2">&quot;ignore&quot;</span><span class="p">,</span> <span class="ne">DeprecationWarning</span><span class="p">)</span>
+ <span class="n">auth</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">encodestring</span><span class="p">(</span><span class="n">user_passwd</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
<span class="k">else</span><span class="p">:</span>
- <span class="n">auth</span> <span class="o">=</span> <span class="bp">None</span>
+ <span class="n">auth</span> <span class="o">=</span> <span class="kc">None</span>
<span class="c1"># Start here!</span>
<span class="n">h</span> <span class="o">=</span> <span class="n">httpslib</span><span class="o">.</span><span class="n">HTTPSConnection</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="n">host</span><span class="p">,</span> <span class="n">ssl_context</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">ctx</span><span class="p">)</span>
<span class="c1"># h.set_debuglevel(1)</span>
<span class="c1"># Stop here!</span>
- <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">h</span><span class="o">.</span><span class="n">putrequest</span><span class="p">(</span><span class="s1">&#39;POST&#39;</span><span class="p">,</span> <span class="n">selector</span><span class="p">)</span>
<span class="n">h</span><span class="o">.</span><span class="n">putheader</span><span class="p">(</span><span class="s1">&#39;Content-type&#39;</span><span class="p">,</span> <span class="s1">&#39;application/x-www-form-urlencoded&#39;</span><span class="p">)</span>
<span class="n">h</span><span class="o">.</span><span class="n">putheader</span><span class="p">(</span><span class="s1">&#39;Content-length&#39;</span><span class="p">,</span> <span class="s1">&#39;</span><span class="si">%d</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
@@ -152,56 +149,56 @@
<span class="k">for</span> <span class="n">args</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">addheaders</span><span class="p">:</span>
<span class="n">h</span><span class="o">.</span><span class="n">putheader</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span> <span class="c1"># for python3 - used to use apply</span>
<span class="n">h</span><span class="o">.</span><span class="n">endheaders</span><span class="p">()</span>
- <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">h</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">data</span> <span class="o">+</span> <span class="s1">&#39;</span><span class="se">\r\n</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="c1"># Here again!</span>
<span class="n">resp</span> <span class="o">=</span> <span class="n">h</span><span class="o">.</span><span class="n">getresponse</span><span class="p">()</span>
<span class="n">fp</span> <span class="o">=</span> <span class="n">resp</span><span class="o">.</span><span class="n">fp</span>
- <span class="k">return</span> <span class="n">addinfourl</span><span class="p">(</span><span class="n">fp</span><span class="p">,</span> <span class="n">resp</span><span class="o">.</span><span class="n">msg</span><span class="p">,</span> <span class="s2">&quot;https:&quot;</span> <span class="o">+</span> <span class="n">url</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">addinfourl</span><span class="p">(</span><span class="n">fp</span><span class="p">,</span> <span class="n">resp</span><span class="o">.</span><span class="n">msg</span><span class="p">,</span> <span class="s2">&quot;https:&quot;</span> <span class="o">+</span> <span class="n">url</span><span class="p">)</span></div>
<span class="c1"># Stop again.</span>
-<span class="c1"># Minor brain surgery.</span></div>
+<span class="c1"># Minor brain surgery.</span>
<span class="n">URLopener</span><span class="o">.</span><span class="n">open_https</span> <span class="o">=</span> <span class="n">open_https</span>
</pre></div>
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/m2urllib2.html b/doc/html/_modules/M2Crypto/m2urllib2.html
index 2b18152..f2897c8 100644
--- a/doc/html/_modules/M2Crypto/m2urllib2.html
+++ b/doc/html/_modules/M2Crypto/m2urllib2.html
@@ -1,55 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.m2urllib2 &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.m2urllib2 &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.m2urllib2</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">M2Crypto enhancement to Python&#39;s urllib2 for handling</span>
@@ -66,19 +56,19 @@
<span class="kn">import</span> <span class="nn">socket</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">SSL</span><span class="p">,</span> <span class="n">httpslib</span><span class="p">,</span> <span class="n">six</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">SSL</span><span class="p">,</span> <span class="n">httpslib</span><span class="p">,</span> <span class="n">six</span><span class="p">,</span> <span class="n">util</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.urllib_parse</span> <span class="kn">import</span> <span class="n">urldefrag</span><span class="p">,</span> <span class="n">urlparse</span> <span class="k">as</span> <span class="n">url_parse</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.urllib_response</span> <span class="kn">import</span> <span class="n">addinfourl</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.urllib_parse</span> <span class="k">import</span> <span class="n">urldefrag</span><span class="p">,</span> <span class="n">urlparse</span> <span class="k">as</span> <span class="n">url_parse</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.urllib_response</span> <span class="k">import</span> <span class="n">addinfourl</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
<span class="c1"># six.moves doesn&#39;t support star imports</span>
<span class="k">if</span> <span class="n">six</span><span class="o">.</span><span class="n">PY3</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">urllib.request</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># noqa other modules want to import</span>
- <span class="kn">from</span> <span class="nn">urllib.error</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># noqa other modules want to import</span>
+ <span class="kn">from</span> <span class="nn">urllib.request</span> <span class="k">import</span> <span class="o">*</span> <span class="c1"># noqa other modules want to import</span>
+ <span class="kn">from</span> <span class="nn">urllib.error</span> <span class="k">import</span> <span class="o">*</span> <span class="c1"># noqa other modules want to import</span>
<span class="k">else</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">urllib2</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">urllib2</span> <span class="k">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
<span class="k">try</span><span class="p">:</span>
@@ -103,11 +93,11 @@
<div class="viewcode-block" id="HTTPSHandler"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.m2urllib2.HTTPSHandler">[docs]</a><span class="k">class</span> <span class="nc">HTTPSHandler</span><span class="p">(</span><span class="n">AbstractHTTPHandler</span><span class="p">):</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ssl_context</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ssl_context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># type: (SSL.Context) -&gt; None</span>
- <span class="n">AbstractHTTPHandler</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
+ <span class="n">AbstractHTTPHandler</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">ssl_context</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">ssl_context</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ssl_context</span><span class="p">,</span> <span class="n">SSL</span><span class="o">.</span><span class="n">Context</span><span class="p">),</span> <span class="n">ssl_context</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ctx</span> <span class="o">=</span> <span class="n">ssl_context</span>
<span class="k">else</span><span class="p">:</span>
@@ -175,21 +165,27 @@
<span class="c1"># for Windows. That adapter calls recv(), so delegate recv()</span>
<span class="c1"># to read(). This weird wrapping allows the returned object to</span>
<span class="c1"># have readline() and readlines() methods.</span>
-
<span class="n">r</span><span class="o">.</span><span class="n">recv</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">read</span>
- <span class="n">fp</span> <span class="o">=</span> <span class="n">socket</span><span class="o">.</span><span class="n">_fileobject</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="n">close</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">six</span><span class="o">.</span><span class="n">PY2</span><span class="p">:</span>
+ <span class="n">fp</span> <span class="o">=</span> <span class="n">socket</span><span class="o">.</span><span class="n">_fileobject</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="n">close</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">r</span><span class="o">.</span><span class="n">_decref_socketios</span> <span class="o">=</span> <span class="k">lambda</span><span class="p">:</span> <span class="kc">None</span>
+ <span class="n">r</span><span class="o">.</span><span class="n">ssl</span> <span class="o">=</span> <span class="n">h</span><span class="o">.</span><span class="n">sock</span><span class="o">.</span><span class="n">ssl</span>
+ <span class="n">r</span><span class="o">.</span><span class="n">_timeout</span> <span class="o">=</span> <span class="o">-</span><span class="mf">1.0</span>
+ <span class="n">r</span><span class="o">.</span><span class="n">recv_into</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">b</span><span class="p">:</span> <span class="n">SSL</span><span class="o">.</span><span class="n">Connection</span><span class="o">.</span><span class="n">recv_into</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
+ <span class="n">fp</span> <span class="o">=</span> <span class="n">socket</span><span class="o">.</span><span class="n">SocketIO</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="s1">&#39;rb&#39;</span><span class="p">)</span>
<span class="n">resp</span> <span class="o">=</span> <span class="n">addinfourl</span><span class="p">(</span><span class="n">fp</span><span class="p">,</span> <span class="n">r</span><span class="o">.</span><span class="n">msg</span><span class="p">,</span> <span class="n">req</span><span class="o">.</span><span class="n">get_full_url</span><span class="p">())</span>
<span class="n">resp</span><span class="o">.</span><span class="n">code</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">status</span>
<span class="n">resp</span><span class="o">.</span><span class="n">msg</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">reason</span>
- <span class="k">return</span> <span class="n">resp</span>
-</div>
- <span class="n">https_request</span> <span class="o">=</span> <span class="n">AbstractHTTPHandler</span><span class="o">.</span><span class="n">do_request_</span>
+ <span class="k">return</span> <span class="n">resp</span></div>
+
+ <span class="n">https_request</span> <span class="o">=</span> <span class="n">AbstractHTTPHandler</span><span class="o">.</span><span class="n">do_request_</span></div>
-<span class="c1"># Copied from urllib2 with modifications for ssl</span></div>
-<div class="viewcode-block" id="build_opener"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.m2urllib2.build_opener">[docs]</a><span class="k">def</span> <span class="nf">build_opener</span><span class="p">(</span><span class="n">ssl_context</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="o">*</span><span class="n">handlers</span><span class="p">):</span>
- <span class="c1"># type: (Optional[SSL.Context], *List[object]) -&gt; OpenerDirector</span>
+<span class="c1"># Copied from urllib2 with modifications for ssl</span>
+<div class="viewcode-block" id="build_opener"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.m2urllib2.build_opener">[docs]</a><span class="k">def</span> <span class="nf">build_opener</span><span class="p">(</span><span class="n">ssl_context</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">*</span><span class="n">handlers</span><span class="p">):</span>
+ <span class="c1"># type: (Optional[SSL.Context], *object) -&gt; OpenerDirector</span>
<span class="sd">&quot;&quot;&quot;Create an opener object from a list of handlers.</span>
<span class="sd"> The opener will use several default handlers, including support</span>
@@ -234,41 +230,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/m2xmlrpclib.html b/doc/html/_modules/M2Crypto/m2xmlrpclib.html
index 7869083..2bb0a87 100644
--- a/doc/html/_modules/M2Crypto/m2xmlrpclib.html
+++ b/doc/html/_modules/M2Crypto/m2xmlrpclib.html
@@ -1,55 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.m2xmlrpclib &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.m2xmlrpclib &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.m2xmlrpclib</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;M2Crypto enhancement to xmlrpclib.</span>
@@ -59,16 +49,16 @@
<span class="kn">import</span> <span class="nn">M2Crypto</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">SSL</span><span class="p">,</span> <span class="n">httpslib</span><span class="p">,</span> <span class="n">m2urllib</span><span class="p">,</span> <span class="n">six</span><span class="p">,</span> <span class="n">util</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">SSL</span><span class="p">,</span> <span class="n">httpslib</span><span class="p">,</span> <span class="n">m2urllib</span><span class="p">,</span> <span class="n">six</span><span class="p">,</span> <span class="n">util</span>
<span class="k">if</span> <span class="n">util</span><span class="o">.</span><span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">Optional</span> <span class="c1"># noqa</span>
-<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.xmlrpc_client</span> <span class="kn">import</span> <span class="n">ProtocolError</span><span class="p">,</span> <span class="n">Transport</span>
+<span class="kn">from</span> <span class="nn">M2Crypto.six.moves.xmlrpc_client</span> <span class="k">import</span> <span class="n">ProtocolError</span><span class="p">,</span> <span class="n">Transport</span>
<span class="c1"># six.moves doesn&#39;t support star imports</span>
<span class="k">if</span> <span class="n">six</span><span class="o">.</span><span class="n">PY3</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">xmlrpc.client</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">xmlrpc.client</span> <span class="k">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
<span class="k">else</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">xmlrpclib</span> <span class="kn">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">xmlrpclib</span> <span class="k">import</span> <span class="o">*</span> <span class="c1"># noqa</span>
<span class="n">__version__</span> <span class="o">=</span> <span class="n">M2Crypto</span><span class="o">.</span><span class="n">__version__</span>
@@ -78,10 +68,10 @@
<span class="n">user_agent</span> <span class="o">=</span> <span class="s2">&quot;M2Crypto_XMLRPC/</span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">__version__</span><span class="p">,</span>
<span class="n">Transport</span><span class="o">.</span><span class="n">user_agent</span><span class="p">)</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ssl_context</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
- <span class="c1"># type: (Optional[SSL.Context], *List[Any], **Dict[Any, Any]) -&gt; None</span>
- <span class="n">Transport</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">ssl_context</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ssl_context</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
+ <span class="c1"># type: (Optional[SSL.Context], *Any, **Any) -&gt; None</span>
+ <span class="n">Transport</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">ssl_context</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ssl_ctx</span> <span class="o">=</span> <span class="n">SSL</span><span class="o">.</span><span class="n">Context</span><span class="p">()</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ssl_ctx</span> <span class="o">=</span> <span class="n">ssl_context</span>
@@ -108,7 +98,7 @@
<span class="n">h</span><span class="o">.</span><span class="n">putheader</span><span class="p">(</span><span class="s2">&quot;Content-Length&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">request_body</span><span class="p">)))</span>
<span class="c1"># Authorisation.</span>
- <span class="k">if</span> <span class="n">user_passwd</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">user_passwd</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">auth</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">encodestring</span><span class="p">(</span><span class="n">user_passwd</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
<span class="n">h</span><span class="o">.</span><span class="n">putheader</span><span class="p">(</span><span class="s1">&#39;Authorization&#39;</span><span class="p">,</span> <span class="s1">&#39;Basic </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">auth</span><span class="p">)</span>
@@ -133,41 +123,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/threading.html b/doc/html/_modules/M2Crypto/threading.html
index 41edb54..113c6e1 100644
--- a/doc/html/_modules/M2Crypto/threading.html
+++ b/doc/html/_modules/M2Crypto/threading.html
@@ -1,55 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.threading &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.threading &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.threading</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">M2Crypto threading support, required for multithreaded applications.</span>
@@ -57,7 +47,7 @@
<span class="sd">Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved.&quot;&quot;&quot;</span>
<span class="c1"># M2Crypto</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">m2</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">m2</span>
<div class="viewcode-block" id="init"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.threading.init">[docs]</a><span class="k">def</span> <span class="nf">init</span><span class="p">():</span>
@@ -65,9 +55,9 @@
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Initialize threading support.</span>
<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">m2</span><span class="o">.</span><span class="n">threading_init</span><span class="p">()</span>
+ <span class="n">m2</span><span class="o">.</span><span class="n">threading_init</span><span class="p">()</span></div>
+
-</div>
<div class="viewcode-block" id="cleanup"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.threading.cleanup">[docs]</a><span class="k">def</span> <span class="nf">cleanup</span><span class="p">():</span>
<span class="c1"># type: () -&gt; None</span>
<span class="sd">&quot;&quot;&quot;</span>
@@ -79,41 +69,41 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/M2Crypto/util.html b/doc/html/_modules/M2Crypto/util.html
index 0667b9f..8303b88 100644
--- a/doc/html/_modules/M2Crypto/util.html
+++ b/doc/html/_modules/M2Crypto/util.html
@@ -1,55 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>M2Crypto.util &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+ <title>M2Crypto.util &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../../index.html" />
- <link rel="up" title="Module code" href="../index.html" />
+ <link rel="index" title="Index" href="../../genindex.html" />
+ <link rel="search" title="Search" href="../../search.html" />
+
+ <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" accesskey="U">Module code</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Source code for M2Crypto.util</h1><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
+<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> M2Crypto utility routines.</span>
@@ -66,9 +56,9 @@
<span class="c1"># This means &quot;Python 2.7 or higher&quot; so it is True for py3k as well</span>
<span class="n">py27plus</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> <span class="o">&gt;</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span> <span class="c1"># type: bool</span>
-<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">m2</span><span class="p">,</span> <span class="n">six</span>
+<span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">m2</span><span class="p">,</span> <span class="n">six</span>
<span class="k">if</span> <span class="n">py27plus</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Union</span> <span class="c1"># noqa</span>
+ <span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">AnyStr</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">,</span> <span class="n">Union</span> <span class="c1"># noqa</span>
<span class="c1"># see https://github.com/python/typeshed/issues/222</span>
<span class="n">AddrType</span> <span class="o">=</span> <span class="n">Union</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">],</span> <span class="nb">str</span><span class="p">]</span>
@@ -76,45 +66,49 @@
<div class="viewcode-block" id="UtilError"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.util.UtilError">[docs]</a><span class="k">class</span> <span class="nc">UtilError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
- <span class="k">pass</span>
-</div>
+ <span class="k">pass</span></div>
+
<span class="n">m2</span><span class="o">.</span><span class="n">util_init</span><span class="p">(</span><span class="n">UtilError</span><span class="p">)</span>
<div class="viewcode-block" id="pkcs5_pad"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.util.pkcs5_pad">[docs]</a><span class="k">def</span> <span class="nf">pkcs5_pad</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">blklen</span><span class="o">=</span><span class="mi">8</span><span class="p">):</span>
<span class="c1"># type: (str, int) -&gt; str</span>
<span class="n">pad</span> <span class="o">=</span> <span class="p">(</span><span class="mi">8</span> <span class="o">-</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">%</span> <span class="mi">8</span><span class="p">))</span>
- <span class="k">return</span> <span class="n">data</span> <span class="o">+</span> <span class="nb">chr</span><span class="p">(</span><span class="n">pad</span><span class="p">)</span> <span class="o">*</span> <span class="n">pad</span>
+ <span class="k">return</span> <span class="n">data</span> <span class="o">+</span> <span class="nb">chr</span><span class="p">(</span><span class="n">pad</span><span class="p">)</span> <span class="o">*</span> <span class="n">pad</span></div>
+
-</div>
<div class="viewcode-block" id="pkcs7_pad"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.util.pkcs7_pad">[docs]</a><span class="k">def</span> <span class="nf">pkcs7_pad</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">blklen</span><span class="p">):</span>
<span class="c1"># type: (str, int) -&gt; str</span>
<span class="k">if</span> <span class="n">blklen</span> <span class="o">&gt;</span> <span class="mi">255</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;illegal block size&#39;</span><span class="p">)</span>
<span class="n">pad</span> <span class="o">=</span> <span class="p">(</span><span class="n">blklen</span> <span class="o">-</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">%</span> <span class="n">blklen</span><span class="p">))</span>
- <span class="k">return</span> <span class="n">data</span> <span class="o">+</span> <span class="nb">chr</span><span class="p">(</span><span class="n">pad</span><span class="p">)</span> <span class="o">*</span> <span class="n">pad</span>
+ <span class="k">return</span> <span class="n">data</span> <span class="o">+</span> <span class="nb">chr</span><span class="p">(</span><span class="n">pad</span><span class="p">)</span> <span class="o">*</span> <span class="n">pad</span></div>
<span class="c1"># before the introduction of py3{bytes,str}, python2 code</span>
-<span class="c1"># was just using args as-is</span></div>
+<span class="c1"># was just using args as-is</span>
<span class="k">if</span> <span class="n">six</span><span class="o">.</span><span class="n">PY2</span><span class="p">:</span>
<span class="k">def</span> <span class="nf">py3bytes</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; Optional[bytes,bytearray]</span>
- <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">):</span>
+ <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">unicode</span><span class="p">):</span>
<span class="k">return</span> <span class="n">x</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;utf8&#39;</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="p">(</span><span class="nb">bytearray</span><span class="p">,</span> <span class="nb">str</span><span class="p">)):</span>
<span class="k">return</span> <span class="n">x</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">&#39;No string argument provided&#39;</span><span class="p">)</span>
+ <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span>
+ <span class="s1">&#39;No string argument provided (type of x is </span><span class="si">%s</span><span class="s1">)&#39;</span> <span class="o">%</span>
+ <span class="nb">type</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">py3str</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
<span class="c1"># type: (Optional[str,bytearray]) -&gt; str</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="nb">bytearray</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
- <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">)):</span>
+ <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="n">unicode</span><span class="p">)):</span>
<span class="k">return</span> <span class="n">x</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">&#39;No string argument provided&#39;</span><span class="p">)</span>
+ <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span>
+ <span class="s1">&#39;No string argument provided (type of x is </span><span class="si">%s</span><span class="s1">)&#39;</span> <span class="o">%</span>
+ <span class="nb">type</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<div class="viewcode-block" id="py3bytes"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.util.py3bytes">[docs]</a> <span class="k">def</span> <span class="nf">py3bytes</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
<span class="c1"># type: (AnyStr) -&gt; Optional[bytes,bytearray]</span>
@@ -123,8 +117,10 @@
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="p">(</span><span class="nb">bytes</span><span class="p">,</span> <span class="nb">bytearray</span><span class="p">)):</span>
<span class="k">return</span> <span class="n">x</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">&#39;No string argument provided&#39;</span><span class="p">)</span>
-</div>
+ <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span>
+ <span class="s1">&#39;No string argument provided (type of x is </span><span class="si">%s</span><span class="s1">)&#39;</span> <span class="o">%</span>
+ <span class="nb">type</span><span class="p">(</span><span class="n">x</span><span class="p">))</span></div>
+
<div class="viewcode-block" id="py3str"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.util.py3str">[docs]</a> <span class="k">def</span> <span class="nf">py3str</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
<span class="c1"># type: (Optional[AnyStr,bytearray]) -&gt; str</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="p">(</span><span class="nb">bytes</span><span class="p">,</span> <span class="nb">bytearray</span><span class="p">)):</span>
@@ -132,35 +128,37 @@
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="k">return</span> <span class="n">x</span>
<span class="k">else</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">&#39;No string argument provided&#39;</span><span class="p">)</span>
+ <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span>
+ <span class="s1">&#39;No string argument provided (type of x is </span><span class="si">%s</span><span class="s1">)&#39;</span> <span class="o">%</span>
+ <span class="nb">type</span><span class="p">(</span><span class="n">x</span><span class="p">))</span></div>
+
-</div>
<div class="viewcode-block" id="bin_to_hex"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.util.bin_to_hex">[docs]</a><span class="k">def</span> <span class="nf">bin_to_hex</span><span class="p">(</span><span class="n">b</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; str</span>
- <span class="k">return</span> <span class="n">py3str</span><span class="p">(</span><span class="n">binascii</span><span class="o">.</span><span class="n">b2a_base64</span><span class="p">(</span><span class="n">b</span><span class="p">)[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
+ <span class="k">return</span> <span class="n">py3str</span><span class="p">(</span><span class="n">binascii</span><span class="o">.</span><span class="n">b2a_base64</span><span class="p">(</span><span class="n">b</span><span class="p">)[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span></div>
+
-</div>
<div class="viewcode-block" id="octx_to_num"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.util.octx_to_num">[docs]</a><span class="k">def</span> <span class="nf">octx_to_num</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
<span class="c1"># type: (bytes) -&gt; int</span>
- <span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">binascii</span><span class="o">.</span><span class="n">hexlify</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="mi">16</span><span class="p">)</span>
+ <span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">binascii</span><span class="o">.</span><span class="n">hexlify</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="mi">16</span><span class="p">)</span></div>
+
-</div>
<div class="viewcode-block" id="genparam_callback"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.util.genparam_callback">[docs]</a><span class="k">def</span> <span class="nf">genparam_callback</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">out</span><span class="o">=</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">):</span>
<span class="c1"># type: (int, Any, file) -&gt; None</span>
<span class="n">ch</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;.&#39;</span><span class="p">,</span> <span class="s1">&#39;+&#39;</span><span class="p">,</span> <span class="s1">&#39;*&#39;</span><span class="p">,</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">]</span>
<span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">ch</span><span class="p">[</span><span class="n">p</span><span class="p">])</span>
- <span class="n">out</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
+ <span class="n">out</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span></div>
+
-</div>
<div class="viewcode-block" id="quiet_genparam_callback"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.util.quiet_genparam_callback">[docs]</a><span class="k">def</span> <span class="nf">quiet_genparam_callback</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">out</span><span class="p">):</span>
<span class="c1"># type: (Any, Any, Any) -&gt; None</span>
- <span class="k">pass</span>
+ <span class="k">pass</span></div>
+
-</div>
<div class="viewcode-block" id="passphrase_callback"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.util.passphrase_callback">[docs]</a><span class="k">def</span> <span class="nf">passphrase_callback</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">prompt1</span><span class="o">=</span><span class="s1">&#39;Enter passphrase:&#39;</span><span class="p">,</span>
<span class="n">prompt2</span><span class="o">=</span><span class="s1">&#39;Verify passphrase:&#39;</span><span class="p">):</span>
<span class="c1"># type: (bool, str, str) -&gt; Optional[str]</span>
- <span class="kn">from</span> <span class="nn">getpass</span> <span class="kn">import</span> <span class="n">getpass</span>
+ <span class="kn">from</span> <span class="nn">getpass</span> <span class="k">import</span> <span class="n">getpass</span>
<span class="k">while</span> <span class="mi">1</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">p1</span> <span class="o">=</span> <span class="n">getpass</span><span class="p">(</span><span class="n">prompt1</span><span class="p">)</span>
@@ -171,53 +169,53 @@
<span class="k">else</span><span class="p">:</span>
<span class="k">break</span>
<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">None</span>
- <span class="k">return</span> <span class="n">p1</span>
+ <span class="k">return</span> <span class="kc">None</span>
+ <span class="k">return</span> <span class="n">p1</span></div>
+
-</div>
<div class="viewcode-block" id="no_passphrase_callback"><a class="viewcode-back" href="../../M2Crypto.html#M2Crypto.util.no_passphrase_callback">[docs]</a><span class="k">def</span> <span class="nf">no_passphrase_callback</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">):</span>
- <span class="c1"># type: (List[Any]) -&gt; str</span>
+ <span class="c1"># type: (*Any) -&gt; str</span>
<span class="k">return</span> <span class="s1">&#39;&#39;</span></div>
</pre></div>
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../../index.html">Documentation overview</a><ul>
+ <li><a href="../index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../../index.html">M2Crypto documentation</a> &raquo;</li>
- <li><a href="../index.html" >Module code</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/index.html b/doc/html/_modules/index.html
index 872a977..83a3756 100644
--- a/doc/html/_modules/index.html
+++ b/doc/html/_modules/index.html
@@ -1,50 +1,42 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Overview: module code &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="../_static/default.css" type="text/css" />
+ <title>Overview: module code &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="../index.html" />
+ <link rel="index" title="Index" href="../genindex.html" />
+ <link rel="search" title="Search" href="../search.html" />
+
+ <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>All modules for which code is available</h1>
<ul><li><a href="M2Crypto/ASN1.html">M2Crypto.ASN1</a></li>
@@ -57,10 +49,6 @@
<li><a href="M2Crypto/EVP.html">M2Crypto.EVP</a></li>
<li><a href="M2Crypto/Engine.html">M2Crypto.Engine</a></li>
<li><a href="M2Crypto/Err.html">M2Crypto.Err</a></li>
-<li><a href="M2Crypto/PGP/PublicKey.html">M2Crypto.PGP.PublicKey</a></li>
-<li><a href="M2Crypto/PGP/PublicKeyRing.html">M2Crypto.PGP.PublicKeyRing</a></li>
-<li><a href="M2Crypto/PGP/RSA.html">M2Crypto.PGP.RSA</a></li>
-<li><a href="M2Crypto/PGP/packet.html">M2Crypto.PGP.packet</a></li>
<li><a href="M2Crypto/RC4.html">M2Crypto.RC4</a></li>
<li><a href="M2Crypto/RSA.html">M2Crypto.RSA</a></li>
<li><a href="M2Crypto/Rand.html">M2Crypto.Rand</a></li>
@@ -77,53 +65,53 @@
<li><a href="M2Crypto/SSL/ssl_dispatcher.html">M2Crypto.SSL.ssl_dispatcher</a></li>
<li><a href="M2Crypto/SSL/timeout.html">M2Crypto.SSL.timeout</a></li>
</ul><li><a href="M2Crypto/X509.html">M2Crypto.X509</a></li>
+<li><a href="M2Crypto/_m2crypto.html">M2Crypto._m2crypto</a></li>
<li><a href="M2Crypto/ftpslib.html">M2Crypto.ftpslib</a></li>
<li><a href="M2Crypto/httpslib.html">M2Crypto.httpslib</a></li>
-<li><a href="M2Crypto/m2crypto.html">M2Crypto.m2crypto</a></li>
<li><a href="M2Crypto/m2urllib.html">M2Crypto.m2urllib</a></li>
<li><a href="M2Crypto/m2urllib2.html">M2Crypto.m2urllib2</a></li>
<li><a href="M2Crypto/m2xmlrpclib.html">M2Crypto.m2xmlrpclib</a></li>
<li><a href="M2Crypto/threading.html">M2Crypto.threading</a></li>
<li><a href="M2Crypto/util.html">M2Crypto.util</a></li>
+<li><a href="urllib2.html">urllib2</a></li>
</ul>
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../index.html">Documentation overview</a><ul>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="../index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/_modules/urllib2.html b/doc/html/_modules/urllib2.html
new file mode 100644
index 0000000..bf30410
--- /dev/null
+++ b/doc/html/_modules/urllib2.html
@@ -0,0 +1,1575 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>urllib2 &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
+ <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../',
+ VERSION: '',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
+ };
+ </script>
+ <script type="text/javascript" src="../_static/jquery.js"></script>
+ <script type="text/javascript" src="../_static/underscore.js"></script>
+ <script type="text/javascript" src="../_static/doctools.js"></script>
+ <link rel="index" title="Index" href="../genindex.html" />
+ <link rel="search" title="Search" href="../search.html" />
+
+ <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
+ </head>
+ <body>
+
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body" role="main">
+
+ <h1>Source code for urllib2</h1><div class="highlight"><pre>
+<span></span><span class="sd">&quot;&quot;&quot;An extensible library for opening URLs using a variety of protocols</span>
+
+<span class="sd">The simplest way to use this module is to call the urlopen function,</span>
+<span class="sd">which accepts a string containing a URL or a Request object (described</span>
+<span class="sd">below). It opens the URL and returns the results as file-like</span>
+<span class="sd">object; the returned object has some extra methods described below.</span>
+
+<span class="sd">The OpenerDirector manages a collection of Handler objects that do</span>
+<span class="sd">all the actual work. Each Handler implements a particular protocol or</span>
+<span class="sd">option. The OpenerDirector is a composite object that invokes the</span>
+<span class="sd">Handlers needed to open the requested URL. For example, the</span>
+<span class="sd">HTTPHandler performs HTTP GET and POST requests and deals with</span>
+<span class="sd">non-error returns. The HTTPRedirectHandler automatically deals with</span>
+<span class="sd">HTTP 301, 302, 303 and 307 redirect errors, and the HTTPDigestAuthHandler</span>
+<span class="sd">deals with digest authentication.</span>
+
+<span class="sd">urlopen(url, data=None) -- Basic usage is the same as original</span>
+<span class="sd">urllib. pass the url and optionally data to post to an HTTP URL, and</span>
+<span class="sd">get a file-like object back. One difference is that you can also pass</span>
+<span class="sd">a Request instance instead of URL. Raises a URLError (subclass of</span>
+<span class="sd">IOError); for HTTP errors, raises an HTTPError, which can also be</span>
+<span class="sd">treated as a valid response.</span>
+
+<span class="sd">build_opener -- Function that creates a new OpenerDirector instance.</span>
+<span class="sd">Will install the default handlers. Accepts one or more Handlers as</span>
+<span class="sd">arguments, either instances or Handler classes that it will</span>
+<span class="sd">instantiate. If one of the argument is a subclass of the default</span>
+<span class="sd">handler, the argument will be installed instead of the default.</span>
+
+<span class="sd">install_opener -- Installs a new opener as the default opener.</span>
+
+<span class="sd">objects of interest:</span>
+
+<span class="sd">OpenerDirector -- Sets up the User Agent as the Python-urllib client and manages</span>
+<span class="sd">the Handler classes, while dealing with requests and responses.</span>
+
+<span class="sd">Request -- An object that encapsulates the state of a request. The</span>
+<span class="sd">state can be as simple as the URL. It can also include extra HTTP</span>
+<span class="sd">headers, e.g. a User-Agent.</span>
+
+<span class="sd">BaseHandler --</span>
+
+<span class="sd">exceptions:</span>
+<span class="sd">URLError -- A subclass of IOError, individual protocols have their own</span>
+<span class="sd">specific subclass.</span>
+
+<span class="sd">HTTPError -- Also a valid HTTP response, so you can treat an HTTP error</span>
+<span class="sd">as an exceptional event or valid response.</span>
+
+<span class="sd">internals:</span>
+<span class="sd">BaseHandler and parent</span>
+<span class="sd">_call_chain conventions</span>
+
+<span class="sd">Example usage:</span>
+
+<span class="sd">import urllib2</span>
+
+<span class="sd"># set up authentication info</span>
+<span class="sd">authinfo = urllib2.HTTPBasicAuthHandler()</span>
+<span class="sd">authinfo.add_password(realm=&#39;PDQ Application&#39;,</span>
+<span class="sd"> uri=&#39;https://mahler:8092/site-updates.py&#39;,</span>
+<span class="sd"> user=&#39;klem&#39;,</span>
+<span class="sd"> passwd=&#39;geheim$parole&#39;)</span>
+
+<span class="sd">proxy_support = urllib2.ProxyHandler({&quot;http&quot; : &quot;http://ahad-haam:3128&quot;})</span>
+
+<span class="sd"># build a new opener that adds authentication and caching FTP handlers</span>
+<span class="sd">opener = urllib2.build_opener(proxy_support, authinfo, urllib2.CacheFTPHandler)</span>
+
+<span class="sd"># install it</span>
+<span class="sd">urllib2.install_opener(opener)</span>
+
+<span class="sd">f = urllib2.urlopen(&#39;http://www.python.org/&#39;)</span>
+
+
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="c1"># XXX issues:</span>
+<span class="c1"># If an authentication error handler that tries to perform</span>
+<span class="c1"># authentication for some reason but fails, how should the error be</span>
+<span class="c1"># signalled? The client needs to know the HTTP error code. But if</span>
+<span class="c1"># the handler knows that the problem was, e.g., that it didn&#39;t know</span>
+<span class="c1"># that hash algo that requested in the challenge, it would be good to</span>
+<span class="c1"># pass that information along to the client, too.</span>
+<span class="c1"># ftp errors aren&#39;t handled cleanly</span>
+<span class="c1"># check digest against correct (i.e. non-apache) implementation</span>
+
+<span class="c1"># Possible extensions:</span>
+<span class="c1"># complex proxies XXX not sure what exactly was meant by this</span>
+<span class="c1"># abstract factory for opener</span>
+
+<span class="kn">import</span> <span class="nn">base64</span>
+<span class="kn">import</span> <span class="nn">hashlib</span>
+<span class="kn">import</span> <span class="nn">httplib</span>
+<span class="kn">import</span> <span class="nn">mimetools</span>
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">posixpath</span>
+<span class="kn">import</span> <span class="nn">random</span>
+<span class="kn">import</span> <span class="nn">re</span>
+<span class="kn">import</span> <span class="nn">socket</span>
+<span class="kn">import</span> <span class="nn">sys</span>
+<span class="kn">import</span> <span class="nn">time</span>
+<span class="kn">import</span> <span class="nn">urlparse</span>
+<span class="kn">import</span> <span class="nn">bisect</span>
+<span class="kn">import</span> <span class="nn">warnings</span>
+
+<span class="k">try</span><span class="p">:</span>
+ <span class="kn">from</span> <span class="nn">cStringIO</span> <span class="k">import</span> <span class="n">StringIO</span>
+<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
+ <span class="kn">from</span> <span class="nn">StringIO</span> <span class="k">import</span> <span class="n">StringIO</span>
+
+<span class="c1"># check for SSL</span>
+<span class="k">try</span><span class="p">:</span>
+ <span class="kn">import</span> <span class="nn">ssl</span>
+<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
+ <span class="n">_have_ssl</span> <span class="o">=</span> <span class="kc">False</span>
+<span class="k">else</span><span class="p">:</span>
+ <span class="n">_have_ssl</span> <span class="o">=</span> <span class="kc">True</span>
+
+<span class="kn">from</span> <span class="nn">urllib</span> <span class="k">import</span> <span class="p">(</span><span class="n">unwrap</span><span class="p">,</span> <span class="n">unquote</span><span class="p">,</span> <span class="n">splittype</span><span class="p">,</span> <span class="n">splithost</span><span class="p">,</span> <span class="n">quote</span><span class="p">,</span>
+ <span class="n">addinfourl</span><span class="p">,</span> <span class="n">splitport</span><span class="p">,</span> <span class="n">splittag</span><span class="p">,</span> <span class="n">toBytes</span><span class="p">,</span>
+ <span class="n">splitattr</span><span class="p">,</span> <span class="n">ftpwrapper</span><span class="p">,</span> <span class="n">splituser</span><span class="p">,</span> <span class="n">splitpasswd</span><span class="p">,</span> <span class="n">splitvalue</span><span class="p">)</span>
+
+<span class="c1"># support for FileHandler, proxies via environment variables</span>
+<span class="kn">from</span> <span class="nn">urllib</span> <span class="k">import</span> <span class="n">localhost</span><span class="p">,</span> <span class="n">url2pathname</span><span class="p">,</span> <span class="n">getproxies</span><span class="p">,</span> <span class="n">proxy_bypass</span>
+
+<span class="c1"># used in User-Agent header sent</span>
+<span class="n">__version__</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">version</span><span class="p">[:</span><span class="mi">3</span><span class="p">]</span>
+
+<span class="n">_opener</span> <span class="o">=</span> <span class="kc">None</span>
+<span class="k">def</span> <span class="nf">urlopen</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">socket</span><span class="o">.</span><span class="n">_GLOBAL_DEFAULT_TIMEOUT</span><span class="p">,</span>
+ <span class="n">cafile</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">capath</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">cadefault</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="k">global</span> <span class="n">_opener</span>
+ <span class="k">if</span> <span class="n">cafile</span> <span class="ow">or</span> <span class="n">capath</span> <span class="ow">or</span> <span class="n">cadefault</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">context</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
+ <span class="s2">&quot;You can&#39;t pass both context and any of cafile, capath, and &quot;</span>
+ <span class="s2">&quot;cadefault&quot;</span>
+ <span class="p">)</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">_have_ssl</span><span class="p">:</span>
+ <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">&#39;SSL support not available&#39;</span><span class="p">)</span>
+ <span class="n">context</span> <span class="o">=</span> <span class="n">ssl</span><span class="o">.</span><span class="n">create_default_context</span><span class="p">(</span><span class="n">purpose</span><span class="o">=</span><span class="n">ssl</span><span class="o">.</span><span class="n">Purpose</span><span class="o">.</span><span class="n">SERVER_AUTH</span><span class="p">,</span>
+ <span class="n">cafile</span><span class="o">=</span><span class="n">cafile</span><span class="p">,</span>
+ <span class="n">capath</span><span class="o">=</span><span class="n">capath</span><span class="p">)</span>
+ <span class="n">https_handler</span> <span class="o">=</span> <span class="n">HTTPSHandler</span><span class="p">(</span><span class="n">context</span><span class="o">=</span><span class="n">context</span><span class="p">)</span>
+ <span class="n">opener</span> <span class="o">=</span> <span class="n">build_opener</span><span class="p">(</span><span class="n">https_handler</span><span class="p">)</span>
+ <span class="k">elif</span> <span class="n">context</span><span class="p">:</span>
+ <span class="n">https_handler</span> <span class="o">=</span> <span class="n">HTTPSHandler</span><span class="p">(</span><span class="n">context</span><span class="o">=</span><span class="n">context</span><span class="p">)</span>
+ <span class="n">opener</span> <span class="o">=</span> <span class="n">build_opener</span><span class="p">(</span><span class="n">https_handler</span><span class="p">)</span>
+ <span class="k">elif</span> <span class="n">_opener</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">_opener</span> <span class="o">=</span> <span class="n">opener</span> <span class="o">=</span> <span class="n">build_opener</span><span class="p">()</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">opener</span> <span class="o">=</span> <span class="n">_opener</span>
+ <span class="k">return</span> <span class="n">opener</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">timeout</span><span class="p">)</span>
+
+<span class="k">def</span> <span class="nf">install_opener</span><span class="p">(</span><span class="n">opener</span><span class="p">):</span>
+ <span class="k">global</span> <span class="n">_opener</span>
+ <span class="n">_opener</span> <span class="o">=</span> <span class="n">opener</span>
+
+<span class="c1"># do these error classes make sense?</span>
+<span class="c1"># make sure all of the IOError stuff is overridden. we just want to be</span>
+<span class="c1"># subtypes.</span>
+
+<span class="k">class</span> <span class="nc">URLError</span><span class="p">(</span><span class="ne">IOError</span><span class="p">):</span>
+ <span class="c1"># URLError is a sub-type of IOError, but it doesn&#39;t share any of</span>
+ <span class="c1"># the implementation. need to override __init__ and __str__.</span>
+ <span class="c1"># It sets self.args for compatibility with other EnvironmentError</span>
+ <span class="c1"># subclasses, but args doesn&#39;t have the typical format with errno in</span>
+ <span class="c1"># slot 0 and strerror in slot 1. This may be better than nothing.</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">reason</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="o">=</span> <span class="n">reason</span><span class="p">,</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">reason</span> <span class="o">=</span> <span class="n">reason</span>
+
+ <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">return</span> <span class="s1">&#39;&lt;urlopen error </span><span class="si">%s</span><span class="s1">&gt;&#39;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">reason</span>
+
+<span class="k">class</span> <span class="nc">HTTPError</span><span class="p">(</span><span class="n">URLError</span><span class="p">,</span> <span class="n">addinfourl</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;Raised when HTTP error occurs, but also acts like non-error return&quot;&quot;&quot;</span>
+ <span class="n">__super_init</span> <span class="o">=</span> <span class="n">addinfourl</span><span class="o">.</span><span class="fm">__init__</span>
+
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">code</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">hdrs</span><span class="p">,</span> <span class="n">fp</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">code</span> <span class="o">=</span> <span class="n">code</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">msg</span> <span class="o">=</span> <span class="n">msg</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">hdrs</span> <span class="o">=</span> <span class="n">hdrs</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">fp</span> <span class="o">=</span> <span class="n">fp</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">filename</span> <span class="o">=</span> <span class="n">url</span>
+ <span class="c1"># The addinfourl classes depend on fp being a valid file</span>
+ <span class="c1"># object. In some cases, the HTTPError may not have a valid</span>
+ <span class="c1"># file object. If this happens, the simplest workaround is to</span>
+ <span class="c1"># not initialize the base classes.</span>
+ <span class="k">if</span> <span class="n">fp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">__super_init</span><span class="p">(</span><span class="n">fp</span><span class="p">,</span> <span class="n">hdrs</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">code</span><span class="p">)</span>
+
+ <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">return</span> <span class="s1">&#39;HTTP Error </span><span class="si">%s</span><span class="s1">: </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">code</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">)</span>
+
+ <span class="c1"># since URLError specifies a .reason attribute, HTTPError should also</span>
+ <span class="c1"># provide this attribute. See issue13211 fo discussion.</span>
+ <span class="nd">@property</span>
+ <span class="k">def</span> <span class="nf">reason</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">msg</span>
+
+ <span class="k">def</span> <span class="nf">info</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">hdrs</span>
+
+<span class="c1"># copied from cookielib.py</span>
+<span class="n">_cut_port_re</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;:\d+$&quot;</span><span class="p">)</span>
+<span class="k">def</span> <span class="nf">request_host</span><span class="p">(</span><span class="n">request</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;Return request-host, as defined by RFC 2965.</span>
+
+<span class="sd"> Variation from RFC: returned value is lowercased, for convenient</span>
+<span class="sd"> comparison.</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="n">url</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">get_full_url</span><span class="p">()</span>
+ <span class="n">host</span> <span class="o">=</span> <span class="n">urlparse</span><span class="o">.</span><span class="n">urlparse</span><span class="p">(</span><span class="n">url</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">host</span> <span class="o">==</span> <span class="s2">&quot;&quot;</span><span class="p">:</span>
+ <span class="n">host</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">get_header</span><span class="p">(</span><span class="s2">&quot;Host&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span>
+
+ <span class="c1"># remove port, if present</span>
+ <span class="n">host</span> <span class="o">=</span> <span class="n">_cut_port_re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">host</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
+
+<span class="k">class</span> <span class="nc">Request</span><span class="p">:</span>
+
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">headers</span><span class="o">=</span><span class="p">{},</span>
+ <span class="n">origin_req_host</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">unverifiable</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+ <span class="c1"># unwrap(&#39;&lt;URL:type://host/path&gt;&#39;) --&gt; &#39;type://host/path&#39;</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">__original</span> <span class="o">=</span> <span class="n">unwrap</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">__original</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">__fragment</span> <span class="o">=</span> <span class="n">splittag</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__original</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="c1"># self.__r_type is what&#39;s left after doing the splittype</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">host</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">port</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">_tunnel_host</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">data</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">headers</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">headers</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">add_header</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">unredirected_hdrs</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="k">if</span> <span class="n">origin_req_host</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">origin_req_host</span> <span class="o">=</span> <span class="n">request_host</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">origin_req_host</span> <span class="o">=</span> <span class="n">origin_req_host</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">unverifiable</span> <span class="o">=</span> <span class="n">unverifiable</span>
+
+ <span class="k">def</span> <span class="nf">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attr</span><span class="p">):</span>
+ <span class="c1"># XXX this is a fallback mechanism to guard against these</span>
+ <span class="c1"># methods getting called in a non-standard order. this may be</span>
+ <span class="c1"># too complicated and/or unnecessary.</span>
+ <span class="c1"># XXX should the __r_XXX attributes be public?</span>
+ <span class="k">if</span> <span class="n">attr</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;_Request__r_type&#39;</span><span class="p">,</span> <span class="s1">&#39;_Request__r_host&#39;</span><span class="p">):</span>
+ <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;get_&#39;</span> <span class="o">+</span> <span class="n">attr</span><span class="p">[</span><span class="mi">12</span><span class="p">:])()</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">[</span><span class="n">attr</span><span class="p">]</span>
+ <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">,</span> <span class="n">attr</span>
+
+ <span class="k">def</span> <span class="nf">get_method</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_data</span><span class="p">():</span>
+ <span class="k">return</span> <span class="s2">&quot;POST&quot;</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">return</span> <span class="s2">&quot;GET&quot;</span>
+
+ <span class="c1"># XXX these helper methods are lame</span>
+
+ <span class="k">def</span> <span class="nf">add_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">data</span>
+
+ <span class="k">def</span> <span class="nf">has_data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
+
+ <span class="k">def</span> <span class="nf">get_data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span>
+
+ <span class="k">def</span> <span class="nf">get_full_url</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">__fragment</span><span class="p">:</span>
+ <span class="k">return</span> <span class="s1">&#39;</span><span class="si">%s</span><span class="s1">#</span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__original</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">__fragment</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__original</span>
+
+ <span class="k">def</span> <span class="nf">get_type</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">__r_type</span> <span class="o">=</span> <span class="n">splittype</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__original</span><span class="p">)</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="s2">&quot;unknown url type: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">__original</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span>
+
+ <span class="k">def</span> <span class="nf">get_host</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">__r_host</span> <span class="o">=</span> <span class="n">splithost</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__r_type</span><span class="p">)</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">host</span> <span class="o">=</span> <span class="n">unquote</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span>
+
+ <span class="k">def</span> <span class="nf">get_selector</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__r_host</span>
+
+ <span class="k">def</span> <span class="nf">set_proxy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="nb">type</span><span class="p">):</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">&#39;https&#39;</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tunnel_host</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">_tunnel_host</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">host</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="nb">type</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">__r_host</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__original</span>
+
+ <span class="bp">self</span><span class="o">.</span><span class="n">host</span> <span class="o">=</span> <span class="n">host</span>
+
+ <span class="k">def</span> <span class="nf">has_proxy</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__r_host</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">__original</span>
+
+ <span class="k">def</span> <span class="nf">get_origin_req_host</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">origin_req_host</span>
+
+ <span class="k">def</span> <span class="nf">is_unverifiable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">unverifiable</span>
+
+ <span class="k">def</span> <span class="nf">add_header</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span><span class="p">):</span>
+ <span class="c1"># useful for something like authentication</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">headers</span><span class="p">[</span><span class="n">key</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()]</span> <span class="o">=</span> <span class="n">val</span>
+
+ <span class="k">def</span> <span class="nf">add_unredirected_header</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span><span class="p">):</span>
+ <span class="c1"># will not be added to a redirected request</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">unredirected_hdrs</span><span class="p">[</span><span class="n">key</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()]</span> <span class="o">=</span> <span class="n">val</span>
+
+ <span class="k">def</span> <span class="nf">has_header</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">header_name</span><span class="p">):</span>
+ <span class="k">return</span> <span class="p">(</span><span class="n">header_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">headers</span> <span class="ow">or</span>
+ <span class="n">header_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">unredirected_hdrs</span><span class="p">)</span>
+
+ <span class="k">def</span> <span class="nf">get_header</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">header_name</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">headers</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
+ <span class="n">header_name</span><span class="p">,</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">unredirected_hdrs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">header_name</span><span class="p">,</span> <span class="n">default</span><span class="p">))</span>
+
+ <span class="k">def</span> <span class="nf">header_items</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="n">hdrs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">unredirected_hdrs</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
+ <span class="n">hdrs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">headers</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">hdrs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
+
+<span class="k">class</span> <span class="nc">OpenerDirector</span><span class="p">:</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="n">client_version</span> <span class="o">=</span> <span class="s2">&quot;Python-urllib/</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">__version__</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">addheaders</span> <span class="o">=</span> <span class="p">[(</span><span class="s1">&#39;User-agent&#39;</span><span class="p">,</span> <span class="n">client_version</span><span class="p">)]</span>
+ <span class="c1"># self.handlers is retained only for backward compatibility</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">handlers</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="c1"># manage the individual handlers</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">handle_open</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">handle_error</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">process_response</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">process_request</span> <span class="o">=</span> <span class="p">{}</span>
+
+ <span class="k">def</span> <span class="nf">add_handler</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handler</span><span class="p">):</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">handler</span><span class="p">,</span> <span class="s2">&quot;add_parent&quot;</span><span class="p">):</span>
+ <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;expected BaseHandler instance, got </span><span class="si">%r</span><span class="s2">&quot;</span> <span class="o">%</span>
+ <span class="nb">type</span><span class="p">(</span><span class="n">handler</span><span class="p">))</span>
+
+ <span class="n">added</span> <span class="o">=</span> <span class="kc">False</span>
+ <span class="k">for</span> <span class="n">meth</span> <span class="ow">in</span> <span class="nb">dir</span><span class="p">(</span><span class="n">handler</span><span class="p">):</span>
+ <span class="k">if</span> <span class="n">meth</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;redirect_request&quot;</span><span class="p">,</span> <span class="s2">&quot;do_open&quot;</span><span class="p">,</span> <span class="s2">&quot;proxy_open&quot;</span><span class="p">]:</span>
+ <span class="c1"># oops, coincidental match</span>
+ <span class="k">continue</span>
+
+ <span class="n">i</span> <span class="o">=</span> <span class="n">meth</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;_&quot;</span><span class="p">)</span>
+ <span class="n">protocol</span> <span class="o">=</span> <span class="n">meth</span><span class="p">[:</span><span class="n">i</span><span class="p">]</span>
+ <span class="n">condition</span> <span class="o">=</span> <span class="n">meth</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">:]</span>
+
+ <span class="k">if</span> <span class="n">condition</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;error&quot;</span><span class="p">):</span>
+ <span class="n">j</span> <span class="o">=</span> <span class="n">condition</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;_&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span>
+ <span class="n">kind</span> <span class="o">=</span> <span class="n">meth</span><span class="p">[</span><span class="n">j</span><span class="o">+</span><span class="mi">1</span><span class="p">:]</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">kind</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">kind</span><span class="p">)</span>
+ <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
+ <span class="k">pass</span>
+ <span class="n">lookup</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">handle_error</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">protocol</span><span class="p">,</span> <span class="p">{})</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">handle_error</span><span class="p">[</span><span class="n">protocol</span><span class="p">]</span> <span class="o">=</span> <span class="n">lookup</span>
+ <span class="k">elif</span> <span class="n">condition</span> <span class="o">==</span> <span class="s2">&quot;open&quot;</span><span class="p">:</span>
+ <span class="n">kind</span> <span class="o">=</span> <span class="n">protocol</span>
+ <span class="n">lookup</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">handle_open</span>
+ <span class="k">elif</span> <span class="n">condition</span> <span class="o">==</span> <span class="s2">&quot;response&quot;</span><span class="p">:</span>
+ <span class="n">kind</span> <span class="o">=</span> <span class="n">protocol</span>
+ <span class="n">lookup</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">process_response</span>
+ <span class="k">elif</span> <span class="n">condition</span> <span class="o">==</span> <span class="s2">&quot;request&quot;</span><span class="p">:</span>
+ <span class="n">kind</span> <span class="o">=</span> <span class="n">protocol</span>
+ <span class="n">lookup</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">process_request</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">continue</span>
+
+ <span class="n">handlers</span> <span class="o">=</span> <span class="n">lookup</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">kind</span><span class="p">,</span> <span class="p">[])</span>
+ <span class="k">if</span> <span class="n">handlers</span><span class="p">:</span>
+ <span class="n">bisect</span><span class="o">.</span><span class="n">insort</span><span class="p">(</span><span class="n">handlers</span><span class="p">,</span> <span class="n">handler</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">handlers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">handler</span><span class="p">)</span>
+ <span class="n">added</span> <span class="o">=</span> <span class="kc">True</span>
+
+ <span class="k">if</span> <span class="n">added</span><span class="p">:</span>
+ <span class="n">bisect</span><span class="o">.</span><span class="n">insort</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handlers</span><span class="p">,</span> <span class="n">handler</span><span class="p">)</span>
+ <span class="n">handler</span><span class="o">.</span><span class="n">add_parent</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
+
+ <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="c1"># Only exists for backwards compatibility.</span>
+ <span class="k">pass</span>
+
+ <span class="k">def</span> <span class="nf">_call_chain</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">chain</span><span class="p">,</span> <span class="n">kind</span><span class="p">,</span> <span class="n">meth_name</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
+ <span class="c1"># Handlers raise an exception if no one else should try to handle</span>
+ <span class="c1"># the request, or return None if they can&#39;t but another handler</span>
+ <span class="c1"># could. Otherwise, they return the response.</span>
+ <span class="n">handlers</span> <span class="o">=</span> <span class="n">chain</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">kind</span><span class="p">,</span> <span class="p">())</span>
+ <span class="k">for</span> <span class="n">handler</span> <span class="ow">in</span> <span class="n">handlers</span><span class="p">:</span>
+ <span class="n">func</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">handler</span><span class="p">,</span> <span class="n">meth_name</span><span class="p">)</span>
+
+ <span class="n">result</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">result</span>
+
+ <span class="k">def</span> <span class="nf">open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fullurl</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">socket</span><span class="o">.</span><span class="n">_GLOBAL_DEFAULT_TIMEOUT</span><span class="p">):</span>
+ <span class="c1"># accept a URL or a Request object</span>
+ <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">fullurl</span><span class="p">,</span> <span class="n">basestring</span><span class="p">):</span>
+ <span class="n">req</span> <span class="o">=</span> <span class="n">Request</span><span class="p">(</span><span class="n">fullurl</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">req</span> <span class="o">=</span> <span class="n">fullurl</span>
+ <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">req</span><span class="o">.</span><span class="n">add_data</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
+
+ <span class="n">req</span><span class="o">.</span><span class="n">timeout</span> <span class="o">=</span> <span class="n">timeout</span>
+ <span class="n">protocol</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span>
+
+ <span class="c1"># pre-process request</span>
+ <span class="n">meth_name</span> <span class="o">=</span> <span class="n">protocol</span><span class="o">+</span><span class="s2">&quot;_request&quot;</span>
+ <span class="k">for</span> <span class="n">processor</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">process_request</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">protocol</span><span class="p">,</span> <span class="p">[]):</span>
+ <span class="n">meth</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">processor</span><span class="p">,</span> <span class="n">meth_name</span><span class="p">)</span>
+ <span class="n">req</span> <span class="o">=</span> <span class="n">meth</span><span class="p">(</span><span class="n">req</span><span class="p">)</span>
+
+ <span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_open</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
+
+ <span class="c1"># post-process response</span>
+ <span class="n">meth_name</span> <span class="o">=</span> <span class="n">protocol</span><span class="o">+</span><span class="s2">&quot;_response&quot;</span>
+ <span class="k">for</span> <span class="n">processor</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">process_response</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">protocol</span><span class="p">,</span> <span class="p">[]):</span>
+ <span class="n">meth</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">processor</span><span class="p">,</span> <span class="n">meth_name</span><span class="p">)</span>
+ <span class="n">response</span> <span class="o">=</span> <span class="n">meth</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">response</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="n">response</span>
+
+ <span class="k">def</span> <span class="nf">_open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_call_chain</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle_open</span><span class="p">,</span> <span class="s1">&#39;default&#39;</span><span class="p">,</span>
+ <span class="s1">&#39;default_open&#39;</span><span class="p">,</span> <span class="n">req</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">result</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">result</span>
+
+ <span class="n">protocol</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span>
+ <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_call_chain</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle_open</span><span class="p">,</span> <span class="n">protocol</span><span class="p">,</span> <span class="n">protocol</span> <span class="o">+</span>
+ <span class="s1">&#39;_open&#39;</span><span class="p">,</span> <span class="n">req</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">result</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">result</span>
+
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_call_chain</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle_open</span><span class="p">,</span> <span class="s1">&#39;unknown&#39;</span><span class="p">,</span>
+ <span class="s1">&#39;unknown_open&#39;</span><span class="p">,</span> <span class="n">req</span><span class="p">)</span>
+
+ <span class="k">def</span> <span class="nf">error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">proto</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
+ <span class="k">if</span> <span class="n">proto</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;http&#39;</span><span class="p">,</span> <span class="s1">&#39;https&#39;</span><span class="p">):</span>
+ <span class="c1"># XXX http[s] protocols are special-cased</span>
+ <span class="nb">dict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">handle_error</span><span class="p">[</span><span class="s1">&#39;http&#39;</span><span class="p">]</span> <span class="c1"># https is not different than http</span>
+ <span class="n">proto</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># YUCK!</span>
+ <span class="n">meth_name</span> <span class="o">=</span> <span class="s1">&#39;http_error_</span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">proto</span>
+ <span class="n">http_err</span> <span class="o">=</span> <span class="mi">1</span>
+ <span class="n">orig_args</span> <span class="o">=</span> <span class="n">args</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="nb">dict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">handle_error</span>
+ <span class="n">meth_name</span> <span class="o">=</span> <span class="n">proto</span> <span class="o">+</span> <span class="s1">&#39;_error&#39;</span>
+ <span class="n">http_err</span> <span class="o">=</span> <span class="mi">0</span>
+ <span class="n">args</span> <span class="o">=</span> <span class="p">(</span><span class="nb">dict</span><span class="p">,</span> <span class="n">proto</span><span class="p">,</span> <span class="n">meth_name</span><span class="p">)</span> <span class="o">+</span> <span class="n">args</span>
+ <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_call_chain</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">result</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">result</span>
+
+ <span class="k">if</span> <span class="n">http_err</span><span class="p">:</span>
+ <span class="n">args</span> <span class="o">=</span> <span class="p">(</span><span class="nb">dict</span><span class="p">,</span> <span class="s1">&#39;default&#39;</span><span class="p">,</span> <span class="s1">&#39;http_error_default&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">orig_args</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_call_chain</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
+
+<span class="c1"># XXX probably also want an abstract factory that knows when it makes</span>
+<span class="c1"># sense to skip a superclass in favor of a subclass and when it might</span>
+<span class="c1"># make sense to include both</span>
+
+<span class="k">def</span> <span class="nf">build_opener</span><span class="p">(</span><span class="o">*</span><span class="n">handlers</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;Create an opener object from a list of handlers.</span>
+
+<span class="sd"> The opener will use several default handlers, including support</span>
+<span class="sd"> for HTTP, FTP and when applicable, HTTPS.</span>
+
+<span class="sd"> If any of the handlers passed as arguments are subclasses of the</span>
+<span class="sd"> default handlers, the default handlers will not be used.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="kn">import</span> <span class="nn">types</span>
+ <span class="k">def</span> <span class="nf">isclass</span><span class="p">(</span><span class="n">obj</span><span class="p">):</span>
+ <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">ClassType</span><span class="p">,</span> <span class="nb">type</span><span class="p">))</span>
+
+ <span class="n">opener</span> <span class="o">=</span> <span class="n">OpenerDirector</span><span class="p">()</span>
+ <span class="n">default_classes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ProxyHandler</span><span class="p">,</span> <span class="n">UnknownHandler</span><span class="p">,</span> <span class="n">HTTPHandler</span><span class="p">,</span>
+ <span class="n">HTTPDefaultErrorHandler</span><span class="p">,</span> <span class="n">HTTPRedirectHandler</span><span class="p">,</span>
+ <span class="n">FTPHandler</span><span class="p">,</span> <span class="n">FileHandler</span><span class="p">,</span> <span class="n">HTTPErrorProcessor</span><span class="p">]</span>
+ <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">httplib</span><span class="p">,</span> <span class="s1">&#39;HTTPS&#39;</span><span class="p">):</span>
+ <span class="n">default_classes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">HTTPSHandler</span><span class="p">)</span>
+ <span class="n">skip</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
+ <span class="k">for</span> <span class="n">klass</span> <span class="ow">in</span> <span class="n">default_classes</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">check</span> <span class="ow">in</span> <span class="n">handlers</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">isclass</span><span class="p">(</span><span class="n">check</span><span class="p">):</span>
+ <span class="k">if</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">check</span><span class="p">,</span> <span class="n">klass</span><span class="p">):</span>
+ <span class="n">skip</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">klass</span><span class="p">)</span>
+ <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">check</span><span class="p">,</span> <span class="n">klass</span><span class="p">):</span>
+ <span class="n">skip</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">klass</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">klass</span> <span class="ow">in</span> <span class="n">skip</span><span class="p">:</span>
+ <span class="n">default_classes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">klass</span><span class="p">)</span>
+
+ <span class="k">for</span> <span class="n">klass</span> <span class="ow">in</span> <span class="n">default_classes</span><span class="p">:</span>
+ <span class="n">opener</span><span class="o">.</span><span class="n">add_handler</span><span class="p">(</span><span class="n">klass</span><span class="p">())</span>
+
+ <span class="k">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">handlers</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">isclass</span><span class="p">(</span><span class="n">h</span><span class="p">):</span>
+ <span class="n">h</span> <span class="o">=</span> <span class="n">h</span><span class="p">()</span>
+ <span class="n">opener</span><span class="o">.</span><span class="n">add_handler</span><span class="p">(</span><span class="n">h</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">opener</span>
+
+<span class="k">class</span> <span class="nc">BaseHandler</span><span class="p">:</span>
+ <span class="n">handler_order</span> <span class="o">=</span> <span class="mi">500</span>
+
+ <span class="k">def</span> <span class="nf">add_parent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span>
+
+ <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="c1"># Only exists for backwards compatibility</span>
+ <span class="k">pass</span>
+
+ <span class="k">def</span> <span class="nf">__lt__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="s2">&quot;handler_order&quot;</span><span class="p">):</span>
+ <span class="c1"># Try to preserve the old behavior of having custom classes</span>
+ <span class="c1"># inserted after default ones (works only for custom user</span>
+ <span class="c1"># classes which are not aware of handler_order).</span>
+ <span class="k">return</span> <span class="kc">True</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">handler_order</span> <span class="o">&lt;</span> <span class="n">other</span><span class="o">.</span><span class="n">handler_order</span>
+
+
+<span class="k">class</span> <span class="nc">HTTPErrorProcessor</span><span class="p">(</span><span class="n">BaseHandler</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;Process HTTP error responses.&quot;&quot;&quot;</span>
+ <span class="n">handler_order</span> <span class="o">=</span> <span class="mi">1000</span> <span class="c1"># after all other processing</span>
+
+ <span class="k">def</span> <span class="nf">http_response</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">response</span><span class="p">):</span>
+ <span class="n">code</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">hdrs</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">code</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">msg</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">info</span><span class="p">()</span>
+
+ <span class="c1"># According to RFC 2616, &quot;2xx&quot; code indicates that the client&#39;s</span>
+ <span class="c1"># request was successfully received, understood, and accepted.</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="mi">200</span> <span class="o">&lt;=</span> <span class="n">code</span> <span class="o">&lt;</span> <span class="mi">300</span><span class="p">):</span>
+ <span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">error</span><span class="p">(</span>
+ <span class="s1">&#39;http&#39;</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">response</span><span class="p">,</span> <span class="n">code</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">hdrs</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="n">response</span>
+
+ <span class="n">https_response</span> <span class="o">=</span> <span class="n">http_response</span>
+
+<span class="k">class</span> <span class="nc">HTTPDefaultErrorHandler</span><span class="p">(</span><span class="n">BaseHandler</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">http_error_default</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">fp</span><span class="p">,</span> <span class="n">code</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">hdrs</span><span class="p">):</span>
+ <span class="k">raise</span> <span class="n">HTTPError</span><span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">get_full_url</span><span class="p">(),</span> <span class="n">code</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">hdrs</span><span class="p">,</span> <span class="n">fp</span><span class="p">)</span>
+
+<span class="k">class</span> <span class="nc">HTTPRedirectHandler</span><span class="p">(</span><span class="n">BaseHandler</span><span class="p">):</span>
+ <span class="c1"># maximum number of redirections to any single URL</span>
+ <span class="c1"># this is needed because of the state that cookies introduce</span>
+ <span class="n">max_repeats</span> <span class="o">=</span> <span class="mi">4</span>
+ <span class="c1"># maximum total number of redirections (regardless of URL) before</span>
+ <span class="c1"># assuming we&#39;re in a loop</span>
+ <span class="n">max_redirections</span> <span class="o">=</span> <span class="mi">10</span>
+
+ <span class="k">def</span> <span class="nf">redirect_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">fp</span><span class="p">,</span> <span class="n">code</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">headers</span><span class="p">,</span> <span class="n">newurl</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;Return a Request or None in response to a redirect.</span>
+
+<span class="sd"> This is called by the http_error_30x methods when a</span>
+<span class="sd"> redirection response is received. If a redirection should</span>
+<span class="sd"> take place, return a new Request to allow http_error_30x to</span>
+<span class="sd"> perform the redirect. Otherwise, raise HTTPError if no-one</span>
+<span class="sd"> else should try to handle this url. Return None if you can&#39;t</span>
+<span class="sd"> but another Handler might.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="n">m</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">get_method</span><span class="p">()</span>
+ <span class="k">if</span> <span class="p">(</span><span class="n">code</span> <span class="ow">in</span> <span class="p">(</span><span class="mi">301</span><span class="p">,</span> <span class="mi">302</span><span class="p">,</span> <span class="mi">303</span><span class="p">,</span> <span class="mi">307</span><span class="p">)</span> <span class="ow">and</span> <span class="n">m</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;GET&quot;</span><span class="p">,</span> <span class="s2">&quot;HEAD&quot;</span><span class="p">)</span>
+ <span class="ow">or</span> <span class="n">code</span> <span class="ow">in</span> <span class="p">(</span><span class="mi">301</span><span class="p">,</span> <span class="mi">302</span><span class="p">,</span> <span class="mi">303</span><span class="p">)</span> <span class="ow">and</span> <span class="n">m</span> <span class="o">==</span> <span class="s2">&quot;POST&quot;</span><span class="p">):</span>
+ <span class="c1"># Strictly (according to RFC 2616), 301 or 302 in response</span>
+ <span class="c1"># to a POST MUST NOT cause a redirection without confirmation</span>
+ <span class="c1"># from the user (of urllib2, in this case). In practice,</span>
+ <span class="c1"># essentially all clients do redirect in this case, so we</span>
+ <span class="c1"># do the same.</span>
+ <span class="c1"># be conciliant with URIs containing a space</span>
+ <span class="n">newurl</span> <span class="o">=</span> <span class="n">newurl</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39; &#39;</span><span class="p">,</span> <span class="s1">&#39;%20&#39;</span><span class="p">)</span>
+ <span class="n">newheaders</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">((</span><span class="n">k</span><span class="p">,</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span><span class="n">v</span> <span class="ow">in</span> <span class="n">req</span><span class="o">.</span><span class="n">headers</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">k</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;content-length&quot;</span><span class="p">,</span> <span class="s2">&quot;content-type&quot;</span><span class="p">)</span>
+ <span class="p">)</span>
+ <span class="k">return</span> <span class="n">Request</span><span class="p">(</span><span class="n">newurl</span><span class="p">,</span>
+ <span class="n">headers</span><span class="o">=</span><span class="n">newheaders</span><span class="p">,</span>
+ <span class="n">origin_req_host</span><span class="o">=</span><span class="n">req</span><span class="o">.</span><span class="n">get_origin_req_host</span><span class="p">(),</span>
+ <span class="n">unverifiable</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">raise</span> <span class="n">HTTPError</span><span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">get_full_url</span><span class="p">(),</span> <span class="n">code</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">headers</span><span class="p">,</span> <span class="n">fp</span><span class="p">)</span>
+
+ <span class="c1"># Implementation note: To avoid the server sending us into an</span>
+ <span class="c1"># infinite loop, the request object needs to track what URLs we</span>
+ <span class="c1"># have already seen. Do this by adding a handler-specific</span>
+ <span class="c1"># attribute to the Request object.</span>
+ <span class="k">def</span> <span class="nf">http_error_302</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">fp</span><span class="p">,</span> <span class="n">code</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">headers</span><span class="p">):</span>
+ <span class="c1"># Some servers (incorrectly) return multiple Location headers</span>
+ <span class="c1"># (so probably same goes for URI). Use first header.</span>
+ <span class="k">if</span> <span class="s1">&#39;location&#39;</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">:</span>
+ <span class="n">newurl</span> <span class="o">=</span> <span class="n">headers</span><span class="o">.</span><span class="n">getheaders</span><span class="p">(</span><span class="s1">&#39;location&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="k">elif</span> <span class="s1">&#39;uri&#39;</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">:</span>
+ <span class="n">newurl</span> <span class="o">=</span> <span class="n">headers</span><span class="o">.</span><span class="n">getheaders</span><span class="p">(</span><span class="s1">&#39;uri&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">return</span>
+
+ <span class="c1"># fix a possible malformed URL</span>
+ <span class="n">urlparts</span> <span class="o">=</span> <span class="n">urlparse</span><span class="o">.</span><span class="n">urlparse</span><span class="p">(</span><span class="n">newurl</span><span class="p">)</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">urlparts</span><span class="o">.</span><span class="n">path</span> <span class="ow">and</span> <span class="n">urlparts</span><span class="o">.</span><span class="n">netloc</span><span class="p">:</span>
+ <span class="n">urlparts</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">urlparts</span><span class="p">)</span>
+ <span class="n">urlparts</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;/&quot;</span>
+ <span class="n">newurl</span> <span class="o">=</span> <span class="n">urlparse</span><span class="o">.</span><span class="n">urlunparse</span><span class="p">(</span><span class="n">urlparts</span><span class="p">)</span>
+
+ <span class="n">newurl</span> <span class="o">=</span> <span class="n">urlparse</span><span class="o">.</span><span class="n">urljoin</span><span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">get_full_url</span><span class="p">(),</span> <span class="n">newurl</span><span class="p">)</span>
+
+ <span class="c1"># For security reasons we do not allow redirects to protocols</span>
+ <span class="c1"># other than HTTP, HTTPS or FTP.</span>
+ <span class="n">newurl_lower</span> <span class="o">=</span> <span class="n">newurl</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">newurl_lower</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">&#39;http://&#39;</span><span class="p">)</span> <span class="ow">or</span>
+ <span class="n">newurl_lower</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">&#39;https://&#39;</span><span class="p">)</span> <span class="ow">or</span>
+ <span class="n">newurl_lower</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">&#39;ftp://&#39;</span><span class="p">)):</span>
+ <span class="k">raise</span> <span class="n">HTTPError</span><span class="p">(</span><span class="n">newurl</span><span class="p">,</span> <span class="n">code</span><span class="p">,</span>
+ <span class="n">msg</span> <span class="o">+</span> <span class="s2">&quot; - Redirection to url &#39;</span><span class="si">%s</span><span class="s2">&#39; is not allowed&quot;</span> <span class="o">%</span>
+ <span class="n">newurl</span><span class="p">,</span>
+ <span class="n">headers</span><span class="p">,</span> <span class="n">fp</span><span class="p">)</span>
+
+ <span class="c1"># XXX Probably want to forget about the state of the current</span>
+ <span class="c1"># request, although that might interact poorly with other</span>
+ <span class="c1"># handlers that also use handler-specific request attributes</span>
+ <span class="n">new</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">redirect_request</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">fp</span><span class="p">,</span> <span class="n">code</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">headers</span><span class="p">,</span> <span class="n">newurl</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">new</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">return</span>
+
+ <span class="c1"># loop detection</span>
+ <span class="c1"># .redirect_dict has a key url if url was previously visited.</span>
+ <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="s1">&#39;redirect_dict&#39;</span><span class="p">):</span>
+ <span class="n">visited</span> <span class="o">=</span> <span class="n">new</span><span class="o">.</span><span class="n">redirect_dict</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">redirect_dict</span>
+ <span class="k">if</span> <span class="p">(</span><span class="n">visited</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">newurl</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_repeats</span> <span class="ow">or</span>
+ <span class="nb">len</span><span class="p">(</span><span class="n">visited</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_redirections</span><span class="p">):</span>
+ <span class="k">raise</span> <span class="n">HTTPError</span><span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">get_full_url</span><span class="p">(),</span> <span class="n">code</span><span class="p">,</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">inf_msg</span> <span class="o">+</span> <span class="n">msg</span><span class="p">,</span> <span class="n">headers</span><span class="p">,</span> <span class="n">fp</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">visited</span> <span class="o">=</span> <span class="n">new</span><span class="o">.</span><span class="n">redirect_dict</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">redirect_dict</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="n">visited</span><span class="p">[</span><span class="n">newurl</span><span class="p">]</span> <span class="o">=</span> <span class="n">visited</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">newurl</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span>
+
+ <span class="c1"># Don&#39;t close the fp until we are sure that we won&#39;t use it</span>
+ <span class="c1"># with HTTPError.</span>
+ <span class="n">fp</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+ <span class="n">fp</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">new</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">req</span><span class="o">.</span><span class="n">timeout</span><span class="p">)</span>
+
+ <span class="n">http_error_301</span> <span class="o">=</span> <span class="n">http_error_303</span> <span class="o">=</span> <span class="n">http_error_307</span> <span class="o">=</span> <span class="n">http_error_302</span>
+
+ <span class="n">inf_msg</span> <span class="o">=</span> <span class="s2">&quot;The HTTP server returned a redirect error that would &quot;</span> \
+ <span class="s2">&quot;lead to an infinite loop.</span><span class="se">\n</span><span class="s2">&quot;</span> \
+ <span class="s2">&quot;The last 30x error message was:</span><span class="se">\n</span><span class="s2">&quot;</span>
+
+
+<span class="k">def</span> <span class="nf">_parse_proxy</span><span class="p">(</span><span class="n">proxy</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;Return (scheme, user, password, host/port) given a URL or an authority.</span>
+
+<span class="sd"> If a URL is supplied, it must have an authority (host:port) component.</span>
+<span class="sd"> According to RFC 3986, having an authority component means the URL must</span>
+<span class="sd"> have two slashes after the scheme:</span>
+
+<span class="sd"> &gt;&gt;&gt; _parse_proxy(&#39;file:/ftp.example.com/&#39;)</span>
+<span class="sd"> Traceback (most recent call last):</span>
+<span class="sd"> ValueError: proxy URL with no authority: &#39;file:/ftp.example.com/&#39;</span>
+
+<span class="sd"> The first three items of the returned tuple may be None.</span>
+
+<span class="sd"> Examples of authority parsing:</span>
+
+<span class="sd"> &gt;&gt;&gt; _parse_proxy(&#39;proxy.example.com&#39;)</span>
+<span class="sd"> (None, None, None, &#39;proxy.example.com&#39;)</span>
+<span class="sd"> &gt;&gt;&gt; _parse_proxy(&#39;proxy.example.com:3128&#39;)</span>
+<span class="sd"> (None, None, None, &#39;proxy.example.com:3128&#39;)</span>
+
+<span class="sd"> The authority component may optionally include userinfo (assumed to be</span>
+<span class="sd"> username:password):</span>
+
+<span class="sd"> &gt;&gt;&gt; _parse_proxy(&#39;joe:password@proxy.example.com&#39;)</span>
+<span class="sd"> (None, &#39;joe&#39;, &#39;password&#39;, &#39;proxy.example.com&#39;)</span>
+<span class="sd"> &gt;&gt;&gt; _parse_proxy(&#39;joe:password@proxy.example.com:3128&#39;)</span>
+<span class="sd"> (None, &#39;joe&#39;, &#39;password&#39;, &#39;proxy.example.com:3128&#39;)</span>
+
+<span class="sd"> Same examples, but with URLs instead:</span>
+
+<span class="sd"> &gt;&gt;&gt; _parse_proxy(&#39;http://proxy.example.com/&#39;)</span>
+<span class="sd"> (&#39;http&#39;, None, None, &#39;proxy.example.com&#39;)</span>
+<span class="sd"> &gt;&gt;&gt; _parse_proxy(&#39;http://proxy.example.com:3128/&#39;)</span>
+<span class="sd"> (&#39;http&#39;, None, None, &#39;proxy.example.com:3128&#39;)</span>
+<span class="sd"> &gt;&gt;&gt; _parse_proxy(&#39;http://joe:password@proxy.example.com/&#39;)</span>
+<span class="sd"> (&#39;http&#39;, &#39;joe&#39;, &#39;password&#39;, &#39;proxy.example.com&#39;)</span>
+<span class="sd"> &gt;&gt;&gt; _parse_proxy(&#39;http://joe:password@proxy.example.com:3128&#39;)</span>
+<span class="sd"> (&#39;http&#39;, &#39;joe&#39;, &#39;password&#39;, &#39;proxy.example.com:3128&#39;)</span>
+
+<span class="sd"> Everything after the authority is ignored:</span>
+
+<span class="sd"> &gt;&gt;&gt; _parse_proxy(&#39;ftp://joe:password@proxy.example.com/rubbish:3128&#39;)</span>
+<span class="sd"> (&#39;ftp&#39;, &#39;joe&#39;, &#39;password&#39;, &#39;proxy.example.com&#39;)</span>
+
+<span class="sd"> Test for no trailing &#39;/&#39; case:</span>
+
+<span class="sd"> &gt;&gt;&gt; _parse_proxy(&#39;http://joe:password@proxy.example.com&#39;)</span>
+<span class="sd"> (&#39;http&#39;, &#39;joe&#39;, &#39;password&#39;, &#39;proxy.example.com&#39;)</span>
+
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="n">scheme</span><span class="p">,</span> <span class="n">r_scheme</span> <span class="o">=</span> <span class="n">splittype</span><span class="p">(</span><span class="n">proxy</span><span class="p">)</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">r_scheme</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">):</span>
+ <span class="c1"># authority</span>
+ <span class="n">scheme</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="n">authority</span> <span class="o">=</span> <span class="n">proxy</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="c1"># URL</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">r_scheme</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;//&quot;</span><span class="p">):</span>
+ <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;proxy URL with no authority: </span><span class="si">%r</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">proxy</span><span class="p">)</span>
+ <span class="c1"># We have an authority, so for RFC 3986-compliant URLs (by ss 3.</span>
+ <span class="c1"># and 3.3.), path is empty or starts with &#39;/&#39;</span>
+ <span class="n">end</span> <span class="o">=</span> <span class="n">r_scheme</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">end</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
+ <span class="n">end</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="n">authority</span> <span class="o">=</span> <span class="n">r_scheme</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="n">end</span><span class="p">]</span>
+ <span class="n">userinfo</span><span class="p">,</span> <span class="n">hostport</span> <span class="o">=</span> <span class="n">splituser</span><span class="p">(</span><span class="n">authority</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">userinfo</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">user</span><span class="p">,</span> <span class="n">password</span> <span class="o">=</span> <span class="n">splitpasswd</span><span class="p">(</span><span class="n">userinfo</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">user</span> <span class="o">=</span> <span class="n">password</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="k">return</span> <span class="n">scheme</span><span class="p">,</span> <span class="n">user</span><span class="p">,</span> <span class="n">password</span><span class="p">,</span> <span class="n">hostport</span>
+
+<span class="k">class</span> <span class="nc">ProxyHandler</span><span class="p">(</span><span class="n">BaseHandler</span><span class="p">):</span>
+ <span class="c1"># Proxies must be in front</span>
+ <span class="n">handler_order</span> <span class="o">=</span> <span class="mi">100</span>
+
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">proxies</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="k">if</span> <span class="n">proxies</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">proxies</span> <span class="o">=</span> <span class="n">getproxies</span><span class="p">()</span>
+ <span class="k">assert</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">proxies</span><span class="p">,</span> <span class="s1">&#39;has_key&#39;</span><span class="p">),</span> <span class="s2">&quot;proxies must be a mapping&quot;</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">proxies</span> <span class="o">=</span> <span class="n">proxies</span>
+ <span class="k">for</span> <span class="nb">type</span><span class="p">,</span> <span class="n">url</span> <span class="ow">in</span> <span class="n">proxies</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
+ <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;</span><span class="si">%s</span><span class="s1">_open&#39;</span> <span class="o">%</span> <span class="nb">type</span><span class="p">,</span>
+ <span class="k">lambda</span> <span class="n">r</span><span class="p">,</span> <span class="n">proxy</span><span class="o">=</span><span class="n">url</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="nb">type</span><span class="p">,</span> <span class="n">meth</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">proxy_open</span><span class="p">:</span> \
+ <span class="n">meth</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="n">proxy</span><span class="p">,</span> <span class="nb">type</span><span class="p">))</span>
+
+ <span class="k">def</span> <span class="nf">proxy_open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">proxy</span><span class="p">,</span> <span class="nb">type</span><span class="p">):</span>
+ <span class="n">orig_type</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span>
+ <span class="n">proxy_type</span><span class="p">,</span> <span class="n">user</span><span class="p">,</span> <span class="n">password</span><span class="p">,</span> <span class="n">hostport</span> <span class="o">=</span> <span class="n">_parse_proxy</span><span class="p">(</span><span class="n">proxy</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">proxy_type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">proxy_type</span> <span class="o">=</span> <span class="n">orig_type</span>
+
+ <span class="n">req</span><span class="o">.</span><span class="n">get_host</span><span class="p">()</span>
+
+ <span class="k">if</span> <span class="n">req</span><span class="o">.</span><span class="n">host</span> <span class="ow">and</span> <span class="n">proxy_bypass</span><span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">host</span><span class="p">):</span>
+ <span class="k">return</span> <span class="kc">None</span>
+
+ <span class="k">if</span> <span class="n">user</span> <span class="ow">and</span> <span class="n">password</span><span class="p">:</span>
+ <span class="n">user_pass</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="si">%s</span><span class="s1">:</span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">unquote</span><span class="p">(</span><span class="n">user</span><span class="p">),</span> <span class="n">unquote</span><span class="p">(</span><span class="n">password</span><span class="p">))</span>
+ <span class="n">creds</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">b64encode</span><span class="p">(</span><span class="n">user_pass</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
+ <span class="n">req</span><span class="o">.</span><span class="n">add_header</span><span class="p">(</span><span class="s1">&#39;Proxy-authorization&#39;</span><span class="p">,</span> <span class="s1">&#39;Basic &#39;</span> <span class="o">+</span> <span class="n">creds</span><span class="p">)</span>
+ <span class="n">hostport</span> <span class="o">=</span> <span class="n">unquote</span><span class="p">(</span><span class="n">hostport</span><span class="p">)</span>
+ <span class="n">req</span><span class="o">.</span><span class="n">set_proxy</span><span class="p">(</span><span class="n">hostport</span><span class="p">,</span> <span class="n">proxy_type</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">orig_type</span> <span class="o">==</span> <span class="n">proxy_type</span> <span class="ow">or</span> <span class="n">orig_type</span> <span class="o">==</span> <span class="s1">&#39;https&#39;</span><span class="p">:</span>
+ <span class="c1"># let other handlers take care of it</span>
+ <span class="k">return</span> <span class="kc">None</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="c1"># need to start over, because the other handlers don&#39;t</span>
+ <span class="c1"># grok the proxy&#39;s URL type</span>
+ <span class="c1"># e.g. if we have a constructor arg proxies like so:</span>
+ <span class="c1"># {&#39;http&#39;: &#39;ftp://proxy.example.com&#39;}, we may end up turning</span>
+ <span class="c1"># a request for http://acme.example.com/a into one for</span>
+ <span class="c1"># ftp://proxy.example.com/a</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">req</span><span class="o">.</span><span class="n">timeout</span><span class="p">)</span>
+
+<span class="k">class</span> <span class="nc">HTTPPasswordMgr</span><span class="p">:</span>
+
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">passwd</span> <span class="o">=</span> <span class="p">{}</span>
+
+ <span class="k">def</span> <span class="nf">add_password</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">realm</span><span class="p">,</span> <span class="n">uri</span><span class="p">,</span> <span class="n">user</span><span class="p">,</span> <span class="n">passwd</span><span class="p">):</span>
+ <span class="c1"># uri could be a single URI or a sequence</span>
+ <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">uri</span><span class="p">,</span> <span class="n">basestring</span><span class="p">):</span>
+ <span class="n">uri</span> <span class="o">=</span> <span class="p">[</span><span class="n">uri</span><span class="p">]</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">realm</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">passwd</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">passwd</span><span class="p">[</span><span class="n">realm</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="k">for</span> <span class="n">default_port</span> <span class="ow">in</span> <span class="kc">True</span><span class="p">,</span> <span class="kc">False</span><span class="p">:</span>
+ <span class="n">reduced_uri</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span>
+ <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">reduce_uri</span><span class="p">(</span><span class="n">u</span><span class="p">,</span> <span class="n">default_port</span><span class="p">)</span> <span class="k">for</span> <span class="n">u</span> <span class="ow">in</span> <span class="n">uri</span><span class="p">])</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">passwd</span><span class="p">[</span><span class="n">realm</span><span class="p">][</span><span class="n">reduced_uri</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="n">passwd</span><span class="p">)</span>
+
+ <span class="k">def</span> <span class="nf">find_user_password</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">realm</span><span class="p">,</span> <span class="n">authuri</span><span class="p">):</span>
+ <span class="n">domains</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">passwd</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">realm</span><span class="p">,</span> <span class="p">{})</span>
+ <span class="k">for</span> <span class="n">default_port</span> <span class="ow">in</span> <span class="kc">True</span><span class="p">,</span> <span class="kc">False</span><span class="p">:</span>
+ <span class="n">reduced_authuri</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">reduce_uri</span><span class="p">(</span><span class="n">authuri</span><span class="p">,</span> <span class="n">default_port</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">uris</span><span class="p">,</span> <span class="n">authinfo</span> <span class="ow">in</span> <span class="n">domains</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span>
+ <span class="k">for</span> <span class="n">uri</span> <span class="ow">in</span> <span class="n">uris</span><span class="p">:</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_suburi</span><span class="p">(</span><span class="n">uri</span><span class="p">,</span> <span class="n">reduced_authuri</span><span class="p">):</span>
+ <span class="k">return</span> <span class="n">authinfo</span>
+ <span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
+
+ <span class="k">def</span> <span class="nf">reduce_uri</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">uri</span><span class="p">,</span> <span class="n">default_port</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;Accept authority or URI and extract only the authority and path.&quot;&quot;&quot;</span>
+ <span class="c1"># note HTTP URLs do not have a userinfo component</span>
+ <span class="n">parts</span> <span class="o">=</span> <span class="n">urlparse</span><span class="o">.</span><span class="n">urlsplit</span><span class="p">(</span><span class="n">uri</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">parts</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
+ <span class="c1"># URI</span>
+ <span class="n">scheme</span> <span class="o">=</span> <span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">authority</span> <span class="o">=</span> <span class="n">parts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+ <span class="n">path</span> <span class="o">=</span> <span class="n">parts</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">&#39;/&#39;</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="c1"># host or host:port</span>
+ <span class="n">scheme</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="n">authority</span> <span class="o">=</span> <span class="n">uri</span>
+ <span class="n">path</span> <span class="o">=</span> <span class="s1">&#39;/&#39;</span>
+ <span class="n">host</span><span class="p">,</span> <span class="n">port</span> <span class="o">=</span> <span class="n">splitport</span><span class="p">(</span><span class="n">authority</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">default_port</span> <span class="ow">and</span> <span class="n">port</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">scheme</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">dport</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;http&quot;</span><span class="p">:</span> <span class="mi">80</span><span class="p">,</span>
+ <span class="s2">&quot;https&quot;</span><span class="p">:</span> <span class="mi">443</span><span class="p">,</span>
+ <span class="p">}</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">scheme</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">dport</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">authority</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">:</span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">dport</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">authority</span><span class="p">,</span> <span class="n">path</span>
+
+ <span class="k">def</span> <span class="nf">is_suburi</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">base</span><span class="p">,</span> <span class="n">test</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;Check if test is below base in a URI tree</span>
+
+<span class="sd"> Both args must be URIs in reduced form.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="k">if</span> <span class="n">base</span> <span class="o">==</span> <span class="n">test</span><span class="p">:</span>
+ <span class="k">return</span> <span class="kc">True</span>
+ <span class="k">if</span> <span class="n">base</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="n">test</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
+ <span class="k">return</span> <span class="kc">False</span>
+ <span class="n">common</span> <span class="o">=</span> <span class="n">posixpath</span><span class="o">.</span><span class="n">commonprefix</span><span class="p">((</span><span class="n">base</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">test</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">common</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">base</span><span class="p">[</span><span class="mi">1</span><span class="p">]):</span>
+ <span class="k">return</span> <span class="kc">True</span>
+ <span class="k">return</span> <span class="kc">False</span>
+
+
+<span class="k">class</span> <span class="nc">HTTPPasswordMgrWithDefaultRealm</span><span class="p">(</span><span class="n">HTTPPasswordMgr</span><span class="p">):</span>
+
+ <span class="k">def</span> <span class="nf">find_user_password</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">realm</span><span class="p">,</span> <span class="n">authuri</span><span class="p">):</span>
+ <span class="n">user</span><span class="p">,</span> <span class="n">password</span> <span class="o">=</span> <span class="n">HTTPPasswordMgr</span><span class="o">.</span><span class="n">find_user_password</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">realm</span><span class="p">,</span>
+ <span class="n">authuri</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">user</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">user</span><span class="p">,</span> <span class="n">password</span>
+ <span class="k">return</span> <span class="n">HTTPPasswordMgr</span><span class="o">.</span><span class="n">find_user_password</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">authuri</span><span class="p">)</span>
+
+
+<span class="k">class</span> <span class="nc">AbstractBasicAuthHandler</span><span class="p">:</span>
+
+ <span class="c1"># XXX this allows for multiple auth-schemes, but will stupidly pick</span>
+ <span class="c1"># the last one with a realm specified.</span>
+
+ <span class="c1"># allow for double- and single-quoted realm values</span>
+ <span class="c1"># (single quotes are a violation of the RFC, but appear in the wild)</span>
+ <span class="n">rx</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s1">&#39;(?:.*,)*[ </span><span class="se">\t</span><span class="s1">]*([^ </span><span class="se">\t</span><span class="s1">]+)[ </span><span class="se">\t</span><span class="s1">]+&#39;</span>
+ <span class="s1">&#39;realm=([&quot;</span><span class="se">\&#39;</span><span class="s1">]?)([^&quot;</span><span class="se">\&#39;</span><span class="s1">]*)</span><span class="se">\\</span><span class="s1">2&#39;</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">I</span><span class="p">)</span>
+
+ <span class="c1"># XXX could pre-emptively send auth info already accepted (RFC 2617,</span>
+ <span class="c1"># end of section 2, and section 1.2 immediately after &quot;credentials&quot;</span>
+ <span class="c1"># production).</span>
+
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">password_mgr</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="k">if</span> <span class="n">password_mgr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">password_mgr</span> <span class="o">=</span> <span class="n">HTTPPasswordMgr</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">passwd</span> <span class="o">=</span> <span class="n">password_mgr</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">add_password</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">passwd</span><span class="o">.</span><span class="n">add_password</span>
+
+
+ <span class="k">def</span> <span class="nf">http_error_auth_reqed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">authreq</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">headers</span><span class="p">):</span>
+ <span class="c1"># host may be an authority (without userinfo) or a URL with an</span>
+ <span class="c1"># authority</span>
+ <span class="c1"># XXX could be multiple headers</span>
+ <span class="n">authreq</span> <span class="o">=</span> <span class="n">headers</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">authreq</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">authreq</span><span class="p">:</span>
+ <span class="n">mo</span> <span class="o">=</span> <span class="n">AbstractBasicAuthHandler</span><span class="o">.</span><span class="n">rx</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">authreq</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">mo</span><span class="p">:</span>
+ <span class="n">scheme</span><span class="p">,</span> <span class="n">quote</span><span class="p">,</span> <span class="n">realm</span> <span class="o">=</span> <span class="n">mo</span><span class="o">.</span><span class="n">groups</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">quote</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;&quot;&#39;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">]:</span>
+ <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">&quot;Basic Auth Realm was unquoted&quot;</span><span class="p">,</span>
+ <span class="ne">UserWarning</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">scheme</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">&#39;basic&#39;</span><span class="p">:</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">retry_http_basic_auth</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">realm</span><span class="p">)</span>
+
+ <span class="k">def</span> <span class="nf">retry_http_basic_auth</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">realm</span><span class="p">):</span>
+ <span class="n">user</span><span class="p">,</span> <span class="n">pw</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">passwd</span><span class="o">.</span><span class="n">find_user_password</span><span class="p">(</span><span class="n">realm</span><span class="p">,</span> <span class="n">host</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">pw</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">raw</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="n">pw</span><span class="p">)</span>
+ <span class="n">auth</span> <span class="o">=</span> <span class="s1">&#39;Basic </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">base64</span><span class="o">.</span><span class="n">b64encode</span><span class="p">(</span><span class="n">raw</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">req</span><span class="o">.</span><span class="n">get_header</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">auth_header</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="o">==</span> <span class="n">auth</span><span class="p">:</span>
+ <span class="k">return</span> <span class="kc">None</span>
+ <span class="n">req</span><span class="o">.</span><span class="n">add_unredirected_header</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">auth_header</span><span class="p">,</span> <span class="n">auth</span><span class="p">)</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">req</span><span class="o">.</span><span class="n">timeout</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">return</span> <span class="kc">None</span>
+
+
+<span class="k">class</span> <span class="nc">HTTPBasicAuthHandler</span><span class="p">(</span><span class="n">AbstractBasicAuthHandler</span><span class="p">,</span> <span class="n">BaseHandler</span><span class="p">):</span>
+
+ <span class="n">auth_header</span> <span class="o">=</span> <span class="s1">&#39;Authorization&#39;</span>
+
+ <span class="k">def</span> <span class="nf">http_error_401</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">fp</span><span class="p">,</span> <span class="n">code</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">headers</span><span class="p">):</span>
+ <span class="n">url</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">get_full_url</span><span class="p">()</span>
+ <span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http_error_auth_reqed</span><span class="p">(</span><span class="s1">&#39;www-authenticate&#39;</span><span class="p">,</span>
+ <span class="n">url</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">headers</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">response</span>
+
+
+<span class="k">class</span> <span class="nc">ProxyBasicAuthHandler</span><span class="p">(</span><span class="n">AbstractBasicAuthHandler</span><span class="p">,</span> <span class="n">BaseHandler</span><span class="p">):</span>
+
+ <span class="n">auth_header</span> <span class="o">=</span> <span class="s1">&#39;Proxy-authorization&#39;</span>
+
+ <span class="k">def</span> <span class="nf">http_error_407</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">fp</span><span class="p">,</span> <span class="n">code</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">headers</span><span class="p">):</span>
+ <span class="c1"># http_error_auth_reqed requires that there is no userinfo component in</span>
+ <span class="c1"># authority. Assume there isn&#39;t one, since urllib2 does not (and</span>
+ <span class="c1"># should not, RFC 3986 s. 3.2.1) support requests for URLs containing</span>
+ <span class="c1"># userinfo.</span>
+ <span class="n">authority</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">get_host</span><span class="p">()</span>
+ <span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http_error_auth_reqed</span><span class="p">(</span><span class="s1">&#39;proxy-authenticate&#39;</span><span class="p">,</span>
+ <span class="n">authority</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">headers</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">response</span>
+
+
+<span class="k">def</span> <span class="nf">randombytes</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;Return n random bytes.&quot;&quot;&quot;</span>
+ <span class="c1"># Use /dev/urandom if it is available. Fall back to random module</span>
+ <span class="c1"># if not. It might be worthwhile to extend this function to use</span>
+ <span class="c1"># other platform-specific mechanisms for getting random bytes.</span>
+ <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="s2">&quot;/dev/urandom&quot;</span><span class="p">):</span>
+ <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&quot;/dev/urandom&quot;</span><span class="p">)</span>
+ <span class="n">s</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
+ <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+ <span class="k">return</span> <span class="n">s</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">L</span> <span class="o">=</span> <span class="p">[</span><span class="nb">chr</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">randrange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">256</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">)]</span>
+ <span class="k">return</span> <span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">L</span><span class="p">)</span>
+
+<span class="k">class</span> <span class="nc">AbstractDigestAuthHandler</span><span class="p">:</span>
+ <span class="c1"># Digest authentication is specified in RFC 2617.</span>
+
+ <span class="c1"># XXX The client does not inspect the Authentication-Info header</span>
+ <span class="c1"># in a successful response.</span>
+
+ <span class="c1"># XXX It should be possible to test this implementation against</span>
+ <span class="c1"># a mock server that just generates a static set of challenges.</span>
+
+ <span class="c1"># XXX qop=&quot;auth-int&quot; supports is shaky</span>
+
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">passwd</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="k">if</span> <span class="n">passwd</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">passwd</span> <span class="o">=</span> <span class="n">HTTPPasswordMgr</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">passwd</span> <span class="o">=</span> <span class="n">passwd</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">add_password</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">passwd</span><span class="o">.</span><span class="n">add_password</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">retried</span> <span class="o">=</span> <span class="mi">0</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">nonce_count</span> <span class="o">=</span> <span class="mi">0</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">last_nonce</span> <span class="o">=</span> <span class="kc">None</span>
+
+ <span class="k">def</span> <span class="nf">reset_retry_count</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">retried</span> <span class="o">=</span> <span class="mi">0</span>
+
+ <span class="k">def</span> <span class="nf">http_error_auth_reqed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">auth_header</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">headers</span><span class="p">):</span>
+ <span class="n">authreq</span> <span class="o">=</span> <span class="n">headers</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">auth_header</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">retried</span> <span class="o">&gt;</span> <span class="mi">5</span><span class="p">:</span>
+ <span class="c1"># Don&#39;t fail endlessly - if we failed once, we&#39;ll probably</span>
+ <span class="c1"># fail a second time. Hm. Unless the Password Manager is</span>
+ <span class="c1"># prompting for the information. Crap. This isn&#39;t great</span>
+ <span class="c1"># but it&#39;s better than the current &#39;repeat until recursion</span>
+ <span class="c1"># depth exceeded&#39; approach &lt;wink&gt;</span>
+ <span class="k">raise</span> <span class="n">HTTPError</span><span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">get_full_url</span><span class="p">(),</span> <span class="mi">401</span><span class="p">,</span> <span class="s2">&quot;digest auth failed&quot;</span><span class="p">,</span>
+ <span class="n">headers</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">retried</span> <span class="o">+=</span> <span class="mi">1</span>
+ <span class="k">if</span> <span class="n">authreq</span><span class="p">:</span>
+ <span class="n">scheme</span> <span class="o">=</span> <span class="n">authreq</span><span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">scheme</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">&#39;digest&#39;</span><span class="p">:</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">retry_http_digest_auth</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">authreq</span><span class="p">)</span>
+
+ <span class="k">def</span> <span class="nf">retry_http_digest_auth</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">auth</span><span class="p">):</span>
+ <span class="n">token</span><span class="p">,</span> <span class="n">challenge</span> <span class="o">=</span> <span class="n">auth</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39; &#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="n">chal</span> <span class="o">=</span> <span class="n">parse_keqv_list</span><span class="p">(</span><span class="n">parse_http_list</span><span class="p">(</span><span class="n">challenge</span><span class="p">))</span>
+ <span class="n">auth</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_authorization</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">chal</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">auth</span><span class="p">:</span>
+ <span class="n">auth_val</span> <span class="o">=</span> <span class="s1">&#39;Digest </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">auth</span>
+ <span class="k">if</span> <span class="n">req</span><span class="o">.</span><span class="n">headers</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">auth_header</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="o">==</span> <span class="n">auth_val</span><span class="p">:</span>
+ <span class="k">return</span> <span class="kc">None</span>
+ <span class="n">req</span><span class="o">.</span><span class="n">add_unredirected_header</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">auth_header</span><span class="p">,</span> <span class="n">auth_val</span><span class="p">)</span>
+ <span class="n">resp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">req</span><span class="o">.</span><span class="n">timeout</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">resp</span>
+
+ <span class="k">def</span> <span class="nf">get_cnonce</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">nonce</span><span class="p">):</span>
+ <span class="c1"># The cnonce-value is an opaque</span>
+ <span class="c1"># quoted string value provided by the client and used by both client</span>
+ <span class="c1"># and server to avoid chosen plaintext attacks, to provide mutual</span>
+ <span class="c1"># authentication, and to provide some message integrity protection.</span>
+ <span class="c1"># This isn&#39;t a fabulous effort, but it&#39;s probably Good Enough.</span>
+ <span class="n">dig</span> <span class="o">=</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">sha1</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">nonce_count</span><span class="p">,</span> <span class="n">nonce</span><span class="p">,</span> <span class="n">time</span><span class="o">.</span><span class="n">ctime</span><span class="p">(),</span>
+ <span class="n">randombytes</span><span class="p">(</span><span class="mi">8</span><span class="p">)))</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()</span>
+ <span class="k">return</span> <span class="n">dig</span><span class="p">[:</span><span class="mi">16</span><span class="p">]</span>
+
+ <span class="k">def</span> <span class="nf">get_authorization</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">chal</span><span class="p">):</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">realm</span> <span class="o">=</span> <span class="n">chal</span><span class="p">[</span><span class="s1">&#39;realm&#39;</span><span class="p">]</span>
+ <span class="n">nonce</span> <span class="o">=</span> <span class="n">chal</span><span class="p">[</span><span class="s1">&#39;nonce&#39;</span><span class="p">]</span>
+ <span class="n">qop</span> <span class="o">=</span> <span class="n">chal</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;qop&#39;</span><span class="p">)</span>
+ <span class="n">algorithm</span> <span class="o">=</span> <span class="n">chal</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;algorithm&#39;</span><span class="p">,</span> <span class="s1">&#39;MD5&#39;</span><span class="p">)</span>
+ <span class="c1"># mod_digest doesn&#39;t send an opaque, even though it isn&#39;t</span>
+ <span class="c1"># supposed to be optional</span>
+ <span class="n">opaque</span> <span class="o">=</span> <span class="n">chal</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;opaque&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
+ <span class="k">return</span> <span class="kc">None</span>
+
+ <span class="n">H</span><span class="p">,</span> <span class="n">KD</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_algorithm_impls</span><span class="p">(</span><span class="n">algorithm</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">H</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">return</span> <span class="kc">None</span>
+
+ <span class="n">user</span><span class="p">,</span> <span class="n">pw</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">passwd</span><span class="o">.</span><span class="n">find_user_password</span><span class="p">(</span><span class="n">realm</span><span class="p">,</span> <span class="n">req</span><span class="o">.</span><span class="n">get_full_url</span><span class="p">())</span>
+ <span class="k">if</span> <span class="n">user</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">return</span> <span class="kc">None</span>
+
+ <span class="c1"># XXX not implemented yet</span>
+ <span class="k">if</span> <span class="n">req</span><span class="o">.</span><span class="n">has_data</span><span class="p">():</span>
+ <span class="n">entdig</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_entity_digest</span><span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">get_data</span><span class="p">(),</span> <span class="n">chal</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">entdig</span> <span class="o">=</span> <span class="kc">None</span>
+
+ <span class="n">A1</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="n">realm</span><span class="p">,</span> <span class="n">pw</span><span class="p">)</span>
+ <span class="n">A2</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">get_method</span><span class="p">(),</span>
+ <span class="c1"># XXX selector: what about proxies and full urls</span>
+ <span class="n">req</span><span class="o">.</span><span class="n">get_selector</span><span class="p">())</span>
+ <span class="k">if</span> <span class="n">qop</span> <span class="o">==</span> <span class="s1">&#39;auth&#39;</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">nonce</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_nonce</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">nonce_count</span> <span class="o">+=</span> <span class="mi">1</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">nonce_count</span> <span class="o">=</span> <span class="mi">1</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">last_nonce</span> <span class="o">=</span> <span class="n">nonce</span>
+
+ <span class="n">ncvalue</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="si">%08x</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">nonce_count</span>
+ <span class="n">cnonce</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_cnonce</span><span class="p">(</span><span class="n">nonce</span><span class="p">)</span>
+ <span class="n">noncebit</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">nonce</span><span class="p">,</span> <span class="n">ncvalue</span><span class="p">,</span> <span class="n">cnonce</span><span class="p">,</span> <span class="n">qop</span><span class="p">,</span> <span class="n">H</span><span class="p">(</span><span class="n">A2</span><span class="p">))</span>
+ <span class="n">respdig</span> <span class="o">=</span> <span class="n">KD</span><span class="p">(</span><span class="n">H</span><span class="p">(</span><span class="n">A1</span><span class="p">),</span> <span class="n">noncebit</span><span class="p">)</span>
+ <span class="k">elif</span> <span class="n">qop</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">respdig</span> <span class="o">=</span> <span class="n">KD</span><span class="p">(</span><span class="n">H</span><span class="p">(</span><span class="n">A1</span><span class="p">),</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">nonce</span><span class="p">,</span> <span class="n">H</span><span class="p">(</span><span class="n">A2</span><span class="p">)))</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="c1"># XXX handle auth-int.</span>
+ <span class="k">raise</span> <span class="n">URLError</span><span class="p">(</span><span class="s2">&quot;qop &#39;</span><span class="si">%s</span><span class="s2">&#39; is not supported.&quot;</span> <span class="o">%</span> <span class="n">qop</span><span class="p">)</span>
+
+ <span class="c1"># XXX should the partial digests be encoded too?</span>
+
+ <span class="n">base</span> <span class="o">=</span> <span class="s1">&#39;username=&quot;</span><span class="si">%s</span><span class="s1">&quot;, realm=&quot;</span><span class="si">%s</span><span class="s1">&quot;, nonce=&quot;</span><span class="si">%s</span><span class="s1">&quot;, uri=&quot;</span><span class="si">%s</span><span class="s1">&quot;, &#39;</span> \
+ <span class="s1">&#39;response=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="n">realm</span><span class="p">,</span> <span class="n">nonce</span><span class="p">,</span> <span class="n">req</span><span class="o">.</span><span class="n">get_selector</span><span class="p">(),</span>
+ <span class="n">respdig</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">opaque</span><span class="p">:</span>
+ <span class="n">base</span> <span class="o">+=</span> <span class="s1">&#39;, opaque=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="n">opaque</span>
+ <span class="k">if</span> <span class="n">entdig</span><span class="p">:</span>
+ <span class="n">base</span> <span class="o">+=</span> <span class="s1">&#39;, digest=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="n">entdig</span>
+ <span class="n">base</span> <span class="o">+=</span> <span class="s1">&#39;, algorithm=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="n">algorithm</span>
+ <span class="k">if</span> <span class="n">qop</span><span class="p">:</span>
+ <span class="n">base</span> <span class="o">+=</span> <span class="s1">&#39;, qop=auth, nc=</span><span class="si">%s</span><span class="s1">, cnonce=&quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">ncvalue</span><span class="p">,</span> <span class="n">cnonce</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">base</span>
+
+ <span class="k">def</span> <span class="nf">get_algorithm_impls</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">algorithm</span><span class="p">):</span>
+ <span class="c1"># algorithm should be case-insensitive according to RFC2617</span>
+ <span class="n">algorithm</span> <span class="o">=</span> <span class="n">algorithm</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
+ <span class="c1"># lambdas assume digest modules are imported at the top level</span>
+ <span class="k">if</span> <span class="n">algorithm</span> <span class="o">==</span> <span class="s1">&#39;MD5&#39;</span><span class="p">:</span>
+ <span class="n">H</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">md5</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()</span>
+ <span class="k">elif</span> <span class="n">algorithm</span> <span class="o">==</span> <span class="s1">&#39;SHA&#39;</span><span class="p">:</span>
+ <span class="n">H</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">sha1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()</span>
+ <span class="c1"># XXX MD5-sess</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Unsupported digest authentication &quot;</span>
+ <span class="s2">&quot;algorithm </span><span class="si">%r</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">algorithm</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
+ <span class="n">KD</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">s</span><span class="p">,</span> <span class="n">d</span><span class="p">:</span> <span class="n">H</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">d</span><span class="p">))</span>
+ <span class="k">return</span> <span class="n">H</span><span class="p">,</span> <span class="n">KD</span>
+
+ <span class="k">def</span> <span class="nf">get_entity_digest</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">chal</span><span class="p">):</span>
+ <span class="c1"># XXX not implemented yet</span>
+ <span class="k">return</span> <span class="kc">None</span>
+
+
+<span class="k">class</span> <span class="nc">HTTPDigestAuthHandler</span><span class="p">(</span><span class="n">BaseHandler</span><span class="p">,</span> <span class="n">AbstractDigestAuthHandler</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;An authentication protocol defined by RFC 2069</span>
+
+<span class="sd"> Digest authentication improves on basic authentication because it</span>
+<span class="sd"> does not transmit passwords in the clear.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+
+ <span class="n">auth_header</span> <span class="o">=</span> <span class="s1">&#39;Authorization&#39;</span>
+ <span class="n">handler_order</span> <span class="o">=</span> <span class="mi">490</span> <span class="c1"># before Basic auth</span>
+
+ <span class="k">def</span> <span class="nf">http_error_401</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">fp</span><span class="p">,</span> <span class="n">code</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">headers</span><span class="p">):</span>
+ <span class="n">host</span> <span class="o">=</span> <span class="n">urlparse</span><span class="o">.</span><span class="n">urlparse</span><span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">get_full_url</span><span class="p">())[</span><span class="mi">1</span><span class="p">]</span>
+ <span class="n">retry</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http_error_auth_reqed</span><span class="p">(</span><span class="s1">&#39;www-authenticate&#39;</span><span class="p">,</span>
+ <span class="n">host</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">headers</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">reset_retry_count</span><span class="p">()</span>
+ <span class="k">return</span> <span class="n">retry</span>
+
+
+<span class="k">class</span> <span class="nc">ProxyDigestAuthHandler</span><span class="p">(</span><span class="n">BaseHandler</span><span class="p">,</span> <span class="n">AbstractDigestAuthHandler</span><span class="p">):</span>
+
+ <span class="n">auth_header</span> <span class="o">=</span> <span class="s1">&#39;Proxy-Authorization&#39;</span>
+ <span class="n">handler_order</span> <span class="o">=</span> <span class="mi">490</span> <span class="c1"># before Basic auth</span>
+
+ <span class="k">def</span> <span class="nf">http_error_407</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">fp</span><span class="p">,</span> <span class="n">code</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">headers</span><span class="p">):</span>
+ <span class="n">host</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">get_host</span><span class="p">()</span>
+ <span class="n">retry</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">http_error_auth_reqed</span><span class="p">(</span><span class="s1">&#39;proxy-authenticate&#39;</span><span class="p">,</span>
+ <span class="n">host</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="n">headers</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">reset_retry_count</span><span class="p">()</span>
+ <span class="k">return</span> <span class="n">retry</span>
+
+<span class="k">class</span> <span class="nc">AbstractHTTPHandler</span><span class="p">(</span><span class="n">BaseHandler</span><span class="p">):</span>
+
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">debuglevel</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">_debuglevel</span> <span class="o">=</span> <span class="n">debuglevel</span>
+
+ <span class="k">def</span> <span class="nf">set_http_debuglevel</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">level</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">_debuglevel</span> <span class="o">=</span> <span class="n">level</span>
+
+ <span class="k">def</span> <span class="nf">do_request_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">):</span>
+ <span class="n">host</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">get_host</span><span class="p">()</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">host</span><span class="p">:</span>
+ <span class="k">raise</span> <span class="n">URLError</span><span class="p">(</span><span class="s1">&#39;no host given&#39;</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">has_data</span><span class="p">():</span> <span class="c1"># POST</span>
+ <span class="n">data</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">get_data</span><span class="p">()</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">request</span><span class="o">.</span><span class="n">has_header</span><span class="p">(</span><span class="s1">&#39;Content-type&#39;</span><span class="p">):</span>
+ <span class="n">request</span><span class="o">.</span><span class="n">add_unredirected_header</span><span class="p">(</span>
+ <span class="s1">&#39;Content-type&#39;</span><span class="p">,</span>
+ <span class="s1">&#39;application/x-www-form-urlencoded&#39;</span><span class="p">)</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">request</span><span class="o">.</span><span class="n">has_header</span><span class="p">(</span><span class="s1">&#39;Content-length&#39;</span><span class="p">):</span>
+ <span class="n">request</span><span class="o">.</span><span class="n">add_unredirected_header</span><span class="p">(</span>
+ <span class="s1">&#39;Content-length&#39;</span><span class="p">,</span> <span class="s1">&#39;</span><span class="si">%d</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
+
+ <span class="n">sel_host</span> <span class="o">=</span> <span class="n">host</span>
+ <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">has_proxy</span><span class="p">():</span>
+ <span class="n">scheme</span><span class="p">,</span> <span class="n">sel</span> <span class="o">=</span> <span class="n">splittype</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">get_selector</span><span class="p">())</span>
+ <span class="n">sel_host</span><span class="p">,</span> <span class="n">sel_path</span> <span class="o">=</span> <span class="n">splithost</span><span class="p">(</span><span class="n">sel</span><span class="p">)</span>
+
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">request</span><span class="o">.</span><span class="n">has_header</span><span class="p">(</span><span class="s1">&#39;Host&#39;</span><span class="p">):</span>
+ <span class="n">request</span><span class="o">.</span><span class="n">add_unredirected_header</span><span class="p">(</span><span class="s1">&#39;Host&#39;</span><span class="p">,</span> <span class="n">sel_host</span><span class="p">)</span>
+ <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">addheaders</span><span class="p">:</span>
+ <span class="n">name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">request</span><span class="o">.</span><span class="n">has_header</span><span class="p">(</span><span class="n">name</span><span class="p">):</span>
+ <span class="n">request</span><span class="o">.</span><span class="n">add_unredirected_header</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="n">request</span>
+
+ <span class="k">def</span> <span class="nf">do_open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">http_class</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span> <span class="o">**</span><span class="n">http_conn_args</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;Return an addinfourl object for the request, using http_class.</span>
+
+<span class="sd"> http_class must implement the HTTPConnection API from httplib.</span>
+<span class="sd"> The addinfourl return value is a file-like object. It also</span>
+<span class="sd"> has methods and attributes including:</span>
+<span class="sd"> - info(): return a mimetools.Message object for the headers</span>
+<span class="sd"> - geturl(): return the original request URL</span>
+<span class="sd"> - code: HTTP status code</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="n">host</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">get_host</span><span class="p">()</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">host</span><span class="p">:</span>
+ <span class="k">raise</span> <span class="n">URLError</span><span class="p">(</span><span class="s1">&#39;no host given&#39;</span><span class="p">)</span>
+
+ <span class="c1"># will parse host:port</span>
+ <span class="n">h</span> <span class="o">=</span> <span class="n">http_class</span><span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">req</span><span class="o">.</span><span class="n">timeout</span><span class="p">,</span> <span class="o">**</span><span class="n">http_conn_args</span><span class="p">)</span>
+ <span class="n">h</span><span class="o">.</span><span class="n">set_debuglevel</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_debuglevel</span><span class="p">)</span>
+
+ <span class="n">headers</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">unredirected_hdrs</span><span class="p">)</span>
+ <span class="n">headers</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="nb">dict</span><span class="p">((</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">req</span><span class="o">.</span><span class="n">headers</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">))</span>
+
+ <span class="c1"># We want to make an HTTP/1.1 request, but the addinfourl</span>
+ <span class="c1"># class isn&#39;t prepared to deal with a persistent connection.</span>
+ <span class="c1"># It will try to read all remaining data from the socket,</span>
+ <span class="c1"># which will block while the server waits for the next request.</span>
+ <span class="c1"># So make sure the connection gets closed after the (only)</span>
+ <span class="c1"># request.</span>
+ <span class="n">headers</span><span class="p">[</span><span class="s2">&quot;Connection&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;close&quot;</span>
+ <span class="n">headers</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
+ <span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">title</span><span class="p">(),</span> <span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">headers</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
+
+ <span class="k">if</span> <span class="n">req</span><span class="o">.</span><span class="n">_tunnel_host</span><span class="p">:</span>
+ <span class="n">tunnel_headers</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="n">proxy_auth_hdr</span> <span class="o">=</span> <span class="s2">&quot;Proxy-Authorization&quot;</span>
+ <span class="k">if</span> <span class="n">proxy_auth_hdr</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">:</span>
+ <span class="n">tunnel_headers</span><span class="p">[</span><span class="n">proxy_auth_hdr</span><span class="p">]</span> <span class="o">=</span> <span class="n">headers</span><span class="p">[</span><span class="n">proxy_auth_hdr</span><span class="p">]</span>
+ <span class="c1"># Proxy-Authorization should not be sent to origin</span>
+ <span class="c1"># server.</span>
+ <span class="k">del</span> <span class="n">headers</span><span class="p">[</span><span class="n">proxy_auth_hdr</span><span class="p">]</span>
+ <span class="n">h</span><span class="o">.</span><span class="n">set_tunnel</span><span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">_tunnel_host</span><span class="p">,</span> <span class="n">headers</span><span class="o">=</span><span class="n">tunnel_headers</span><span class="p">)</span>
+
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">h</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">get_method</span><span class="p">(),</span> <span class="n">req</span><span class="o">.</span><span class="n">get_selector</span><span class="p">(),</span> <span class="n">req</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">headers</span><span class="p">)</span>
+ <span class="k">except</span> <span class="n">socket</span><span class="o">.</span><span class="n">error</span><span class="p">,</span> <span class="n">err</span><span class="p">:</span> <span class="c1"># XXX what error?</span>
+ <span class="n">h</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+ <span class="k">raise</span> <span class="n">URLError</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">r</span> <span class="o">=</span> <span class="n">h</span><span class="o">.</span><span class="n">getresponse</span><span class="p">(</span><span class="n">buffering</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span> <span class="c1"># buffering kw not supported</span>
+ <span class="n">r</span> <span class="o">=</span> <span class="n">h</span><span class="o">.</span><span class="n">getresponse</span><span class="p">()</span>
+
+ <span class="c1"># Pick apart the HTTPResponse object to get the addinfourl</span>
+ <span class="c1"># object initialized properly.</span>
+
+ <span class="c1"># Wrap the HTTPResponse object in socket&#39;s file object adapter</span>
+ <span class="c1"># for Windows. That adapter calls recv(), so delegate recv()</span>
+ <span class="c1"># to read(). This weird wrapping allows the returned object to</span>
+ <span class="c1"># have readline() and readlines() methods.</span>
+
+ <span class="c1"># XXX It might be better to extract the read buffering code</span>
+ <span class="c1"># out of socket._fileobject() and into a base class.</span>
+
+ <span class="n">r</span><span class="o">.</span><span class="n">recv</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">read</span>
+ <span class="n">fp</span> <span class="o">=</span> <span class="n">socket</span><span class="o">.</span><span class="n">_fileobject</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="n">close</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+ <span class="n">resp</span> <span class="o">=</span> <span class="n">addinfourl</span><span class="p">(</span><span class="n">fp</span><span class="p">,</span> <span class="n">r</span><span class="o">.</span><span class="n">msg</span><span class="p">,</span> <span class="n">req</span><span class="o">.</span><span class="n">get_full_url</span><span class="p">())</span>
+ <span class="n">resp</span><span class="o">.</span><span class="n">code</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">status</span>
+ <span class="n">resp</span><span class="o">.</span><span class="n">msg</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">reason</span>
+ <span class="k">return</span> <span class="n">resp</span>
+
+
+<span class="k">class</span> <span class="nc">HTTPHandler</span><span class="p">(</span><span class="n">AbstractHTTPHandler</span><span class="p">):</span>
+
+ <span class="k">def</span> <span class="nf">http_open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_open</span><span class="p">(</span><span class="n">httplib</span><span class="o">.</span><span class="n">HTTPConnection</span><span class="p">,</span> <span class="n">req</span><span class="p">)</span>
+
+ <span class="n">http_request</span> <span class="o">=</span> <span class="n">AbstractHTTPHandler</span><span class="o">.</span><span class="n">do_request_</span>
+
+<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">httplib</span><span class="p">,</span> <span class="s1">&#39;HTTPS&#39;</span><span class="p">):</span>
+ <span class="k">class</span> <span class="nc">HTTPSHandler</span><span class="p">(</span><span class="n">AbstractHTTPHandler</span><span class="p">):</span>
+
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">debuglevel</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="n">AbstractHTTPHandler</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">debuglevel</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">_context</span> <span class="o">=</span> <span class="n">context</span>
+
+ <span class="k">def</span> <span class="nf">https_open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">):</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_open</span><span class="p">(</span><span class="n">httplib</span><span class="o">.</span><span class="n">HTTPSConnection</span><span class="p">,</span> <span class="n">req</span><span class="p">,</span>
+ <span class="n">context</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_context</span><span class="p">)</span>
+
+ <span class="n">https_request</span> <span class="o">=</span> <span class="n">AbstractHTTPHandler</span><span class="o">.</span><span class="n">do_request_</span>
+
+<span class="k">class</span> <span class="nc">HTTPCookieProcessor</span><span class="p">(</span><span class="n">BaseHandler</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cookiejar</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="kn">import</span> <span class="nn">cookielib</span>
+ <span class="k">if</span> <span class="n">cookiejar</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">cookiejar</span> <span class="o">=</span> <span class="n">cookielib</span><span class="o">.</span><span class="n">CookieJar</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">cookiejar</span> <span class="o">=</span> <span class="n">cookiejar</span>
+
+ <span class="k">def</span> <span class="nf">http_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">cookiejar</span><span class="o">.</span><span class="n">add_cookie_header</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">request</span>
+
+ <span class="k">def</span> <span class="nf">http_response</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">response</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">cookiejar</span><span class="o">.</span><span class="n">extract_cookies</span><span class="p">(</span><span class="n">response</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">response</span>
+
+ <span class="n">https_request</span> <span class="o">=</span> <span class="n">http_request</span>
+ <span class="n">https_response</span> <span class="o">=</span> <span class="n">http_response</span>
+
+<span class="k">class</span> <span class="nc">UnknownHandler</span><span class="p">(</span><span class="n">BaseHandler</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">unknown_open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">):</span>
+ <span class="nb">type</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">get_type</span><span class="p">()</span>
+ <span class="k">raise</span> <span class="n">URLError</span><span class="p">(</span><span class="s1">&#39;unknown url type: </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="nb">type</span><span class="p">)</span>
+
+<span class="k">def</span> <span class="nf">parse_keqv_list</span><span class="p">(</span><span class="n">l</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;Parse list of key=value strings where keys are not duplicated.&quot;&quot;&quot;</span>
+ <span class="n">parsed</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="k">for</span> <span class="n">elt</span> <span class="ow">in</span> <span class="n">l</span><span class="p">:</span>
+ <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="o">=</span> <span class="n">elt</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;=&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">v</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;&quot;&#39;</span> <span class="ow">and</span> <span class="n">v</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;&quot;&#39;</span><span class="p">:</span>
+ <span class="n">v</span> <span class="o">=</span> <span class="n">v</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
+ <span class="n">parsed</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span>
+ <span class="k">return</span> <span class="n">parsed</span>
+
+<span class="k">def</span> <span class="nf">parse_http_list</span><span class="p">(</span><span class="n">s</span><span class="p">):</span>
+ <span class="sd">&quot;&quot;&quot;Parse lists as described by RFC 2068 Section 2.</span>
+
+<span class="sd"> In particular, parse comma-separated lists where the elements of</span>
+<span class="sd"> the list may include quoted-strings. A quoted-string could</span>
+<span class="sd"> contain a comma. A non-quoted string could have quotes in the</span>
+<span class="sd"> middle. Neither commas nor quotes count if they are escaped.</span>
+<span class="sd"> Only double-quotes count, not single-quotes.</span>
+<span class="sd"> &quot;&quot;&quot;</span>
+ <span class="n">res</span> <span class="o">=</span> <span class="p">[]</span>
+ <span class="n">part</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+
+ <span class="n">escape</span> <span class="o">=</span> <span class="n">quote</span> <span class="o">=</span> <span class="kc">False</span>
+ <span class="k">for</span> <span class="n">cur</span> <span class="ow">in</span> <span class="n">s</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">escape</span><span class="p">:</span>
+ <span class="n">part</span> <span class="o">+=</span> <span class="n">cur</span>
+ <span class="n">escape</span> <span class="o">=</span> <span class="kc">False</span>
+ <span class="k">continue</span>
+ <span class="k">if</span> <span class="n">quote</span><span class="p">:</span>
+ <span class="k">if</span> <span class="n">cur</span> <span class="o">==</span> <span class="s1">&#39;</span><span class="se">\\</span><span class="s1">&#39;</span><span class="p">:</span>
+ <span class="n">escape</span> <span class="o">=</span> <span class="kc">True</span>
+ <span class="k">continue</span>
+ <span class="k">elif</span> <span class="n">cur</span> <span class="o">==</span> <span class="s1">&#39;&quot;&#39;</span><span class="p">:</span>
+ <span class="n">quote</span> <span class="o">=</span> <span class="kc">False</span>
+ <span class="n">part</span> <span class="o">+=</span> <span class="n">cur</span>
+ <span class="k">continue</span>
+
+ <span class="k">if</span> <span class="n">cur</span> <span class="o">==</span> <span class="s1">&#39;,&#39;</span><span class="p">:</span>
+ <span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">part</span><span class="p">)</span>
+ <span class="n">part</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+ <span class="k">continue</span>
+
+ <span class="k">if</span> <span class="n">cur</span> <span class="o">==</span> <span class="s1">&#39;&quot;&#39;</span><span class="p">:</span>
+ <span class="n">quote</span> <span class="o">=</span> <span class="kc">True</span>
+
+ <span class="n">part</span> <span class="o">+=</span> <span class="n">cur</span>
+
+ <span class="c1"># append last part</span>
+ <span class="k">if</span> <span class="n">part</span><span class="p">:</span>
+ <span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">part</span><span class="p">)</span>
+
+ <span class="k">return</span> <span class="p">[</span><span class="n">part</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">res</span><span class="p">]</span>
+
+<span class="k">def</span> <span class="nf">_safe_gethostbyname</span><span class="p">(</span><span class="n">host</span><span class="p">):</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">socket</span><span class="o">.</span><span class="n">gethostbyname</span><span class="p">(</span><span class="n">host</span><span class="p">)</span>
+ <span class="k">except</span> <span class="n">socket</span><span class="o">.</span><span class="n">gaierror</span><span class="p">:</span>
+ <span class="k">return</span> <span class="kc">None</span>
+
+<span class="k">class</span> <span class="nc">FileHandler</span><span class="p">(</span><span class="n">BaseHandler</span><span class="p">):</span>
+ <span class="c1"># Use local file or FTP depending on form of URL</span>
+ <span class="k">def</span> <span class="nf">file_open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">):</span>
+ <span class="n">url</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">get_selector</span><span class="p">()</span>
+ <span class="k">if</span> <span class="n">url</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;//&#39;</span> <span class="ow">and</span> <span class="n">url</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">3</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">&#39;/&#39;</span> <span class="ow">and</span> <span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">host</span> <span class="ow">and</span>
+ <span class="n">req</span><span class="o">.</span><span class="n">host</span> <span class="o">!=</span> <span class="s1">&#39;localhost&#39;</span><span class="p">):</span>
+ <span class="n">req</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="s1">&#39;ftp&#39;</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">req</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">open_local_file</span><span class="p">(</span><span class="n">req</span><span class="p">)</span>
+
+ <span class="c1"># names for the localhost</span>
+ <span class="n">names</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="k">def</span> <span class="nf">get_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">if</span> <span class="n">FileHandler</span><span class="o">.</span><span class="n">names</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">FileHandler</span><span class="o">.</span><span class="n">names</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span>
+ <span class="n">socket</span><span class="o">.</span><span class="n">gethostbyname_ex</span><span class="p">(</span><span class="s1">&#39;localhost&#39;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span>
+ <span class="n">socket</span><span class="o">.</span><span class="n">gethostbyname_ex</span><span class="p">(</span><span class="n">socket</span><span class="o">.</span><span class="n">gethostname</span><span class="p">())[</span><span class="mi">2</span><span class="p">])</span>
+ <span class="k">except</span> <span class="n">socket</span><span class="o">.</span><span class="n">gaierror</span><span class="p">:</span>
+ <span class="n">FileHandler</span><span class="o">.</span><span class="n">names</span> <span class="o">=</span> <span class="p">(</span><span class="n">socket</span><span class="o">.</span><span class="n">gethostbyname</span><span class="p">(</span><span class="s1">&#39;localhost&#39;</span><span class="p">),)</span>
+ <span class="k">return</span> <span class="n">FileHandler</span><span class="o">.</span><span class="n">names</span>
+
+ <span class="c1"># not entirely sure what the rules are here</span>
+ <span class="k">def</span> <span class="nf">open_local_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">):</span>
+ <span class="kn">import</span> <span class="nn">email.utils</span>
+ <span class="kn">import</span> <span class="nn">mimetypes</span>
+ <span class="n">host</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">get_host</span><span class="p">()</span>
+ <span class="n">filename</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">get_selector</span><span class="p">()</span>
+ <span class="n">localfile</span> <span class="o">=</span> <span class="n">url2pathname</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">stats</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">stat</span><span class="p">(</span><span class="n">localfile</span><span class="p">)</span>
+ <span class="n">size</span> <span class="o">=</span> <span class="n">stats</span><span class="o">.</span><span class="n">st_size</span>
+ <span class="n">modified</span> <span class="o">=</span> <span class="n">email</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">formatdate</span><span class="p">(</span><span class="n">stats</span><span class="o">.</span><span class="n">st_mtime</span><span class="p">,</span> <span class="n">usegmt</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <span class="n">mtype</span> <span class="o">=</span> <span class="n">mimetypes</span><span class="o">.</span><span class="n">guess_type</span><span class="p">(</span><span class="n">filename</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="n">headers</span> <span class="o">=</span> <span class="n">mimetools</span><span class="o">.</span><span class="n">Message</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span>
+ <span class="s1">&#39;Content-type: </span><span class="si">%s</span><span class="se">\n</span><span class="s1">Content-length: </span><span class="si">%d</span><span class="se">\n</span><span class="s1">Last-modified: </span><span class="si">%s</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span>
+ <span class="p">(</span><span class="n">mtype</span> <span class="ow">or</span> <span class="s1">&#39;text/plain&#39;</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">modified</span><span class="p">)))</span>
+ <span class="k">if</span> <span class="n">host</span><span class="p">:</span>
+ <span class="n">host</span><span class="p">,</span> <span class="n">port</span> <span class="o">=</span> <span class="n">splitport</span><span class="p">(</span><span class="n">host</span><span class="p">)</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">host</span> <span class="ow">or</span> \
+ <span class="p">(</span><span class="ow">not</span> <span class="n">port</span> <span class="ow">and</span> <span class="n">_safe_gethostbyname</span><span class="p">(</span><span class="n">host</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_names</span><span class="p">()):</span>
+ <span class="k">if</span> <span class="n">host</span><span class="p">:</span>
+ <span class="n">origurl</span> <span class="o">=</span> <span class="s1">&#39;file://&#39;</span> <span class="o">+</span> <span class="n">host</span> <span class="o">+</span> <span class="n">filename</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">origurl</span> <span class="o">=</span> <span class="s1">&#39;file://&#39;</span> <span class="o">+</span> <span class="n">filename</span>
+ <span class="k">return</span> <span class="n">addinfourl</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="n">localfile</span><span class="p">,</span> <span class="s1">&#39;rb&#39;</span><span class="p">),</span> <span class="n">headers</span><span class="p">,</span> <span class="n">origurl</span><span class="p">)</span>
+ <span class="k">except</span> <span class="ne">OSError</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span>
+ <span class="c1"># urllib2 users shouldn&#39;t expect OSErrors coming from urlopen()</span>
+ <span class="k">raise</span> <span class="n">URLError</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
+ <span class="k">raise</span> <span class="n">URLError</span><span class="p">(</span><span class="s1">&#39;file not on local host&#39;</span><span class="p">)</span>
+
+<span class="k">class</span> <span class="nc">FTPHandler</span><span class="p">(</span><span class="n">BaseHandler</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">ftp_open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">req</span><span class="p">):</span>
+ <span class="kn">import</span> <span class="nn">ftplib</span>
+ <span class="kn">import</span> <span class="nn">mimetypes</span>
+ <span class="n">host</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">get_host</span><span class="p">()</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">host</span><span class="p">:</span>
+ <span class="k">raise</span> <span class="n">URLError</span><span class="p">(</span><span class="s1">&#39;ftp error: no host given&#39;</span><span class="p">)</span>
+ <span class="n">host</span><span class="p">,</span> <span class="n">port</span> <span class="o">=</span> <span class="n">splitport</span><span class="p">(</span><span class="n">host</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">port</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+ <span class="n">port</span> <span class="o">=</span> <span class="n">ftplib</span><span class="o">.</span><span class="n">FTP_PORT</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">port</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">port</span><span class="p">)</span>
+
+ <span class="c1"># username/password handling</span>
+ <span class="n">user</span><span class="p">,</span> <span class="n">host</span> <span class="o">=</span> <span class="n">splituser</span><span class="p">(</span><span class="n">host</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">user</span><span class="p">:</span>
+ <span class="n">user</span><span class="p">,</span> <span class="n">passwd</span> <span class="o">=</span> <span class="n">splitpasswd</span><span class="p">(</span><span class="n">user</span><span class="p">)</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="n">passwd</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="n">host</span> <span class="o">=</span> <span class="n">unquote</span><span class="p">(</span><span class="n">host</span><span class="p">)</span>
+ <span class="n">user</span> <span class="o">=</span> <span class="n">user</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span>
+ <span class="n">passwd</span> <span class="o">=</span> <span class="n">passwd</span> <span class="ow">or</span> <span class="s1">&#39;&#39;</span>
+
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">host</span> <span class="o">=</span> <span class="n">socket</span><span class="o">.</span><span class="n">gethostbyname</span><span class="p">(</span><span class="n">host</span><span class="p">)</span>
+ <span class="k">except</span> <span class="n">socket</span><span class="o">.</span><span class="n">error</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span>
+ <span class="k">raise</span> <span class="n">URLError</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
+ <span class="n">path</span><span class="p">,</span> <span class="n">attrs</span> <span class="o">=</span> <span class="n">splitattr</span><span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">get_selector</span><span class="p">())</span>
+ <span class="n">dirs</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)</span>
+ <span class="n">dirs</span> <span class="o">=</span> <span class="nb">map</span><span class="p">(</span><span class="n">unquote</span><span class="p">,</span> <span class="n">dirs</span><span class="p">)</span>
+ <span class="n">dirs</span><span class="p">,</span> <span class="n">file</span> <span class="o">=</span> <span class="n">dirs</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">dirs</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">dirs</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">dirs</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
+ <span class="n">dirs</span> <span class="o">=</span> <span class="n">dirs</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
+ <span class="k">try</span><span class="p">:</span>
+ <span class="n">fw</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">connect_ftp</span><span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="n">passwd</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="n">dirs</span><span class="p">,</span> <span class="n">req</span><span class="o">.</span><span class="n">timeout</span><span class="p">)</span>
+ <span class="nb">type</span> <span class="o">=</span> <span class="n">file</span> <span class="ow">and</span> <span class="s1">&#39;I&#39;</span> <span class="ow">or</span> <span class="s1">&#39;D&#39;</span>
+ <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
+ <span class="n">attr</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">splitvalue</span><span class="p">(</span><span class="n">attr</span><span class="p">)</span>
+ <span class="k">if</span> <span class="n">attr</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">&#39;type&#39;</span> <span class="ow">and</span> \
+ <span class="n">value</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;a&#39;</span><span class="p">,</span> <span class="s1">&#39;A&#39;</span><span class="p">,</span> <span class="s1">&#39;i&#39;</span><span class="p">,</span> <span class="s1">&#39;I&#39;</span><span class="p">,</span> <span class="s1">&#39;d&#39;</span><span class="p">,</span> <span class="s1">&#39;D&#39;</span><span class="p">):</span>
+ <span class="nb">type</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
+ <span class="n">fp</span><span class="p">,</span> <span class="n">retrlen</span> <span class="o">=</span> <span class="n">fw</span><span class="o">.</span><span class="n">retrfile</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="nb">type</span><span class="p">)</span>
+ <span class="n">headers</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+ <span class="n">mtype</span> <span class="o">=</span> <span class="n">mimetypes</span><span class="o">.</span><span class="n">guess_type</span><span class="p">(</span><span class="n">req</span><span class="o">.</span><span class="n">get_full_url</span><span class="p">())[</span><span class="mi">0</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">mtype</span><span class="p">:</span>
+ <span class="n">headers</span> <span class="o">+=</span> <span class="s2">&quot;Content-type: </span><span class="si">%s</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">mtype</span>
+ <span class="k">if</span> <span class="n">retrlen</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">retrlen</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">:</span>
+ <span class="n">headers</span> <span class="o">+=</span> <span class="s2">&quot;Content-length: </span><span class="si">%d</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">retrlen</span>
+ <span class="n">sf</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="n">headers</span><span class="p">)</span>
+ <span class="n">headers</span> <span class="o">=</span> <span class="n">mimetools</span><span class="o">.</span><span class="n">Message</span><span class="p">(</span><span class="n">sf</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">addinfourl</span><span class="p">(</span><span class="n">fp</span><span class="p">,</span> <span class="n">headers</span><span class="p">,</span> <span class="n">req</span><span class="o">.</span><span class="n">get_full_url</span><span class="p">())</span>
+ <span class="k">except</span> <span class="n">ftplib</span><span class="o">.</span><span class="n">all_errors</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span>
+ <span class="k">raise</span> <span class="n">URLError</span><span class="p">,</span> <span class="p">(</span><span class="s1">&#39;ftp error: </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">msg</span><span class="p">),</span> <span class="n">sys</span><span class="o">.</span><span class="n">exc_info</span><span class="p">()[</span><span class="mi">2</span><span class="p">]</span>
+
+ <span class="k">def</span> <span class="nf">connect_ftp</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user</span><span class="p">,</span> <span class="n">passwd</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="n">dirs</span><span class="p">,</span> <span class="n">timeout</span><span class="p">):</span>
+ <span class="n">fw</span> <span class="o">=</span> <span class="n">ftpwrapper</span><span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="n">passwd</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="n">dirs</span><span class="p">,</span> <span class="n">timeout</span><span class="p">,</span>
+ <span class="n">persistent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+<span class="c1">## fw.ftp.set_debuglevel(1)</span>
+ <span class="k">return</span> <span class="n">fw</span>
+
+<span class="k">class</span> <span class="nc">CacheFTPHandler</span><span class="p">(</span><span class="n">FTPHandler</span><span class="p">):</span>
+ <span class="c1"># XXX would be nice to have pluggable cache strategies</span>
+ <span class="c1"># XXX this stuff is definitely not thread safe</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">cache</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">timeout</span> <span class="o">=</span> <span class="p">{}</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">soonest</span> <span class="o">=</span> <span class="mi">0</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">delay</span> <span class="o">=</span> <span class="mi">60</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">max_conns</span> <span class="o">=</span> <span class="mi">16</span>
+
+ <span class="k">def</span> <span class="nf">setTimeout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">t</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">delay</span> <span class="o">=</span> <span class="n">t</span>
+
+ <span class="k">def</span> <span class="nf">setMaxConns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">m</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">max_conns</span> <span class="o">=</span> <span class="n">m</span>
+
+ <span class="k">def</span> <span class="nf">connect_ftp</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user</span><span class="p">,</span> <span class="n">passwd</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="n">dirs</span><span class="p">,</span> <span class="n">timeout</span><span class="p">):</span>
+ <span class="n">key</span> <span class="o">=</span> <span class="n">user</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="s1">&#39;/&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">dirs</span><span class="p">),</span> <span class="n">timeout</span>
+ <span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cache</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">timeout</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">delay</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">cache</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">ftpwrapper</span><span class="p">(</span><span class="n">user</span><span class="p">,</span> <span class="n">passwd</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <span class="n">dirs</span><span class="p">,</span> <span class="n">timeout</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">timeout</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">delay</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">check_cache</span><span class="p">()</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cache</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
+
+ <span class="k">def</span> <span class="nf">check_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="c1"># first check for old ones</span>
+ <span class="n">t</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">soonest</span> <span class="o">&lt;=</span> <span class="n">t</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">timeout</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
+ <span class="k">if</span> <span class="n">v</span> <span class="o">&lt;</span> <span class="n">t</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">cache</span><span class="p">[</span><span class="n">k</span><span class="p">]</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+ <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">cache</span><span class="p">[</span><span class="n">k</span><span class="p">]</span>
+ <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">timeout</span><span class="p">[</span><span class="n">k</span><span class="p">]</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">soonest</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">timeout</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
+
+ <span class="c1"># then check the size</span>
+ <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cache</span><span class="p">)</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_conns</span><span class="p">:</span>
+ <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">timeout</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
+ <span class="k">if</span> <span class="n">v</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">soonest</span><span class="p">:</span>
+ <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">cache</span><span class="p">[</span><span class="n">k</span><span class="p">]</span>
+ <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">timeout</span><span class="p">[</span><span class="n">k</span><span class="p">]</span>
+ <span class="k">break</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">soonest</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">timeout</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
+
+ <span class="k">def</span> <span class="nf">clear_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">for</span> <span class="n">conn</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
+ <span class="n">conn</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">timeout</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+</pre></div>
+
+ </div>
+ </div>
+ </div>
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="../index.html">Documentation overview</a><ul>
+ <li><a href="index.html">Module code</a><ul>
+ </ul></li>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
+ <h3>Quick search</h3>
+ <form class="search" action="../search.html" method="get">
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="footer">
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
+ </div>
+
+
+
+
+ </body>
+</html> \ No newline at end of file
diff --git a/doc/html/_sources/M2Crypto.PGP.txt b/doc/html/_sources/M2Crypto.PGP.txt
deleted file mode 100644
index 5396b5d..0000000
--- a/doc/html/_sources/M2Crypto.PGP.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-PGP Package
-===========
-
-:mod:`PGP` Package
-------------------
-
-.. automodule:: M2Crypto.PGP
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PublicKey` Module
------------------------
-
-.. automodule:: M2Crypto.PGP.PublicKey
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PublicKeyRing` Module
----------------------------
-
-.. automodule:: M2Crypto.PGP.PublicKeyRing
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`RSA` Module
------------------
-
-.. automodule:: M2Crypto.PGP.RSA
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`constants` Module
------------------------
-
-.. automodule:: M2Crypto.PGP.constants
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`packet` Module
---------------------
-
-.. automodule:: M2Crypto.PGP.packet
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/html/_sources/M2Crypto.SSL.rst.txt b/doc/html/_sources/M2Crypto.SSL.rst.txt
new file mode 100644
index 0000000..233c1eb
--- /dev/null
+++ b/doc/html/_sources/M2Crypto.SSL.rst.txt
@@ -0,0 +1,91 @@
+SSL Package
+===========
+
+:mod:`SSL` Package
+------------------
+
+.. automodule:: M2Crypto.SSL
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`Checker` Module
+---------------------
+
+.. automodule:: M2Crypto.SSL.Checker
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`Cipher` Module
+--------------------
+
+.. automodule:: M2Crypto.SSL.Cipher
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`Connection` Module
+------------------------
+
+.. automodule:: M2Crypto.SSL.Connection
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`Context` Module
+---------------------
+
+.. automodule:: M2Crypto.SSL.Context
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`SSLServer` Module
+-----------------------
+
+.. automodule:: M2Crypto.SSL.SSLServer
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`Session` Module
+---------------------
+
+.. automodule:: M2Crypto.SSL.Session
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`TwistedProtocolWrapper` Module
+------------------------------------
+
+.. automodule:: M2Crypto.SSL.TwistedProtocolWrapper
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`cb` Module
+----------------
+
+.. automodule:: M2Crypto.SSL.cb
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`ssl_dispatcher` Module
+----------------------------
+
+.. automodule:: M2Crypto.SSL.ssl_dispatcher
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`timeout` Module
+---------------------
+
+.. automodule:: M2Crypto.SSL.timeout
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff --git a/doc/html/_sources/M2Crypto.rst.txt b/doc/html/_sources/M2Crypto.rst.txt
new file mode 100644
index 0000000..dc6c706
--- /dev/null
+++ b/doc/html/_sources/M2Crypto.rst.txt
@@ -0,0 +1,218 @@
+M2Crypto Package
+================
+
+:mod:`M2Crypto` Package
+-----------------------
+
+.. automodule:: M2Crypto.__init__
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`ASN1` Module
+------------------
+
+.. automodule:: M2Crypto.ASN1
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`AuthCookie` Module
+------------------------
+
+.. automodule:: M2Crypto.AuthCookie
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`BIO` Module
+-----------------
+
+.. automodule:: M2Crypto.BIO
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`BN` Module
+----------------
+
+.. automodule:: M2Crypto.BN
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`DH` Module
+----------------
+
+.. automodule:: M2Crypto.DH
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`DSA` Module
+-----------------
+
+.. automodule:: M2Crypto.DSA
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`EC` Module
+----------------
+
+.. automodule:: M2Crypto.EC
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`EVP` Module
+-----------------
+
+.. automodule:: M2Crypto.EVP
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`Engine` Module
+--------------------
+
+.. automodule:: M2Crypto.Engine
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`Err` Module
+-----------------
+
+.. automodule:: M2Crypto.Err
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`RC4` Module
+-----------------
+
+.. automodule:: M2Crypto.RC4
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`RSA` Module
+-----------------
+
+.. automodule:: M2Crypto.RSA
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`Rand` Module
+------------------
+
+.. automodule:: M2Crypto.Rand
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`SMIME` Module
+-------------------
+
+.. automodule:: M2Crypto.SMIME
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`X509` Module
+------------------
+
+.. automodule:: M2Crypto.X509
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`callback` Module
+----------------------
+
+.. automodule:: M2Crypto.callback
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`ftpslib` Module
+---------------------
+
+.. automodule:: M2Crypto.ftpslib
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`httpslib` Module
+----------------------
+
+.. automodule:: M2Crypto.httpslib
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`m2` Module
+----------------
+
+.. automodule:: M2Crypto.m2
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`m2crypto` Module
+----------------------
+
+.. automodule:: M2Crypto.m2crypto
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`m2urllib` Module
+----------------------
+
+.. automodule:: M2Crypto.m2urllib
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`m2urllib2` Module
+-----------------------
+
+.. automodule:: M2Crypto.m2urllib2
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`m2xmlrpclib` Module
+-------------------------
+
+.. automodule:: M2Crypto.m2xmlrpclib
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`threading` Module
+-----------------------
+
+.. automodule:: M2Crypto.threading
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`util` Module
+------------------
+
+.. automodule:: M2Crypto.util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+Subpackages
+-----------
+
+.. toctree::
+
+ M2Crypto.SSL
+
diff --git a/doc/html/_sources/M2Crypto.txt b/doc/html/_sources/M2Crypto.txt
index 31a03ad..dc6c706 100644
--- a/doc/html/_sources/M2Crypto.txt
+++ b/doc/html/_sources/M2Crypto.txt
@@ -214,6 +214,5 @@ Subpackages
.. toctree::
- M2Crypto.PGP
M2Crypto.SSL
diff --git a/doc/html/_sources/ZServerSSL-HOWTO.rst.txt b/doc/html/_sources/ZServerSSL-HOWTO.rst.txt
new file mode 100644
index 0000000..91ef5af
--- /dev/null
+++ b/doc/html/_sources/ZServerSSL-HOWTO.rst.txt
@@ -0,0 +1,239 @@
+:orphan:
+
+.. _zserverssl-howto:
+
+ZServerSSL-HOWTO
+################
+
+:author: Pheng Siong Ng <ngps@post1.com>
+:copyright: © 2000, 2001 by Ng Pheng Siong.
+:date: 2003-06-22
+
+.. contents::
+ :backlinks: entry
+
+.. sectnum::
+ :suffix: .
+
+Introduction
+============
+
+ZServerSSL adds to Zope's ZServer the following:
+
+- HTTPS server
+- WebDAV-source-over-HTTPS server
+
+With the HTTPS server, ZServerSSL also provides WebDAV-over-HTTPS and
+XMLRPC-over-HTTPS access to Zope.
+
+These instructions apply to both Un\*x and Windows installations of Zope
+2.6.1. To avoid cluttering the presentation, Windows pathnames are shown
+in Un\*x fashion.
+
+Preparation
+===========
+
+#. Download M2Crypto 0.11, contained in the file ``m2crypto-0.11.zip``.
+#. Unpack ``m2crypto-0.11.zip``. This will create a directory
+ ``m2crypto-0.11``. Henceforth, we refer to this directory as ``$M2``.
+#. Install M2Crypto per the instructions in ``$M2/INSTALL``.
+
+The ZServerSSL distribution is in ``$M2/demo/Zope``. We shall refer to
+this directory as ``$ZSSL``.
+
+Installation
+============
+
+Below, we refer to your Zope top-level directory as ``$ZOPE``.
+
+#. Copy ``$ZSSL/z2s.py`` into ``$ZOPE``.
+
+#. Depending on your operating system, modify ``$ZOPE/start`` or
+ ``$ZOPE/start.bat`` to invoke ``$ZOPE/z2s.py``, instead of
+ ``$ZOPE/z2.py``. The files ``$ZSSL/starts`` and ``$ZSSL/starts.bat``
+ serve as examples.
+
+#. Copy ``$ZSSL/dh1024.pem`` into ``$ZOPE``. This file contains
+ Diffie-Hellman parameters for use by the SSL protocol.
+
+#. Copy ``$ZSSL/randpool.dat`` into ``$ZOPE``. This file contains seed
+ material for the OpenSSL PRNG. Alternatively, create
+ ``$ZOPE/randpool.dat`` thusly::
+
+ $ dd if=/dev/urandom of=randpool.dat bs=1024 count=1
+
+#. Copy ``$ZSSL/ca.pem`` to ``$ZOPE``. This file contains an
+ example Certification Authority (CA) certificate. For
+ information on operating your own CA, see :ref:`howto-ca` or
+ one of numerous similar documents available on the web.
+
+#. Copy ``$ZSSL/server.pem`` to ``$ZOPE``. This file contains an RSA key
+ pair and its X.509v3 certificate issued by the above CA. You may also
+ create your own key/certificate bundle.
+
+#. Copy ``$ZSSL/ZServer/HTTPS_Server.py`` to ``$ZOPE/ZServer``.
+
+#. Copy ``$ZSSL/ZServer/__init__.py`` to ``$ZOPE/ZServer``. This
+ overwrites the existing ``$ZOPE/ZServer/__init__.py``. Alternatively,
+ apply the following patch to ``$ZOPE/ZServer/__init__.py``::
+
+ --- __init__.py.org Sat Jun 21 23:20:41 2003
+ +++ __init__.py Tue Jan 7 23:30:53 2003
+ @@ -84,6 +84,7 @@
+ import asyncore
+ from medusa import resolver, logger
+ from HTTPServer import zhttp_server, zhttp_handler
+ +from HTTPS_Server import zhttps_server, zhttps_handler
+ from PCGIServer import PCGIServer
+ from FCGIServer import FCGIServer
+ from FTPServer import FTPServer
+
+#. Copy ``$ZSSL/ZServer/medusa/https_server.py`` to
+ ``$ZOPE/ZServer/medusa``.
+
+#. Stop Zope, if it is running.
+
+#. Start Zope with ZServerSSL thusly::
+
+ ./starts -X -f 9021 -w 9080 -W 9081 -y 9443 -Y 9444
+
+ This starts the following:
+
+ - an FTP server on port 9021
+ - a HTTP server on port 9080
+ - a WebDAV-source server on port 9081
+ - a HTTPS server on port 9443
+ - a WebDAV-source-over-HTTPS server on port 9444
+
+Testing
+=======
+
+Below, we assume your Zope server is running on ``localhost``.
+
+HTTPS
+=====
+
+This testing is done with Mozilla 1.1 on FreeBSD.
+
+#. With a browser, connect to https://localhost:9443/. Browse around.
+ Check out your browser's HTTPS informational screens.
+#. Connect to https://localhost:9443/manage. Verify that you can access
+ Zope's management functionality.
+
+WebDAV-over-HTTPS
+=================
+
+This testing is done with Cadaver 0.21.0 on FreeBSD.::
+
+ $ cadaver https://localhost:9443/
+ WARNING: Untrusted server certificate presented:
+ Issued to: M2Crypto, SG
+ Issued by: M2Crypto, SG
+ Do you wish to accept the certificate? (y/n) y
+ dav:/> ls
+ Listing collection `/': succeeded.
+ Coll: Channels 0 Jun 19 00:04
+ Coll: Control_Panel 0 Jun 6 00:13
+ Coll: Examples 0 Jun 6 00:12
+ Coll: catalog 0 Jun 12 11:53
+ Coll: ngps 0 Jun 16 15:34
+ Coll: portal 0 Jun 21 15:21
+ Coll: skunk 0 Jun 18 21:18
+ Coll: temp_folder 0 Jun 22 17:57
+ Coll: zope 0 Jun 20 15:27
+ acl_users 0 Dec 30 1998
+ browser_id_manager 0 Jun 6 00:12
+ default.css 3037 Jun 21 16:38
+ error_log 0 Jun 6 00:12
+ index_html 313 Jun 12 13:36
+ portal0 0 Jun 21 15:21
+ session_data_manager 0 Jun 6 00:12
+ standard_error_message 1365 Jan 21 2001
+ standard_html_footer 50 Jun 12 12:30
+ standard_html_header 80 Jan 21 2001
+ standard_template.pt 282 Jun 6 00:12
+ zsyncer 0 Jun 17 15:28
+ dav:/> quit
+ Connection to `localhost' closed.
+ $
+
+
+WebDAV-Source-over-HTTPS
+========================
+
+This testing is done with Mozilla 1.1 on FreeBSD.
+
+#. Open the Mozilla Composer window.
+#. Click "File", "Open Web Location". A dialog box appears.
+#. Enter ``https://localhost:9444/index_html`` for the URL.
+#. Select "Open in new Composer window."
+#. Click "Open". A new Composer window will open with ``index_html``
+ loaded.
+
+Python with M2Crypto
+====================
+
+This testing is done with M2Crypto 0.11 and Python 2.2.2 on FreeBSD.
+
+HTTPS
+=====
+
+::
+
+ >>> from M2Crypto import Rand, SSL, m2urllib
+ >>> url = m2urllib.FancyURLopener()
+ >>> url.addheader('Connection', 'close')
+ >>> u = url.open('https://127.0.0.1:9443/')
+ send: 'GET / HTTP/1.1\r\nHost: 127.0.0.1:9443\r\nAccept-Encoding: identity\r\nUser-agent: Python-urllib/1.15\r\nConnection: close\r\n\r\n'
+ reply: 'HTTP/1.1 200 OK\r\n'
+ header: Server: ZServerSSL/0.11
+ header: Date: Sun, 22 Jun 2003 13:42:34 GMT
+ header: Connection: close
+ header: Content-Type: text/html
+ header: Etag:
+ header: Content-Length: 535
+ >>> while 1:
+ ... data = u.read()
+ ... if not data: break
+ ... print(data)
+ ...
+
+::
+
+ <html><head>
+ <base href="https://127.0.0.1:9443/" />
+ <title>Zope</title></head><body bgcolor="#FFFFFF">
+
+ <h1>NgPS Desktop Portal</h1>
+
+ &nbsp;&nbsp;So many hacks.<br>
+ &nbsp;&nbsp;So little time.<br>
+
+ <h2>Link Farm</h2>
+ <ul>
+ <li><a href="http://localhost:8080/portal">Portal</a></li>
+ <li><a href="http://localhost/">Local Apache Home Page</a></li>
+ </ul>
+
+ <hr><a href="http://www.zope.org/Credits" target="_top"><img src="https://127.0.0.1:9443/p_/ZopeButton" width="115" height="50" border="0" alt="Powered by Zope" /></a></body></html>
+
+::
+
+ >>> u.close()
+ >>>
+
+XMLRPC-over-HTTPS
+=================
+
+::
+
+ >>> from M2Crypto.m2xmlrpclib import Server, SSL_Transport
+ >>> zs = Server('https://127.0.0.1:9443/', SSL_Transport())
+ >>> print(zs.propertyMap())
+ [{'type': 'string', 'id': 'title', 'mode': 'w'}]
+ >>>
+
+Conclusion
+==========
+
+Well, it works! ;-)
diff --git a/doc/html/_sources/howto.ca.rst.txt b/doc/html/_sources/howto.ca.rst.txt
new file mode 100644
index 0000000..e950b59
--- /dev/null
+++ b/doc/html/_sources/howto.ca.rst.txt
@@ -0,0 +1,370 @@
+:orphan:
+
+.. _howto-ca:
+
+HOWTO: Creating your own CA with OpenSSL
+########################################
+
+:author: Pheng Siong Ng <ngps@post1.com>
+:copyright: © 2000, 2001 by Ng Pheng Siong.
+
+Introduction
+============
+
+This is a HOWTO on creating your own *certification authority* (*CA*)
+with OpenSSL.
+
+I last created a CA about a year ago, when I began work on
+`M2Crypto <https://gitlab.com/m2crypto/m2crypto/>`__ and needed
+certificates for the SSL bits. I accepted the tools' default
+settings then, e.g., certificate validity of 365 days; this meant
+that my certificates, including my CA's certificate, have now
+expired.
+
+Since I am using these certificates for M2Crypto's demonstration
+programs (and I have forgotten the passphrase to the CA's private
+key), I decided to discard the old CA and start afresh. I also
+decided to document the process, hence this HOWTO.
+
+The Procedure
+=============
+
+I use ``CA.pl``, a Perl program written by Steve Hanson and bundled with
+OpenSSL.
+
+The following are the steps to create a CA:
+
+1. Choose a directory to do your CA work. All commands are executed
+ within this directory. Let's call the directory ``demo``.
+
+2. Copy ``CA.pl`` and ``openssl.cnf`` into ``demo``.
+
+3. Apply the following patch to ``CA.pl``, which allows it to generate a
+ CA certificate with a validity period of 1095 days, i.e.,
+ 3 years::
+
+ --- CA.pl.org Sat Mar 31 12:40:13 2001
+ +++ CA.pl Sat Mar 31 12:41:15 2001
+ @@ -97,7 +97,7 @@
+ } else {
+ print "Making CA certificate ...\n";
+ system ("$REQ -new -x509 -keyout " .
+ - "${CATOP}/private/$CAKEY -out ${CATOP}/$CACERT $DAYS");
+ + "${CATOP}/private/$CAKEY -out ${CATOP}/$CACERT -days 1095");
+ $RET=$?;
+ }
+ }
+
+
+4. Create a new CA like this::
+
+ ./CA.pl -newca
+
+ A certificate filename (or enter to create) <enter>
+
+ Making CA certificate ...
+ Using configuration from openssl.cnf
+ Generating a 1024 bit RSA private key
+ ............++++++
+ ......................++++++
+ writing new private key to './demoCA/private/cakey.pem'
+ Enter PEM pass phrase: <secret passphrase here>
+ Verifying password - Enter PEM pass phrase: <secret passphrase again>
+ -----
+ You are about to be asked to enter information that will be incorporated
+ into your certificate request.
+ What you are about to enter is what is called a Distinguished Name or a DN.
+ There are quite a few fields but you can leave some blank
+ For some fields there will be a default value,
+ If you enter '.', the field will be left blank.
+ -----
+ Country Name (2 letter code) [AU]:SG
+ State or Province Name (full name) [Some-State]:.
+ Locality Name (eg, city) []:..
+ Organization Name (eg, company) [Internet Widgits Pty Ltd]:DemoCA
+ Organizational Unit Name (eg, section) []:.
+ Common Name (eg, YOUR name) []:DemoCA Certificate Master
+ Email Address []:certmaster@democa.dom
+
+ This creates a new CA in the directory ``demoCA``. The CA's
+ self-signed certificate is in ``demoCA/cacert.pem`` and its RSA key
+ pair is in ``demoCA/private/cakey.pem``.
+
+ ``demoCA/private/cakey.pem`` looks like this::
+
+ cat demoCA/private/cakey.pem
+
+ -----BEGIN RSA PRIVATE KEY-----
+ Proc-Type: 4,ENCRYPTED
+ DEK-Info: DES-EDE3-CBC,19973A9DBBB601BA
+
+ eOq9WFScNiI4/UWEUaSnGTKpJv2JYuMD3HwQox2Q3Cd4zGqVjJ6gF3exa5126cKf
+ X/bMVnwbPpuFZPiAIvaLyCjT6pYeXTBbSzs7/GQnvEOv+nYnDUFWi0Qm92qLk0uy
+ pFi/M1aWheN3vir2ZlAw+DW0bOOZhj8tC7Co7lMYb0YE271b6/YRPZCwQ3GXAHUJ
+ +aMYxlUDrK45aCUa/1CZDzTgk7h9cDgx2QJSIvYMYytCfI3zsuZMJS8/4OXLL0bI
+ lKmAc1dwB3DqGJt5XK4WJesiNfdxeCNEgAcYtEAgYZTPIApU+kTgTCIxJl2nMW7j
+ ax+Q1z7g+4MpgG20WD633D4z4dTlDdz+dnLi0rvuvxiwt+dUhrqiML1tyi+Z6EBH
+ jU4/cLBWev3rYfrlp4x8J9mDte0YKOk3t0wQOHqRetTsIfdtjnFp/Hu3qDmTCWjD
+ z/g7PPoO/bg/B877J9WBPbL/1hXXFYo88M+2aGlPOgDcFdiOqbLb2DCscohMbbVr
+ A4mgiy2kwWfIE73qiyV7yyG8FlRvr1iib+jbT3LTGf743utYAAs7HNGuOUObhoyt
+ jYvBD7ACn35P5YX7KTqvqErwdijxYCaNBCnvmRtmYSaNw9Kv1UJTxc5Vx7YLwIPk
+ E9KyBgKI7vPOjWBZ27+zOvNycmv1ciNtpALAw4bWtXnhCDVTHaVDy34OkheMzNCg
+ 2cjcBFzOkMIjcI03KbTQXOFIQGlsTWXGzkNf/zBQ+KksT1MCj+zBXSCvlDASMckg
+ kef21pGgUqPF14gKGfWX3sV4bjc1vbrRwq6zlG3nMuYqR5MtJJY9eQ==
+ -----END RSA PRIVATE KEY-----
+
+
+5. Next, generate a certificate request::
+
+ ./CA.pl -newreq
+
+ Using configuration from openssl.cnf
+ Generating a 1024 bit RSA private key
+ ..........++++++
+ ..............++++++
+ writing new private key to 'newreq.pem'
+ Enter PEM pass phrase: <another secret passphrase here>
+ Verifying password - Enter PEM pass phrase: <another secret passphrase again>
+ -----
+ You are about to be asked to enter information that will be incorporated
+ into your certificate request.
+ What you are about to enter is what is called a Distinguished Name or a DN.
+ There are quite a few fields but you can leave some blank
+ For some fields there will be a default value,
+ If you enter '.', the field will be left blank.
+ -----
+ Country Name (2 letter code) [AU]:SG
+ State or Province Name (full name) [Some-State]:..
+ Locality Name (eg, city) []:.
+ Organization Name (eg, company) [Internet Widgits Pty Ltd]:M2Crypto
+ Organizational Unit Name (eg, section) []:.
+ Common Name (eg, YOUR name) []:localhost
+ Email Address []:admin@server.example.dom
+
+ Please enter the following 'extra' attributes
+ to be sent with your certificate request
+ A challenge password []:<enter>
+ An optional company name []:<enter>
+ Request (and private key) is in newreq.pem
+
+\
+
+ The certificate request and private key in ``newreq.pem`` looks like
+ this::
+
+ cat newreq.pem
+
+ -----BEGIN RSA PRIVATE KEY-----
+ Proc-Type: 4,ENCRYPTED
+ DEK-Info: DES-EDE3-CBC,41B2874DF3D02DD4
+
+ mg611EoVkLEooSTv+qTM0Ddmm/M1jE/Jy5RD/sc3LSMhuGu9xc26OgsTJmkQuIAh
+ J/B4lAw8G59VTG6DykeEtrG0rUBx4bggc7PKbFuiN423YjJODWcHvVgnPOzXMQt+
+ lY4tPl5+217MRHyx2NsWGrpkQNdu3GeSPOVMl3jeQiaXupONbwQ7rj42+X/VtAJP
+ W4D1NNwu8aGCPyShsEXHc/fI1WDpphYWke97pOjIZVQESFZOPty5HjIYZux4U+td
+ W81xODtq2ecJXc8fn2Wpa9y5VD1LT7oJksOuL1+Z04OVaeUe4x0swM17HlBm2kVt
+ fe/C/L6kN27MwZhE331VjtTjSGl4/gknqQDbLOtqT06f3OISsDJETm2itllyhgzv
+ C6Fi3N03rGFmKectijC+tws5k+P+HRG6sai33usk8xPokJqA+HYSWPz1XVlpRmv4
+ kdjQOdST7ovU62mOTgf3ARcduPPwuzTfxOlYONe5NioO1APVHBrInQwcpLkpOTQR
+ vI4roIN+b75/nihUWGUJn/nbbBa2Yl0N5Gs1Tyiy9Z+CcRT2TfWKBBFlEUIFl7Mb
+ J9fTV3DI+k+akbR4il1NkQ8EcSmCr3WpA0I9n0EHI7ZVpVaHxc0sqaPFl8YGdFHq
+ 1Qk53C/w6+qPpDzT3yKFmG2LZytAAM1czvb6RbNRJJP2ZrpBwn/h99sUTo/yPfxY
+ nueYmFJDm0uVNtG0icXGNUfSfnjKNTtHPAgyKGetRIC3kgJz/bo2w7EI6iEjBAzK
+ l5TRm4x6ZJxwuXXMiJCehMMd8TC8ybwWO4AO19B3ebFFeTVsUgxSGA==
+ -----END RSA PRIVATE KEY-----
+ -----BEGIN CERTIFICATE REQUEST-----
+ MIIBnTCCAQYCAQAwXTELMAkGA1UEBhMCU0cxETAPBgNVBAoTCE0yQ3J5cHRvMRIw
+ EAYDVQQDEwlsb2NhbGhvc3QxJzAlBgkqhkiG9w0BCQEWGGFkbWluQHNlcnZlci5l
+ eGFtcGxlLmRvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAr1nYY1Qrll1r
+ uB/FqlCRrr5nvupdIN+3wF7q915tvEQoc74bnu6b8IbbGRMhzdzmvQ4SzFfVEAuM
+ MuTHeybPq5th7YDrTNizKKxOBnqE2KYuX9X22A1Kh49soJJFg6kPb9MUgiZBiMlv
+ tb7K3CHfgw5WagWnLl8Lb+ccvKZZl+8CAwEAAaAAMA0GCSqGSIb3DQEBBAUAA4GB
+ AHpoRp5YS55CZpy+wdigQEwjL/wSluvo+WjtpvP0YoBMJu4VMKeZi405R7o8oEwi
+ PdlrrliKNknFmHKIaCKTLRcU59ScA6ADEIWUzqmUzP5Cs6jrSRo3NKfg1bd09D1K
+ 9rsQkRc9Urv9mRBIsredGnYECNeRaK5R1yzpOowninXC
+ -----END CERTIFICATE REQUEST-----
+
+\
+
+ Decoding the certificate request gives the following::
+
+ openssl req -text -noout < newreq.pem
+
+ Using configuration from /usr/local/pkg/openssl/openssl.cnf
+ Certificate Request:
+ Data:
+ Version: 0 (0x0)
+ Subject: C=SG, O=M2Crypto, CN=localhost/Email=admin@server.example.dom
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public Key: (1024 bit)
+ Modulus (1024 bit):
+ 00:af:59:d8:63:54:2b:96:5d:6b:b8:1f:c5:aa:50:
+ 91:ae:be:67:be:ea:5d:20:df:b7:c0:5e:ea:f7:5e:
+ 6d:bc:44:28:73:be:1b:9e:ee:9b:f0:86:db:19:13:
+ 21:cd:dc:e6:bd:0e:12:cc:57:d5:10:0b:8c:32:e4:
+ c7:7b:26:cf:ab:9b:61:ed:80:eb:4c:d8:b3:28:ac:
+ 4e:06:7a:84:d8:a6:2e:5f:d5:f6:d8:0d:4a:87:8f:
+ 6c:a0:92:45:83:a9:0f:6f:d3:14:82:26:41:88:c9:
+ 6f:b5:be:ca:dc:21:df:83:0e:56:6a:05:a7:2e:5f:
+ 0b:6f:e7:1c:bc:a6:59:97:ef
+ Exponent: 65537 (0x10001)
+ Attributes:
+ a0:00
+ Signature Algorithm: md5WithRSAEncryption
+ 7a:68:46:9e:58:4b:9e:42:66:9c:be:c1:d8:a0:40:4c:23:2f:
+ fc:12:96:eb:e8:f9:68:ed:a6:f3:f4:62:80:4c:26:ee:15:30:
+ a7:99:8b:8d:39:47:ba:3c:a0:4c:22:3d:d9:6b:ae:58:8a:36:
+ 49:c5:98:72:88:68:22:93:2d:17:14:e7:d4:9c:03:a0:03:10:
+ 85:94:ce:a9:94:cc:fe:42:b3:a8:eb:49:1a:37:34:a7:e0:d5:
+ b7:74:f4:3d:4a:f6:bb:10:91:17:3d:52:bb:fd:99:10:48:b2:
+ b7:9d:1a:76:04:08:d7:91:68:ae:51:d7:2c:e9:3a:8c:27:8a:
+ 75:c2
+
+6. Now, sign the certificate request::
+
+ ./CA.pl -sign
+
+ Using configuration from openssl.cnf
+ Enter PEM pass phrase: <CA's passphrase>
+ Check that the request matches the signature
+ Signature ok
+ The Subjects Distinguished Name is as follows
+ countryName :PRINTABLE:'SG'
+ organizationName :PRINTABLE:'M2Crypto'
+ commonName :PRINTABLE:'localhost'
+ emailAddress :IA5STRING:'admin@server.example.dom'
+ Certificate is to be certified until Mar 31 02:57:30 2002 GMT (365 days)
+ Sign the certificate? [y/n]:y
+
+
+ 1 out of 1 certificate requests certified, commit? [y/n]y
+ Write out database with 1 new entries
+ Data Base Updated
+ Signed certificate is in newcert.pem
+
+\
+
+ ``newcert.pem`` looks like this::
+
+ cat newcert.pem
+
+ Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 1 (0x1)
+ Signature Algorithm: md5WithRSAEncryption
+ Issuer: C=SG, O=DemoCA, CN=DemoCA Certificate Master/Email=certmaster@democa.dom
+ Validity
+ Not Before: Mar 31 02:57:30 2001 GMT
+ Not After : Mar 31 02:57:30 2002 GMT
+ Subject: C=SG, O=M2Crypto, CN=localhost/Email=admin@server.example.dom
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public Key: (1024 bit)
+ Modulus (1024 bit):
+ 00:af:59:d8:63:54:2b:96:5d:6b:b8:1f:c5:aa:50:
+ 91:ae:be:67:be:ea:5d:20:df:b7:c0:5e:ea:f7:5e:
+ 6d:bc:44:28:73:be:1b:9e:ee:9b:f0:86:db:19:13:
+ 21:cd:dc:e6:bd:0e:12:cc:57:d5:10:0b:8c:32:e4:
+ c7:7b:26:cf:ab:9b:61:ed:80:eb:4c:d8:b3:28:ac:
+ 4e:06:7a:84:d8:a6:2e:5f:d5:f6:d8:0d:4a:87:8f:
+ 6c:a0:92:45:83:a9:0f:6f:d3:14:82:26:41:88:c9:
+ 6f:b5:be:ca:dc:21:df:83:0e:56:6a:05:a7:2e:5f:
+ 0b:6f:e7:1c:bc:a6:59:97:ef
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints:
+ Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 1 (0x1)
+ Signature Algorithm: md5WithRSAEncryption
+ Issuer: C=SG, O=DemoCA, CN=DemoCA Certificate Master/Email=certmaster@democa.dom
+ Validity
+ Not Before: Mar 31 02:57:30 2001 GMT
+ Not After : Mar 31 02:57:30 2002 GMT
+ Subject: C=SG, O=M2Crypto, CN=localhost/Email=admin@server.example.dom
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public Key: (1024 bit)
+ Modulus (1024 bit):
+ 00:af:59:d8:63:54:2b:96:5d:6b:b8:1f:c5:aa:50:
+ 91:ae:be:67:be:ea:5d:20:df:b7:c0:5e:ea:f7:5e:
+ 6d:bc:44:28:73:be:1b:9e:ee:9b:f0:86:db:19:13:
+ 21:cd:dc:e6:bd:0e:12:cc:57:d5:10:0b:8c:32:e4:
+ c7:7b:26:cf:ab:9b:61:ed:80:eb:4c:d8:b3:28:ac:
+ 4e:06:7a:84:d8:a6:2e:5f:d5:f6:d8:0d:4a:87:8f:
+ 6c:a0:92:45:83:a9:0f:6f:d3:14:82:26:41:88:c9:
+ 6f:b5:be:ca:dc:21:df:83:0e:56:6a:05:a7:2e:5f:
+ 0b:6f:e7:1c:bc:a6:59:97:ef
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints:
+ CA:FALSE
+ Netscape Comment:
+ OpenSSL Generated Certificate
+ X509v3 Subject Key Identifier:
+ B3:D6:89:88:2F:B1:15:40:EC:0A:C0:30:35:3A:B7:DA:72:73:1B:4D
+ X509v3 Authority Key Identifier:
+ keyid:F9:6A:A6:34:97:6B:BC:BB:5A:17:0D:19:FC:62:21:0B:00:B5:0E:29
+ DirName:/C=SG/O=DemoCA/CN=DemoCA Certificate Master/Email=certmaster@democa.dom
+ serial:00
+
+ Signature Algorithm: md5WithRSAEncryption
+
+7. In certain situations, e.g., where your certificate and private key
+ are to be used in an unattended SSL server, you may wish to not
+ encrypt the private key, i.e., leave the key in the clear. This
+ decision should be governed by your site's security policy and threat
+ model, of course::
+
+ openssl rsa < newkey.pem > newkey2.pem
+
+ read RSA key
+ Enter PEM pass phrase:<secret passphrase here>
+ writing RSA key
+
+ ``newkey2.pem`` looks like this::
+
+ cat newkey2.pem
+
+ -----BEGIN RSA PRIVATE KEY-----
+ MIICXgIBAAKBgQCvWdhjVCuWXWu4H8WqUJGuvme+6l0g37fAXur3Xm28RChzvhue
+ 7pvwhtsZEyHN3Oa9DhLMV9UQC4wy5Md7Js+rm2HtgOtM2LMorE4GeoTYpi5f1fbY
+ DUqHj2ygkkWDqQ9v0xSCJkGIyW+1vsrcId+DDlZqBacuXwtv5xy8plmX7wIDAQAB
+ AoGAbAkU8w3W1Qu15Hle1bJSL7GMReoreqeblOBmMAZz4by0l6sXZXJpjWXo86f/
+ +dASMYTMPC4ZTYtv06N07AFbjL+kDfqDMTfzQkYMHp1LAq1Ihbq1rHWSBH5n3ekq
+ KiY8JKpv8DR5Po1iKaXJFuDByGDENJwYbSRSpSK3P+vkWWECQQDkEUE/ZPqqqZkQ
+ 2iWRPAsCbEID8SAraQl3DdCLYs/GgARfmmj4yUHEwkys9Jo1H8k4BdxugmaUwNi5
+ YQ/CVzrXAkEAxNO80ArbGxPUmr11GHG/bGBYj1DUBkHZSc7dgxZdtUCLGNxQnNsg
+ Iwq3n6j1sUzS3UW6abQ8bivYNOUcMKJAqQJBANQxFaLU4b/NQaODQ3aoBZpAfP9L
+ 5eFdvbet+7zjt2r5CpikgkwOfAmDuXEltx/8LevY0CllW+nErx9zJgVrwUsCQQCu
+ 76H5JiznPBDSF2FjgHWqVVdgyW4owY3mU739LHvNBLicN/RN9VPy0Suy8/CqzKT9
+ lWPBXzf2k3FuUdNkRlFBAkEAmpXoybuiFR2S5Bma/ax96lVs0/VihhfC1zZP/X/F
+ Br77+h9dIul+2DnyOl50zu0Sdzst1/7ay4JSDHyiBCMGSQ==
+ -----END RSA PRIVATE KEY-----
+
+
+That's it! The certificate, ``newcert.pem``, and the private key -
+``newkey.pem`` (encrypted) or ``newkey2.pem`` (unencrypted) - are now
+ready to be used. You may wish to rename the files to more intuitive
+names.
+
+You should also keep the CA's certificate ``demo/cacert.pem`` handy
+for use when developing and deploying SSL or S/MIME applications.
+
+Conclusion
+==========
+
+We've walked through the basic steps in the creation of a CA and
+certificates using the tools that come with OpenSSL. We did not cover
+more advanced topics such as constraining a certificate to be SSL-only
+or S/MIME-only.
+
+There exist several HOWTOs similar to this one on the net. This one is
+written specifically to facilitate discussions in my other HOWTOs on
+developing SSL and S/MIME applications in
+`Python <http://www.python.org>`__ using
+`M2Crypto <https://gitlab.com/m2crypto/m2crypto/>`__.
+
diff --git a/doc/html/_sources/howto.smime.rst.txt b/doc/html/_sources/howto.smime.rst.txt
new file mode 100644
index 0000000..715e7c4
--- /dev/null
+++ b/doc/html/_sources/howto.smime.rst.txt
@@ -0,0 +1,778 @@
+:orphan:
+
+.. _howto-smime:
+
+HOWTO: Programming S/MIME in Python with M2Crypto
+=================================================
+
+:author: Pheng Siong Ng <ngps@post1.com>
+:copyright: © 2000, 2001 by Ng Pheng Siong.
+
+Introduction
+============
+
+`M2Crypto <https://gitlab.com/m2crypto/m2crypto/>`__ is a
+`Python <http://www.python.org>`__ interface to
+`OpenSSL <http://www.openssl.org>`__. It makes available to the Python
+programmer SSL functionality to implement clients and servers, S/MIME
+v2, RSA, DSA, DH, symmetric ciphers, message digests and HMACs.
+
+This document demonstrates programming S/MIME with M2Crypto.
+
+S/MIME
+======
+
+S/MIME - Secure Multipurpose Internet Mail Extensions [RFC 2311, RFC
+2312] - provides a consistent way to send and receive secure MIME data.
+Based on the popular Internet MIME standard, S/MIME provides the
+following cryptographic security services for electronic messaging
+applications - *authentication*, *message integrity* and
+*non-repudiation of origin* (using *digital signatures*), and *privacy*
+and *data security* (using *encryption*).
+
+Keys and Certificates
+=====================
+
+To create an S/MIME-signed message, you need an RSA key pair (this
+consists of a public key and a private key) and an X.509 certificate of
+said public key.
+
+To create an S/MIME-encrypted message, you need an X.509 certificate for
+each recipient.
+
+To create an S/MIME-signed *and* -encrypted message, first create a
+signed message, then encrypt the signed message with the recipients'
+certificates.
+
+You may generate key pairs and obtain certificates by using a commercial
+*certification authority* service.
+
+You can also do so using freely-available software. For many purposes,
+e.g., automated S/MIME messaging by system administration processes,
+this approach is cheap and effective.
+
+We now work through using OpenSSL to generate key pairs and
+certificates. This assumes you have OpenSSL installed properly on your
+system.
+
+First, we generate an X.509 certificate to be used for signing::
+
+ openssl req -newkey rsa:1024 -nodes -x509 -days 365 -out signer.pem
+
+ Using configuration from /usr/local/pkg/openssl/openssl.cnf
+ Generating a 1024 bit RSA private key
+ ..++++++
+ ....................++++++
+ writing new private key to 'privkey.pem'
+ -----
+ You are about to be asked to enter information that will be incorporated
+ into your certificate request.
+ What you are about to enter is what is called a Distinguished Name or a DN.
+ There are quite a few fields but you can leave some blank
+ For some fields there will be a default value,
+ If you enter '.', the field will be left blank.
+ -----
+ Country Name (2 letter code) [AU]:SG
+ State or Province Name (full name) [Some-State]:.
+ Locality Name (eg, city) []:.
+ Organization Name (eg, company) [Internet Widgits Pty Ltd]:M2Crypto
+ Organizational Unit Name (eg, section) []:.
+ Common Name (eg, YOUR name) []:S/MIME Sender
+ Email Address []:sender@example.dom
+
+
+This generates a 1024-bit RSA key pair, unencrypted, into
+``privkey.pem``; it also generates a self-signed X.509 certificate for
+the public key into ``signer.pem``. The certificate is valid for 365
+days, i.e., a year.
+
+Let's rename ``privkey.pem`` so that we know it is a companion of
+``signer.pem``'s::
+
+ mv privkey.pem signer_key.pem
+
+To verify the content of ``signer.pem``, execute the following::
+
+ openssl x509 -noout -text -in signer.pem
+
+ Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 0 (0x0)
+ Signature Algorithm: md5WithRSAEncryption
+ Issuer: C=SG, O=M2Crypto, CN=S/MIME Sender/Email=sender@example.dom
+ Validity
+ Not Before: Mar 24 12:56:16 2001 GMT
+ Not After : Mar 24 12:56:16 2002 GMT
+ Subject: C=SG, O=M2Crypto, CN=S/MIME Sender/Email=sender@example.dom
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public Key: (1024 bit)
+ Modulus (1024 bit):
+ 00:a9:d6:e2:b5:11:3b:ae:3c:e2:17:31:70:e1:6e:
+ 01:f4:19:6d:bd:2a:42:36:2b:37:34:e2:83:1d:0d:
+ 11:2e:b4:99:44:db:10:67:be:97:5f:5b:1a:26:33:
+ 46:23:2f:95:04:7a:35:da:9d:f9:26:88:39:9e:17:
+ cd:3e:eb:a8:19:8d:a8:2a:f1:43:da:55:a9:2e:2c:
+ 65:ed:04:71:42:ce:73:53:b8:ea:7e:c7:f0:23:c6:
+ 63:c5:5e:68:96:64:a7:b4:2a:94:26:76:eb:79:ea:
+ e3:4e:aa:82:09:4f:44:87:4a:12:62:b5:d7:1f:ca:
+ f2:ce:d5:ba:7e:1f:48:fd:b9
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Subject Key Identifier:
+ 29:FB:38:B6:BF:E2:40:BB:FF:D5:71:D7:D5:C4:F0:83:1A:2B:C7:99
+ X509v3 Authority Key Identifier:
+ keyid:29:FB:38:B6:BF:E2:40:BB:FF:D5:71:D7:D5:C4:F0:83:1A:2B:C7:99
+ DirName:/C=SG/O=M2Crypto/CN=S/MIME Sender/Email=sender@example.dom
+ serial:00
+
+ X509v3 Basic Constraints:
+ CA:TRUE
+ Signature Algorithm: md5WithRSAEncryption
+ 68:c8:6b:1b:fa:7c:9a:39:35:76:18:15:c9:fd:89:97:62:db:
+ 7a:b0:2d:13:dd:97:e8:1b:7a:9f:22:27:83:24:9d:2e:56:ec:
+ 97:89:3c:ef:16:55:80:5a:18:7c:22:d0:f6:bb:e3:a4:e8:59:
+ 30:ff:99:5a:93:3e:ea:bc:ee:7f:8d:d6:7d:37:8c:ac:3d:74:
+ 80:ce:7a:99:ba:27:b9:2a:a3:71:fa:a5:25:ba:47:17:df:07:
+ 56:96:36:fd:60:b9:6c:96:06:e8:e3:7b:9f:4b:6a:95:71:a8:
+ 34:fc:fc:b5:88:8b:c4:3f:1e:24:f6:52:47:b2:7d:44:67:d9:
+ 83:e8
+
+Next, we generate a self-signed X.509 certificate for the recipient.
+Note that ``privkey.pem`` will be recreated::
+
+ openssl req -newkey rsa:1024 -nodes -x509 -days 365 -out recipient.pem
+
+ Using configuration from /usr/local/pkg/openssl/openssl.cnf
+ Generating a 1024 bit RSA private key
+ .....................................++++++
+ .................++++++
+ writing new private key to 'privkey.pem'
+ -----
+ You are about to be asked to enter information that will be incorporated
+ into your certificate request.
+ What you are about to enter is what is called a Distinguished Name or a DN.
+ There are quite a few fields but you can leave some blank
+ For some fields there will be a default value,
+ If you enter '.', the field will be left blank.
+ -----
+ Country Name (2 letter code) [AU]:SG
+ State or Province Name (full name) [Some-State]:.
+ Locality Name (eg, city) []:.
+ Organization Name (eg, company) [Internet Widgits Pty Ltd]:M2Crypto
+ Organizational Unit Name (eg, section) []:.
+ Common Name (eg, YOUR name) []:S/MIME Recipient
+ Email Address []:recipient@example.dom
+
+Again, rename ``privkey.pem``::
+
+ mv privkey.pem recipient_key.pem
+
+
+In the examples to follow, S/MIME Sender, ``<sender@example.dom>``,
+shall be the sender of S/MIME messages, while S/MIME Recipient,
+``<recipient@example.dom>``, shall be the recipient of S/MIME messages.
+
+Armed with the key pairs and certificates, we are now ready to begin
+programming S/MIME in Python.
+
+ **Note:** The private keys generated above are *not
+ passphrase-protected*, i.e., they are *in the clear*. Anyone who has
+ access to such a key can generate S/MIME-signed messages with it,
+ and decrypt S/MIME messages encrypted to it's corresponding public
+ key.
+
+ We may passphrase-protect the keys, if we so choose. M2Crypto will
+ prompt the user for the passphrase when such a key is being loaded.
+
+M2Crypto.SMIME
+==============
+
+The Python programmer accesses M2Crypto's S/MIME functionality through
+class ``SMIME`` in the module ``M2Crypto.SMIME``. Typically, an
+``SMIME`` object is instantiated; the object is then set up for the
+intended operation: sign, encrypt, decrypt or verify; finally, the
+operation is invoked on the object.
+
+``M2Crypto.SMIME`` makes extensive use of ``M2Crypto.BIO``:
+``M2Crypto.BIO`` is a Python abstraction of the ``BIO`` abstraction in
+OpenSSL. A commonly used ``BIO`` abstraction in M2Crypto is
+``M2Crypto.BIO.MemoryBuffer``, which implements a memory-based file-like
+object, similar to Python's own ``StringIO``.
+
+Sign
+====
+
+The following code demonstrates how to generate an S/MIME-signed
+message. ``randpool.dat`` contains random data which is used to seed
+OpenSSL's pseudo-random number generator via M2Crypto::
+
+ from M2Crypto import BIO, Rand, SMIME
+
+ def makebuf(text):
+ return BIO.MemoryBuffer(text)
+
+ # Make a MemoryBuffer of the message.
+ buf = makebuf('a sign of our times')
+
+ # Seed the PRNG.
+ Rand.load_file('randpool.dat', -1)
+
+ # Instantiate an SMIME object; set it up; sign the buffer.
+ s = SMIME.SMIME()
+ s.load_key('signer_key.pem', 'signer.pem')
+ p7 = s.sign(buf, SMIME.PKCS7_DETACHED)
+
+
+``p7`` now contains a *PKCS #7 signature blob* wrapped in an
+``M2Crypto.SMIME.PKCS7`` object. Note that ``buf`` has been consumed by
+``sign()`` and has to be recreated if it is to be used again.
+
+We may now send the signed message via SMTP. In these examples, we shall
+not do so; instead, we'll render the S/MIME output in mail-friendly
+format, and pretend that our messages are sent and received
+correctly::
+
+ # Recreate buf.
+ buf = makebuf('a sign of our times')
+
+ # Output p7 in mail-friendly format.
+ out = BIO.MemoryBuffer()
+ out.write('From: sender@example.dom\n')
+ out.write('To: recipient@example.dom\n')
+ out.write('Subject: M2Crypto S/MIME testing\n')
+ s.write(out, p7, buf)
+
+ print(out.read())
+
+ # Save the PRNG's state.
+ Rand.save_file('randpool.dat')
+
+Here's the output::
+
+ From: sender@example.dom
+ To: recipient@example.dom
+ Subject: M2Crypto S/MIME testing
+ MIME-Version: 1.0
+ Content-Type: multipart/signed ; protocol="application/x-pkcs7-signature" ; micalg=sha1 ; boundary="----3C93156FC7B4EBF49FE9C7DB7F503087"
+
+ This is an S/MIME signed message
+
+ ------3C93156FC7B4EBF49FE9C7DB7F503087
+ a sign of our times
+ ------3C93156FC7B4EBF49FE9C7DB7F503087
+ Content-Type: application/x-pkcs7-signature; name="smime.p7s"
+ Content-Transfer-Encoding: base64
+ Content-Disposition: attachment; filename="smime.p7s"
+
+ MIIE8AYJKoZIhvcNAQcCoIIE4TCCBN0CAQExCzAJBgUrDgMCGgUAMCIGCSqGSIb3
+ DQEHAaAVBBNhIHNpZ24gb2Ygb3VyIHRpbWVzoIIC5zCCAuMwggJMoAMCAQICAQAw
+ DQYJKoZIhvcNAQEEBQAwWzELMAkGA1UEBhMCU0cxETAPBgNVBAoTCE0yQ3J5cHRv
+ MRYwFAYDVQQDEw1TL01JTUUgU2VuZGVyMSEwHwYJKoZIhvcNAQkBFhJzZW5kZXJA
+ ZXhhbXBsZS5kb20wHhcNMDEwMzMxMTE0MDMzWhcNMDIwMzMxMTE0MDMzWjBbMQsw
+ CQYDVQQGEwJTRzERMA8GA1UEChMITTJDcnlwdG8xFjAUBgNVBAMTDVMvTUlNRSBT
+ ZW5kZXIxITAfBgkqhkiG9w0BCQEWEnNlbmRlckBleGFtcGxlLmRvbTCBnzANBgkq
+ hkiG9w0BAQEFAAOBjQAwgYkCgYEA5c5Tj1CHTSOxa1q2q0FYiwMWYHptJpJcvtZm
+ UwrgU5sHrA8OnCM0cDXEj0KPf3cfNjHffB8HWMzI4UEgNmFXQNsxoGZ+iqwxLlNj
+ y9Mh7eFW/Bjq5hNXbouSlQ0rWBRkoxV64y+t6lQehb32WfYXQbKFxFJSXzSxOx3R
+ 8YhSPd0CAwEAAaOBtjCBszAdBgNVHQ4EFgQUXOyolL1t4jaBwZFRM7MS8nBLzUow
+ gYMGA1UdIwR8MHqAFFzsqJS9beI2gcGRUTOzEvJwS81KoV+kXTBbMQswCQYDVQQG
+ EwJTRzERMA8GA1UEChMITTJDcnlwdG8xFjAUBgNVBAMTDVMvTUlNRSBTZW5kZXIx
+ ITAfBgkqhkiG9w0BCQEWEnNlbmRlckBleGFtcGxlLmRvbYIBADAMBgNVHRMEBTAD
+ AQH/MA0GCSqGSIb3DQEBBAUAA4GBAHo3DrCHR86fSTVAvfiXdSswWqKtCEhUHRdC
+ TLFGl4hDk2GyZxaFuqZwiURz/H7nMicymI2wkz8H/wyHFg8G3BIehURpj2v/ZWXY
+ eovbgS7EZALVVkDj4hNl/IIHWd6Gtv1UODf7URbxtl3hQ9/eTWITrefT1heuPnar
+ 8czydsOLMYIBujCCAbYCAQEwYDBbMQswCQYDVQQGEwJTRzERMA8GA1UEChMITTJD
+ cnlwdG8xFjAUBgNVBAMTDVMvTUlNRSBTZW5kZXIxITAfBgkqhkiG9w0BCQEWEnNl
+ bmRlckBleGFtcGxlLmRvbQIBADAJBgUrDgMCGgUAoIGxMBgGCSqGSIb3DQEJAzEL
+ BgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTAxMDMzMTExNDUwMlowIwYJKoZI
+ hvcNAQkEMRYEFOoeRUd8ExIYXfQq8BTFuKWrSP3iMFIGCSqGSIb3DQEJDzFFMEMw
+ CgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsO
+ AwIHMA0GCCqGSIb3DQMCAgEoMA0GCSqGSIb3DQEBAQUABIGAQpU8hFUtLCF6hO2t
+ ec9EYJ/Imqqiiw+BxWxkUUVT81Vbjwdn9JST6+sztM5JRP2ZW+b4txEjZriYC8f3
+ kv95YMTGbIsuWkJ93GrbvqoJ/CxO23r9WWRnZEm/1EZN9ZmlrYqzBTxnNRmP3Dhj
+ cW8kzZwH+2/2zz2G7x1HxRWH95A=
+
+ ------3C93156FC7B4EBF49FE9C7DB7F503087--
+
+
+Verify
+======
+
+Assume the above output has been saved into ``sign.p7``. Let's now
+verify the signature::
+
+ from M2Crypto import SMIME, X509
+
+ # Instantiate an SMIME object.
+ s = SMIME.SMIME()
+
+ # Load the signer's cert.
+ x509 = X509.load_cert('signer.pem')
+ sk = X509.X509_Stack()
+ sk.push(x509)
+ s.set_x509_stack(sk)
+
+ # Load the signer's CA cert. In this case, because the signer's
+ # cert is self-signed, it is the signer's cert itself.
+ st = X509.X509_Store()
+ st.load_info('signer.pem')
+ s.set_x509_store(st)
+
+ # Load the data, verify it.
+ p7, data = SMIME.smime_load_pkcs7('sign.p7')
+ v = s.verify(p7, data)
+ print(v)
+ print(data)
+ print(data.read())
+
+Here's the output of the above program::
+
+ a sign of our times
+ <M2Crypto.BIO.BIO instance at 0x822012c>
+ a sign of our times
+
+Suppose, instead of loading ``signer.pem`` above, we load
+``recipient.pem``. That is, we do a global substitution of
+``recipient.pem`` for ``signer.pem`` in the above program. Here's the
+modified program's output::
+
+ Traceback (most recent call last):
+ File "./verify.py", line 22, in ?
+ v = s.verify(p7)
+ File "/usr/local/home/ngps/prog/m2/M2Crypto/SMIME.py", line 205, in verify
+ raise SMIME_Error, Err.get_error()
+ M2Crypto.SMIME.SMIME_Error: 312:error:21075075:PKCS7 routines:PKCS7_verify:certificate verify error:pk7_smime.c:213:Verify error:self signed certificate
+
+
+As displayed, the error is generated by line 213 of OpenSSL's
+``pk7_smime.c`` (as of OpenSSL 0.9.6); if you are a C programmer, you
+may wish to look up the C source to explore OpenSSL's S/MIME
+implementation and understand why the error message is worded thus.
+
+Encrypt
+=======
+
+We now demonstrate how to generate an S/MIME-encrypted message::
+
+ from M2Crypto import BIO, Rand, SMIME, X509
+
+ def makebuf(text):
+ return BIO.MemoryBuffer(text)
+
+ # Make a MemoryBuffer of the message.
+ buf = makebuf('a sign of our times')
+
+ # Seed the PRNG.
+ Rand.load_file('randpool.dat', -1)
+
+ # Instantiate an SMIME object.
+ s = SMIME.SMIME()
+
+ # Load target cert to encrypt to.
+ x509 = X509.load_cert('recipient.pem')
+ sk = X509.X509_Stack()
+ sk.push(x509)
+ s.set_x509_stack(sk)
+
+ # Set cipher: 3-key triple-DES in CBC mode.
+ s.set_cipher(SMIME.Cipher('des_ede3_cbc'))
+
+ # Encrypt the buffer.
+ p7 = s.encrypt(buf)
+
+ # Output p7 in mail-friendly format.
+ out = BIO.MemoryBuffer()
+ out.write('From: sender@example.dom\n')
+ out.write('To: recipient@example.dom\n')
+ out.write('Subject: M2Crypto S/MIME testing\n')
+ s.write(out, p7)
+
+ print(out.read())
+
+ # Save the PRNG's state.
+ Rand.save_file('randpool.dat')
+
+Here's the output of the above program::
+
+ From: sender@example.dom
+ To: recipient@example.dom
+ Subject: M2Crypto S/MIME testing
+ MIME-Version: 1.0
+ Content-Disposition: attachment; filename="smime.p7m"
+ Content-Type: application/x-pkcs7-mime; name="smime.p7m"
+ Content-Transfer-Encoding: base64
+
+ MIIBVwYJKoZIhvcNAQcDoIIBSDCCAUQCAQAxggEAMIH9AgEAMGYwYTELMAkGA1UE
+ BhMCU0cxETAPBgNVBAoTCE0yQ3J5cHRvMRkwFwYDVQQDExBTL01JTUUgUmVjaXBp
+ ZW50MSQwIgYJKoZIhvcNAQkBFhVyZWNpcGllbnRAZXhhbXBsZS5kb20CAQAwDQYJ
+ KoZIhvcNAQEBBQAEgYCBaXZ+qjpBEZwdP7gjfzfAtQitESyMwo3i+LBOw6sSDir6
+ FlNDPCnkrTvqDX3Rt6X6vBtTCYOm+qiN7ujPkOU61cN7h8dvHR8YW9+0IPY80/W0
+ lZ/HihSRgwTNd7LnxUUcPx8YV1id0dlmP0Hz+Lg+mHf6rqaR//JcYhX9vW4XvjA7
+ BgkqhkiG9w0BBwEwFAYIKoZIhvcNAwcECMN+qya6ADywgBgHr9Jkhwn5Gsdu7BwX
+ nIQfYTYcdL9I5Sk=
+
+
+Decrypt
+=======
+
+Assume the above output has been saved into ``encrypt.p7``. Decrypt the
+message thusly::
+
+ from M2Crypto import BIO, SMIME, X509
+
+ # Instantiate an SMIME object.
+ s = SMIME.SMIME()
+
+ # Load private key and cert.
+ s.load_key('recipient_key.pem', 'recipient.pem')
+
+ # Load the encrypted data.
+ p7, data = SMIME.smime_load_pkcs7('encrypt.p7')
+
+ # Decrypt p7.
+ out = s.decrypt(p7)
+
+ print(out)
+
+Here's the output::
+
+ a sign of our times
+
+
+Sign and Encrypt
+================
+
+Here's how to generate an S/MIME-signed/encrypted message::
+
+ from M2Crypto import BIO, Rand, SMIME, X509
+
+ def makebuf(text):
+ return BIO.MemoryBuffer(text)
+
+ # Make a MemoryBuffer of the message.
+ buf = makebuf('a sign of our times')
+
+ # Seed the PRNG.
+ Rand.load_file('randpool.dat', -1)
+
+ # Instantiate an SMIME object.
+ s = SMIME.SMIME()
+
+ # Load signer's key and cert. Sign the buffer.
+ s.load_key('signer_key.pem', 'signer.pem')
+ p7 = s.sign(buf)
+
+ # Load target cert to encrypt the signed message to.
+ x509 = X509.load_cert('recipient.pem')
+ sk = X509.X509_Stack()
+ sk.push(x509)
+ s.set_x509_stack(sk)
+
+ # Set cipher: 3-key triple-DES in CBC mode.
+ s.set_cipher(SMIME.Cipher('des_ede3_cbc'))
+
+ # Create a temporary buffer.
+ tmp = BIO.MemoryBuffer()
+
+ # Write the signed message into the temporary buffer.
+ s.write(tmp, p7)
+
+ # Encrypt the temporary buffer.
+ p7 = s.encrypt(tmp)
+
+ # Output p7 in mail-friendly format.
+ out = BIO.MemoryBuffer()
+ out.write('From: sender@example.dom\n')
+ out.write('To: recipient@example.dom\n')
+ out.write('Subject: M2Crypto S/MIME testing\n')
+ s.write(out, p7)
+
+ print(out.read())
+
+ # Save the PRNG's state.
+ Rand.save_file('randpool.dat')
+
+Here's the output of the above program::
+
+ From: sender@example.dom
+ To: recipient@example.dom
+ Subject: M2Crypto S/MIME testing
+ MIME-Version: 1.0
+ Content-Disposition: attachment; filename="smime.p7m"
+ Content-Type: application/x-pkcs7-mime; name="smime.p7m"
+ Content-Transfer-Encoding: base64
+
+ MIIIwwYJKoZIhvcNAQcDoIIItDCCCLACAQAxggEAMIH9AgEAMGYwYTELMAkGA1UE
+ BhMCU0cxETAPBgNVBAoTCE0yQ3J5cHRvMRkwFwYDVQQDExBTL01JTUUgUmVjaXBp
+ ZW50MSQwIgYJKoZIhvcNAQkBFhVyZWNpcGllbnRAZXhhbXBsZS5kb20CAQAwDQYJ
+ KoZIhvcNAQEBBQAEgYBlZlGupFphwhsGtIAPvDExN61qisz3oem88xoXkUW0SzoR
+ B9zJFFAuQTWzdNJgrKKYikhWjDojaAc/PFl1K5dYxRgtZLB36ULJD/v/yWmxnjz8
+ TvtK+Wbal2P/MH2pZ4LVERXa/snTElhCawUlwtiFz/JvY5CiF/dcwd+AwFQq4jCC
+ B6UGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIRF525UfwszaAggeA85RmX6AXQMxb
+ eBDz/LJeCgc3RqU1UwIsbKMquIs1S46Ebbm5nP75izPnujOkJ2hv+LNzqOWADmOl
+ +CnGEq1qxTyduIgUDA2nBgCL/gVyVy+/XC9dtImUUTxtxLgYtB0ujkBNsOaENOlM
+ fv4SGM3jkR+K/xlYG6HHzZGbfYyNGj2Y7yMZ1rL1m8SnRNmkCysKGTrudeNf6wT9
+ J6wO9DzLTioz3ZnVr3LjsSKIb4tIp4ugqNJaLuW7m3FtZ3MAgxN68hBbJs8TZ8tL
+ V/0jwUqS+grcgZEb9ymfcedxahtDUfHjRkpDpsxZzVVGkSBNcbQu92oByQVnRQ8m
+ wrYLp3/eawM5AvuV7HNpTT5ZR+1t8luishHN9899IMP2Vyg0Ub67FqFypYmM2cm2
+ sjAI4KpfvT00XFNvgLuYwYEKs9syGTO7hiHNQKcF44F5LYv6nTFwmFQB11dAtY9V
+ ull4D2CLDx9OvyNyKwdEZB5dyV0r/uKIdkhST60V2Q9KegpzgFpoZtSKM/HPYSVH
+ 1Bc9f3Q/GqZCvNZZCMx8UvRjQR8dRWDSmPJ0VXG1+wJ+fCmSPP3AuQ1/VsgPRqx2
+ 56VrpGPpGut40hV8xQFbWIZ2whwWLKPFAHj8B79ZtFUzUrU6Z2rNpvv8inHc/+S/
+ b6GR5s8/gucRblvd7n3OFNX5UJmPmcw9zWbu/1Dr9DY8l0nAQh21y5FGSS8B1wdE
+ oD2M3Lp7JbwjQbRtnDhImqul2S4yu+m+wDD1aR2K4k3GAI7KKgOBWT0+BDClcn8A
+ 4Ju6/YUbj33YlMPJgnGijLnolFy0hNW7TmWqR+8tSI3wO5eNKg4qwBnarqc3vgCV
+ quVxINAXyGQCO9lzdw6hudk8/+BlweGdqhONaIWbK5z1L/SfQo6LC9MTsj7FJydq
+ bc+kEbfZS8aSq7uc9axW6Ti0eAPJ8EVHtwhSBgZQRweKFBXs6HbbhMIdc4N0M7Oq
+ UiFXaF6s4n2uihVP6TqXtHEjTpZoC7pC+HCYiuKXUJtaqtXBOh+y3KLvHk09YL6D
+ XmTDg+UTiFsh4jKKm/BhdelbR5JbpJcj5AId76Mfr8+F/1g9ePOvsWHpQr/oIQTo
+ xEkaxCmzEgP0b6caMWfMUQrbVGxBBNcqKc/ir9fGGOPHATzzq/xLcQYvK1tZhd/D
+ ah/gpMPndsyvVCEuFPluWyDiM0VkwHgC2/3pJIYFHaxK64IutmPsy393rHMEB4kN
+ AHau6kWK+yL9qEVH1pP2zvswQ12P7gjt3T/G3bGsmvlXkEfztfjkXo6XnjcBNf5y
+ G+974AKLcjnk1gzIgarz+lAMY57Gkw4oNDMrTqVQ2OJQlvOSbllPXzH+aAiavB8W
+ ZPECLLwHxD4B1AuaiAArgKl935u/TOB+yQOR8JgGsUzROyJqHJ/SC51HkebgCkL1
+ aggtjgPlIBEXLZAlhpWLZ9lAQyrQpvCVJYwaOvfMmvRav4NAFNoZ2/Q7S4Tn1z+U
+ XX+f+GD58P4MPMhU5IKnz4yH4nlHnAiTEvcs85TZUAXze9g/uBOwZITeGtyLi52S
+ aETIr4v7SgXMepX7ThQ1Pv/jddsK/u4j2F34u0XktwCP+UrbfkE2mocdXvdzxbmd
+ tZSznK2qwgVSsPOs9MhUaepbnjmNBFFBrULhrUtSglM/VX/rWNiyh0aw4XYyHhIt
+ 9ZNlfEjKjJ67VEMBxBJ/ieUCouRGCxPYD1j65VT7oB3ZiyPu2F2nlUIcYNqPg1Sd
+ QBCrdaOXdJ0uLwyTAUeVE+wMbgscLvWsfZcCCJHAvw9NHFMUcnrdWxAYMVETNUOn
+ uryVAK7VfOldaz6z3NOSOi6nonNeHpR/sipBa4ik5xCRLT9e0S2QJgRvO9GyfAqz
+ 3DIzHtxIGePFzTiUYUTxS3i2gnMX2PEe3ChTLlYWD3jNeAKz0iOzpDphIF2xHLLQ
+ 1tCAqBmq/vUzALyDFFdFuTIqQZys4z/u4Dmyq9uXs421eN3v2hkVHvDy8uT2Ot29
+ lg4Q5YezR1EjaW//9guL1BXbcKrTEdtxeNqtem7SpZOMTSwD2lhB8z65GrX90Cyt
+ EMmaRSGYEdf5h1afL1SmKOMskbqxe1D2jG/vsXC7XX7xO/ioy0BdiJcYN1JiMOHJ
+ EOzFol5I20YkiV6j+cenfQFwc/NkaSxEkR8AUHJSbvUmRQRl6r0nnsFpZdR1w7pv
+ wkaT+eOpZynO4mY/ZtF6MpXJsixi6L4ZYXEbS6yHf+XGFfB0okILylmwv2bf6+Mq
+ nqXlmGj3Jwq7X9/+2BDqvfpFFX5lSmItKZAobLdssjFR6roJxOqRsGia2aZ+0+U5
+ VhgdITtnElgtHBaeZU5rHDswgdeLVBP+rGWnKxpJ+pLtNNi25sPYRcWFL6Erd25u
+ eXiY8GEIr+u7rqBWpc9HR34sAPRs3ubbCUleT748keCbx247ImBtiDctZxcc1O86
+ +0QjHP6HUT7FSo/FmT7a120S3Gd2jixGh06l/9ij5Z6mJa7Rm7TTbSjup/XISnOT
+ MKWcbI1nfVOhCv3xDq2eLae+s0oVoc041ceRazqFM2TL/Z6UXRME
+
+
+Decrypt and Verify
+==================
+
+Suppose the above output has been saved into ``se.p7``. The following
+demonstrates how to decrypt and verify it::
+
+ from M2Crypto import BIO, SMIME, X509
+
+ # Instantiate an SMIME object.
+ s = SMIME.SMIME()
+
+ # Load private key and cert.
+ s.load_key('recipient_key.pem', 'recipient.pem')
+
+ # Load the signed/encrypted data.
+ p7, data = SMIME.smime_load_pkcs7('se.p7')
+
+ # After the above step, 'data' == None.
+ # Decrypt p7. 'out' now contains a PKCS #7 signed blob.
+ out = s.decrypt(p7)
+
+ # Load the signer's cert.
+ x509 = X509.load_cert('signer.pem')
+ sk = X509.X509_Stack()
+ sk.push(x509)
+ s.set_x509_stack(sk)
+
+ # Load the signer's CA cert. In this case, because the signer's
+ # cert is self-signed, it is the signer's cert itself.
+ st = X509.X509_Store()
+ st.load_info('signer.pem')
+ s.set_x509_store(st)
+
+ # Recall 'out' contains a PKCS #7 blob.
+ # Transform 'out'; verify the resulting PKCS #7 blob.
+ p7_bio = BIO.MemoryBuffer(out)
+ p7, data = SMIME.smime_load_pkcs7_bio(p7_bio)
+ v = s.verify(p7)
+
+ print(v)
+
+
+The output is as follows::
+
+ a sign of our times
+
+
+Sending S/MIME messages via SMTP
+================================
+
+In the above examples, we've assumed that our S/MIME messages are sent
+and received automagically. The following is a Python function that
+generates S/MIME-signed/encrypted messages and sends them via
+SMTP::
+
+ from M2Crypto import BIO, SMIME, X509
+ import smtplib, string, sys
+
+ def sendsmime(from_addr, to_addrs, subject, msg, from_key, from_cert=None, to_certs=None, smtpd='localhost'):
+
+ msg_bio = BIO.MemoryBuffer(msg)
+ sign = from_key
+ encrypt = to_certs
+
+ s = SMIME.SMIME()
+ if sign:
+ s.load_key(from_key, from_cert)
+ if encrypt:
+ p7 = s.sign(msg_bio, flags=SMIME.PKCS7_TEXT)
+ else:
+ p7 = s.sign(msg_bio, flags=SMIME.PKCS7_TEXT|SMIME.PKCS7_DETACHED)
+ msg_bio = BIO.MemoryBuffer(msg) # Recreate coz sign() has consumed it.
+
+ if encrypt:
+ sk = X509.X509_Stack()
+ for x in to_certs:
+ sk.push(X509.load_cert(x))
+ s.set_x509_stack(sk)
+ s.set_cipher(SMIME.Cipher('des_ede3_cbc'))
+ tmp_bio = BIO.MemoryBuffer()
+ if sign:
+ s.write(tmp_bio, p7)
+ else:
+ tmp_bio.write(msg)
+ p7 = s.encrypt(tmp_bio)
+
+ out = BIO.MemoryBuffer()
+ out.write('From: %s\r\n' % from_addr)
+ out.write('To: %s\r\n' % string.join(to_addrs, ", "))
+ out.write('Subject: %s\r\n' % subject)
+ if encrypt:
+ s.write(out, p7)
+ else:
+ if sign:
+ s.write(out, p7, msg_bio, SMIME.PKCS7_TEXT)
+ else:
+ out.write('\r\n')
+ out.write(msg)
+ out.close()
+
+ smtp = smtplib.SMTP()
+ smtp.connect(smtpd)
+ smtp.sendmail(from_addr, to_addrs, out.read())
+ smtp.quit()
+
+
+This function sends plain, S/MIME-signed, S/MIME-encrypted, and
+S/MIME-signed/encrypted messages, depending on the parameters
+``from_key`` and ``to_certs``. The function's output interoperates with
+Netscape Messenger.
+
+Verifying origin of S/MIME messages
+===================================
+
+In our examples above that decrypt or verify messages, we skipped a
+step: verifying that the ``from`` address of the message matches the
+``email address`` attribute in the sender's certificate.
+
+The premise of current X.509 certification practice is that the CA is
+supposed to verify your identity, and to issue a certificate with
+``email address`` that matches your actual mail address. (Verisign's
+March 2001 failure in identity verification resulting in Microsoft
+certificates being issued to spoofers notwithstanding.)
+
+If you run your own CA, your certification practice is up to you, of
+course, and it would probably be part of your security policy.
+
+Whether your S/MIME messaging application needs to verify the ``from``
+addresses of S/MIME messages depends on your security policy and your
+system's threat model, as always.
+
+Interoperating with Netscape Messenger
+======================================
+
+Suppose S/MIME Recipient uses Netscape Messenger. To enable Messenger to
+handle S/MIME messages from S/MIME Sender, S/MIME Recipient needs to
+configure Messenger with his private key and certificate, as well as
+S/MIME Sender's certificate.
+
+ **Note:** Configuring Messenger's POP or IMAP settings so that it
+ retrieves mail correctly is beyond the scope of this HOWTO.
+
+The following steps demonstrate how to import S/MIME Recipient's private
+key and certificate for Messenger:
+
+1. Transform S/MIME Recipient's private key and certificate into *PKCS
+ #12* format::
+
+ openssl pkcs12 -export -in recipient.pem -inkey recipient_key.pem \
+ -name "S/MIME Recipient" -out recipient.p12
+
+ Enter Export Password:<enter>
+ Verifying password - Enter Export Password:<enter>
+
+2. Start Messenger.
+
+3. Click on the (open) "lock" icon at the bottom left corner of
+ Messenger's window. This brings up the "Security Info" dialog box.
+
+4. Click on "Yours" under "Certificates".
+
+5. Select "Import a certificate", then pick ``recipient.p12`` from the
+ ensuing file selection dialog box.
+
+Next, you need to import ``signer.pem`` as a CA certificate, so that
+Messenger will mark messages signed by S/MIME Sender as "trusted":
+
+1. Create a DER encoding of ``signer.pem``::
+
+ openssl x509 -inform pem -outform der -in signer.pem -out signer.der
+
+2. Install ``signer.der`` into Messenger as MIME type
+ ``application/x-x509-ca-cert``. You do this by downloading
+ ``signer.der`` via Navigator from a HTTP or HTTPS server, with the
+ correct MIME type mapping. (You may use ``demo/ssl/https_srv.py``,
+ bundled with M2Crypto, for this purpose.) Follow the series of dialog
+ boxes to accept ``signer.der`` as a CA for certifying email users.
+
+S/MIME Recipient is now able to decrypt and read S/MIME Sender's
+messages with Messenger. Messenger will indicate that S/MIME Sender's
+messages are signed, encrypted, or encrypted *and* signed, as the case
+may be, via the "stamp" icon on the message window's top right corner.
+
+Clicking on the "stamp" icon brings you to the Security Info dialog box.
+Messenger informs you that the message is, say, encrypted with 168-bit
+DES-EDE3-CBC and that it is digitally signed by the private key
+corresponding to the public key contained in the certificate
+``signer.pem``.
+
+Interoperating with Microsoft Outlook
+=====================================
+
+I do not know how to do this, as I do not use Outlook. (Nor do I use
+Netscape Messenger, actually. I use Mutt, top dog of MUAs. ;-)
+Information on how to configure Outlook with keys and certificates so
+that it handles S/MIME mail is gratefully accepted.
+
+ZSmime
+======
+
+ZSmime is a `Zope <http://www.zope.org>`__ *product* that enables Zope
+to generate S/MIME-signed/encrypted messages. ZSmime demonstrates how to
+invoke M2Crypto in a web application server extension.
+
+ZSmime has its own
+`HOWTO <http://sandbox.rulemaker.net/ngps/zope/zsmime/howto.html>`__
+explaining its usage. (That HOWTO has some overlap in content with this
+document.)
+
+Resources
+=========
+
+- IETF S/MIME Working Group - http://www.imc.org/ietf-smime
+
+- S/MIME and OpenPGP - http://www.imc.org/smime-pgpmime.html
+
+- S/MIME Freeware Library -
+ http://www.getronicsgov.com/hot/sfl_home.htm
+
+- Mozilla Network Security Services -
+ http://www.mozilla.org/projects/security/pkg/nss
+
+- S/MIME Cracking Screen Saver - http://www.counterpane.com/smime.html
diff --git a/doc/html/_sources/howto.ssl.rst.txt b/doc/html/_sources/howto.ssl.rst.txt
new file mode 100644
index 0000000..7f3278c
--- /dev/null
+++ b/doc/html/_sources/howto.ssl.rst.txt
@@ -0,0 +1,131 @@
+:orphan:
+
+.. _howto-ssl:
+
+HOWTO: Programming SSL in Python with M2Crypto
+==============================================
+
+:author: Pheng Siong Ng <ngps@netmemetic.com> and Heikki Toivonen (heikki@osafoundation.org)
+:copyright: © 2000, 2001 by Ng Pheng Siong,
+ portions © 2006 by Open Source Applications Foundation
+
+Introduction
+============
+
+`M2Crypto <https://gitlab.com/m2crypto/m2crypto/>`__ is a
+`Python <http://www.python.org>`__ interface to
+`OpenSSL <http://www.openssl.org>`__. It makes available to the Python
+programmer SSL functionality to implement clients and servers, S/MIME
+v2, RSA, DSA, DH, symmetric ciphers, message digests and HMACs.
+
+This document demonstrates programming HTTPS with M2Crypto.
+
+A bit of history
+================
+
+M2Crypto was created during the time of Python 1.5, which features a
+module httplib providing client-side HTTP functionality. M2Crypto sports
+a httpslib based on httplib.
+
+Beginning with version 2.0, Python's socket module provided
+(rudimentary) SSL support. Also in the same version, httplib was
+enhanced with class HTTPConnection, which is more sophisticated than the
+old class HTTP, and HTTPSConnection, which does HTTPS.
+
+Subsequently, M2Crypto.httpslib grew a compatible (but not identical)
+class HTTPSConnection.
+
+The primary interface difference between the two HTTPSConnection classes
+is that M2Crypto's version accepts an M2Crypto.SSL.Context instance as a
+parameter, whereas Python 2.x's SSL support does not permit Pythonic
+control of the SSL context.
+
+Within the implementations, Python's ``HTTPSConnection`` employs a
+``FakeSocket`` object, which collects all input from the SSL connection
+before returning it to the application as a ``StringIO`` buffer, whereas
+M2Crypto's ``HTTPSConnection`` uses a buffering
+``M2Crypto.BIO.IOBuffer`` object that works over the underlying
+M2Crypto.SSL.Connection directly.
+
+Since then M2Crypto has gained a Twisted wrapper that allows securing
+Twisted SSL connections with M2Crypto.
+
+Secure SSL
+==========
+
+It is recommended that you read the book Network Security with OpenSSL
+by John Viega, Matt Messier and Pravir Chandra, ISBN 059600270X.
+
+Using M2Crypto does not automatically make an SSL connection secure.
+There are various steps that need to be made before we can make that
+claim. Let's see how a simple client can establish a secure
+connection::
+
+ ctx = SSL.Context()
+ ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert, depth=9)
+ if ctx.load_verify_locations('ca.pem') != 1: raise Exception('No CA certs')
+ s = SSL.Connection(ctx)
+ s.connect(server_address)
+ # Normal protocol (for example HTTP) commands follow
+
+The first line creates an SSL context. The defaults allow any SSL
+version (except SSL version 2 which has known weaknesses) and sets the
+allowed ciphers to secure ones.
+
+The second line tells M2Crypto to perform certificate validation. The
+flags shown above are typical for clients, and requires the server to
+send a certificate. The depth parameter tells how long certificate
+chains are allowed - 9 is pretty common default, although probably too
+long in practice.
+
+The third line loads the allowed root (certificate authority or CA)
+certificates. Most Linux distributions come with CA certificates in
+suitable format. You could also download the
+`certdata.txt <http://mxr.mozilla.org/seamonkey/source//security/nss/lib/ckfw/builtins/certdata.txt?raw=1>`__
+file from the
+`NSS <http://www.mozilla.org/projects/security/pki/nss/>`__ project and
+convert it with the little M2Crypto utility script
+`demo/x509/certdata2pem.py <http://svn.osafoundation.org/m2crypto/trunk/demo/x509/certdata2pem.py>`__.
+
+The fourth line creates an SSL connection object with the secure
+context.
+
+The fifth line connects to the server. During this time we perform the
+last security step: just after connection, but before exchanging any
+data, we compare the commonName (or subjectAltName DNS field) field in
+the certificate the server returned to the server address we tried to
+connect to. This happens automatically with SSL.Connection and the
+Twisted wrapper class, and anything that uses those. In all other cases
+you must do the check manually. It is recommended you call the
+SSL.Checker to do the actual check.
+
+SSL servers are different in that they typically do not require the
+client to send a certificate, so there is usually no certificate
+checking. Also, it is typically useless to perform host name checking.
+
+Code Samples
+============
+
+The best samples of how to use the various SSL objects are in the tests
+directory, and the test\_ssl.py file specifically. There are additional
+samples in the demo directory, but they are not quaranteed to be up to
+date.
+
+NOTE: The tests and demos may not be secure as is. Use the information
+above on how to make them secure.
+
+ssldump
+=======
+
+ssldump "is an SSLv3/TLS network protocol analyser. It identifies TCP
+connections on the chosen network interface and attempts to interpret
+them as SSLv3/TLS traffic. When it identifies SSLv3/TLS traffic, it
+decodes the records and displays them in a textual form to stdout. If
+provided with the appropriate keying material, it will also decrypt the
+connections and display the application data traffic.
+
+If linked with OpenSSL, ssldump can display certificates in decoded form
+and decrypt traffic (provided that it has the appropriate keying
+material)."
+
+ssldump is written by Eric Rescorla.
diff --git a/doc/html/_sources/index.rst.txt b/doc/html/_sources/index.rst.txt
new file mode 100644
index 0000000..a472668
--- /dev/null
+++ b/doc/html/_sources/index.rst.txt
@@ -0,0 +1,30 @@
+Welcome to M2Crypto's documentation!
+====================================
+
+Contents:
+
+.. toctree::
+ :maxdepth: 4
+
+ M2Crypto
+
+
+HOWTOs
+======
+
+* :ref:`howto-ca`
+
+* :ref:`howto-ssl`
+
+* :ref:`howto-smime`
+
+* :ref:`zserverssl-howto`
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
diff --git a/doc/html/_static/alabaster.css b/doc/html/_static/alabaster.css
new file mode 100644
index 0000000..a88ce29
--- /dev/null
+++ b/doc/html/_static/alabaster.css
@@ -0,0 +1,693 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@import url("basic.css");
+
+/* -- page layout ----------------------------------------------------------- */
+
+body {
+ font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif;
+ font-size: 17px;
+ background-color: #fff;
+ color: #000;
+ margin: 0;
+ padding: 0;
+}
+
+
+div.document {
+ width: 940px;
+ margin: 30px auto 0 auto;
+}
+
+div.documentwrapper {
+ float: left;
+ width: 100%;
+}
+
+div.bodywrapper {
+ margin: 0 0 0 220px;
+}
+
+div.sphinxsidebar {
+ width: 220px;
+ font-size: 14px;
+ line-height: 1.5;
+}
+
+hr {
+ border: 1px solid #B1B4B6;
+}
+
+div.body {
+ background-color: #fff;
+ color: #3E4349;
+ padding: 0 30px 0 30px;
+}
+
+div.body > .section {
+ text-align: left;
+}
+
+div.footer {
+ width: 940px;
+ margin: 20px auto 30px auto;
+ font-size: 14px;
+ color: #888;
+ text-align: right;
+}
+
+div.footer a {
+ color: #888;
+}
+
+p.caption {
+ font-family: inherit;
+ font-size: inherit;
+}
+
+
+div.relations {
+ display: none;
+}
+
+
+div.sphinxsidebar a {
+ color: #444;
+ text-decoration: none;
+ border-bottom: 1px dotted #999;
+}
+
+div.sphinxsidebar a:hover {
+ border-bottom: 1px solid #999;
+}
+
+div.sphinxsidebarwrapper {
+ padding: 18px 10px;
+}
+
+div.sphinxsidebarwrapper p.logo {
+ padding: 0;
+ margin: -10px 0 0 0px;
+ text-align: center;
+}
+
+div.sphinxsidebarwrapper h1.logo {
+ margin-top: -10px;
+ text-align: center;
+ margin-bottom: 5px;
+ text-align: left;
+}
+
+div.sphinxsidebarwrapper h1.logo-name {
+ margin-top: 0px;
+}
+
+div.sphinxsidebarwrapper p.blurb {
+ margin-top: 0;
+ font-style: normal;
+}
+
+div.sphinxsidebar h3,
+div.sphinxsidebar h4 {
+ font-family: 'Garamond', 'Georgia', serif;
+ color: #444;
+ font-size: 24px;
+ font-weight: normal;
+ margin: 0 0 5px 0;
+ padding: 0;
+}
+
+div.sphinxsidebar h4 {
+ font-size: 20px;
+}
+
+div.sphinxsidebar h3 a {
+ color: #444;
+}
+
+div.sphinxsidebar p.logo a,
+div.sphinxsidebar h3 a,
+div.sphinxsidebar p.logo a:hover,
+div.sphinxsidebar h3 a:hover {
+ border: none;
+}
+
+div.sphinxsidebar p {
+ color: #555;
+ margin: 10px 0;
+}
+
+div.sphinxsidebar ul {
+ margin: 10px 0;
+ padding: 0;
+ color: #000;
+}
+
+div.sphinxsidebar ul li.toctree-l1 > a {
+ font-size: 120%;
+}
+
+div.sphinxsidebar ul li.toctree-l2 > a {
+ font-size: 110%;
+}
+
+div.sphinxsidebar input {
+ border: 1px solid #CCC;
+ font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif;
+ font-size: 1em;
+}
+
+div.sphinxsidebar hr {
+ border: none;
+ height: 1px;
+ color: #AAA;
+ background: #AAA;
+
+ text-align: left;
+ margin-left: 0;
+ width: 50%;
+}
+
+/* -- body styles ----------------------------------------------------------- */
+
+a {
+ color: #004B6B;
+ text-decoration: underline;
+}
+
+a:hover {
+ color: #6D4100;
+ text-decoration: underline;
+}
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+ font-family: 'Garamond', 'Georgia', serif;
+ font-weight: normal;
+ margin: 30px 0px 10px 0px;
+ padding: 0;
+}
+
+div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; }
+div.body h2 { font-size: 180%; }
+div.body h3 { font-size: 150%; }
+div.body h4 { font-size: 130%; }
+div.body h5 { font-size: 100%; }
+div.body h6 { font-size: 100%; }
+
+a.headerlink {
+ color: #DDD;
+ padding: 0 4px;
+ text-decoration: none;
+}
+
+a.headerlink:hover {
+ color: #444;
+ background: #EAEAEA;
+}
+
+div.body p, div.body dd, div.body li {
+ line-height: 1.4em;
+}
+
+div.admonition {
+ margin: 20px 0px;
+ padding: 10px 30px;
+ background-color: #EEE;
+ border: 1px solid #CCC;
+}
+
+div.admonition tt.xref, div.admonition code.xref, div.admonition a tt {
+ background-color: ;
+ border-bottom: 1px solid #fafafa;
+}
+
+dd div.admonition {
+ margin-left: -60px;
+ padding-left: 60px;
+}
+
+div.admonition p.admonition-title {
+ font-family: 'Garamond', 'Georgia', serif;
+ font-weight: normal;
+ font-size: 24px;
+ margin: 0 0 10px 0;
+ padding: 0;
+ line-height: 1;
+}
+
+div.admonition p.last {
+ margin-bottom: 0;
+}
+
+div.highlight {
+ background-color: #fff;
+}
+
+dt:target, .highlight {
+ background: #FAF3E8;
+}
+
+div.warning {
+ background-color: #FCC;
+ border: 1px solid #FAA;
+}
+
+div.danger {
+ background-color: #FCC;
+ border: 1px solid #FAA;
+ -moz-box-shadow: 2px 2px 4px #D52C2C;
+ -webkit-box-shadow: 2px 2px 4px #D52C2C;
+ box-shadow: 2px 2px 4px #D52C2C;
+}
+
+div.error {
+ background-color: #FCC;
+ border: 1px solid #FAA;
+ -moz-box-shadow: 2px 2px 4px #D52C2C;
+ -webkit-box-shadow: 2px 2px 4px #D52C2C;
+ box-shadow: 2px 2px 4px #D52C2C;
+}
+
+div.caution {
+ background-color: #FCC;
+ border: 1px solid #FAA;
+}
+
+div.attention {
+ background-color: #FCC;
+ border: 1px solid #FAA;
+}
+
+div.important {
+ background-color: #EEE;
+ border: 1px solid #CCC;
+}
+
+div.note {
+ background-color: #EEE;
+ border: 1px solid #CCC;
+}
+
+div.tip {
+ background-color: #EEE;
+ border: 1px solid #CCC;
+}
+
+div.hint {
+ background-color: #EEE;
+ border: 1px solid #CCC;
+}
+
+div.seealso {
+ background-color: #EEE;
+ border: 1px solid #CCC;
+}
+
+div.topic {
+ background-color: #EEE;
+}
+
+p.admonition-title {
+ display: inline;
+}
+
+p.admonition-title:after {
+ content: ":";
+}
+
+pre, tt, code {
+ font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
+ font-size: 0.9em;
+}
+
+.hll {
+ background-color: #FFC;
+ margin: 0 -12px;
+ padding: 0 12px;
+ display: block;
+}
+
+img.screenshot {
+}
+
+tt.descname, tt.descclassname, code.descname, code.descclassname {
+ font-size: 0.95em;
+}
+
+tt.descname, code.descname {
+ padding-right: 0.08em;
+}
+
+img.screenshot {
+ -moz-box-shadow: 2px 2px 4px #EEE;
+ -webkit-box-shadow: 2px 2px 4px #EEE;
+ box-shadow: 2px 2px 4px #EEE;
+}
+
+table.docutils {
+ border: 1px solid #888;
+ -moz-box-shadow: 2px 2px 4px #EEE;
+ -webkit-box-shadow: 2px 2px 4px #EEE;
+ box-shadow: 2px 2px 4px #EEE;
+}
+
+table.docutils td, table.docutils th {
+ border: 1px solid #888;
+ padding: 0.25em 0.7em;
+}
+
+table.field-list, table.footnote {
+ border: none;
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+
+table.footnote {
+ margin: 15px 0;
+ width: 100%;
+ border: 1px solid #EEE;
+ background: #FDFDFD;
+ font-size: 0.9em;
+}
+
+table.footnote + table.footnote {
+ margin-top: -15px;
+ border-top: none;
+}
+
+table.field-list th {
+ padding: 0 0.8em 0 0;
+}
+
+table.field-list td {
+ padding: 0;
+}
+
+table.field-list p {
+ margin-bottom: 0.8em;
+}
+
+table.footnote td.label {
+ width: .1px;
+ padding: 0.3em 0 0.3em 0.5em;
+}
+
+table.footnote td {
+ padding: 0.3em 0.5em;
+}
+
+dl {
+ margin: 0;
+ padding: 0;
+}
+
+dl dd {
+ margin-left: 30px;
+}
+
+blockquote {
+ margin: 0 0 0 30px;
+ padding: 0;
+}
+
+ul, ol {
+ /* Matches the 30px from the narrow-screen "li > ul" selector below */
+ margin: 10px 0 10px 30px;
+ padding: 0;
+}
+
+pre {
+ background: #EEE;
+ padding: 7px 30px;
+ margin: 15px 0px;
+ line-height: 1.3em;
+}
+
+div.viewcode-block:target {
+ background: #ffd;
+}
+
+dl pre, blockquote pre, li pre {
+ margin-left: 0;
+ padding-left: 30px;
+}
+
+dl dl pre {
+ margin-left: -90px;
+ padding-left: 90px;
+}
+
+tt, code {
+ background-color: #ecf0f3;
+ color: #222;
+ /* padding: 1px 2px; */
+}
+
+tt.xref, code.xref, a tt {
+ background-color: #FBFBFB;
+ border-bottom: 1px solid #fff;
+}
+
+a.reference {
+ text-decoration: none;
+ border-bottom: 1px dotted #004B6B;
+}
+
+/* Don't put an underline on images */
+a.image-reference, a.image-reference:hover {
+ border-bottom: none;
+}
+
+a.reference:hover {
+ border-bottom: 1px solid #6D4100;
+}
+
+a.footnote-reference {
+ text-decoration: none;
+ font-size: 0.7em;
+ vertical-align: top;
+ border-bottom: 1px dotted #004B6B;
+}
+
+a.footnote-reference:hover {
+ border-bottom: 1px solid #6D4100;
+}
+
+a:hover tt, a:hover code {
+ background: #EEE;
+}
+
+
+@media screen and (max-width: 870px) {
+
+ div.sphinxsidebar {
+ display: none;
+ }
+
+ div.document {
+ width: 100%;
+
+ }
+
+ div.documentwrapper {
+ margin-left: 0;
+ margin-top: 0;
+ margin-right: 0;
+ margin-bottom: 0;
+ }
+
+ div.bodywrapper {
+ margin-top: 0;
+ margin-right: 0;
+ margin-bottom: 0;
+ margin-left: 0;
+ }
+
+ ul {
+ margin-left: 0;
+ }
+
+ li > ul {
+ /* Matches the 30px from the "ul, ol" selector above */
+ margin-left: 30px;
+ }
+
+ .document {
+ width: auto;
+ }
+
+ .footer {
+ width: auto;
+ }
+
+ .bodywrapper {
+ margin: 0;
+ }
+
+ .footer {
+ width: auto;
+ }
+
+ .github {
+ display: none;
+ }
+
+
+
+}
+
+
+
+@media screen and (max-width: 875px) {
+
+ body {
+ margin: 0;
+ padding: 20px 30px;
+ }
+
+ div.documentwrapper {
+ float: none;
+ background: #fff;
+ }
+
+ div.sphinxsidebar {
+ display: block;
+ float: none;
+ width: 102.5%;
+ margin: 50px -30px -20px -30px;
+ padding: 10px 20px;
+ background: #333;
+ color: #FFF;
+ }
+
+ div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p,
+ div.sphinxsidebar h3 a {
+ color: #fff;
+ }
+
+ div.sphinxsidebar a {
+ color: #AAA;
+ }
+
+ div.sphinxsidebar p.logo {
+ display: none;
+ }
+
+ div.document {
+ width: 100%;
+ margin: 0;
+ }
+
+ div.footer {
+ display: none;
+ }
+
+ div.bodywrapper {
+ margin: 0;
+ }
+
+ div.body {
+ min-height: 0;
+ padding: 0;
+ }
+
+ .rtd_doc_footer {
+ display: none;
+ }
+
+ .document {
+ width: auto;
+ }
+
+ .footer {
+ width: auto;
+ }
+
+ .footer {
+ width: auto;
+ }
+
+ .github {
+ display: none;
+ }
+}
+
+
+/* misc. */
+
+.revsys-inline {
+ display: none!important;
+}
+
+/* Make nested-list/multi-paragraph items look better in Releases changelog
+ * pages. Without this, docutils' magical list fuckery causes inconsistent
+ * formatting between different release sub-lists.
+ */
+div#changelog > div.section > ul > li > p:only-child {
+ margin-bottom: 0;
+}
+
+/* Hide fugly table cell borders in ..bibliography:: directive output */
+table.docutils.citation, table.docutils.citation td, table.docutils.citation th {
+ border: none;
+ /* Below needed in some edge cases; if not applied, bottom shadows appear */
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+} \ No newline at end of file
diff --git a/doc/html/_static/basic.css b/doc/html/_static/basic.css
index 43e8baf..6df76b0 100644
--- a/doc/html/_static/basic.css
+++ b/doc/html/_static/basic.css
@@ -4,7 +4,7 @@
*
* Sphinx stylesheet -- basic theme.
*
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@@ -52,6 +52,8 @@ div.sphinxsidebar {
width: 230px;
margin-left: -100%;
font-size: 90%;
+ word-wrap: break-word;
+ overflow-wrap : break-word;
}
div.sphinxsidebar ul {
@@ -83,12 +85,9 @@ div.sphinxsidebar #searchbox input[type="text"] {
width: 170px;
}
-div.sphinxsidebar #searchbox input[type="submit"] {
- width: 30px;
-}
-
img {
border: 0;
+ max-width: 100%;
}
/* -- search page ----------------------------------------------------------- */
@@ -123,6 +122,8 @@ ul.keywordmatches li.goodmatch a {
table.contentstable {
width: 90%;
+ margin-left: auto;
+ margin-right: auto;
}
table.contentstable p.biglink {
@@ -150,9 +151,14 @@ table.indextable td {
vertical-align: top;
}
-table.indextable dl, table.indextable dd {
+table.indextable ul {
margin-top: 0;
margin-bottom: 0;
+ list-style-type: none;
+}
+
+table.indextable > tbody > tr > td > ul {
+ padding-left: 0em;
}
table.indextable tr.pcap {
@@ -184,8 +190,22 @@ div.genindex-jumpbox {
padding: 0.4em;
}
+/* -- domain module index --------------------------------------------------- */
+
+table.modindextable td {
+ padding: 2px;
+ border-collapse: collapse;
+}
+
/* -- general body styles --------------------------------------------------- */
+div.body p, div.body dd, div.body li, div.body blockquote {
+ -moz-hyphens: auto;
+ -ms-hyphens: auto;
+ -webkit-hyphens: auto;
+ hyphens: auto;
+}
+
a.headerlink {
visibility: hidden;
}
@@ -196,7 +216,10 @@ h3:hover > a.headerlink,
h4:hover > a.headerlink,
h5:hover > a.headerlink,
h6:hover > a.headerlink,
-dt:hover > a.headerlink {
+dt:hover > a.headerlink,
+caption:hover > a.headerlink,
+p.caption:hover > a.headerlink,
+div.code-block-caption:hover > a.headerlink {
visibility: visible;
}
@@ -208,10 +231,6 @@ div.body td {
text-align: left;
}
-.field-list ul {
- padding-left: 1em;
-}
-
.first {
margin-top: 0 !important;
}
@@ -313,6 +332,13 @@ table.docutils {
border-collapse: collapse;
}
+table caption span.caption-number {
+ font-style: italic;
+}
+
+table caption span.caption-text {
+}
+
table.docutils td, table.docutils th {
padding: 1px 8px 1px 5px;
border-top: 0;
@@ -321,10 +347,6 @@ table.docutils td, table.docutils th {
border-bottom: 1px solid #aaa;
}
-table.field-list td, table.field-list th {
- border: 0 !important;
-}
-
table.footnote td, table.footnote th {
border: 0 !important;
}
@@ -343,6 +365,46 @@ table.citation td {
border-bottom: none;
}
+/* -- figures --------------------------------------------------------------- */
+
+div.figure {
+ margin: 0.5em;
+ padding: 0.5em;
+}
+
+div.figure p.caption {
+ padding: 0.3em;
+}
+
+div.figure p.caption span.caption-number {
+ font-style: italic;
+}
+
+div.figure p.caption span.caption-text {
+}
+
+/* -- field list styles ----------------------------------------------------- */
+
+table.field-list td, table.field-list th {
+ border: 0 !important;
+}
+
+.field-list ul {
+ margin: 0;
+ padding-left: 1em;
+}
+
+.field-list p {
+ margin: 0;
+}
+
+.field-name {
+ -moz-hyphens: manual;
+ -ms-hyphens: manual;
+ -webkit-hyphens: manual;
+ hyphens: manual;
+}
+
/* -- other body styles ----------------------------------------------------- */
ol.arabic {
@@ -392,23 +454,14 @@ dl.glossary dt {
font-size: 1.1em;
}
-.field-list ul {
- margin: 0;
- padding-left: 1em;
-}
-
-.field-list p {
- margin: 0;
-}
-
-.refcount {
- color: #060;
-}
-
.optional {
font-size: 1.3em;
}
+.sig-paren {
+ font-size: larger;
+}
+
.versionmodified {
font-style: italic;
}
@@ -459,6 +512,13 @@ pre {
overflow-y: hidden; /* fixes display issues on Chrome browsers */
}
+span.pre {
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ -webkit-hyphens: none;
+ hyphens: none;
+}
+
td.linenos pre {
padding: 5px 0px;
border: 0;
@@ -474,22 +534,51 @@ table.highlighttable td {
padding: 0 0.5em 0 0.5em;
}
-tt.descname {
+div.code-block-caption {
+ padding: 2px 5px;
+ font-size: small;
+}
+
+div.code-block-caption code {
+ background-color: transparent;
+}
+
+div.code-block-caption + div > div.highlight > pre {
+ margin-top: 0;
+}
+
+div.code-block-caption span.caption-number {
+ padding: 0.1em 0.3em;
+ font-style: italic;
+}
+
+div.code-block-caption span.caption-text {
+}
+
+div.literal-block-wrapper {
+ padding: 1em 1em 0;
+}
+
+div.literal-block-wrapper div.highlight {
+ margin: 0;
+}
+
+code.descname {
background-color: transparent;
font-weight: bold;
font-size: 1.2em;
}
-tt.descclassname {
+code.descclassname {
background-color: transparent;
}
-tt.xref, a tt {
+code.xref, a code {
background-color: transparent;
font-weight: bold;
}
-h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
background-color: transparent;
}
@@ -521,6 +610,16 @@ span.eqno {
float: right;
}
+span.eqno a.headerlink {
+ position: relative;
+ left: 0px;
+ z-index: 1;
+}
+
+div.math:hover a.headerlink {
+ visibility: visible;
+}
+
/* -- printout stylesheet --------------------------------------------------- */
@media print {
diff --git a/doc/html/_static/comment-bright.png b/doc/html/_static/comment-bright.png
index 551517b..15e27ed 100644
--- a/doc/html/_static/comment-bright.png
+++ b/doc/html/_static/comment-bright.png
Binary files differ
diff --git a/doc/html/_static/comment-close.png b/doc/html/_static/comment-close.png
index 09b54be..4d91bcf 100644
--- a/doc/html/_static/comment-close.png
+++ b/doc/html/_static/comment-close.png
Binary files differ
diff --git a/doc/html/_static/comment.png b/doc/html/_static/comment.png
index 92feb52..dfbc0cb 100644
--- a/doc/html/_static/comment.png
+++ b/doc/html/_static/comment.png
Binary files differ
diff --git a/doc/html/_static/custom.css b/doc/html/_static/custom.css
new file mode 100644
index 0000000..2a924f1
--- /dev/null
+++ b/doc/html/_static/custom.css
@@ -0,0 +1 @@
+/* This file intentionally left blank. */
diff --git a/doc/html/_static/doctools.js b/doc/html/_static/doctools.js
index d4619fd..5654977 100644
--- a/doc/html/_static/doctools.js
+++ b/doc/html/_static/doctools.js
@@ -4,7 +4,7 @@
*
* Sphinx JavaScript utilities for all documentation.
*
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@@ -32,7 +32,7 @@ if (!window.console || !console.firebug) {
*/
jQuery.urldecode = function(x) {
return decodeURIComponent(x).replace(/\+/g, ' ');
-}
+};
/**
* small helper function to urlencode strings
@@ -62,18 +62,6 @@ jQuery.getQueryParameters = function(s) {
};
/**
- * small function to check if an array contains
- * a given item.
- */
-jQuery.contains = function(arr, item) {
- for (var i = 0; i < arr.length; i++) {
- if (arr[i] == item)
- return true;
- }
- return false;
-};
-
-/**
* highlight a given string on a jquery object by wrapping it in
* span elements with the given class name.
*/
@@ -103,6 +91,30 @@ jQuery.fn.highlightText = function(text, className) {
});
};
+/*
+ * backward compatibility for jQuery.browser
+ * This will be supported until firefox bug is fixed.
+ */
+if (!jQuery.browser) {
+ jQuery.uaMatch = function(ua) {
+ ua = ua.toLowerCase();
+
+ var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
+ /(webkit)[ \/]([\w.]+)/.exec(ua) ||
+ /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
+ /(msie) ([\w.]+)/.exec(ua) ||
+ ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
+ [];
+
+ return {
+ browser: match[ 1 ] || "",
+ version: match[ 2 ] || "0"
+ };
+ };
+ jQuery.browser = {};
+ jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
+}
+
/**
* Small JavaScript module for the documentation.
*/
@@ -112,6 +124,7 @@ var Documentation = {
this.fixFirefoxAnchorBug();
this.highlightSearchWords();
this.initIndexTable();
+
},
/**
@@ -164,9 +177,10 @@ var Documentation = {
/**
* workaround a firefox stupidity
+ * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
*/
fixFirefoxAnchorBug : function() {
- if (document.location.hash && $.browser.mozilla)
+ if (document.location.hash)
window.setTimeout(function() {
document.location.href += '';
}, 10);
@@ -180,6 +194,9 @@ var Documentation = {
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
if (terms.length) {
var body = $('div.body');
+ if (!body.length) {
+ body = $('body');
+ }
window.setTimeout(function() {
$.each(terms, function() {
body.highlightText(this.toLowerCase(), 'highlighted');
@@ -236,6 +253,29 @@ var Documentation = {
});
var url = parts.join('/');
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+ },
+
+ initOnKeyListeners: function() {
+ $(document).keyup(function(event) {
+ var activeElementType = document.activeElement.tagName;
+ // don't navigate when in search box or textarea
+ if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') {
+ switch (event.keyCode) {
+ case 37: // left
+ var prevHref = $('link[rel="prev"]').prop('href');
+ if (prevHref) {
+ window.location.href = prevHref;
+ return false;
+ }
+ case 39: // right
+ var nextHref = $('link[rel="next"]').prop('href');
+ if (nextHref) {
+ window.location.href = nextHref;
+ return false;
+ }
+ }
+ }
+ });
}
};
@@ -244,4 +284,4 @@ _ = Documentation.gettext;
$(document).ready(function() {
Documentation.init();
-});
+}); \ No newline at end of file
diff --git a/doc/html/_static/down-pressed.png b/doc/html/_static/down-pressed.png
index 6f7ad78..5756c8c 100644
--- a/doc/html/_static/down-pressed.png
+++ b/doc/html/_static/down-pressed.png
Binary files differ
diff --git a/doc/html/_static/down.png b/doc/html/_static/down.png
index 3003a88..1b3bdad 100644
--- a/doc/html/_static/down.png
+++ b/doc/html/_static/down.png
Binary files differ
diff --git a/doc/html/_static/file.png b/doc/html/_static/file.png
index d18082e..a858a41 100644
--- a/doc/html/_static/file.png
+++ b/doc/html/_static/file.png
Binary files differ
diff --git a/doc/html/_static/jquery-3.1.0.js b/doc/html/_static/jquery-3.1.0.js
new file mode 100644
index 0000000..f2fc274
--- /dev/null
+++ b/doc/html/_static/jquery-3.1.0.js
@@ -0,0 +1,10074 @@
+/*eslint-disable no-unused-vars*/
+/*!
+ * jQuery JavaScript Library v3.1.0
+ * https://jquery.com/
+ *
+ * Includes Sizzle.js
+ * https://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2016-07-07T21:44Z
+ */
+( function( global, factory ) {
+
+ "use strict";
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+
+ // For CommonJS and CommonJS-like environments where a proper `window`
+ // is present, execute the factory and get jQuery.
+ // For environments that do not have a `window` with a `document`
+ // (such as Node.js), expose a factory as module.exports.
+ // This accentuates the need for the creation of a real `window`.
+ // e.g. var jQuery = require("jquery")(window);
+ // See ticket #14549 for more info.
+ module.exports = global.document ?
+ factory( global, true ) :
+ function( w ) {
+ if ( !w.document ) {
+ throw new Error( "jQuery requires a window with a document" );
+ }
+ return factory( w );
+ };
+ } else {
+ factory( global );
+ }
+
+// Pass this if window is not defined yet
+} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
+// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
+// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
+// enough that all such attempts are guarded in a try block.
+"use strict";
+
+var arr = [];
+
+var document = window.document;
+
+var getProto = Object.getPrototypeOf;
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var fnToString = hasOwn.toString;
+
+var ObjectFunctionString = fnToString.call( Object );
+
+var support = {};
+
+
+
+ function DOMEval( code, doc ) {
+ doc = doc || document;
+
+ var script = doc.createElement( "script" );
+
+ script.text = code;
+ doc.head.appendChild( script ).parentNode.removeChild( script );
+ }
+/* global Symbol */
+// Defining this global in .eslintrc would create a danger of using the global
+// unguarded in another place, it seems safer to define global only for this module
+
+
+
+var
+ version = "3.1.0",
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+
+ // The jQuery object is actually just the init constructor 'enhanced'
+ // Need init if jQuery is called (just allow error to be thrown if not included)
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Support: Android <=4.0 only
+ // Make sure we trim BOM and NBSP
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+ // Matches dashed string for camelizing
+ rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([a-z])/g,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn = jQuery.prototype = {
+
+ // The current version of jQuery being used
+ jquery: version,
+
+ constructor: jQuery,
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num != null ?
+
+ // Return just the one element from the set
+ ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
+
+ // Return all the elements in a clean array
+ slice.call( this );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ each: function( callback ) {
+ return jQuery.each( this, callback );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map( this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ } ) );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor();
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: arr.sort,
+ splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[ 0 ] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+
+ // Skip the boolean and the target
+ target = arguments[ i ] || {};
+ i++;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
+ target = {};
+ }
+
+ // Extend jQuery itself if only one argument is passed
+ if ( i === length ) {
+ target = this;
+ i--;
+ }
+
+ for ( ; i < length; i++ ) {
+
+ // Only deal with non-null/undefined values
+ if ( ( options = arguments[ i ] ) != null ) {
+
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+ ( copyIsArray = jQuery.isArray( copy ) ) ) ) {
+
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray( src ) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject( src ) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend( {
+
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+ // Assume jQuery is ready without the ready module
+ isReady: true,
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ noop: function() {},
+
+ isFunction: function( obj ) {
+ return jQuery.type( obj ) === "function";
+ },
+
+ isArray: Array.isArray,
+
+ isWindow: function( obj ) {
+ return obj != null && obj === obj.window;
+ },
+
+ isNumeric: function( obj ) {
+
+ // As of jQuery 3.0, isNumeric is limited to
+ // strings and numbers (primitives or objects)
+ // that can be coerced to finite numbers (gh-2662)
+ var type = jQuery.type( obj );
+ return ( type === "number" || type === "string" ) &&
+
+ // parseFloat NaNs numeric-cast false positives ("")
+ // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+ // subtraction forces infinities to NaN
+ !isNaN( obj - parseFloat( obj ) );
+ },
+
+ isPlainObject: function( obj ) {
+ var proto, Ctor;
+
+ // Detect obvious negatives
+ // Use toString instead of jQuery.type to catch host objects
+ if ( !obj || toString.call( obj ) !== "[object Object]" ) {
+ return false;
+ }
+
+ proto = getProto( obj );
+
+ // Objects with no prototype (e.g., `Object.create( null )`) are plain
+ if ( !proto ) {
+ return true;
+ }
+
+ // Objects with prototype are plain iff they were constructed by a global Object function
+ Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
+ return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
+ },
+
+ isEmptyObject: function( obj ) {
+
+ /* eslint-disable no-unused-vars */
+ // See https://github.com/eslint/eslint/issues/6125
+ var name;
+
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ type: function( obj ) {
+ if ( obj == null ) {
+ return obj + "";
+ }
+
+ // Support: Android <=2.3 only (functionish RegExp)
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ toString.call( obj ) ] || "object" :
+ typeof obj;
+ },
+
+ // Evaluates a script in a global context
+ globalEval: function( code ) {
+ DOMEval( code );
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Support: IE <=9 - 11, Edge 12 - 13
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+ },
+
+ each: function( obj, callback ) {
+ var length, i = 0;
+
+ if ( isArrayLike( obj ) ) {
+ length = obj.length;
+ for ( ; i < length; i++ ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Support: Android <=4.0 only
+ trim: function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArrayLike( Object( arr ) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ return arr == null ? -1 : indexOf.call( arr, elem, i );
+ },
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ merge: function( first, second ) {
+ var len = +second.length,
+ j = 0,
+ i = first.length;
+
+ for ( ; j < len; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, invert ) {
+ var callbackInverse,
+ matches = [],
+ i = 0,
+ length = elems.length,
+ callbackExpect = !invert;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ callbackInverse = !callback( elems[ i ], i );
+ if ( callbackInverse !== callbackExpect ) {
+ matches.push( elems[ i ] );
+ }
+ }
+
+ return matches;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var length, value,
+ i = 0,
+ ret = [];
+
+ // Go through the array, translating each of the items to their new values
+ if ( isArrayLike( elems ) ) {
+ length = elems.length;
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ var tmp, args, proxy;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ now: Date.now,
+
+ // jQuery.support is not used in Core but other projects attach their
+ // properties to it so it needs to exist.
+ support: support
+} );
+
+if ( typeof Symbol === "function" ) {
+ jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+ // Support: real iOS 8.2 only (not reproducible in simulator)
+ // `in` check used to prevent JIT error (gh-2145)
+ // hasOwn isn't used here due to false negatives
+ // regarding Nodelist length in IE
+ var length = !!obj && "length" in obj && obj.length,
+ type = jQuery.type( obj );
+
+ if ( type === "function" || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ return type === "array" || length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.3.0
+ * https://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2016-01-04
+ */
+(function( window ) {
+
+var i,
+ support,
+ Expr,
+ getText,
+ isXML,
+ tokenize,
+ compile,
+ select,
+ outermostContext,
+ sortInput,
+ hasDuplicate,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + 1 * new Date(),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ }
+ return 0;
+ },
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf as it's faster than native
+ // https://jsperf.com/thor-indexof-vs-for/5
+ indexOf = function( list, elem ) {
+ var i = 0,
+ len = list.length;
+ for ( ; i < len; i++ ) {
+ if ( list[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+
+ // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
+
+ // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+ // Operator (capture 2)
+ "*([*^$|!~]?=)" + whitespace +
+ // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+ "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+ "*\\]",
+
+ pseudos = ":(" + identifier + ")(?:\\((" +
+ // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+ // 1. quoted (capture 3; capture 4 or capture 5)
+ "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+ // 2. simple (capture 6)
+ "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+ // 3. anything else (capture 2)
+ ".*" +
+ ")\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rwhitespace = new RegExp( whitespace + "+", "g" ),
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+ rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + identifier + ")" ),
+ "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+ "TAG": new RegExp( "^(" + identifier + "|[*])" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rsibling = /[+~]/,
+
+ // CSS escapes
+ // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox<24
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ high < 0 ?
+ // BMP codepoint
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ },
+
+ // CSS string/identifier serialization
+ // https://drafts.csswg.org/cssom/#common-serializing-idioms
+ rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,
+ fcssescape = function( ch, asCodePoint ) {
+ if ( asCodePoint ) {
+
+ // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+ if ( ch === "\0" ) {
+ return "\uFFFD";
+ }
+
+ // Control characters and (dependent upon position) numbers get escaped as code points
+ return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+ }
+
+ // Other potentially-special ASCII characters get backslash-escaped
+ return "\\" + ch;
+ },
+
+ // Used for iframes
+ // See setDocument()
+ // Removing the function wrapper causes a "Permission Denied"
+ // error in IE
+ unloadHandler = function() {
+ setDocument();
+ },
+
+ disabledAncestor = addCombinator(
+ function( elem ) {
+ return elem.disabled === true;
+ },
+ { dir: "parentNode", next: "legend" }
+ );
+
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ var m, i, elem, nid, match, groups, newSelector,
+ newContext = context && context.ownerDocument,
+
+ // nodeType defaults to 9, since context defaults to document
+ nodeType = context ? context.nodeType : 9;
+
+ results = results || [];
+
+ // Return early from calls with invalid selector or context
+ if ( typeof selector !== "string" || !selector ||
+ nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+ return results;
+ }
+
+ // Try to shortcut find operations (as opposed to filters) in HTML documents
+ if ( !seed ) {
+
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
+ context = context || document;
+
+ if ( documentIsHTML ) {
+
+ // If the selector is sufficiently simple, try using a "get*By*" DOM method
+ // (excepting DocumentFragment context, where the methods don't exist)
+ if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+
+ // ID selector
+ if ( (m = match[1]) ) {
+
+ // Document context
+ if ( nodeType === 9 ) {
+ if ( (elem = context.getElementById( m )) ) {
+
+ // Support: IE, Opera, Webkit
+ // TODO: identify versions
+ // getElementById can match elements by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+
+ // Element context
+ } else {
+
+ // Support: IE, Opera, Webkit
+ // TODO: identify versions
+ // getElementById can match elements by name instead of ID
+ if ( newContext && (elem = newContext.getElementById( m )) &&
+ contains( context, elem ) &&
+ elem.id === m ) {
+
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Type selector
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
+
+ // Class selector
+ } else if ( (m = match[3]) && support.getElementsByClassName &&
+ context.getElementsByClassName ) {
+
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
+ }
+
+ // Take advantage of querySelectorAll
+ if ( support.qsa &&
+ !compilerCache[ selector + " " ] &&
+ (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+
+ if ( nodeType !== 1 ) {
+ newContext = context;
+ newSelector = selector;
+
+ // qSA looks outside Element context, which is not what we want
+ // Thanks to Andrew Dupont for this workaround technique
+ // Support: IE <=8
+ // Exclude object elements
+ } else if ( context.nodeName.toLowerCase() !== "object" ) {
+
+ // Capture the context ID, setting it first if necessary
+ if ( (nid = context.getAttribute( "id" )) ) {
+ nid = nid.replace( rcssescape, fcssescape );
+ } else {
+ context.setAttribute( "id", (nid = expando) );
+ }
+
+ // Prefix every selector in the list
+ groups = tokenize( selector );
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = "#" + nid + " " + toSelector( groups[i] );
+ }
+ newSelector = groups.join( "," );
+
+ // Expand context for sibling selectors
+ newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+ context;
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch ( qsaError ) {
+ } finally {
+ if ( nid === expando ) {
+ context.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key + " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key + " " ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created element and returns a boolean result
+ */
+function assert( fn ) {
+ var el = document.createElement("fieldset");
+
+ try {
+ return !!fn( el );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( el.parentNode ) {
+ el.parentNode.removeChild( el );
+ }
+ // release memory in IE
+ el = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = arr.length;
+
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ a.sourceIndex - b.sourceIndex;
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for :enabled/:disabled
+ * @param {Boolean} disabled true for :disabled; false for :enabled
+ */
+function createDisabledPseudo( disabled ) {
+ // Known :disabled false positives:
+ // IE: *[disabled]:not(button, input, select, textarea, optgroup, option, menuitem, fieldset)
+ // not IE: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
+ return function( elem ) {
+
+ // Check form elements and option elements for explicit disabling
+ return "label" in elem && elem.disabled === disabled ||
+ "form" in elem && elem.disabled === disabled ||
+
+ // Check non-disabled form elements for fieldset[disabled] ancestors
+ "form" in elem && elem.disabled === false && (
+ // Support: IE6-11+
+ // Ancestry is covered for us
+ elem.isDisabled === disabled ||
+
+ // Otherwise, assume any non-<option> under fieldset[disabled] is disabled
+ /* jshint -W018 */
+ elem.isDisabled !== !disabled &&
+ ("label" in elem || !disabledAncestor( elem )) !== disabled
+ );
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+ return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var hasCompare, subWindow,
+ doc = node ? node.ownerDocument || node : preferredDoc;
+
+ // Return early if doc is invalid or already selected
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
+ }
+
+ // Update global variables
+ document = doc;
+ docElem = document.documentElement;
+ documentIsHTML = !isXML( document );
+
+ // Support: IE 9-11, Edge
+ // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+ if ( preferredDoc !== document &&
+ (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
+
+ // Support: IE 11, Edge
+ if ( subWindow.addEventListener ) {
+ subWindow.addEventListener( "unload", unloadHandler, false );
+
+ // Support: IE 9 - 10 only
+ } else if ( subWindow.attachEvent ) {
+ subWindow.attachEvent( "onunload", unloadHandler );
+ }
+ }
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
+
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties
+ // (excepting IE8 booleans)
+ support.attributes = assert(function( el ) {
+ el.className = "i";
+ return !el.getAttribute("className");
+ });
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( el ) {
+ el.appendChild( document.createComment("") );
+ return !el.getElementsByTagName("*").length;
+ });
+
+ // Support: IE<9
+ support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programmatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( el ) {
+ docElem.appendChild( el ).id = expando;
+ return !document.getElementsByName || !document.getElementsByName( expando ).length;
+ });
+
+ // ID find and filter
+ if ( support.getById ) {
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+ var m = context.getElementById( id );
+ return m ? [ m ] : [];
+ }
+ };
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ } else {
+ // Support: IE6/7
+ // getElementById is not reliable as a find shortcut
+ delete Expr.find["ID"];
+
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== "undefined" &&
+ elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
+ }
+
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( tag );
+
+ // DocumentFragment nodes don't have gEBTN
+ } else if ( support.qsa ) {
+ return context.querySelectorAll( tag );
+ }
+ } :
+
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+ results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ };
+
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+ return context.getElementsByClassName( className );
+ }
+ };
+
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
+ // QSA and matchesSelector support
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
+
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See https://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
+
+ if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( el ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // https://bugs.jquery.com/ticket/12359
+ docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
+ "<select id='" + expando + "-\r\\' msallowcapture=''>" +
+ "<option selected=''></option></select>";
+
+ // Support: IE8, Opera 11-12.16
+ // Nothing should be selected when empty strings follow ^= or $= or *=
+ // The test attribute must be unknown in Opera but "safe" for WinRT
+ // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+ if ( el.querySelectorAll("[msallowcapture^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
+
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !el.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
+
+ // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+ if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+ rbuggyQSA.push("~=");
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !el.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+
+ // Support: Safari 8+, iOS 8+
+ // https://bugs.webkit.org/show_bug.cgi?id=136851
+ // In-page `selector#id sibling-combinator selector` fails
+ if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
+ rbuggyQSA.push(".#.+[+~]");
+ }
+ });
+
+ assert(function( el ) {
+ el.innerHTML = "<a href='' disabled='disabled'></a>" +
+ "<select disabled='disabled'><option/></select>";
+
+ // Support: Windows 8 Native Apps
+ // The type and name attributes are restricted during .innerHTML assignment
+ var input = document.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ el.appendChild( input ).setAttribute( "name", "D" );
+
+ // Support: IE8
+ // Enforce case-sensitivity of name attribute
+ if ( el.querySelectorAll("[name=d]").length ) {
+ rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( el.querySelectorAll(":enabled").length !== 2 ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Support: IE9-11+
+ // IE's :disabled selector does not pick up the children of disabled fieldsets
+ docElem.appendChild( el ).disabled = true;
+ if ( el.querySelectorAll(":disabled").length !== 2 ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ el.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
+
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+ docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
+
+ assert(function( el ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( el, "*" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( el, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
+
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+ hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+ // Element contains another
+ // Purposefully self-exclusive
+ // As in, an element does not contain itself
+ contains = hasCompare || rnative.test( docElem.contains ) ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Document order sorting
+ sortOrder = hasCompare ?
+ function( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ // Sort on method existence if only one input has compareDocumentPosition
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+ if ( compare ) {
+ return compare;
+ }
+
+ // Calculate position if both inputs belong to the same document
+ compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+ a.compareDocumentPosition( b ) :
+
+ // Otherwise we know they are disconnected
+ 1;
+
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ } :
+ function( a, b ) {
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
+
+ // Parentless nodes are either documents or disconnected
+ if ( !aup || !bup ) {
+ return a === document ? -1 :
+ b === document ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
+
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
+
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
+ }
+
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
+
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
+
+ return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ if ( support.matchesSelector && documentIsHTML &&
+ !compilerCache[ expr + " " ] &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
+
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch (e) {}
+ }
+
+ return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
+
+ return val !== undefined ?
+ val :
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null;
+};
+
+Sizzle.escape = function( sel ) {
+ return (sel + "").replace( rcssescape, fcssescape );
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ // Clear input after sorting to release objects
+ // See https://github.com/jquery/sizzle/pull/225
+ sortInput = null;
+
+ return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ while ( (node = elem[i++]) ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (jQuery #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ attrHandle: {},
+
+ find: {},
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[6] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ // Accept quoted arguments as-is
+ if ( match[3] ) {
+ match[2] = match[4] || match[5] || "";
+
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, uniqueCache, outerCache, node, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType,
+ diff = false;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ?
+ node.nodeName.toLowerCase() === name :
+ node.nodeType === 1 ) {
+
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+
+ // Seek `elem` from a previously-cached index
+
+ // ...in a gzip-friendly way
+ node = parent;
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ cache = uniqueCache[ type ] || [];
+ nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+ diff = nodeIndex && cache[ 2 ];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ } else {
+ // Use previously-cached element index if available
+ if ( useCache ) {
+ // ...in a gzip-friendly way
+ node = elem;
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ cache = uniqueCache[ type ] || [];
+ nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+ diff = nodeIndex;
+ }
+
+ // xml :nth-child(...)
+ // or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ if ( diff === false ) {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ?
+ node.nodeName.toLowerCase() === name :
+ node.nodeType === 1 ) &&
+ ++diff ) {
+
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ uniqueCache[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ // Don't keep the element (issue #299)
+ input[0] = null;
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ text = text.replace( runescape, funescape );
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
+
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
+
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": createDisabledPseudo( false ),
+ "disabled": createDisabledPseudo( true ),
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+ // but not by others (comment: 8; processing instruction: 7; etc.)
+ // nodeType < 6 works because attributes (2) do not appear as children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeType < 6 ) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "text": function( elem ) {
+ var attr;
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+
+ // Support: IE<8
+ // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( (tokens = []) );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ skip = combinator.next,
+ key = skip || dir,
+ checkNonElements = base && key === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var oldCache, uniqueCache, outerCache,
+ newCache = [ dirruns, doneName ];
+
+ // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+
+ if ( skip && skip === elem.nodeName.toLowerCase() ) {
+ elem = elem[ dir ] || elem;
+ } else if ( (oldCache = uniqueCache[ key ]) &&
+ oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+ // Assign to newCache so results back-propagate to previous elements
+ return (newCache[ 2 ] = oldCache[ 2 ]);
+ } else {
+ // Reuse newcache so results back-propagate to previous elements
+ uniqueCache[ key ] = newCache;
+
+ // A match means we're done; a fail means we have to keep checking
+ if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ // Avoid hanging onto element (issue #299)
+ checkContext = null;
+ return ret;
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ var bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, outermost ) {
+ var elem, j, matcher,
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ setMatched = [],
+ contextBackup = outermostContext,
+ // We must always have either seed elements or outermost context
+ elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+ len = elems.length;
+
+ if ( outermost ) {
+ outermostContext = context === document || context || outermost;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Support: IE<9, Safari
+ // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+ for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ if ( !context && elem.ownerDocument !== document ) {
+ setDocument( elem );
+ xml = !documentIsHTML;
+ }
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context || document, xml) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // `i` is now the count of elements visited above, and adding it to `matchedCount`
+ // makes the latter nonnegative.
+ matchedCount += i;
+
+ // Apply set filters to unmatched elements
+ // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+ // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+ // no element matchers and no seed.
+ // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+ // case, which will result in a "00" `matchedCount` that differs from `i` but is also
+ // numerically zero.
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !match ) {
+ match = tokenize( selector );
+ }
+ i = match.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( match[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+ // Save selector and tokenization
+ cached.selector = selector;
+ }
+ return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ * selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ * selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ compiled = typeof selector === "function" && selector,
+ match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+ results = results || [];
+
+ // Try to minimize operations if there is only one selector in the list and no seed
+ // (the latter of which guarantees us context)
+ if ( match.length === 1 ) {
+
+ // Reduce context if the leading compound selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ support.getById && context.nodeType === 9 && documentIsHTML &&
+ Expr.relative[ tokens[1].type ] ) {
+
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
+
+ // Precompiled matchers will still verify ancestry, so step up a level
+ } else if ( compiled ) {
+ context = context.parentNode;
+ }
+
+ selector = selector.slice( tokens.shift().value.length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function if one is not provided
+ // Provide `match` to avoid retokenization if we modified the selector above
+ ( compiled || compile( selector, match ) )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+ );
+ return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( el ) {
+ // Should return 1, but returns 4 (following)
+ return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( el ) {
+ el.innerHTML = "<a href='#'></a>";
+ return el.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+ }
+ });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( el ) {
+ el.innerHTML = "<input/>";
+ el.firstChild.setAttribute( "value", "" );
+ return el.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( el ) {
+ return el.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return elem[ name ] === true ? name.toLowerCase() :
+ (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ null;
+ }
+ });
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+
+// Deprecated
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+jQuery.escapeSelector = Sizzle.escape;
+
+
+
+
+var dir = function( elem, dir, until ) {
+ var matched = [],
+ truncate = until !== undefined;
+
+ while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+ if ( elem.nodeType === 1 ) {
+ if ( truncate && jQuery( elem ).is( until ) ) {
+ break;
+ }
+ matched.push( elem );
+ }
+ }
+ return matched;
+};
+
+
+var siblings = function( n, elem ) {
+ var matched = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ matched.push( n );
+ }
+ }
+
+ return matched;
+};
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep( elements, function( elem, i ) {
+ return !!qualifier.call( elem, i, elem ) !== not;
+ } );
+
+ }
+
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
+ } );
+
+ }
+
+ if ( typeof qualifier === "string" ) {
+ if ( risSimple.test( qualifier ) ) {
+ return jQuery.filter( qualifier, elements, not );
+ }
+
+ qualifier = jQuery.filter( qualifier, elements );
+ }
+
+ return jQuery.grep( elements, function( elem ) {
+ return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
+ } );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 && elem.nodeType === 1 ?
+ jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+ jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ } ) );
+};
+
+jQuery.fn.extend( {
+ find: function( selector ) {
+ var i, ret,
+ len = this.length,
+ self = this;
+
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter( function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ } ) );
+ }
+
+ ret = this.pushStack( [] );
+
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
+
+ return len > 1 ? jQuery.uniqueSort( ret ) : ret;
+ },
+ filter: function( selector ) {
+ return this.pushStack( winnow( this, selector || [], false ) );
+ },
+ not: function( selector ) {
+ return this.pushStack( winnow( this, selector || [], true ) );
+ },
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ }
+} );
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ // Shortcut simple #id case for speed
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
+
+ init = jQuery.fn.init = function( selector, context, root ) {
+ var match, elem;
+
+ // HANDLE: $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Method init() accepts an alternate rootjQuery
+ // so migrate can support jQuery.sub (gh-2101)
+ root = root || rootjQuery;
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector[ 0 ] === "<" &&
+ selector[ selector.length - 1 ] === ">" &&
+ selector.length >= 3 ) {
+
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && ( match[ 1 ] || !context ) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[ 1 ] ) {
+ context = context instanceof jQuery ? context[ 0 ] : context;
+
+ // Option to run scripts is true for back-compat
+ // Intentionally let the error be thrown if parseHTML is not present
+ jQuery.merge( this, jQuery.parseHTML(
+ match[ 1 ],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+
+ // Properties of context are called as methods if possible
+ if ( jQuery.isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
+ }
+ }
+
+ return this;
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[ 2 ] );
+
+ if ( elem ) {
+
+ // Inject the element directly into the jQuery object
+ this[ 0 ] = elem;
+ this.length = 1;
+ }
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || root ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this[ 0 ] = selector;
+ this.length = 1;
+ return this;
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return root.ready !== undefined ?
+ root.ready( selector ) :
+
+ // Execute immediately if ready is not present
+ selector( jQuery );
+ }
+
+ return jQuery.makeArray( selector, this );
+ };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+ // Methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend( {
+ has: function( target ) {
+ var targets = jQuery( target, this ),
+ l = targets.length;
+
+ return this.filter( function() {
+ var i = 0;
+ for ( ; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[ i ] ) ) {
+ return true;
+ }
+ }
+ } );
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ matched = [],
+ targets = typeof selectors !== "string" && jQuery( selectors );
+
+ // Positional selectors never match, since there's no _selection_ context
+ if ( !rneedsContext.test( selectors ) ) {
+ for ( ; i < l; i++ ) {
+ for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && ( targets ?
+ targets.index( cur ) > -1 :
+
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+ matched.push( cur );
+ break;
+ }
+ }
+ }
+ }
+
+ return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+ },
+
+ // Determine the position of an element within the set
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+ }
+
+ // Index in selector
+ if ( typeof elem === "string" ) {
+ return indexOf.call( jQuery( elem ), this[ 0 ] );
+ }
+
+ // Locate the position of the desired element
+ return indexOf.call( this,
+
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[ 0 ] : elem
+ );
+ },
+
+ add: function( selector, context ) {
+ return this.pushStack(
+ jQuery.uniqueSort(
+ jQuery.merge( this.get(), jQuery( selector, context ) )
+ )
+ );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter( selector )
+ );
+ }
+} );
+
+function sibling( cur, dir ) {
+ while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+ return cur;
+}
+
+jQuery.each( {
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return siblings( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return siblings( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return elem.contentDocument || jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var matched = jQuery.map( this, fn, until );
+
+ if ( name.slice( -5 ) !== "Until" ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ matched = jQuery.filter( selector, matched );
+ }
+
+ if ( this.length > 1 ) {
+
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ jQuery.uniqueSort( matched );
+ }
+
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ matched.reverse();
+ }
+ }
+
+ return this.pushStack( matched );
+ };
+} );
+var rnotwhite = ( /\S+/g );
+
+
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+ var object = {};
+ jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ } );
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ createOptions( options ) :
+ jQuery.extend( {}, options );
+
+ var // Flag to know if list is currently firing
+ firing,
+
+ // Last fire value for non-forgettable lists
+ memory,
+
+ // Flag to know if list was already fired
+ fired,
+
+ // Flag to prevent firing
+ locked,
+
+ // Actual callback list
+ list = [],
+
+ // Queue of execution data for repeatable lists
+ queue = [],
+
+ // Index of currently firing callback (modified by add/remove as needed)
+ firingIndex = -1,
+
+ // Fire callbacks
+ fire = function() {
+
+ // Enforce single-firing
+ locked = options.once;
+
+ // Execute callbacks for all pending executions,
+ // respecting firingIndex overrides and runtime changes
+ fired = firing = true;
+ for ( ; queue.length; firingIndex = -1 ) {
+ memory = queue.shift();
+ while ( ++firingIndex < list.length ) {
+
+ // Run callback and check for early termination
+ if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
+ options.stopOnFalse ) {
+
+ // Jump to end and forget the data so .add doesn't re-fire
+ firingIndex = list.length;
+ memory = false;
+ }
+ }
+ }
+
+ // Forget the data if we're done with it
+ if ( !options.memory ) {
+ memory = false;
+ }
+
+ firing = false;
+
+ // Clean up if we're done firing for good
+ if ( locked ) {
+
+ // Keep an empty list if we have data for future add calls
+ if ( memory ) {
+ list = [];
+
+ // Otherwise, this object is spent
+ } else {
+ list = "";
+ }
+ }
+ },
+
+ // Actual Callbacks object
+ self = {
+
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+
+ // If we have memory from a past run, we should fire after adding
+ if ( memory && !firing ) {
+ firingIndex = list.length - 1;
+ queue.push( memory );
+ }
+
+ ( function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ if ( jQuery.isFunction( arg ) ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
+
+ // Inspect recursively
+ add( arg );
+ }
+ } );
+ } )( arguments );
+
+ if ( memory && !firing ) {
+ fire();
+ }
+ }
+ return this;
+ },
+
+ // Remove a callback from the list
+ remove: function() {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+
+ // Handle firing indexes
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ } );
+ return this;
+ },
+
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function( fn ) {
+ return fn ?
+ jQuery.inArray( fn, list ) > -1 :
+ list.length > 0;
+ },
+
+ // Remove all callbacks from the list
+ empty: function() {
+ if ( list ) {
+ list = [];
+ }
+ return this;
+ },
+
+ // Disable .fire and .add
+ // Abort any current/pending executions
+ // Clear all callbacks and values
+ disable: function() {
+ locked = queue = [];
+ list = memory = "";
+ return this;
+ },
+ disabled: function() {
+ return !list;
+ },
+
+ // Disable .fire
+ // Also disable .add unless we have memory (since it would have no effect)
+ // Abort any pending executions
+ lock: function() {
+ locked = queue = [];
+ if ( !memory && !firing ) {
+ list = memory = "";
+ }
+ return this;
+ },
+ locked: function() {
+ return !!locked;
+ },
+
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( !locked ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ queue.push( args );
+ if ( !firing ) {
+ fire();
+ }
+ }
+ return this;
+ },
+
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+
+
+function Identity( v ) {
+ return v;
+}
+function Thrower( ex ) {
+ throw ex;
+}
+
+function adoptValue( value, resolve, reject ) {
+ var method;
+
+ try {
+
+ // Check for promise aspect first to privilege synchronous behavior
+ if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
+ method.call( value ).done( resolve ).fail( reject );
+
+ // Other thenables
+ } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
+ method.call( value, resolve, reject );
+
+ // Other non-thenables
+ } else {
+
+ // Support: Android 4.0 only
+ // Strict mode functions invoked without .call/.apply get global-object context
+ resolve.call( undefined, value );
+ }
+
+ // For Promises/A+, convert exceptions into rejections
+ // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
+ // Deferred#then to conditionally suppress rejection.
+ } catch ( value ) {
+
+ // Support: Android 4.0 only
+ // Strict mode functions invoked without .call/.apply get global-object context
+ reject.call( undefined, value );
+ }
+}
+
+jQuery.extend( {
+
+ Deferred: function( func ) {
+ var tuples = [
+
+ // action, add listener, callbacks,
+ // ... .then handlers, argument index, [final state]
+ [ "notify", "progress", jQuery.Callbacks( "memory" ),
+ jQuery.Callbacks( "memory" ), 2 ],
+ [ "resolve", "done", jQuery.Callbacks( "once memory" ),
+ jQuery.Callbacks( "once memory" ), 0, "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks( "once memory" ),
+ jQuery.Callbacks( "once memory" ), 1, "rejected" ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ "catch": function( fn ) {
+ return promise.then( null, fn );
+ },
+
+ // Keep pipe for back-compat
+ pipe: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+
+ return jQuery.Deferred( function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+
+ // Map tuples (progress, done, fail) to arguments (done, fail, progress)
+ var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
+
+ // deferred.progress(function() { bind to newDefer or newDefer.notify })
+ // deferred.done(function() { bind to newDefer or newDefer.resolve })
+ // deferred.fail(function() { bind to newDefer or newDefer.reject })
+ deferred[ tuple[ 1 ] ]( function() {
+ var returned = fn && fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise()
+ .progress( newDefer.notify )
+ .done( newDefer.resolve )
+ .fail( newDefer.reject );
+ } else {
+ newDefer[ tuple[ 0 ] + "With" ](
+ this,
+ fn ? [ returned ] : arguments
+ );
+ }
+ } );
+ } );
+ fns = null;
+ } ).promise();
+ },
+ then: function( onFulfilled, onRejected, onProgress ) {
+ var maxDepth = 0;
+ function resolve( depth, deferred, handler, special ) {
+ return function() {
+ var that = this,
+ args = arguments,
+ mightThrow = function() {
+ var returned, then;
+
+ // Support: Promises/A+ section 2.3.3.3.3
+ // https://promisesaplus.com/#point-59
+ // Ignore double-resolution attempts
+ if ( depth < maxDepth ) {
+ return;
+ }
+
+ returned = handler.apply( that, args );
+
+ // Support: Promises/A+ section 2.3.1
+ // https://promisesaplus.com/#point-48
+ if ( returned === deferred.promise() ) {
+ throw new TypeError( "Thenable self-resolution" );
+ }
+
+ // Support: Promises/A+ sections 2.3.3.1, 3.5
+ // https://promisesaplus.com/#point-54
+ // https://promisesaplus.com/#point-75
+ // Retrieve `then` only once
+ then = returned &&
+
+ // Support: Promises/A+ section 2.3.4
+ // https://promisesaplus.com/#point-64
+ // Only check objects and functions for thenability
+ ( typeof returned === "object" ||
+ typeof returned === "function" ) &&
+ returned.then;
+
+ // Handle a returned thenable
+ if ( jQuery.isFunction( then ) ) {
+
+ // Special processors (notify) just wait for resolution
+ if ( special ) {
+ then.call(
+ returned,
+ resolve( maxDepth, deferred, Identity, special ),
+ resolve( maxDepth, deferred, Thrower, special )
+ );
+
+ // Normal processors (resolve) also hook into progress
+ } else {
+
+ // ...and disregard older resolution values
+ maxDepth++;
+
+ then.call(
+ returned,
+ resolve( maxDepth, deferred, Identity, special ),
+ resolve( maxDepth, deferred, Thrower, special ),
+ resolve( maxDepth, deferred, Identity,
+ deferred.notifyWith )
+ );
+ }
+
+ // Handle all other returned values
+ } else {
+
+ // Only substitute handlers pass on context
+ // and multiple values (non-spec behavior)
+ if ( handler !== Identity ) {
+ that = undefined;
+ args = [ returned ];
+ }
+
+ // Process the value(s)
+ // Default process is resolve
+ ( special || deferred.resolveWith )( that, args );
+ }
+ },
+
+ // Only normal processors (resolve) catch and reject exceptions
+ process = special ?
+ mightThrow :
+ function() {
+ try {
+ mightThrow();
+ } catch ( e ) {
+
+ if ( jQuery.Deferred.exceptionHook ) {
+ jQuery.Deferred.exceptionHook( e,
+ process.stackTrace );
+ }
+
+ // Support: Promises/A+ section 2.3.3.3.4.1
+ // https://promisesaplus.com/#point-61
+ // Ignore post-resolution exceptions
+ if ( depth + 1 >= maxDepth ) {
+
+ // Only substitute handlers pass on context
+ // and multiple values (non-spec behavior)
+ if ( handler !== Thrower ) {
+ that = undefined;
+ args = [ e ];
+ }
+
+ deferred.rejectWith( that, args );
+ }
+ }
+ };
+
+ // Support: Promises/A+ section 2.3.3.3.1
+ // https://promisesaplus.com/#point-57
+ // Re-resolve promises immediately to dodge false rejection from
+ // subsequent errors
+ if ( depth ) {
+ process();
+ } else {
+
+ // Call an optional hook to record the stack, in case of exception
+ // since it's otherwise lost when execution goes async
+ if ( jQuery.Deferred.getStackHook ) {
+ process.stackTrace = jQuery.Deferred.getStackHook();
+ }
+ window.setTimeout( process );
+ }
+ };
+ }
+
+ return jQuery.Deferred( function( newDefer ) {
+
+ // progress_handlers.add( ... )
+ tuples[ 0 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ jQuery.isFunction( onProgress ) ?
+ onProgress :
+ Identity,
+ newDefer.notifyWith
+ )
+ );
+
+ // fulfilled_handlers.add( ... )
+ tuples[ 1 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ jQuery.isFunction( onFulfilled ) ?
+ onFulfilled :
+ Identity
+ )
+ );
+
+ // rejected_handlers.add( ... )
+ tuples[ 2 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ jQuery.isFunction( onRejected ) ?
+ onRejected :
+ Thrower
+ )
+ );
+ } ).promise();
+ },
+
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
+ },
+ deferred = {};
+
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 5 ];
+
+ // promise.progress = list.add
+ // promise.done = list.add
+ // promise.fail = list.add
+ promise[ tuple[ 1 ] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add(
+ function() {
+
+ // state = "resolved" (i.e., fulfilled)
+ // state = "rejected"
+ state = stateString;
+ },
+
+ // rejected_callbacks.disable
+ // fulfilled_callbacks.disable
+ tuples[ 3 - i ][ 2 ].disable,
+
+ // progress_callbacks.lock
+ tuples[ 0 ][ 2 ].lock
+ );
+ }
+
+ // progress_handlers.fire
+ // fulfilled_handlers.fire
+ // rejected_handlers.fire
+ list.add( tuple[ 3 ].fire );
+
+ // deferred.notify = function() { deferred.notifyWith(...) }
+ // deferred.resolve = function() { deferred.resolveWith(...) }
+ // deferred.reject = function() { deferred.rejectWith(...) }
+ deferred[ tuple[ 0 ] ] = function() {
+ deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
+ return this;
+ };
+
+ // deferred.notifyWith = list.fireWith
+ // deferred.resolveWith = list.fireWith
+ // deferred.rejectWith = list.fireWith
+ deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
+ } );
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( singleValue ) {
+ var
+
+ // count of uncompleted subordinates
+ remaining = arguments.length,
+
+ // count of unprocessed arguments
+ i = remaining,
+
+ // subordinate fulfillment data
+ resolveContexts = Array( i ),
+ resolveValues = slice.call( arguments ),
+
+ // the master Deferred
+ master = jQuery.Deferred(),
+
+ // subordinate callback factory
+ updateFunc = function( i ) {
+ return function( value ) {
+ resolveContexts[ i ] = this;
+ resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+ if ( !( --remaining ) ) {
+ master.resolveWith( resolveContexts, resolveValues );
+ }
+ };
+ };
+
+ // Single- and empty arguments are adopted like Promise.resolve
+ if ( remaining <= 1 ) {
+ adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject );
+
+ // Use .then() to unwrap secondary thenables (cf. gh-3000)
+ if ( master.state() === "pending" ||
+ jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
+
+ return master.then();
+ }
+ }
+
+ // Multiple arguments are aggregated like Promise.all array elements
+ while ( i-- ) {
+ adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
+ }
+
+ return master.promise();
+ }
+} );
+
+
+// These usually indicate a programmer mistake during development,
+// warn about them ASAP rather than swallowing them by default.
+var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
+
+jQuery.Deferred.exceptionHook = function( error, stack ) {
+
+ // Support: IE 8 - 9 only
+ // Console exists when dev tools are open, which can happen at any time
+ if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
+ window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
+ }
+};
+
+
+
+
+jQuery.readyException = function( error ) {
+ window.setTimeout( function() {
+ throw error;
+ } );
+};
+
+
+
+
+// The deferred used on DOM ready
+var readyList = jQuery.Deferred();
+
+jQuery.fn.ready = function( fn ) {
+
+ readyList
+ .then( fn )
+
+ // Wrap jQuery.readyException in a function so that the lookup
+ // happens at the time of error handling instead of callback
+ // registration.
+ .catch( function( error ) {
+ jQuery.readyException( error );
+ } );
+
+ return this;
+};
+
+jQuery.extend( {
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+ }
+} );
+
+jQuery.ready.then = readyList.then;
+
+// The ready event handler and self cleanup method
+function completed() {
+ document.removeEventListener( "DOMContentLoaded", completed );
+ window.removeEventListener( "load", completed );
+ jQuery.ready();
+}
+
+// Catch cases where $(document).ready() is called
+// after the browser event has already occurred.
+// Support: IE <=9 - 10 only
+// Older IE sometimes signals "interactive" too soon
+if ( document.readyState === "complete" ||
+ ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ window.setTimeout( jQuery.ready );
+
+} else {
+
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed );
+}
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ len = elems.length,
+ bulk = key == null;
+
+ // Sets many values
+ if ( jQuery.type( key ) === "object" ) {
+ chainable = true;
+ for ( i in key ) {
+ access( elems, fn, i, key[ i ], true, emptyGet, raw );
+ }
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ chainable = true;
+
+ if ( !jQuery.isFunction( value ) ) {
+ raw = true;
+ }
+
+ if ( bulk ) {
+
+ // Bulk operations run against the entire set
+ if ( raw ) {
+ fn.call( elems, value );
+ fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
+ }
+ }
+
+ if ( fn ) {
+ for ( ; i < len; i++ ) {
+ fn(
+ elems[ i ], key, raw ?
+ value :
+ value.call( elems[ i ], i, fn( elems[ i ], key ) )
+ );
+ }
+ }
+ }
+
+ return chainable ?
+ elems :
+
+ // Gets
+ bulk ?
+ fn.call( elems ) :
+ len ? fn( elems[ 0 ], key ) : emptyGet;
+};
+var acceptData = function( owner ) {
+
+ // Accepts only:
+ // - Node
+ // - Node.ELEMENT_NODE
+ // - Node.DOCUMENT_NODE
+ // - Object
+ // - Any
+ return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+
+
+function Data() {
+ this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+
+Data.prototype = {
+
+ cache: function( owner ) {
+
+ // Check if the owner object already has a cache
+ var value = owner[ this.expando ];
+
+ // If not, create one
+ if ( !value ) {
+ value = {};
+
+ // We can accept data for non-element nodes in modern browsers,
+ // but we should not, see #8335.
+ // Always return an empty object.
+ if ( acceptData( owner ) ) {
+
+ // If it is a node unlikely to be stringify-ed or looped over
+ // use plain assignment
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = value;
+
+ // Otherwise secure it in a non-enumerable property
+ // configurable must be true to allow the property to be
+ // deleted when data is removed
+ } else {
+ Object.defineProperty( owner, this.expando, {
+ value: value,
+ configurable: true
+ } );
+ }
+ }
+ }
+
+ return value;
+ },
+ set: function( owner, data, value ) {
+ var prop,
+ cache = this.cache( owner );
+
+ // Handle: [ owner, key, value ] args
+ // Always use camelCase key (gh-2257)
+ if ( typeof data === "string" ) {
+ cache[ jQuery.camelCase( data ) ] = value;
+
+ // Handle: [ owner, { properties } ] args
+ } else {
+
+ // Copy the properties one-by-one to the cache object
+ for ( prop in data ) {
+ cache[ jQuery.camelCase( prop ) ] = data[ prop ];
+ }
+ }
+ return cache;
+ },
+ get: function( owner, key ) {
+ return key === undefined ?
+ this.cache( owner ) :
+
+ // Always use camelCase key (gh-2257)
+ owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
+ },
+ access: function( owner, key, value ) {
+
+ // In cases where either:
+ //
+ // 1. No key was specified
+ // 2. A string key was specified, but no value provided
+ //
+ // Take the "read" path and allow the get method to determine
+ // which value to return, respectively either:
+ //
+ // 1. The entire cache object
+ // 2. The data stored at the key
+ //
+ if ( key === undefined ||
+ ( ( key && typeof key === "string" ) && value === undefined ) ) {
+
+ return this.get( owner, key );
+ }
+
+ // When the key is not a string, or both a key and value
+ // are specified, set or extend (existing objects) with either:
+ //
+ // 1. An object of properties
+ // 2. A key and value
+ //
+ this.set( owner, key, value );
+
+ // Since the "set" path can have two possible entry points
+ // return the expected data based on which path was taken[*]
+ return value !== undefined ? value : key;
+ },
+ remove: function( owner, key ) {
+ var i,
+ cache = owner[ this.expando ];
+
+ if ( cache === undefined ) {
+ return;
+ }
+
+ if ( key !== undefined ) {
+
+ // Support array or space separated string of keys
+ if ( jQuery.isArray( key ) ) {
+
+ // If key is an array of keys...
+ // We always set camelCase keys, so remove that.
+ key = key.map( jQuery.camelCase );
+ } else {
+ key = jQuery.camelCase( key );
+
+ // If a key with the spaces exists, use it.
+ // Otherwise, create an array by matching non-whitespace
+ key = key in cache ?
+ [ key ] :
+ ( key.match( rnotwhite ) || [] );
+ }
+
+ i = key.length;
+
+ while ( i-- ) {
+ delete cache[ key[ i ] ];
+ }
+ }
+
+ // Remove the expando if there's no more data
+ if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
+
+ // Support: Chrome <=35 - 45
+ // Webkit & Blink performance suffers when deleting properties
+ // from DOM nodes, so set to undefined instead
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = undefined;
+ } else {
+ delete owner[ this.expando ];
+ }
+ }
+ },
+ hasData: function( owner ) {
+ var cache = owner[ this.expando ];
+ return cache !== undefined && !jQuery.isEmptyObject( cache );
+ }
+};
+var dataPriv = new Data();
+
+var dataUser = new Data();
+
+
+
+// Implementation Summary
+//
+// 1. Enforce API surface and semantic compatibility with 1.9.x branch
+// 2. Improve the module's maintainability by reducing the storage
+// paths to a single mechanism.
+// 3. Use the same single mechanism to support "private" and "user" data.
+// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+// 5. Avoid exposing implementation details on user objects (eg. expando properties)
+// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+ rmultiDash = /[A-Z]/g;
+
+function dataAttr( elem, key, data ) {
+ var name;
+
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+
+ // Only convert to a number if it doesn't change the string
+ +data + "" === data ? +data :
+ rbrace.test( data ) ? JSON.parse( data ) :
+ data;
+ } catch ( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ dataUser.set( elem, key, data );
+ } else {
+ data = undefined;
+ }
+ }
+ return data;
+}
+
+jQuery.extend( {
+ hasData: function( elem ) {
+ return dataUser.hasData( elem ) || dataPriv.hasData( elem );
+ },
+
+ data: function( elem, name, data ) {
+ return dataUser.access( elem, name, data );
+ },
+
+ removeData: function( elem, name ) {
+ dataUser.remove( elem, name );
+ },
+
+ // TODO: Now that all calls to _data and _removeData have been replaced
+ // with direct calls to dataPriv methods, these can be deprecated.
+ _data: function( elem, name, data ) {
+ return dataPriv.access( elem, name, data );
+ },
+
+ _removeData: function( elem, name ) {
+ dataPriv.remove( elem, name );
+ }
+} );
+
+jQuery.fn.extend( {
+ data: function( key, value ) {
+ var i, name, data,
+ elem = this[ 0 ],
+ attrs = elem && elem.attributes;
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = dataUser.get( elem );
+
+ if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
+ i = attrs.length;
+ while ( i-- ) {
+
+ // Support: IE 11 only
+ // The attrs elements can be null (#14894)
+ if ( attrs[ i ] ) {
+ name = attrs[ i ].name;
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = jQuery.camelCase( name.slice( 5 ) );
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ }
+ dataPriv.set( elem, "hasDataAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each( function() {
+ dataUser.set( this, key );
+ } );
+ }
+
+ return access( this, function( value ) {
+ var data;
+
+ // The calling jQuery object (element matches) is not empty
+ // (and therefore has an element appears at this[ 0 ]) and the
+ // `value` parameter was not undefined. An empty jQuery object
+ // will result in `undefined` for elem = this[ 0 ] which will
+ // throw an exception if an attempt to read a data cache is made.
+ if ( elem && value === undefined ) {
+
+ // Attempt to get data from the cache
+ // The key will always be camelCased in Data
+ data = dataUser.get( elem, key );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // Attempt to "discover" the data in
+ // HTML5 custom data-* attrs
+ data = dataAttr( elem, key );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // We tried really hard, but the data doesn't exist.
+ return;
+ }
+
+ // Set the data...
+ this.each( function() {
+
+ // We always store the camelCased key
+ dataUser.set( this, key, value );
+ } );
+ }, null, value, arguments.length > 1, null, true );
+ },
+
+ removeData: function( key ) {
+ return this.each( function() {
+ dataUser.remove( this, key );
+ } );
+ }
+} );
+
+
+jQuery.extend( {
+ queue: function( elem, type, data ) {
+ var queue;
+
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = dataPriv.get( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || jQuery.isArray( data ) ) {
+ queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
+ } else {
+ queue.push( data );
+ }
+ }
+ return queue || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
+ }
+
+ if ( fn ) {
+
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ // Clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
+ }
+
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
+ }
+ },
+
+ // Not public - generate a queueHooks object, or return the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
+ empty: jQuery.Callbacks( "once memory" ).add( function() {
+ dataPriv.remove( elem, [ type + "queue", key ] );
+ } )
+ } );
+ }
+} );
+
+jQuery.fn.extend( {
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[ 0 ], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each( function() {
+ var queue = jQuery.queue( this, type, data );
+
+ // Ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ } );
+ },
+ dequeue: function( type ) {
+ return this.each( function() {
+ jQuery.dequeue( this, type );
+ } );
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
+ }
+ type = type || "fx";
+
+ while ( i-- ) {
+ tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( obj );
+ }
+} );
+var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
+
+var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
+
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHiddenWithinTree = function( elem, el ) {
+
+ // isHiddenWithinTree might be called from jQuery#filter function;
+ // in that case, element will be second argument
+ elem = el || elem;
+
+ // Inline style trumps all
+ return elem.style.display === "none" ||
+ elem.style.display === "" &&
+
+ // Otherwise, check computed style
+ // Support: Firefox <=43 - 45
+ // Disconnected elements can have computed display: none, so first confirm that elem is
+ // in the document.
+ jQuery.contains( elem.ownerDocument, elem ) &&
+
+ jQuery.css( elem, "display" ) === "none";
+ };
+
+var swap = function( elem, options, callback, args ) {
+ var ret, name,
+ old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.apply( elem, args || [] );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+};
+
+
+
+
+function adjustCSS( elem, prop, valueParts, tween ) {
+ var adjusted,
+ scale = 1,
+ maxIterations = 20,
+ currentValue = tween ?
+ function() {
+ return tween.cur();
+ } :
+ function() {
+ return jQuery.css( elem, prop, "" );
+ },
+ initial = currentValue(),
+ unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+ rcssNum.exec( jQuery.css( elem, prop ) );
+
+ if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
+
+ // Trust units reported by jQuery.css
+ unit = unit || initialInUnit[ 3 ];
+
+ // Make sure we update the tween properties later on
+ valueParts = valueParts || [];
+
+ // Iteratively approximate from a nonzero starting point
+ initialInUnit = +initial || 1;
+
+ do {
+
+ // If previous iteration zeroed out, double until we get *something*.
+ // Use string for doubling so we don't accidentally see scale as unchanged below
+ scale = scale || ".5";
+
+ // Adjust and apply
+ initialInUnit = initialInUnit / scale;
+ jQuery.style( elem, prop, initialInUnit + unit );
+
+ // Update scale, tolerating zero or NaN from tween.cur()
+ // Break the loop if scale is unchanged or perfect, or if we've just had enough.
+ } while (
+ scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
+ );
+ }
+
+ if ( valueParts ) {
+ initialInUnit = +initialInUnit || +initial || 0;
+
+ // Apply relative offset (+=/-=) if specified
+ adjusted = valueParts[ 1 ] ?
+ initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
+ +valueParts[ 2 ];
+ if ( tween ) {
+ tween.unit = unit;
+ tween.start = initialInUnit;
+ tween.end = adjusted;
+ }
+ }
+ return adjusted;
+}
+
+
+var defaultDisplayMap = {};
+
+function getDefaultDisplay( elem ) {
+ var temp,
+ doc = elem.ownerDocument,
+ nodeName = elem.nodeName,
+ display = defaultDisplayMap[ nodeName ];
+
+ if ( display ) {
+ return display;
+ }
+
+ temp = doc.body.appendChild( doc.createElement( nodeName ) ),
+ display = jQuery.css( temp, "display" );
+
+ temp.parentNode.removeChild( temp );
+
+ if ( display === "none" ) {
+ display = "block";
+ }
+ defaultDisplayMap[ nodeName ] = display;
+
+ return display;
+}
+
+function showHide( elements, show ) {
+ var display, elem,
+ values = [],
+ index = 0,
+ length = elements.length;
+
+ // Determine new display value for elements that need to change
+ for ( ; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+
+ display = elem.style.display;
+ if ( show ) {
+
+ // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
+ // check is required in this first loop unless we have a nonempty display value (either
+ // inline or about-to-be-restored)
+ if ( display === "none" ) {
+ values[ index ] = dataPriv.get( elem, "display" ) || null;
+ if ( !values[ index ] ) {
+ elem.style.display = "";
+ }
+ }
+ if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
+ values[ index ] = getDefaultDisplay( elem );
+ }
+ } else {
+ if ( display !== "none" ) {
+ values[ index ] = "none";
+
+ // Remember what we're overwriting
+ dataPriv.set( elem, "display", display );
+ }
+ }
+ }
+
+ // Set the display of the elements in a second loop to avoid constant reflow
+ for ( index = 0; index < length; index++ ) {
+ if ( values[ index ] != null ) {
+ elements[ index ].style.display = values[ index ];
+ }
+ }
+
+ return elements;
+}
+
+jQuery.fn.extend( {
+ show: function() {
+ return showHide( this, true );
+ },
+ hide: function() {
+ return showHide( this );
+ },
+ toggle: function( state ) {
+ if ( typeof state === "boolean" ) {
+ return state ? this.show() : this.hide();
+ }
+
+ return this.each( function() {
+ if ( isHiddenWithinTree( this ) ) {
+ jQuery( this ).show();
+ } else {
+ jQuery( this ).hide();
+ }
+ } );
+ }
+} );
+var rcheckableType = ( /^(?:checkbox|radio)$/i );
+
+var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
+
+var rscriptType = ( /^$|\/(?:java|ecma)script/i );
+
+
+
+// We have to close these tags to support XHTML (#13200)
+var wrapMap = {
+
+ // Support: IE <=9 only
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+ // XHTML parsers do not magically insert elements in the
+ // same way that tag soup parsers do. So we cannot shorten
+ // this by omitting <tbody> or other required elements.
+ thead: [ 1, "<table>", "</table>" ],
+ col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+ _default: [ 0, "", "" ]
+};
+
+// Support: IE <=9 only
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+
+function getAll( context, tag ) {
+
+ // Support: IE <=9 - 11 only
+ // Use typeof to avoid zero-argument method invocation on host objects (#15151)
+ var ret = typeof context.getElementsByTagName !== "undefined" ?
+ context.getElementsByTagName( tag || "*" ) :
+ typeof context.querySelectorAll !== "undefined" ?
+ context.querySelectorAll( tag || "*" ) :
+ [];
+
+ return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+ jQuery.merge( [ context ], ret ) :
+ ret;
+}
+
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+ var i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ dataPriv.set(
+ elems[ i ],
+ "globalEval",
+ !refElements || dataPriv.get( refElements[ i ], "globalEval" )
+ );
+ }
+}
+
+
+var rhtml = /<|&#?\w+;/;
+
+function buildFragment( elems, context, scripts, selection, ignored ) {
+ var elem, tmp, tag, wrap, contains, j,
+ fragment = context.createDocumentFragment(),
+ nodes = [],
+ i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ elem = elems[ i ];
+
+ if ( elem || elem === 0 ) {
+
+ // Add nodes directly
+ if ( jQuery.type( elem ) === "object" ) {
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+ // Convert non-html into a text node
+ } else if ( !rhtml.test( elem ) ) {
+ nodes.push( context.createTextNode( elem ) );
+
+ // Convert html into DOM nodes
+ } else {
+ tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
+
+ // Deserialize a standard representation
+ tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+ wrap = wrapMap[ tag ] || wrapMap._default;
+ tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
+
+ // Descend through wrappers to the right content
+ j = wrap[ 0 ];
+ while ( j-- ) {
+ tmp = tmp.lastChild;
+ }
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, tmp.childNodes );
+
+ // Remember the top-level container
+ tmp = fragment.firstChild;
+
+ // Ensure the created nodes are orphaned (#12392)
+ tmp.textContent = "";
+ }
+ }
+ }
+
+ // Remove wrapper from fragment
+ fragment.textContent = "";
+
+ i = 0;
+ while ( ( elem = nodes[ i++ ] ) ) {
+
+ // Skip elements already in the context collection (trac-4087)
+ if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
+ if ( ignored ) {
+ ignored.push( elem );
+ }
+ continue;
+ }
+
+ contains = jQuery.contains( elem.ownerDocument, elem );
+
+ // Append to fragment
+ tmp = getAll( fragment.appendChild( elem ), "script" );
+
+ // Preserve script evaluation history
+ if ( contains ) {
+ setGlobalEval( tmp );
+ }
+
+ // Capture executables
+ if ( scripts ) {
+ j = 0;
+ while ( ( elem = tmp[ j++ ] ) ) {
+ if ( rscriptType.test( elem.type || "" ) ) {
+ scripts.push( elem );
+ }
+ }
+ }
+ }
+
+ return fragment;
+}
+
+
+( function() {
+ var fragment = document.createDocumentFragment(),
+ div = fragment.appendChild( document.createElement( "div" ) ),
+ input = document.createElement( "input" );
+
+ // Support: Android 4.0 - 4.3 only
+ // Check state lost if the name is set (#11217)
+ // Support: Windows Web Apps (WWA)
+ // `name` and `type` must use .setAttribute for WWA (#14901)
+ input.setAttribute( "type", "radio" );
+ input.setAttribute( "checked", "checked" );
+ input.setAttribute( "name", "t" );
+
+ div.appendChild( input );
+
+ // Support: Android <=4.1 only
+ // Older WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Support: IE <=11 only
+ // Make sure textarea (and checkbox) defaultValue is properly cloned
+ div.innerHTML = "<textarea>x</textarea>";
+ support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+} )();
+var documentElement = document.documentElement;
+
+
+
+var
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+
+function returnTrue() {
+ return true;
+}
+
+function returnFalse() {
+ return false;
+}
+
+// Support: IE <=9 only
+// See #13393 for more info
+function safeActiveElement() {
+ try {
+ return document.activeElement;
+ } catch ( err ) { }
+}
+
+function on( elem, types, selector, data, fn, one ) {
+ var origFn, type;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ on( elem, type, selector, data, types[ type ], one );
+ }
+ return elem;
+ }
+
+ if ( data == null && fn == null ) {
+
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return elem;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return elem.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ } );
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ global: {},
+
+ add: function( elem, types, handler, data, selector ) {
+
+ var handleObjIn, eventHandle, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = dataPriv.get( elem );
+
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
+ if ( !elemData ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Ensure that invalid selectors throw exceptions at attach time
+ // Evaluate against documentElement in case elem is a non-element node (e.g., document)
+ if ( selector ) {
+ jQuery.find.matchesSelector( documentElement, selector );
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ if ( !( events = elemData.events ) ) {
+ events = elemData.events = {};
+ }
+ if ( !( eventHandle = elemData.handle ) ) {
+ eventHandle = elemData.handle = function( e ) {
+
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+ jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+ };
+ }
+
+ // Handle multiple events separated by a space
+ types = ( types || "" ).match( rnotwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
+ type = origType = tmp[ 1 ];
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+ // There *must* be a type, no attaching namespace-only handlers
+ if ( !type ) {
+ continue;
+ }
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend( {
+ type: type,
+ origType: origType,
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join( "." )
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ if ( !( handlers = events[ type ] ) ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener if the special events handler returns false
+ if ( !special.setup ||
+ special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ },
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+
+ var j, origCount, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
+
+ if ( !elemData || !( events = elemData.events ) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = ( types || "" ).match( rnotwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
+ type = origType = tmp[ 1 ];
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+ handlers = events[ type ] || [];
+ tmp = tmp[ 2 ] &&
+ new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
+
+ // Remove matching events
+ origCount = j = handlers.length;
+ while ( j-- ) {
+ handleObj = handlers[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector ||
+ selector === "**" && handleObj.selector ) ) {
+ handlers.splice( j, 1 );
+
+ if ( handleObj.selector ) {
+ handlers.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( origCount && !handlers.length ) {
+ if ( !special.teardown ||
+ special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove data and the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ dataPriv.remove( elem, "handle events" );
+ }
+ },
+
+ dispatch: function( nativeEvent ) {
+
+ // Make a writable jQuery.Event from the native event object
+ var event = jQuery.event.fix( nativeEvent );
+
+ var i, j, ret, matched, handleObj, handlerQueue,
+ args = new Array( arguments.length ),
+ handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
+ special = jQuery.event.special[ event.type ] || {};
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[ 0 ] = event;
+
+ for ( i = 1; i < arguments.length; i++ ) {
+ args[ i ] = arguments[ i ];
+ }
+
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+ // Run delegates first; they may want to stop propagation beneath us
+ i = 0;
+ while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
+ event.currentTarget = matched.elem;
+
+ j = 0;
+ while ( ( handleObj = matched.handlers[ j++ ] ) &&
+ !event.isImmediatePropagationStopped() ) {
+
+ // Triggered event must either 1) have no namespace, or 2) have namespace(s)
+ // a subset or equal to those in the bound event (both can have no namespace).
+ if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
+
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
+
+ ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
+ handleObj.handler ).apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ if ( ( event.result = ret ) === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ handlers: function( event, handlers ) {
+ var i, matches, sel, handleObj,
+ handlerQueue = [],
+ delegateCount = handlers.delegateCount,
+ cur = event.target;
+
+ // Support: IE <=9
+ // Find delegate handlers
+ // Black-hole SVG <use> instance trees (#13180)
+ //
+ // Support: Firefox <=42
+ // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)
+ if ( delegateCount && cur.nodeType &&
+ ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) {
+
+ for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+ // Don't check non-elements (#13208)
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+ if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) {
+ matches = [];
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+
+ // Don't conflict with Object.prototype properties (#13203)
+ sel = handleObj.selector + " ";
+
+ if ( matches[ sel ] === undefined ) {
+ matches[ sel ] = handleObj.needsContext ?
+ jQuery( sel, this ).index( cur ) > -1 :
+ jQuery.find( sel, this, null, [ cur ] ).length;
+ }
+ if ( matches[ sel ] ) {
+ matches.push( handleObj );
+ }
+ }
+ if ( matches.length ) {
+ handlerQueue.push( { elem: cur, handlers: matches } );
+ }
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ if ( delegateCount < handlers.length ) {
+ handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );
+ }
+
+ return handlerQueue;
+ },
+
+ addProp: function( name, hook ) {
+ Object.defineProperty( jQuery.Event.prototype, name, {
+ enumerable: true,
+ configurable: true,
+
+ get: jQuery.isFunction( hook ) ?
+ function() {
+ if ( this.originalEvent ) {
+ return hook( this.originalEvent );
+ }
+ } :
+ function() {
+ if ( this.originalEvent ) {
+ return this.originalEvent[ name ];
+ }
+ },
+
+ set: function( value ) {
+ Object.defineProperty( this, name, {
+ enumerable: true,
+ configurable: true,
+ writable: true,
+ value: value
+ } );
+ }
+ } );
+ },
+
+ fix: function( originalEvent ) {
+ return originalEvent[ jQuery.expando ] ?
+ originalEvent :
+ new jQuery.Event( originalEvent );
+ },
+
+ special: {
+ load: {
+
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+ focus: {
+
+ // Fire native event if possible so blur/focus sequence is correct
+ trigger: function() {
+ if ( this !== safeActiveElement() && this.focus ) {
+ this.focus();
+ return false;
+ }
+ },
+ delegateType: "focusin"
+ },
+ blur: {
+ trigger: function() {
+ if ( this === safeActiveElement() && this.blur ) {
+ this.blur();
+ return false;
+ }
+ },
+ delegateType: "focusout"
+ },
+ click: {
+
+ // For checkbox, fire native event so checked state will be right
+ trigger: function() {
+ if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
+ this.click();
+ return false;
+ }
+ },
+
+ // For cross-browser consistency, don't fire native .click() on links
+ _default: function( event ) {
+ return jQuery.nodeName( event.target, "a" );
+ }
+ },
+
+ beforeunload: {
+ postDispatch: function( event ) {
+
+ // Support: Firefox 20+
+ // Firefox doesn't alert if the returnValue field is not set.
+ if ( event.result !== undefined && event.originalEvent ) {
+ event.originalEvent.returnValue = event.result;
+ }
+ }
+ }
+ }
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+
+ // This "if" is needed for plain objects
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle );
+ }
+};
+
+jQuery.Event = function( src, props ) {
+
+ // Allow instantiation without the 'new' keyword
+ if ( !( this instanceof jQuery.Event ) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = src.defaultPrevented ||
+ src.defaultPrevented === undefined &&
+
+ // Support: Android <=2.3 only
+ src.returnValue === false ?
+ returnTrue :
+ returnFalse;
+
+ // Create target properties
+ // Support: Safari <=6 - 7 only
+ // Target should not be a text node (#504, #13143)
+ this.target = ( src.target && src.target.nodeType === 3 ) ?
+ src.target.parentNode :
+ src.target;
+
+ this.currentTarget = src.currentTarget;
+ this.relatedTarget = src.relatedTarget;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ constructor: jQuery.Event,
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse,
+ isSimulated: false,
+
+ preventDefault: function() {
+ var e = this.originalEvent;
+
+ this.isDefaultPrevented = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.preventDefault();
+ }
+ },
+ stopPropagation: function() {
+ var e = this.originalEvent;
+
+ this.isPropagationStopped = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.stopPropagation();
+ }
+ },
+ stopImmediatePropagation: function() {
+ var e = this.originalEvent;
+
+ this.isImmediatePropagationStopped = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.stopImmediatePropagation();
+ }
+
+ this.stopPropagation();
+ }
+};
+
+// Includes all common event props including KeyEvent and MouseEvent specific props
+jQuery.each( {
+ altKey: true,
+ bubbles: true,
+ cancelable: true,
+ changedTouches: true,
+ ctrlKey: true,
+ detail: true,
+ eventPhase: true,
+ metaKey: true,
+ pageX: true,
+ pageY: true,
+ shiftKey: true,
+ view: true,
+ "char": true,
+ charCode: true,
+ key: true,
+ keyCode: true,
+ button: true,
+ buttons: true,
+ clientX: true,
+ clientY: true,
+ offsetX: true,
+ offsetY: true,
+ pointerId: true,
+ pointerType: true,
+ screenX: true,
+ screenY: true,
+ targetTouches: true,
+ toElement: true,
+ touches: true,
+
+ which: function( event ) {
+ var button = event.button;
+
+ // Add which for key events
+ if ( event.which == null && rkeyEvent.test( event.type ) ) {
+ return event.charCode != null ? event.charCode : event.keyCode;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
+ return ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+ }
+
+ return event.which;
+ }
+}, jQuery.event.addProp );
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// so that event delegation works in jQuery.
+// Do the same for pointerenter/pointerleave and pointerover/pointerout
+//
+// Support: Safari 7 only
+// Safari sends mouseenter too often; see:
+// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
+// for the description of the bug (it existed in older Chrome versions as well).
+jQuery.each( {
+ mouseenter: "mouseover",
+ mouseleave: "mouseout",
+ pointerenter: "pointerover",
+ pointerleave: "pointerout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var ret,
+ target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj;
+
+ // For mouseenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+} );
+
+jQuery.fn.extend( {
+
+ on: function( types, selector, data, fn ) {
+ return on( this, types, selector, data, fn );
+ },
+ one: function( types, selector, data, fn ) {
+ return on( this, types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ var handleObj, type;
+ if ( types && types.preventDefault && types.handleObj ) {
+
+ // ( event ) dispatched jQuery.Event
+ handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ?
+ handleObj.origType + "." + handleObj.namespace :
+ handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+
+ // ( types-object [, selector] )
+ for ( type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each( function() {
+ jQuery.event.remove( this, types, fn, selector );
+ } );
+ }
+} );
+
+
+var
+
+ /* eslint-disable max-len */
+
+ // See https://github.com/eslint/eslint/issues/3229
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
+
+ /* eslint-enable */
+
+ // Support: IE <=10 - 11, Edge 12 - 13
+ // In IE/Edge using regex groups here causes severe slowdowns.
+ // See https://connect.microsoft.com/IE/feedback/details/1736512/
+ rnoInnerhtml = /<script|<style|<link/i,
+
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptTypeMasked = /^true\/(.*)/,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
+
+function manipulationTarget( elem, content ) {
+ if ( jQuery.nodeName( elem, "table" ) &&
+ jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
+
+ return elem.getElementsByTagName( "tbody" )[ 0 ] || elem;
+ }
+
+ return elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+ elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
+ return elem;
+}
+function restoreScript( elem ) {
+ var match = rscriptTypeMasked.exec( elem.type );
+
+ if ( match ) {
+ elem.type = match[ 1 ];
+ } else {
+ elem.removeAttribute( "type" );
+ }
+
+ return elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+ var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ // 1. Copy private data: events, handlers, etc.
+ if ( dataPriv.hasData( src ) ) {
+ pdataOld = dataPriv.access( src );
+ pdataCur = dataPriv.set( dest, pdataOld );
+ events = pdataOld.events;
+
+ if ( events ) {
+ delete pdataCur.handle;
+ pdataCur.events = {};
+
+ for ( type in events ) {
+ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type, events[ type ][ i ] );
+ }
+ }
+ }
+ }
+
+ // 2. Copy user data
+ if ( dataUser.hasData( src ) ) {
+ udataOld = dataUser.access( src );
+ udataCur = jQuery.extend( {}, udataOld );
+
+ dataUser.set( dest, udataCur );
+ }
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+ var nodeName = dest.nodeName.toLowerCase();
+
+ // Fails to persist the checked state of a cloned checkbox or radio button.
+ if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+ dest.checked = src.checked;
+
+ // Fails to return the selected option to the default selected state when cloning options
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+}
+
+function domManip( collection, args, callback, ignored ) {
+
+ // Flatten any nested arrays
+ args = concat.apply( [], args );
+
+ var fragment, first, scripts, hasScripts, node, doc,
+ i = 0,
+ l = collection.length,
+ iNoClone = l - 1,
+ value = args[ 0 ],
+ isFunction = jQuery.isFunction( value );
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( isFunction ||
+ ( l > 1 && typeof value === "string" &&
+ !support.checkClone && rchecked.test( value ) ) ) {
+ return collection.each( function( index ) {
+ var self = collection.eq( index );
+ if ( isFunction ) {
+ args[ 0 ] = value.call( this, index, self.html() );
+ }
+ domManip( self, args, callback, ignored );
+ } );
+ }
+
+ if ( l ) {
+ fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
+ first = fragment.firstChild;
+
+ if ( fragment.childNodes.length === 1 ) {
+ fragment = first;
+ }
+
+ // Require either new content or an interest in ignored elements to invoke the callback
+ if ( first || ignored ) {
+ scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+ hasScripts = scripts.length;
+
+ // Use the original fragment for the last item
+ // instead of the first because it can end up
+ // being emptied incorrectly in certain situations (#8070).
+ for ( ; i < l; i++ ) {
+ node = fragment;
+
+ if ( i !== iNoClone ) {
+ node = jQuery.clone( node, true, true );
+
+ // Keep references to cloned scripts for later restoration
+ if ( hasScripts ) {
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( scripts, getAll( node, "script" ) );
+ }
+ }
+
+ callback.call( collection[ i ], node, i );
+ }
+
+ if ( hasScripts ) {
+ doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+ // Reenable scripts
+ jQuery.map( scripts, restoreScript );
+
+ // Evaluate executable scripts on first document insertion
+ for ( i = 0; i < hasScripts; i++ ) {
+ node = scripts[ i ];
+ if ( rscriptType.test( node.type || "" ) &&
+ !dataPriv.access( node, "globalEval" ) &&
+ jQuery.contains( doc, node ) ) {
+
+ if ( node.src ) {
+
+ // Optional AJAX dependency, but won't run scripts if not present
+ if ( jQuery._evalUrl ) {
+ jQuery._evalUrl( node.src );
+ }
+ } else {
+ DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return collection;
+}
+
+function remove( elem, selector, keepData ) {
+ var node,
+ nodes = selector ? jQuery.filter( selector, elem ) : elem,
+ i = 0;
+
+ for ( ; ( node = nodes[ i ] ) != null; i++ ) {
+ if ( !keepData && node.nodeType === 1 ) {
+ jQuery.cleanData( getAll( node ) );
+ }
+
+ if ( node.parentNode ) {
+ if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
+ setGlobalEval( getAll( node, "script" ) );
+ }
+ node.parentNode.removeChild( node );
+ }
+ }
+
+ return elem;
+}
+
+jQuery.extend( {
+ htmlPrefilter: function( html ) {
+ return html.replace( rxhtmlTag, "<$1></$2>" );
+ },
+
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var i, l, srcElements, destElements,
+ clone = elem.cloneNode( true ),
+ inPage = jQuery.contains( elem.ownerDocument, elem );
+
+ // Fix IE cloning issues
+ if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+ !jQuery.isXMLDoc( elem ) ) {
+
+ // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
+ destElements = getAll( clone );
+ srcElements = getAll( elem );
+
+ for ( i = 0, l = srcElements.length; i < l; i++ ) {
+ fixInput( srcElements[ i ], destElements[ i ] );
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ if ( deepDataAndEvents ) {
+ srcElements = srcElements || getAll( elem );
+ destElements = destElements || getAll( clone );
+
+ for ( i = 0, l = srcElements.length; i < l; i++ ) {
+ cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+ }
+ } else {
+ cloneCopyEvent( elem, clone );
+ }
+ }
+
+ // Preserve script evaluation history
+ destElements = getAll( clone, "script" );
+ if ( destElements.length > 0 ) {
+ setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+ }
+
+ // Return the cloned set
+ return clone;
+ },
+
+ cleanData: function( elems ) {
+ var data, elem, type,
+ special = jQuery.event.special,
+ i = 0;
+
+ for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
+ if ( acceptData( elem ) ) {
+ if ( ( data = elem[ dataPriv.expando ] ) ) {
+ if ( data.events ) {
+ for ( type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+
+ // Support: Chrome <=35 - 45+
+ // Assign undefined instead of using delete, see Data#remove
+ elem[ dataPriv.expando ] = undefined;
+ }
+ if ( elem[ dataUser.expando ] ) {
+
+ // Support: Chrome <=35 - 45+
+ // Assign undefined instead of using delete, see Data#remove
+ elem[ dataUser.expando ] = undefined;
+ }
+ }
+ }
+ }
+} );
+
+jQuery.fn.extend( {
+ detach: function( selector ) {
+ return remove( this, selector, true );
+ },
+
+ remove: function( selector ) {
+ return remove( this, selector );
+ },
+
+ text: function( value ) {
+ return access( this, function( value ) {
+ return value === undefined ?
+ jQuery.text( this ) :
+ this.empty().each( function() {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ this.textContent = value;
+ }
+ } );
+ }, null, value, arguments.length );
+ },
+
+ append: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.appendChild( elem );
+ }
+ } );
+ },
+
+ prepend: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.insertBefore( elem, target.firstChild );
+ }
+ } );
+ },
+
+ before: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this );
+ }
+ } );
+ },
+
+ after: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ }
+ } );
+ },
+
+ empty: function() {
+ var elem,
+ i = 0;
+
+ for ( ; ( elem = this[ i ] ) != null; i++ ) {
+ if ( elem.nodeType === 1 ) {
+
+ // Prevent memory leaks
+ jQuery.cleanData( getAll( elem, false ) );
+
+ // Remove any remaining nodes
+ elem.textContent = "";
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map( function() {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ } );
+ },
+
+ html: function( value ) {
+ return access( this, function( value ) {
+ var elem = this[ 0 ] || {},
+ i = 0,
+ l = this.length;
+
+ if ( value === undefined && elem.nodeType === 1 ) {
+ return elem.innerHTML;
+ }
+
+ // See if we can take a shortcut and just use innerHTML
+ if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+ value = jQuery.htmlPrefilter( value );
+
+ try {
+ for ( ; i < l; i++ ) {
+ elem = this[ i ] || {};
+
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem, false ) );
+ elem.innerHTML = value;
+ }
+ }
+
+ elem = 0;
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch ( e ) {}
+ }
+
+ if ( elem ) {
+ this.empty().append( value );
+ }
+ }, null, value, arguments.length );
+ },
+
+ replaceWith: function() {
+ var ignored = [];
+
+ // Make the changes, replacing each non-ignored context element with the new content
+ return domManip( this, arguments, function( elem ) {
+ var parent = this.parentNode;
+
+ if ( jQuery.inArray( this, ignored ) < 0 ) {
+ jQuery.cleanData( getAll( this ) );
+ if ( parent ) {
+ parent.replaceChild( elem, this );
+ }
+ }
+
+ // Force callback invocation
+ }, ignored );
+ }
+} );
+
+jQuery.each( {
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var elems,
+ ret = [],
+ insert = jQuery( selector ),
+ last = insert.length - 1,
+ i = 0;
+
+ for ( ; i <= last; i++ ) {
+ elems = i === last ? this : this.clone( true );
+ jQuery( insert[ i ] )[ original ]( elems );
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // .get() because push.apply(_, arraylike) throws on ancient WebKit
+ push.apply( ret, elems.get() );
+ }
+
+ return this.pushStack( ret );
+ };
+} );
+var rmargin = ( /^margin/ );
+
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+
+ // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
+ // IE throws on elements created in popups
+ // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+ var view = elem.ownerDocument.defaultView;
+
+ if ( !view || !view.opener ) {
+ view = window;
+ }
+
+ return view.getComputedStyle( elem );
+ };
+
+
+
+( function() {
+
+ // Executing both pixelPosition & boxSizingReliable tests require only one layout
+ // so they're executed at the same time to save the second computation.
+ function computeStyleTests() {
+
+ // This is a singleton, we need to execute it only once
+ if ( !div ) {
+ return;
+ }
+
+ div.style.cssText =
+ "box-sizing:border-box;" +
+ "position:relative;display:block;" +
+ "margin:auto;border:1px;padding:1px;" +
+ "top:1%;width:50%";
+ div.innerHTML = "";
+ documentElement.appendChild( container );
+
+ var divStyle = window.getComputedStyle( div );
+ pixelPositionVal = divStyle.top !== "1%";
+
+ // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
+ reliableMarginLeftVal = divStyle.marginLeft === "2px";
+ boxSizingReliableVal = divStyle.width === "4px";
+
+ // Support: Android 4.0 - 4.3 only
+ // Some styles come back with percentage values, even though they shouldn't
+ div.style.marginRight = "50%";
+ pixelMarginRightVal = divStyle.marginRight === "4px";
+
+ documentElement.removeChild( container );
+
+ // Nullify the div so it wouldn't be stored in the memory and
+ // it will also be a sign that checks already performed
+ div = null;
+ }
+
+ var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
+ container = document.createElement( "div" ),
+ div = document.createElement( "div" );
+
+ // Finish early in limited (non-browser) environments
+ if ( !div.style ) {
+ return;
+ }
+
+ // Support: IE <=9 - 11 only
+ // Style of cloned element affects source element cloned (#8908)
+ div.style.backgroundClip = "content-box";
+ div.cloneNode( true ).style.backgroundClip = "";
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+ container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
+ "padding:0;margin-top:1px;position:absolute";
+ container.appendChild( div );
+
+ jQuery.extend( support, {
+ pixelPosition: function() {
+ computeStyleTests();
+ return pixelPositionVal;
+ },
+ boxSizingReliable: function() {
+ computeStyleTests();
+ return boxSizingReliableVal;
+ },
+ pixelMarginRight: function() {
+ computeStyleTests();
+ return pixelMarginRightVal;
+ },
+ reliableMarginLeft: function() {
+ computeStyleTests();
+ return reliableMarginLeftVal;
+ }
+ } );
+} )();
+
+
+function curCSS( elem, name, computed ) {
+ var width, minWidth, maxWidth, ret,
+ style = elem.style;
+
+ computed = computed || getStyles( elem );
+
+ // Support: IE <=9 only
+ // getPropertyValue is only needed for .css('filter') (#12537)
+ if ( computed ) {
+ ret = computed.getPropertyValue( name ) || computed[ name ];
+
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+
+ // A tribute to the "awesome hack by Dean Edwards"
+ // Android Browser returns percentage for some values,
+ // but width seems to be reliably pixels.
+ // This is against the CSSOM draft spec:
+ // https://drafts.csswg.org/cssom/#resolved-values
+ if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+ // Remember the original values
+ width = style.width;
+ minWidth = style.minWidth;
+ maxWidth = style.maxWidth;
+
+ // Put in the new values to get a computed value out
+ style.minWidth = style.maxWidth = style.width = ret;
+ ret = computed.width;
+
+ // Revert the changed values
+ style.width = width;
+ style.minWidth = minWidth;
+ style.maxWidth = maxWidth;
+ }
+ }
+
+ return ret !== undefined ?
+
+ // Support: IE <=9 - 11 only
+ // IE returns zIndex value as an integer.
+ ret + "" :
+ ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+
+ // Define the hook, we'll check on the first run if it's really needed.
+ return {
+ get: function() {
+ if ( conditionFn() ) {
+
+ // Hook not needed (or it's not possible to use it due
+ // to missing dependency), remove it.
+ delete this.get;
+ return;
+ }
+
+ // Hook needed; redefine it so that the support test is not executed again.
+ return ( this.get = hookFn ).apply( this, arguments );
+ }
+ };
+}
+
+
+var
+
+ // Swappable if display is none or starts with table
+ // except "table", "table-cell", or "table-caption"
+ // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssNormalTransform = {
+ letterSpacing: "0",
+ fontWeight: "400"
+ },
+
+ cssPrefixes = [ "Webkit", "Moz", "ms" ],
+ emptyStyle = document.createElement( "div" ).style;
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( name ) {
+
+ // Shortcut for names that are not vendor prefixed
+ if ( name in emptyStyle ) {
+ return name;
+ }
+
+ // Check for vendor prefixed names
+ var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
+ i = cssPrefixes.length;
+
+ while ( i-- ) {
+ name = cssPrefixes[ i ] + capName;
+ if ( name in emptyStyle ) {
+ return name;
+ }
+ }
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+
+ // Any relative (+/-) values have already been
+ // normalized at this point
+ var matches = rcssNum.exec( value );
+ return matches ?
+
+ // Guard against undefined "subtract", e.g., when used as in cssHooks
+ Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
+ value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+ var i = extra === ( isBorderBox ? "border" : "content" ) ?
+
+ // If we already have the right measurement, avoid augmentation
+ 4 :
+
+ // Otherwise initialize for horizontal or vertical properties
+ name === "width" ? 1 : 0,
+
+ val = 0;
+
+ for ( ; i < 4; i += 2 ) {
+
+ // Both box models exclude margin, so add it if we want it
+ if ( extra === "margin" ) {
+ val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+ }
+
+ if ( isBorderBox ) {
+
+ // border-box includes padding, so remove it if we want content
+ if ( extra === "content" ) {
+ val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+ }
+
+ // At this point, extra isn't border nor margin, so remove border
+ if ( extra !== "margin" ) {
+ val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ } else {
+
+ // At this point, extra isn't content, so add padding
+ val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+ // At this point, extra isn't content nor padding, so add border
+ if ( extra !== "padding" ) {
+ val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ }
+ }
+
+ return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+ // Start with offset property, which is equivalent to the border-box value
+ var val,
+ valueIsBorderBox = true,
+ styles = getStyles( elem ),
+ isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+ // Support: IE <=11 only
+ // Running getBoundingClientRect on a disconnected node
+ // in IE throws an error.
+ if ( elem.getClientRects().length ) {
+ val = elem.getBoundingClientRect()[ name ];
+ }
+
+ // Some non-html elements return undefined for offsetWidth, so check for null/undefined
+ // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+ // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+ if ( val <= 0 || val == null ) {
+
+ // Fall back to computed then uncomputed css if necessary
+ val = curCSS( elem, name, styles );
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ];
+ }
+
+ // Computed unit is not pixels. Stop here and return.
+ if ( rnumnonpx.test( val ) ) {
+ return val;
+ }
+
+ // Check for style in case a browser which returns unreliable values
+ // for getComputedStyle silently falls back to the reliable elem.style
+ valueIsBorderBox = isBorderBox &&
+ ( support.boxSizingReliable() || val === elem.style[ name ] );
+
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+ }
+
+ // Use the active box-sizing model to add/subtract irrelevant styles
+ return ( val +
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra || ( isBorderBox ? "border" : "content" ),
+ valueIsBorderBox,
+ styles
+ )
+ ) + "px";
+}
+
+jQuery.extend( {
+
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity" );
+ return ret === "" ? "1" : ret;
+ }
+ }
+ }
+ },
+
+ // Don't automatically add "px" to these possibly-unitless properties
+ cssNumber: {
+ "animationIterationCount": true,
+ "columnCount": true,
+ "fillOpacity": true,
+ "flexGrow": true,
+ "flexShrink": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "order": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ "float": "cssFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, hooks,
+ origName = jQuery.camelCase( name ),
+ style = elem.style;
+
+ name = jQuery.cssProps[ origName ] ||
+ ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
+
+ // Gets hook for the prefixed version, then unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // Convert "+=" or "-=" to relative numbers (#7345)
+ if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
+ value = adjustCSS( elem, name, ret );
+
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // Make sure that null and NaN values aren't set (#7116)
+ if ( value == null || value !== value ) {
+ return;
+ }
+
+ // If a number was passed in, add the unit (except for certain CSS properties)
+ if ( type === "number" ) {
+ value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
+ }
+
+ // background-* props affect original clone's values
+ if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+ style[ name ] = "inherit";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !( "set" in hooks ) ||
+ ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
+
+ style[ name ] = value;
+ }
+
+ } else {
+
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks &&
+ ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
+
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra, styles ) {
+ var val, num, hooks,
+ origName = jQuery.camelCase( name );
+
+ // Make sure that we're working with the right name
+ name = jQuery.cssProps[ origName ] ||
+ ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
+
+ // Try prefixed name followed by the unprefixed name
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks ) {
+ val = hooks.get( elem, true, extra );
+ }
+
+ // Otherwise, if a way to get the computed value exists, use that
+ if ( val === undefined ) {
+ val = curCSS( elem, name, styles );
+ }
+
+ // Convert "normal" to computed value
+ if ( val === "normal" && name in cssNormalTransform ) {
+ val = cssNormalTransform[ name ];
+ }
+
+ // Make numeric if forced or a qualifier was provided and val looks numeric
+ if ( extra === "" || extra ) {
+ num = parseFloat( val );
+ return extra === true || isFinite( num ) ? num || 0 : val;
+ }
+ return val;
+ }
+} );
+
+jQuery.each( [ "height", "width" ], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ if ( computed ) {
+
+ // Certain elements can have dimension info if we invisibly show them
+ // but it must have a current display style that would benefit
+ return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
+
+ // Support: Safari 8+
+ // Table columns in Safari have non-zero offsetWidth & zero
+ // getBoundingClientRect().width unless display is changed.
+ // Support: IE <=11 only
+ // Running getBoundingClientRect on a disconnected node
+ // in IE throws an error.
+ ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
+ swap( elem, cssShow, function() {
+ return getWidthOrHeight( elem, name, extra );
+ } ) :
+ getWidthOrHeight( elem, name, extra );
+ }
+ },
+
+ set: function( elem, value, extra ) {
+ var matches,
+ styles = extra && getStyles( elem ),
+ subtract = extra && augmentWidthOrHeight(
+ elem,
+ name,
+ extra,
+ jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+ styles
+ );
+
+ // Convert to pixels if value adjustment is needed
+ if ( subtract && ( matches = rcssNum.exec( value ) ) &&
+ ( matches[ 3 ] || "px" ) !== "px" ) {
+
+ elem.style[ name ] = value;
+ value = jQuery.css( elem, name );
+ }
+
+ return setPositiveNumber( elem, value, subtract );
+ }
+ };
+} );
+
+jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
+ function( elem, computed ) {
+ if ( computed ) {
+ return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
+ elem.getBoundingClientRect().left -
+ swap( elem, { marginLeft: 0 }, function() {
+ return elem.getBoundingClientRect().left;
+ } )
+ ) + "px";
+ }
+ }
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each( {
+ margin: "",
+ padding: "",
+ border: "Width"
+}, function( prefix, suffix ) {
+ jQuery.cssHooks[ prefix + suffix ] = {
+ expand: function( value ) {
+ var i = 0,
+ expanded = {},
+
+ // Assumes a single number if not a string
+ parts = typeof value === "string" ? value.split( " " ) : [ value ];
+
+ for ( ; i < 4; i++ ) {
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+ }
+
+ return expanded;
+ }
+ };
+
+ if ( !rmargin.test( prefix ) ) {
+ jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+ }
+} );
+
+jQuery.fn.extend( {
+ css: function( name, value ) {
+ return access( this, function( elem, name, value ) {
+ var styles, len,
+ map = {},
+ i = 0;
+
+ if ( jQuery.isArray( name ) ) {
+ styles = getStyles( elem );
+ len = name.length;
+
+ for ( ; i < len; i++ ) {
+ map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+ }
+
+ return map;
+ }
+
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ }, name, value, arguments.length > 1 );
+ }
+} );
+
+
+function Tween( elem, options, prop, end, easing ) {
+ return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+ constructor: Tween,
+ init: function( elem, options, prop, end, easing, unit ) {
+ this.elem = elem;
+ this.prop = prop;
+ this.easing = easing || jQuery.easing._default;
+ this.options = options;
+ this.start = this.now = this.cur();
+ this.end = end;
+ this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+ },
+ cur: function() {
+ var hooks = Tween.propHooks[ this.prop ];
+
+ return hooks && hooks.get ?
+ hooks.get( this ) :
+ Tween.propHooks._default.get( this );
+ },
+ run: function( percent ) {
+ var eased,
+ hooks = Tween.propHooks[ this.prop ];
+
+ if ( this.options.duration ) {
+ this.pos = eased = jQuery.easing[ this.easing ](
+ percent, this.options.duration * percent, 0, 1, this.options.duration
+ );
+ } else {
+ this.pos = eased = percent;
+ }
+ this.now = ( this.end - this.start ) * eased + this.start;
+
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ if ( hooks && hooks.set ) {
+ hooks.set( this );
+ } else {
+ Tween.propHooks._default.set( this );
+ }
+ return this;
+ }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+ _default: {
+ get: function( tween ) {
+ var result;
+
+ // Use a property on the element directly when it is not a DOM element,
+ // or when there is no matching style property that exists.
+ if ( tween.elem.nodeType !== 1 ||
+ tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
+ return tween.elem[ tween.prop ];
+ }
+
+ // Passing an empty string as a 3rd parameter to .css will automatically
+ // attempt a parseFloat and fallback to a string if the parse fails.
+ // Simple values such as "10px" are parsed to Float;
+ // complex values such as "rotate(1rad)" are returned as-is.
+ result = jQuery.css( tween.elem, tween.prop, "" );
+
+ // Empty strings, null, undefined and "auto" are converted to 0.
+ return !result || result === "auto" ? 0 : result;
+ },
+ set: function( tween ) {
+
+ // Use step hook for back compat.
+ // Use cssHook if its there.
+ // Use .style if available and use plain properties where available.
+ if ( jQuery.fx.step[ tween.prop ] ) {
+ jQuery.fx.step[ tween.prop ]( tween );
+ } else if ( tween.elem.nodeType === 1 &&
+ ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
+ jQuery.cssHooks[ tween.prop ] ) ) {
+ jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+ } else {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+ }
+};
+
+// Support: IE <=9 only
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+ set: function( tween ) {
+ if ( tween.elem.nodeType && tween.elem.parentNode ) {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+};
+
+jQuery.easing = {
+ linear: function( p ) {
+ return p;
+ },
+ swing: function( p ) {
+ return 0.5 - Math.cos( p * Math.PI ) / 2;
+ },
+ _default: "swing"
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back compat <1.8 extension point
+jQuery.fx.step = {};
+
+
+
+
+var
+ fxNow, timerId,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rrun = /queueHooks$/;
+
+function raf() {
+ if ( timerId ) {
+ window.requestAnimationFrame( raf );
+ jQuery.fx.tick();
+ }
+}
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ window.setTimeout( function() {
+ fxNow = undefined;
+ } );
+ return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+ var which,
+ i = 0,
+ attrs = { height: type };
+
+ // If we include width, step value is 1 to do all cssExpand values,
+ // otherwise step value is 2 to skip over Left and Right
+ includeWidth = includeWidth ? 1 : 0;
+ for ( ; i < 4; i += 2 - includeWidth ) {
+ which = cssExpand[ i ];
+ attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+ }
+
+ if ( includeWidth ) {
+ attrs.opacity = attrs.width = type;
+ }
+
+ return attrs;
+}
+
+function createTween( value, prop, animation ) {
+ var tween,
+ collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
+ index = 0,
+ length = collection.length;
+ for ( ; index < length; index++ ) {
+ if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
+
+ // We're done with this property
+ return tween;
+ }
+ }
+}
+
+function defaultPrefilter( elem, props, opts ) {
+ var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
+ isBox = "width" in props || "height" in props,
+ anim = this,
+ orig = {},
+ style = elem.style,
+ hidden = elem.nodeType && isHiddenWithinTree( elem ),
+ dataShow = dataPriv.get( elem, "fxshow" );
+
+ // Queue-skipping animations hijack the fx hooks
+ if ( !opts.queue ) {
+ hooks = jQuery._queueHooks( elem, "fx" );
+ if ( hooks.unqueued == null ) {
+ hooks.unqueued = 0;
+ oldfire = hooks.empty.fire;
+ hooks.empty.fire = function() {
+ if ( !hooks.unqueued ) {
+ oldfire();
+ }
+ };
+ }
+ hooks.unqueued++;
+
+ anim.always( function() {
+
+ // Ensure the complete handler is called before this completes
+ anim.always( function() {
+ hooks.unqueued--;
+ if ( !jQuery.queue( elem, "fx" ).length ) {
+ hooks.empty.fire();
+ }
+ } );
+ } );
+ }
+
+ // Detect show/hide animations
+ for ( prop in props ) {
+ value = props[ prop ];
+ if ( rfxtypes.test( value ) ) {
+ delete props[ prop ];
+ toggle = toggle || value === "toggle";
+ if ( value === ( hidden ? "hide" : "show" ) ) {
+
+ // Pretend to be hidden if this is a "show" and
+ // there is still data from a stopped show/hide
+ if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+ hidden = true;
+
+ // Ignore all other no-op show/hide data
+ } else {
+ continue;
+ }
+ }
+ orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+ }
+ }
+
+ // Bail out if this is a no-op like .hide().hide()
+ propTween = !jQuery.isEmptyObject( props );
+ if ( !propTween && jQuery.isEmptyObject( orig ) ) {
+ return;
+ }
+
+ // Restrict "overflow" and "display" styles during box animations
+ if ( isBox && elem.nodeType === 1 ) {
+
+ // Support: IE <=9 - 11, Edge 12 - 13
+ // Record all 3 overflow attributes because IE does not infer the shorthand
+ // from identically-valued overflowX and overflowY
+ opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+ // Identify a display type, preferring old show/hide data over the CSS cascade
+ restoreDisplay = dataShow && dataShow.display;
+ if ( restoreDisplay == null ) {
+ restoreDisplay = dataPriv.get( elem, "display" );
+ }
+ display = jQuery.css( elem, "display" );
+ if ( display === "none" ) {
+ if ( restoreDisplay ) {
+ display = restoreDisplay;
+ } else {
+
+ // Get nonempty value(s) by temporarily forcing visibility
+ showHide( [ elem ], true );
+ restoreDisplay = elem.style.display || restoreDisplay;
+ display = jQuery.css( elem, "display" );
+ showHide( [ elem ] );
+ }
+ }
+
+ // Animate inline elements as inline-block
+ if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
+ if ( jQuery.css( elem, "float" ) === "none" ) {
+
+ // Restore the original display value at the end of pure show/hide animations
+ if ( !propTween ) {
+ anim.done( function() {
+ style.display = restoreDisplay;
+ } );
+ if ( restoreDisplay == null ) {
+ display = style.display;
+ restoreDisplay = display === "none" ? "" : display;
+ }
+ }
+ style.display = "inline-block";
+ }
+ }
+ }
+
+ if ( opts.overflow ) {
+ style.overflow = "hidden";
+ anim.always( function() {
+ style.overflow = opts.overflow[ 0 ];
+ style.overflowX = opts.overflow[ 1 ];
+ style.overflowY = opts.overflow[ 2 ];
+ } );
+ }
+
+ // Implement show/hide animations
+ propTween = false;
+ for ( prop in orig ) {
+
+ // General show/hide setup for this element animation
+ if ( !propTween ) {
+ if ( dataShow ) {
+ if ( "hidden" in dataShow ) {
+ hidden = dataShow.hidden;
+ }
+ } else {
+ dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
+ }
+
+ // Store hidden/visible for toggle so `.stop().toggle()` "reverses"
+ if ( toggle ) {
+ dataShow.hidden = !hidden;
+ }
+
+ // Show elements before animating them
+ if ( hidden ) {
+ showHide( [ elem ], true );
+ }
+
+ /* eslint-disable no-loop-func */
+
+ anim.done( function() {
+
+ /* eslint-enable no-loop-func */
+
+ // The final step of a "hide" animation is actually hiding the element
+ if ( !hidden ) {
+ showHide( [ elem ] );
+ }
+ dataPriv.remove( elem, "fxshow" );
+ for ( prop in orig ) {
+ jQuery.style( elem, prop, orig[ prop ] );
+ }
+ } );
+ }
+
+ // Per-property setup
+ propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+ if ( !( prop in dataShow ) ) {
+ dataShow[ prop ] = propTween.start;
+ if ( hidden ) {
+ propTween.end = propTween.start;
+ propTween.start = 0;
+ }
+ }
+ }
+}
+
+function propFilter( props, specialEasing ) {
+ var index, name, easing, value, hooks;
+
+ // camelCase, specialEasing and expand cssHook pass
+ for ( index in props ) {
+ name = jQuery.camelCase( index );
+ easing = specialEasing[ name ];
+ value = props[ index ];
+ if ( jQuery.isArray( value ) ) {
+ easing = value[ 1 ];
+ value = props[ index ] = value[ 0 ];
+ }
+
+ if ( index !== name ) {
+ props[ name ] = value;
+ delete props[ index ];
+ }
+
+ hooks = jQuery.cssHooks[ name ];
+ if ( hooks && "expand" in hooks ) {
+ value = hooks.expand( value );
+ delete props[ name ];
+
+ // Not quite $.extend, this won't overwrite existing keys.
+ // Reusing 'index' because we have the correct "name"
+ for ( index in value ) {
+ if ( !( index in props ) ) {
+ props[ index ] = value[ index ];
+ specialEasing[ index ] = easing;
+ }
+ }
+ } else {
+ specialEasing[ name ] = easing;
+ }
+ }
+}
+
+function Animation( elem, properties, options ) {
+ var result,
+ stopped,
+ index = 0,
+ length = Animation.prefilters.length,
+ deferred = jQuery.Deferred().always( function() {
+
+ // Don't match elem in the :animated selector
+ delete tick.elem;
+ } ),
+ tick = function() {
+ if ( stopped ) {
+ return false;
+ }
+ var currentTime = fxNow || createFxNow(),
+ remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+
+ // Support: Android 2.3 only
+ // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+ temp = remaining / animation.duration || 0,
+ percent = 1 - temp,
+ index = 0,
+ length = animation.tweens.length;
+
+ for ( ; index < length; index++ ) {
+ animation.tweens[ index ].run( percent );
+ }
+
+ deferred.notifyWith( elem, [ animation, percent, remaining ] );
+
+ if ( percent < 1 && length ) {
+ return remaining;
+ } else {
+ deferred.resolveWith( elem, [ animation ] );
+ return false;
+ }
+ },
+ animation = deferred.promise( {
+ elem: elem,
+ props: jQuery.extend( {}, properties ),
+ opts: jQuery.extend( true, {
+ specialEasing: {},
+ easing: jQuery.easing._default
+ }, options ),
+ originalProperties: properties,
+ originalOptions: options,
+ startTime: fxNow || createFxNow(),
+ duration: options.duration,
+ tweens: [],
+ createTween: function( prop, end ) {
+ var tween = jQuery.Tween( elem, animation.opts, prop, end,
+ animation.opts.specialEasing[ prop ] || animation.opts.easing );
+ animation.tweens.push( tween );
+ return tween;
+ },
+ stop: function( gotoEnd ) {
+ var index = 0,
+
+ // If we are going to the end, we want to run all the tweens
+ // otherwise we skip this part
+ length = gotoEnd ? animation.tweens.length : 0;
+ if ( stopped ) {
+ return this;
+ }
+ stopped = true;
+ for ( ; index < length; index++ ) {
+ animation.tweens[ index ].run( 1 );
+ }
+
+ // Resolve when we played the last frame; otherwise, reject
+ if ( gotoEnd ) {
+ deferred.notifyWith( elem, [ animation, 1, 0 ] );
+ deferred.resolveWith( elem, [ animation, gotoEnd ] );
+ } else {
+ deferred.rejectWith( elem, [ animation, gotoEnd ] );
+ }
+ return this;
+ }
+ } ),
+ props = animation.props;
+
+ propFilter( props, animation.opts.specialEasing );
+
+ for ( ; index < length; index++ ) {
+ result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
+ if ( result ) {
+ if ( jQuery.isFunction( result.stop ) ) {
+ jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
+ jQuery.proxy( result.stop, result );
+ }
+ return result;
+ }
+ }
+
+ jQuery.map( props, createTween, animation );
+
+ if ( jQuery.isFunction( animation.opts.start ) ) {
+ animation.opts.start.call( elem, animation );
+ }
+
+ jQuery.fx.timer(
+ jQuery.extend( tick, {
+ elem: elem,
+ anim: animation,
+ queue: animation.opts.queue
+ } )
+ );
+
+ // attach callbacks from options
+ return animation.progress( animation.opts.progress )
+ .done( animation.opts.done, animation.opts.complete )
+ .fail( animation.opts.fail )
+ .always( animation.opts.always );
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+ tweeners: {
+ "*": [ function( prop, value ) {
+ var tween = this.createTween( prop, value );
+ adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
+ return tween;
+ } ]
+ },
+
+ tweener: function( props, callback ) {
+ if ( jQuery.isFunction( props ) ) {
+ callback = props;
+ props = [ "*" ];
+ } else {
+ props = props.match( rnotwhite );
+ }
+
+ var prop,
+ index = 0,
+ length = props.length;
+
+ for ( ; index < length; index++ ) {
+ prop = props[ index ];
+ Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
+ Animation.tweeners[ prop ].unshift( callback );
+ }
+ },
+
+ prefilters: [ defaultPrefilter ],
+
+ prefilter: function( callback, prepend ) {
+ if ( prepend ) {
+ Animation.prefilters.unshift( callback );
+ } else {
+ Animation.prefilters.push( callback );
+ }
+ }
+} );
+
+jQuery.speed = function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ };
+
+ // Go to the end state if fx are off or if document is hidden
+ if ( jQuery.fx.off || document.hidden ) {
+ opt.duration = 0;
+
+ } else {
+ opt.duration = typeof opt.duration === "number" ?
+ opt.duration : opt.duration in jQuery.fx.speeds ?
+ jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+ }
+
+ // Normalize opt.queue - true/undefined/null -> "fx"
+ if ( opt.queue == null || opt.queue === true ) {
+ opt.queue = "fx";
+ }
+
+ // Queueing
+ opt.old = opt.complete;
+
+ opt.complete = function() {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue ) {
+ jQuery.dequeue( this, opt.queue );
+ }
+ };
+
+ return opt;
+};
+
+jQuery.fn.extend( {
+ fadeTo: function( speed, to, easing, callback ) {
+
+ // Show any hidden elements after setting opacity to 0
+ return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
+
+ // Animate to the value specified
+ .end().animate( { opacity: to }, speed, easing, callback );
+ },
+ animate: function( prop, speed, easing, callback ) {
+ var empty = jQuery.isEmptyObject( prop ),
+ optall = jQuery.speed( speed, easing, callback ),
+ doAnimation = function() {
+
+ // Operate on a copy of prop so per-property easing won't be lost
+ var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+ // Empty animations, or finishing resolves immediately
+ if ( empty || dataPriv.get( this, "finish" ) ) {
+ anim.stop( true );
+ }
+ };
+ doAnimation.finish = doAnimation;
+
+ return empty || optall.queue === false ?
+ this.each( doAnimation ) :
+ this.queue( optall.queue, doAnimation );
+ },
+ stop: function( type, clearQueue, gotoEnd ) {
+ var stopQueue = function( hooks ) {
+ var stop = hooks.stop;
+ delete hooks.stop;
+ stop( gotoEnd );
+ };
+
+ if ( typeof type !== "string" ) {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = undefined;
+ }
+ if ( clearQueue && type !== false ) {
+ this.queue( type || "fx", [] );
+ }
+
+ return this.each( function() {
+ var dequeue = true,
+ index = type != null && type + "queueHooks",
+ timers = jQuery.timers,
+ data = dataPriv.get( this );
+
+ if ( index ) {
+ if ( data[ index ] && data[ index ].stop ) {
+ stopQueue( data[ index ] );
+ }
+ } else {
+ for ( index in data ) {
+ if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+ stopQueue( data[ index ] );
+ }
+ }
+ }
+
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this &&
+ ( type == null || timers[ index ].queue === type ) ) {
+
+ timers[ index ].anim.stop( gotoEnd );
+ dequeue = false;
+ timers.splice( index, 1 );
+ }
+ }
+
+ // Start the next in the queue if the last step wasn't forced.
+ // Timers currently will call their complete callbacks, which
+ // will dequeue but only if they were gotoEnd.
+ if ( dequeue || !gotoEnd ) {
+ jQuery.dequeue( this, type );
+ }
+ } );
+ },
+ finish: function( type ) {
+ if ( type !== false ) {
+ type = type || "fx";
+ }
+ return this.each( function() {
+ var index,
+ data = dataPriv.get( this ),
+ queue = data[ type + "queue" ],
+ hooks = data[ type + "queueHooks" ],
+ timers = jQuery.timers,
+ length = queue ? queue.length : 0;
+
+ // Enable finishing flag on private data
+ data.finish = true;
+
+ // Empty the queue first
+ jQuery.queue( this, type, [] );
+
+ if ( hooks && hooks.stop ) {
+ hooks.stop.call( this, true );
+ }
+
+ // Look for any active animations, and finish them
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+ timers[ index ].anim.stop( true );
+ timers.splice( index, 1 );
+ }
+ }
+
+ // Look for any animations in the old queue and finish them
+ for ( index = 0; index < length; index++ ) {
+ if ( queue[ index ] && queue[ index ].finish ) {
+ queue[ index ].finish.call( this );
+ }
+ }
+
+ // Turn off finishing flag
+ delete data.finish;
+ } );
+ }
+} );
+
+jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
+ var cssFn = jQuery.fn[ name ];
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return speed == null || typeof speed === "boolean" ?
+ cssFn.apply( this, arguments ) :
+ this.animate( genFx( name, true ), speed, easing, callback );
+ };
+} );
+
+// Generate shortcuts for custom animations
+jQuery.each( {
+ slideDown: genFx( "show" ),
+ slideUp: genFx( "hide" ),
+ slideToggle: genFx( "toggle" ),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+} );
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+ var timer,
+ i = 0,
+ timers = jQuery.timers;
+
+ fxNow = jQuery.now();
+
+ for ( ; i < timers.length; i++ ) {
+ timer = timers[ i ];
+
+ // Checks the timer has not already been removed
+ if ( !timer() && timers[ i ] === timer ) {
+ timers.splice( i--, 1 );
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+ jQuery.timers.push( timer );
+ if ( timer() ) {
+ jQuery.fx.start();
+ } else {
+ jQuery.timers.pop();
+ }
+};
+
+jQuery.fx.interval = 13;
+jQuery.fx.start = function() {
+ if ( !timerId ) {
+ timerId = window.requestAnimationFrame ?
+ window.requestAnimationFrame( raf ) :
+ window.setInterval( jQuery.fx.tick, jQuery.fx.interval );
+ }
+};
+
+jQuery.fx.stop = function() {
+ if ( window.cancelAnimationFrame ) {
+ window.cancelAnimationFrame( timerId );
+ } else {
+ window.clearInterval( timerId );
+ }
+
+ timerId = null;
+};
+
+jQuery.fx.speeds = {
+ slow: 600,
+ fast: 200,
+
+ // Default speed
+ _default: 400
+};
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, hooks ) {
+ var timeout = window.setTimeout( next, time );
+ hooks.stop = function() {
+ window.clearTimeout( timeout );
+ };
+ } );
+};
+
+
+( function() {
+ var input = document.createElement( "input" ),
+ select = document.createElement( "select" ),
+ opt = select.appendChild( document.createElement( "option" ) );
+
+ input.type = "checkbox";
+
+ // Support: Android <=4.3 only
+ // Default value for a checkbox should be "on"
+ support.checkOn = input.value !== "";
+
+ // Support: IE <=11 only
+ // Must access selectedIndex to make default options select
+ support.optSelected = opt.selected;
+
+ // Support: IE <=11 only
+ // An input loses its value after becoming a radio
+ input = document.createElement( "input" );
+ input.value = "t";
+ input.type = "radio";
+ support.radioValue = input.value === "t";
+} )();
+
+
+var boolHook,
+ attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend( {
+ attr: function( name, value ) {
+ return access( this, jQuery.attr, name, value, arguments.length > 1 );
+ },
+
+ removeAttr: function( name ) {
+ return this.each( function() {
+ jQuery.removeAttr( this, name );
+ } );
+ }
+} );
+
+jQuery.extend( {
+ attr: function( elem, name, value ) {
+ var ret, hooks,
+ nType = elem.nodeType;
+
+ // Don't get/set attributes on text, comment and attribute nodes
+ if ( nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( typeof elem.getAttribute === "undefined" ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ // Attribute hooks are determined by the lowercase version
+ // Grab necessary hook if one is defined
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+ hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
+ ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
+ }
+
+ if ( value !== undefined ) {
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+ return;
+ }
+
+ if ( hooks && "set" in hooks &&
+ ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+ return ret;
+ }
+
+ elem.setAttribute( name, value + "" );
+ return value;
+ }
+
+ if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+ return ret;
+ }
+
+ ret = jQuery.find.attr( elem, name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret == null ? undefined : ret;
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ if ( !support.radioValue && value === "radio" &&
+ jQuery.nodeName( elem, "input" ) ) {
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ }
+ },
+
+ removeAttr: function( elem, value ) {
+ var name,
+ i = 0,
+ attrNames = value && value.match( rnotwhite );
+
+ if ( attrNames && elem.nodeType === 1 ) {
+ while ( ( name = attrNames[ i++ ] ) ) {
+ elem.removeAttribute( name );
+ }
+ }
+ }
+} );
+
+// Hooks for boolean attributes
+boolHook = {
+ set: function( elem, value, name ) {
+ if ( value === false ) {
+
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ elem.setAttribute( name, name );
+ }
+ return name;
+ }
+};
+
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+ var getter = attrHandle[ name ] || jQuery.find.attr;
+
+ attrHandle[ name ] = function( elem, name, isXML ) {
+ var ret, handle,
+ lowercaseName = name.toLowerCase();
+
+ if ( !isXML ) {
+
+ // Avoid an infinite loop by temporarily removing this function from the getter
+ handle = attrHandle[ lowercaseName ];
+ attrHandle[ lowercaseName ] = ret;
+ ret = getter( elem, name, isXML ) != null ?
+ lowercaseName :
+ null;
+ attrHandle[ lowercaseName ] = handle;
+ }
+ return ret;
+ };
+} );
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i,
+ rclickable = /^(?:a|area)$/i;
+
+jQuery.fn.extend( {
+ prop: function( name, value ) {
+ return access( this, jQuery.prop, name, value, arguments.length > 1 );
+ },
+
+ removeProp: function( name ) {
+ return this.each( function() {
+ delete this[ jQuery.propFix[ name ] || name ];
+ } );
+ }
+} );
+
+jQuery.extend( {
+ prop: function( elem, name, value ) {
+ var ret, hooks,
+ nType = elem.nodeType;
+
+ // Don't get/set properties on text, comment and attribute nodes
+ if ( nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ if ( hooks && "set" in hooks &&
+ ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+ return ret;
+ }
+
+ return ( elem[ name ] = value );
+ }
+
+ if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+ return ret;
+ }
+
+ return elem[ name ];
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+
+ // Support: IE <=9 - 11 only
+ // elem.tabIndex doesn't always return the
+ // correct value when it hasn't been explicitly set
+ // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ // Use proper attribute retrieval(#12072)
+ var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+ return tabindex ?
+ parseInt( tabindex, 10 ) :
+ rfocusable.test( elem.nodeName ) ||
+ rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ -1;
+ }
+ }
+ },
+
+ propFix: {
+ "for": "htmlFor",
+ "class": "className"
+ }
+} );
+
+// Support: IE <=11 only
+// Accessing the selectedIndex property
+// forces the browser to respect setting selected
+// on the option
+// The getter ensures a default option is selected
+// when in an optgroup
+if ( !support.optSelected ) {
+ jQuery.propHooks.selected = {
+ get: function( elem ) {
+ var parent = elem.parentNode;
+ if ( parent && parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ return null;
+ },
+ set: function( elem ) {
+ var parent = elem.parentNode;
+ if ( parent ) {
+ parent.selectedIndex;
+
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ }
+ };
+}
+
+jQuery.each( [
+ "tabIndex",
+ "readOnly",
+ "maxLength",
+ "cellSpacing",
+ "cellPadding",
+ "rowSpan",
+ "colSpan",
+ "useMap",
+ "frameBorder",
+ "contentEditable"
+], function() {
+ jQuery.propFix[ this.toLowerCase() ] = this;
+} );
+
+
+
+
+var rclass = /[\t\r\n\f]/g;
+
+function getClass( elem ) {
+ return elem.getAttribute && elem.getAttribute( "class" ) || "";
+}
+
+jQuery.fn.extend( {
+ addClass: function( value ) {
+ var classes, elem, cur, curValue, clazz, j, finalValue,
+ i = 0;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each( function( j ) {
+ jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
+ } );
+ }
+
+ if ( typeof value === "string" && value ) {
+ classes = value.match( rnotwhite ) || [];
+
+ while ( ( elem = this[ i++ ] ) ) {
+ curValue = getClass( elem );
+ cur = elem.nodeType === 1 &&
+ ( " " + curValue + " " ).replace( rclass, " " );
+
+ if ( cur ) {
+ j = 0;
+ while ( ( clazz = classes[ j++ ] ) ) {
+ if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+ cur += clazz + " ";
+ }
+ }
+
+ // Only assign if different to avoid unneeded rendering.
+ finalValue = jQuery.trim( cur );
+ if ( curValue !== finalValue ) {
+ elem.setAttribute( "class", finalValue );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var classes, elem, cur, curValue, clazz, j, finalValue,
+ i = 0;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each( function( j ) {
+ jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
+ } );
+ }
+
+ if ( !arguments.length ) {
+ return this.attr( "class", "" );
+ }
+
+ if ( typeof value === "string" && value ) {
+ classes = value.match( rnotwhite ) || [];
+
+ while ( ( elem = this[ i++ ] ) ) {
+ curValue = getClass( elem );
+
+ // This expression is here for better compressibility (see addClass)
+ cur = elem.nodeType === 1 &&
+ ( " " + curValue + " " ).replace( rclass, " " );
+
+ if ( cur ) {
+ j = 0;
+ while ( ( clazz = classes[ j++ ] ) ) {
+
+ // Remove *all* instances
+ while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
+ cur = cur.replace( " " + clazz + " ", " " );
+ }
+ }
+
+ // Only assign if different to avoid unneeded rendering.
+ finalValue = jQuery.trim( cur );
+ if ( curValue !== finalValue ) {
+ elem.setAttribute( "class", finalValue );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value;
+
+ if ( typeof stateVal === "boolean" && type === "string" ) {
+ return stateVal ? this.addClass( value ) : this.removeClass( value );
+ }
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each( function( i ) {
+ jQuery( this ).toggleClass(
+ value.call( this, i, getClass( this ), stateVal ),
+ stateVal
+ );
+ } );
+ }
+
+ return this.each( function() {
+ var className, i, self, classNames;
+
+ if ( type === "string" ) {
+
+ // Toggle individual class names
+ i = 0;
+ self = jQuery( this );
+ classNames = value.match( rnotwhite ) || [];
+
+ while ( ( className = classNames[ i++ ] ) ) {
+
+ // Check each className given, space separated list
+ if ( self.hasClass( className ) ) {
+ self.removeClass( className );
+ } else {
+ self.addClass( className );
+ }
+ }
+
+ // Toggle whole class name
+ } else if ( value === undefined || type === "boolean" ) {
+ className = getClass( this );
+ if ( className ) {
+
+ // Store className if set
+ dataPriv.set( this, "__className__", className );
+ }
+
+ // If the element has a class name or if we're passed `false`,
+ // then remove the whole classname (if there was one, the above saved it).
+ // Otherwise bring back whatever was previously saved (if anything),
+ // falling back to the empty string if nothing was stored.
+ if ( this.setAttribute ) {
+ this.setAttribute( "class",
+ className || value === false ?
+ "" :
+ dataPriv.get( this, "__className__" ) || ""
+ );
+ }
+ }
+ } );
+ },
+
+ hasClass: function( selector ) {
+ var className, elem,
+ i = 0;
+
+ className = " " + selector + " ";
+ while ( ( elem = this[ i++ ] ) ) {
+ if ( elem.nodeType === 1 &&
+ ( " " + getClass( elem ) + " " ).replace( rclass, " " )
+ .indexOf( className ) > -1
+ ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+} );
+
+
+
+
+var rreturn = /\r/g,
+ rspaces = /[\x20\t\r\n\f]+/g;
+
+jQuery.fn.extend( {
+ val: function( value ) {
+ var hooks, ret, isFunction,
+ elem = this[ 0 ];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.type ] ||
+ jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+ if ( hooks &&
+ "get" in hooks &&
+ ( ret = hooks.get( elem, "value" ) ) !== undefined
+ ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ return typeof ret === "string" ?
+
+ // Handle most common string cases
+ ret.replace( rreturn, "" ) :
+
+ // Handle cases where value is null/undef or number
+ ret == null ? "" : ret;
+ }
+
+ return;
+ }
+
+ isFunction = jQuery.isFunction( value );
+
+ return this.each( function( i ) {
+ var val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, jQuery( this ).val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+
+ } else if ( typeof val === "number" ) {
+ val += "";
+
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map( val, function( value ) {
+ return value == null ? "" : value + "";
+ } );
+ }
+
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ } );
+ }
+} );
+
+jQuery.extend( {
+ valHooks: {
+ option: {
+ get: function( elem ) {
+
+ var val = jQuery.find.attr( elem, "value" );
+ return val != null ?
+ val :
+
+ // Support: IE <=10 - 11 only
+ // option.text throws exceptions (#14686, #14858)
+ // Strip and collapse whitespace
+ // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
+ jQuery.trim( jQuery.text( elem ) ).replace( rspaces, " " );
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value, option,
+ options = elem.options,
+ index = elem.selectedIndex,
+ one = elem.type === "select-one",
+ values = one ? null : [],
+ max = one ? index + 1 : options.length,
+ i = index < 0 ?
+ max :
+ one ? index : 0;
+
+ // Loop through all the selected options
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // Support: IE <=9 only
+ // IE8-9 doesn't update selected after form reset (#2551)
+ if ( ( option.selected || i === index ) &&
+
+ // Don't return options that are disabled or in a disabled optgroup
+ !option.disabled &&
+ ( !option.parentNode.disabled ||
+ !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var optionSet, option,
+ options = elem.options,
+ values = jQuery.makeArray( value ),
+ i = options.length;
+
+ while ( i-- ) {
+ option = options[ i ];
+
+ /* eslint-disable no-cond-assign */
+
+ if ( option.selected =
+ jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
+ ) {
+ optionSet = true;
+ }
+
+ /* eslint-enable no-cond-assign */
+ }
+
+ // Force browsers to behave consistently when non-matching value is set
+ if ( !optionSet ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ }
+} );
+
+// Radios and checkboxes getter/setter
+jQuery.each( [ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
+ }
+ }
+ };
+ if ( !support.checkOn ) {
+ jQuery.valHooks[ this ].get = function( elem ) {
+ return elem.getAttribute( "value" ) === null ? "on" : elem.value;
+ };
+ }
+} );
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
+
+jQuery.extend( jQuery.event, {
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+
+ var i, cur, tmp, bubbleType, ontype, handle, special,
+ eventPath = [ elem || document ],
+ type = hasOwn.call( event, "type" ) ? event.type : event,
+ namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
+
+ cur = tmp = elem = elem || document;
+
+ // Don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+ return;
+ }
+
+ if ( type.indexOf( "." ) > -1 ) {
+
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split( "." );
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+ ontype = type.indexOf( ":" ) < 0 && "on" + type;
+
+ // Caller can pass in a jQuery.Event object, Object, or just an event type string
+ event = event[ jQuery.expando ] ?
+ event :
+ new jQuery.Event( type, typeof event === "object" && event );
+
+ // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+ event.isTrigger = onlyHandlers ? 2 : 3;
+ event.namespace = namespaces.join( "." );
+ event.rnamespace = event.namespace ?
+ new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
+ null;
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data == null ?
+ [ event ] :
+ jQuery.makeArray( data, [ event ] );
+
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
+
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+ bubbleType = special.delegateType || type;
+ if ( !rfocusMorph.test( bubbleType + type ) ) {
+ cur = cur.parentNode;
+ }
+ for ( ; cur; cur = cur.parentNode ) {
+ eventPath.push( cur );
+ tmp = cur;
+ }
+
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( tmp === ( elem.ownerDocument || document ) ) {
+ eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+ }
+ }
+
+ // Fire handlers on the event path
+ i = 0;
+ while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
+
+ event.type = i > 1 ?
+ bubbleType :
+ special.bindType || type;
+
+ // jQuery handler
+ handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
+ dataPriv.get( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+
+ // Native handler
+ handle = ontype && cur[ ontype ];
+ if ( handle && handle.apply && acceptData( cur ) ) {
+ event.result = handle.apply( cur, data );
+ if ( event.result === false ) {
+ event.preventDefault();
+ }
+ }
+ }
+ event.type = type;
+
+ // If nobody prevented the default action, do it now
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+ if ( ( !special._default ||
+ special._default.apply( eventPath.pop(), data ) === false ) &&
+ acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name as the event.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ tmp = elem[ ontype ];
+
+ if ( tmp ) {
+ elem[ ontype ] = null;
+ }
+
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ elem[ type ]();
+ jQuery.event.triggered = undefined;
+
+ if ( tmp ) {
+ elem[ ontype ] = tmp;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ // Piggyback on a donor event to simulate a different one
+ // Used only for `focus(in | out)` events
+ simulate: function( type, elem, event ) {
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ {
+ type: type,
+ isSimulated: true
+ }
+ );
+
+ jQuery.event.trigger( e, null, elem );
+ }
+
+} );
+
+jQuery.fn.extend( {
+
+ trigger: function( type, data ) {
+ return this.each( function() {
+ jQuery.event.trigger( type, data, this );
+ } );
+ },
+ triggerHandler: function( type, data ) {
+ var elem = this[ 0 ];
+ if ( elem ) {
+ return jQuery.event.trigger( type, data, elem, true );
+ }
+ }
+} );
+
+
+jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup contextmenu" ).split( " " ),
+ function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ return arguments.length > 0 ?
+ this.on( name, null, data, fn ) :
+ this.trigger( name );
+ };
+} );
+
+jQuery.fn.extend( {
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+} );
+
+
+
+
+support.focusin = "onfocusin" in window;
+
+
+// Support: Firefox <=44
+// Firefox doesn't have focus(in | out) events
+// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
+//
+// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
+// focus(in | out) events fire after focus & blur events,
+// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
+// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
+if ( !support.focusin ) {
+ jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler on the document while someone wants focusin/focusout
+ var handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
+ };
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ var doc = this.ownerDocument || this,
+ attaches = dataPriv.access( doc, fix );
+
+ if ( !attaches ) {
+ doc.addEventListener( orig, handler, true );
+ }
+ dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
+ },
+ teardown: function() {
+ var doc = this.ownerDocument || this,
+ attaches = dataPriv.access( doc, fix ) - 1;
+
+ if ( !attaches ) {
+ doc.removeEventListener( orig, handler, true );
+ dataPriv.remove( doc, fix );
+
+ } else {
+ dataPriv.access( doc, fix, attaches );
+ }
+ }
+ };
+ } );
+}
+var location = window.location;
+
+var nonce = jQuery.now();
+
+var rquery = ( /\?/ );
+
+
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+ var xml;
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+
+ // Support: IE 9 - 11 only
+ // IE throws on parseFromString with invalid input.
+ try {
+ xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
+ } catch ( e ) {
+ xml = undefined;
+ }
+
+ if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+ return xml;
+};
+
+
+var
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+ var name;
+
+ if ( jQuery.isArray( obj ) ) {
+
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+
+ // Item is non-scalar (array or object), encode its numeric index.
+ buildParams(
+ prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
+ v,
+ traditional,
+ add
+ );
+ }
+ } );
+
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+
+ // Serialize object item.
+ for ( name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+ var prefix,
+ s = [],
+ add = function( key, valueOrFunction ) {
+
+ // If value is a function, invoke it and use its return value
+ var value = jQuery.isFunction( valueOrFunction ) ?
+ valueOrFunction() :
+ valueOrFunction;
+
+ s[ s.length ] = encodeURIComponent( key ) + "=" +
+ encodeURIComponent( value == null ? "" : value );
+ };
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ } );
+
+ } else {
+
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" );
+};
+
+jQuery.fn.extend( {
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+ serializeArray: function() {
+ return this.map( function() {
+
+ // Can add propHook for "elements" to filter or add form elements
+ var elements = jQuery.prop( this, "elements" );
+ return elements ? jQuery.makeArray( elements ) : this;
+ } )
+ .filter( function() {
+ var type = this.type;
+
+ // Use .is( ":disabled" ) so that fieldset[disabled] works
+ return this.name && !jQuery( this ).is( ":disabled" ) &&
+ rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+ ( this.checked || !rcheckableType.test( type ) );
+ } )
+ .map( function( i, elem ) {
+ var val = jQuery( this ).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val ) {
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ } ) :
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ } ).get();
+ }
+} );
+
+
+var
+ r20 = /%20/g,
+ rhash = /#.*$/,
+ rts = /([?&])_=[^&]*/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ allTypes = "*/".concat( "*" ),
+
+ // Anchor tag for parsing the document origin
+ originAnchor = document.createElement( "a" );
+ originAnchor.href = location.href;
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ var dataType,
+ i = 0,
+ dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
+
+ if ( jQuery.isFunction( func ) ) {
+
+ // For each dataType in the dataTypeExpression
+ while ( ( dataType = dataTypes[ i++ ] ) ) {
+
+ // Prepend if requested
+ if ( dataType[ 0 ] === "+" ) {
+ dataType = dataType.slice( 1 ) || "*";
+ ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
+
+ // Otherwise append
+ } else {
+ ( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
+ }
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+ var inspected = {},
+ seekingTransport = ( structure === transports );
+
+ function inspect( dataType ) {
+ var selected;
+ inspected[ dataType ] = true;
+ jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+ var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+ if ( typeof dataTypeOrTransport === "string" &&
+ !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+
+ options.dataTypes.unshift( dataTypeOrTransport );
+ inspect( dataTypeOrTransport );
+ return false;
+ } else if ( seekingTransport ) {
+ return !( selected = dataTypeOrTransport );
+ }
+ } );
+ return selected;
+ }
+
+ return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+ var key, deep,
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+ for ( key in src ) {
+ if ( src[ key ] !== undefined ) {
+ ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+ }
+ }
+ if ( deep ) {
+ jQuery.extend( true, target, deep );
+ }
+
+ return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+ var ct, type, finalDataType, firstDataType,
+ contents = s.contents,
+ dataTypes = s.dataTypes;
+
+ // Remove auto dataType and get content-type in the process
+ while ( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+ var conv2, current, conv, tmp, prev,
+ converters = {},
+
+ // Work with a copy of dataTypes in case we need to modify it for conversion
+ dataTypes = s.dataTypes.slice();
+
+ // Create converters map with lowercased keys
+ if ( dataTypes[ 1 ] ) {
+ for ( conv in s.converters ) {
+ converters[ conv.toLowerCase() ] = s.converters[ conv ];
+ }
+ }
+
+ current = dataTypes.shift();
+
+ // Convert to each sequential dataType
+ while ( current ) {
+
+ if ( s.responseFields[ current ] ) {
+ jqXHR[ s.responseFields[ current ] ] = response;
+ }
+
+ // Apply the dataFilter if provided
+ if ( !prev && isSuccess && s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ prev = current;
+ current = dataTypes.shift();
+
+ if ( current ) {
+
+ // There's only work to do if current dataType is non-auto
+ if ( current === "*" ) {
+
+ current = prev;
+
+ // Convert response if prev dataType is non-auto and differs from current
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Seek a direct converter
+ conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+ // If none found, seek a pair
+ if ( !conv ) {
+ for ( conv2 in converters ) {
+
+ // If conv2 outputs current
+ tmp = conv2.split( " " );
+ if ( tmp[ 1 ] === current ) {
+
+ // If prev can be converted to accepted input
+ conv = converters[ prev + " " + tmp[ 0 ] ] ||
+ converters[ "* " + tmp[ 0 ] ];
+ if ( conv ) {
+
+ // Condense equivalence converters
+ if ( conv === true ) {
+ conv = converters[ conv2 ];
+
+ // Otherwise, insert the intermediate dataType
+ } else if ( converters[ conv2 ] !== true ) {
+ current = tmp[ 0 ];
+ dataTypes.unshift( tmp[ 1 ] );
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ // Apply converter (if not an equivalence)
+ if ( conv !== true ) {
+
+ // Unless errors are allowed to bubble, catch and return them
+ if ( conv && s.throws ) {
+ response = conv( response );
+ } else {
+ try {
+ response = conv( response );
+ } catch ( e ) {
+ return {
+ state: "parsererror",
+ error: conv ? e : "No conversion from " + prev + " to " + current
+ };
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return { state: "success", data: response };
+}
+
+jQuery.extend( {
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+
+ ajaxSettings: {
+ url: location.href,
+ type: "GET",
+ isLocal: rlocalProtocol.test( location.protocol ),
+ global: true,
+ processData: true,
+ async: true,
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ throws: false,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ "*": allTypes,
+ text: "text/plain",
+ html: "text/html",
+ xml: "application/xml, text/xml",
+ json: "application/json, text/javascript"
+ },
+
+ contents: {
+ xml: /\bxml\b/,
+ html: /\bhtml/,
+ json: /\bjson\b/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText",
+ json: "responseJSON"
+ },
+
+ // Data converters
+ // Keys separate source (or catchall "*") and destination types with a single space
+ converters: {
+
+ // Convert anything to text
+ "* text": String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": JSON.parse,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ url: true,
+ context: true
+ }
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ return settings ?
+
+ // Building a settings object
+ ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+ // Extending ajaxSettings
+ ajaxExtend( jQuery.ajaxSettings, target );
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var transport,
+
+ // URL without anti-cache param
+ cacheURL,
+
+ // Response headers
+ responseHeadersString,
+ responseHeaders,
+
+ // timeout handle
+ timeoutTimer,
+
+ // Url cleanup var
+ urlAnchor,
+
+ // Request state (becomes false upon send and true upon completion)
+ completed,
+
+ // To know if global events are to be dispatched
+ fireGlobals,
+
+ // Loop variable
+ i,
+
+ // uncached part of the url
+ uncached,
+
+ // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+
+ // Callbacks context
+ callbackContext = s.context || s,
+
+ // Context for global events is callbackContext if it is a DOM node or jQuery collection
+ globalEventContext = s.context &&
+ ( callbackContext.nodeType || callbackContext.jquery ) ?
+ jQuery( callbackContext ) :
+ jQuery.event,
+
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery.Callbacks( "once memory" ),
+
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+
+ // Default abort message
+ strAbort = "canceled",
+
+ // Fake xhr
+ jqXHR = {
+ readyState: 0,
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( completed ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
+ responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match == null ? null : match;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return completed ? responseHeadersString : null;
+ },
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ if ( completed == null ) {
+ name = requestHeadersNames[ name.toLowerCase() ] =
+ requestHeadersNames[ name.toLowerCase() ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( completed == null ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Status-dependent callbacks
+ statusCode: function( map ) {
+ var code;
+ if ( map ) {
+ if ( completed ) {
+
+ // Execute the appropriate callbacks
+ jqXHR.always( map[ jqXHR.status ] );
+ } else {
+
+ // Lazy-add the new callbacks in a way that preserves old ones
+ for ( code in map ) {
+ statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+ }
+ }
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ var finalText = statusText || strAbort;
+ if ( transport ) {
+ transport.abort( finalText );
+ }
+ done( 0, finalText );
+ return this;
+ }
+ };
+
+ // Attach deferreds
+ deferred.promise( jqXHR );
+
+ // Add protocol if not provided (prefilters might expect it)
+ // Handle falsy url in the settings object (#10093: consistency with old signature)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url || location.href ) + "" )
+ .replace( rprotocol, location.protocol + "//" );
+
+ // Alias method option to type as per ticket #12004
+ s.type = options.method || options.type || s.method || s.type;
+
+ // Extract dataTypes list
+ s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
+
+ // A cross-domain request is in order when the origin doesn't match the current origin.
+ if ( s.crossDomain == null ) {
+ urlAnchor = document.createElement( "a" );
+
+ // Support: IE <=8 - 11, Edge 12 - 13
+ // IE throws exception on accessing the href property if url is malformed,
+ // e.g. http://example.com:80x/
+ try {
+ urlAnchor.href = s.url;
+
+ // Support: IE <=8 - 11 only
+ // Anchor's host property isn't correctly set when s.url is relative
+ urlAnchor.href = urlAnchor.href;
+ s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
+ urlAnchor.protocol + "//" + urlAnchor.host;
+ } catch ( e ) {
+
+ // If there is an error parsing the URL, assume it is crossDomain,
+ // it can be rejected by the transport if it is invalid
+ s.crossDomain = true;
+ }
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefilter, stop there
+ if ( completed ) {
+ return jqXHR;
+ }
+
+ // We can fire global events as of now if asked to
+ // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+ fireGlobals = jQuery.event && s.global;
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger( "ajaxStart" );
+ }
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Save the URL in case we're toying with the If-Modified-Since
+ // and/or If-None-Match header later on
+ // Remove hash to simplify url manipulation
+ cacheURL = s.url.replace( rhash, "" );
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // Remember the hash so we can put it back
+ uncached = s.url.slice( cacheURL.length );
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
+
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
+
+ // Add anti-cache in uncached url if needed
+ if ( s.cache === false ) {
+ cacheURL = cacheURL.replace( rts, "" );
+ uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
+ }
+
+ // Put hash and anti-cache on the URL that will be requested (gh-1732)
+ s.url = cacheURL + uncached;
+
+ // Change '%20' to '+' if this is encoded form body content (gh-2658)
+ } else if ( s.data && s.processData &&
+ ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
+ s.data = s.data.replace( r20, "+" );
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+ }
+ if ( jQuery.etag[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
+ s.accepts[ s.dataTypes[ 0 ] ] +
+ ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend &&
+ ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
+
+ // Abort if not done already and return
+ return jqXHR.abort();
+ }
+
+ // Aborting is no longer a cancellation
+ strAbort = "abort";
+
+ // Install callbacks on deferreds
+ completeDeferred.add( s.complete );
+ jqXHR.done( s.success );
+ jqXHR.fail( s.error );
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+
+ // If request was aborted inside ajaxSend, stop there
+ if ( completed ) {
+ return jqXHR;
+ }
+
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = window.setTimeout( function() {
+ jqXHR.abort( "timeout" );
+ }, s.timeout );
+ }
+
+ try {
+ completed = false;
+ transport.send( requestHeaders, done );
+ } catch ( e ) {
+
+ // Rethrow post-completion exceptions
+ if ( completed ) {
+ throw e;
+ }
+
+ // Propagate others as results
+ done( -1, e );
+ }
+ }
+
+ // Callback for when everything is done
+ function done( status, nativeStatusText, responses, headers ) {
+ var isSuccess, success, error, response, modified,
+ statusText = nativeStatusText;
+
+ // Ignore repeat invocations
+ if ( completed ) {
+ return;
+ }
+
+ completed = true;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ window.clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
+
+ // Determine if successful
+ isSuccess = status >= 200 && status < 300 || status === 304;
+
+ // Get response data
+ if ( responses ) {
+ response = ajaxHandleResponses( s, jqXHR, responses );
+ }
+
+ // Convert no matter what (that way responseXXX fields are always set)
+ response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+ // If successful, handle type chaining
+ if ( isSuccess ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ modified = jqXHR.getResponseHeader( "Last-Modified" );
+ if ( modified ) {
+ jQuery.lastModified[ cacheURL ] = modified;
+ }
+ modified = jqXHR.getResponseHeader( "etag" );
+ if ( modified ) {
+ jQuery.etag[ cacheURL ] = modified;
+ }
+ }
+
+ // if no content
+ if ( status === 204 || s.type === "HEAD" ) {
+ statusText = "nocontent";
+
+ // if not modified
+ } else if ( status === 304 ) {
+ statusText = "notmodified";
+
+ // If we have data, let's convert it
+ } else {
+ statusText = response.state;
+ success = response.data;
+ error = response.error;
+ isSuccess = !error;
+ }
+ } else {
+
+ // Extract error from statusText and normalize for non-aborts
+ error = statusText;
+ if ( status || !statusText ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ }
+} );
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+
+ // Shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ // The url can be an options object (which then must have .url)
+ return jQuery.ajax( jQuery.extend( {
+ url: url,
+ type: method,
+ dataType: type,
+ data: data,
+ success: callback
+ }, jQuery.isPlainObject( url ) && url ) );
+ };
+} );
+
+
+jQuery._evalUrl = function( url ) {
+ return jQuery.ajax( {
+ url: url,
+
+ // Make this explicit, since user can override this through ajaxSetup (#11264)
+ type: "GET",
+ dataType: "script",
+ cache: true,
+ async: false,
+ global: false,
+ "throws": true
+ } );
+};
+
+
+jQuery.fn.extend( {
+ wrapAll: function( html ) {
+ var wrap;
+
+ if ( this[ 0 ] ) {
+ if ( jQuery.isFunction( html ) ) {
+ html = html.call( this[ 0 ] );
+ }
+
+ // The elements to wrap the target around
+ wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+ if ( this[ 0 ].parentNode ) {
+ wrap.insertBefore( this[ 0 ] );
+ }
+
+ wrap.map( function() {
+ var elem = this;
+
+ while ( elem.firstElementChild ) {
+ elem = elem.firstElementChild;
+ }
+
+ return elem;
+ } ).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each( function( i ) {
+ jQuery( this ).wrapInner( html.call( this, i ) );
+ } );
+ }
+
+ return this.each( function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ } );
+ },
+
+ wrap: function( html ) {
+ var isFunction = jQuery.isFunction( html );
+
+ return this.each( function( i ) {
+ jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
+ } );
+ },
+
+ unwrap: function( selector ) {
+ this.parent( selector ).not( "body" ).each( function() {
+ jQuery( this ).replaceWith( this.childNodes );
+ } );
+ return this;
+ }
+} );
+
+
+jQuery.expr.pseudos.hidden = function( elem ) {
+ return !jQuery.expr.pseudos.visible( elem );
+};
+jQuery.expr.pseudos.visible = function( elem ) {
+ return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
+};
+
+
+
+
+jQuery.ajaxSettings.xhr = function() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch ( e ) {}
+};
+
+var xhrSuccessStatus = {
+
+ // File protocol always yields status code 0, assume 200
+ 0: 200,
+
+ // Support: IE <=9 only
+ // #1450: sometimes IE returns 1223 when it should be 204
+ 1223: 204
+ },
+ xhrSupported = jQuery.ajaxSettings.xhr();
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport( function( options ) {
+ var callback, errorCallback;
+
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( support.cors || xhrSupported && !options.crossDomain ) {
+ return {
+ send: function( headers, complete ) {
+ var i,
+ xhr = options.xhr();
+
+ xhr.open(
+ options.type,
+ options.url,
+ options.async,
+ options.username,
+ options.password
+ );
+
+ // Apply custom fields if provided
+ if ( options.xhrFields ) {
+ for ( i in options.xhrFields ) {
+ xhr[ i ] = options.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( options.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( options.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
+ headers[ "X-Requested-With" ] = "XMLHttpRequest";
+ }
+
+ // Set headers
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+
+ // Callback
+ callback = function( type ) {
+ return function() {
+ if ( callback ) {
+ callback = errorCallback = xhr.onload =
+ xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
+
+ if ( type === "abort" ) {
+ xhr.abort();
+ } else if ( type === "error" ) {
+
+ // Support: IE <=9 only
+ // On a manual native abort, IE9 throws
+ // errors on any property access that is not readyState
+ if ( typeof xhr.status !== "number" ) {
+ complete( 0, "error" );
+ } else {
+ complete(
+
+ // File: protocol always yields status 0; see #8605, #14207
+ xhr.status,
+ xhr.statusText
+ );
+ }
+ } else {
+ complete(
+ xhrSuccessStatus[ xhr.status ] || xhr.status,
+ xhr.statusText,
+
+ // Support: IE <=9 only
+ // IE9 has no XHR2 but throws on binary (trac-11426)
+ // For XHR2 non-text, let the caller handle it (gh-2498)
+ ( xhr.responseType || "text" ) !== "text" ||
+ typeof xhr.responseText !== "string" ?
+ { binary: xhr.response } :
+ { text: xhr.responseText },
+ xhr.getAllResponseHeaders()
+ );
+ }
+ }
+ };
+ };
+
+ // Listen to events
+ xhr.onload = callback();
+ errorCallback = xhr.onerror = callback( "error" );
+
+ // Support: IE 9 only
+ // Use onreadystatechange to replace onabort
+ // to handle uncaught aborts
+ if ( xhr.onabort !== undefined ) {
+ xhr.onabort = errorCallback;
+ } else {
+ xhr.onreadystatechange = function() {
+
+ // Check readyState before timeout as it changes
+ if ( xhr.readyState === 4 ) {
+
+ // Allow onerror to be called first,
+ // but that will not handle a native abort
+ // Also, save errorCallback to a variable
+ // as xhr.onerror cannot be accessed
+ window.setTimeout( function() {
+ if ( callback ) {
+ errorCallback();
+ }
+ } );
+ }
+ };
+ }
+
+ // Create the abort callback
+ callback = callback( "abort" );
+
+ try {
+
+ // Do send the request (this may raise an exception)
+ xhr.send( options.hasContent && options.data || null );
+ } catch ( e ) {
+
+ // #14683: Only rethrow if this hasn't been notified as an error yet
+ if ( callback ) {
+ throw e;
+ }
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback();
+ }
+ }
+ };
+ }
+} );
+
+
+
+
+// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
+jQuery.ajaxPrefilter( function( s ) {
+ if ( s.crossDomain ) {
+ s.contents.script = false;
+ }
+} );
+
+// Install script dataType
+jQuery.ajaxSetup( {
+ accepts: {
+ script: "text/javascript, application/javascript, " +
+ "application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /\b(?:java|ecma)script\b/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+} );
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ }
+} );
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+ var script, callback;
+ return {
+ send: function( _, complete ) {
+ script = jQuery( "<script>" ).prop( {
+ charset: s.scriptCharset,
+ src: s.url
+ } ).on(
+ "load error",
+ callback = function( evt ) {
+ script.remove();
+ callback = null;
+ if ( evt ) {
+ complete( evt.type === "error" ? 404 : 200, evt.type );
+ }
+ }
+ );
+
+ // Use native DOM manipulation to avoid our domManip AJAX trickery
+ document.head.appendChild( script[ 0 ] );
+ },
+ abort: function() {
+ if ( callback ) {
+ callback();
+ }
+ }
+ };
+ }
+} );
+
+
+
+
+var oldCallbacks = [],
+ rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup( {
+ jsonp: "callback",
+ jsonpCallback: function() {
+ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+ this[ callback ] = true;
+ return callback;
+ }
+} );
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var callbackName, overwritten, responseContainer,
+ jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+ "url" :
+ typeof s.data === "string" &&
+ ( s.contentType || "" )
+ .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
+ rjsonp.test( s.data ) && "data"
+ );
+
+ // Handle iff the expected data type is "jsonp" or we have a parameter to set
+ if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+ // Get callback name, remembering preexisting value associated with it
+ callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+ s.jsonpCallback() :
+ s.jsonpCallback;
+
+ // Insert callback into url or form data
+ if ( jsonProp ) {
+ s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+ } else if ( s.jsonp !== false ) {
+ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+ }
+
+ // Use data converter to retrieve json after script execution
+ s.converters[ "script json" ] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( callbackName + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // Force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Install callback
+ overwritten = window[ callbackName ];
+ window[ callbackName ] = function() {
+ responseContainer = arguments;
+ };
+
+ // Clean-up function (fires after converters)
+ jqXHR.always( function() {
+
+ // If previous value didn't exist - remove it
+ if ( overwritten === undefined ) {
+ jQuery( window ).removeProp( callbackName );
+
+ // Otherwise restore preexisting value
+ } else {
+ window[ callbackName ] = overwritten;
+ }
+
+ // Save back as free
+ if ( s[ callbackName ] ) {
+
+ // Make sure that re-using the options doesn't screw things around
+ s.jsonpCallback = originalSettings.jsonpCallback;
+
+ // Save the callback name for future use
+ oldCallbacks.push( callbackName );
+ }
+
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+ overwritten( responseContainer[ 0 ] );
+ }
+
+ responseContainer = overwritten = undefined;
+ } );
+
+ // Delegate to script
+ return "script";
+ }
+} );
+
+
+
+
+// Support: Safari 8 only
+// In Safari 8 documents created via document.implementation.createHTMLDocument
+// collapse sibling forms: the second one becomes a child of the first one.
+// Because of that, this security measure has to be disabled in Safari 8.
+// https://bugs.webkit.org/show_bug.cgi?id=137337
+support.createHTMLDocument = ( function() {
+ var body = document.implementation.createHTMLDocument( "" ).body;
+ body.innerHTML = "<form></form><form></form>";
+ return body.childNodes.length === 2;
+} )();
+
+
+// Argument "data" should be string of html
+// context (optional): If specified, the fragment will be created in this context,
+// defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+ if ( typeof data !== "string" ) {
+ return [];
+ }
+ if ( typeof context === "boolean" ) {
+ keepScripts = context;
+ context = false;
+ }
+
+ var base, parsed, scripts;
+
+ if ( !context ) {
+
+ // Stop scripts or inline event handlers from being executed immediately
+ // by using document.implementation
+ if ( support.createHTMLDocument ) {
+ context = document.implementation.createHTMLDocument( "" );
+
+ // Set the base href for the created document
+ // so any parsed elements with URLs
+ // are based on the document's URL (gh-2965)
+ base = context.createElement( "base" );
+ base.href = document.location.href;
+ context.head.appendChild( base );
+ } else {
+ context = document;
+ }
+ }
+
+ parsed = rsingleTag.exec( data );
+ scripts = !keepScripts && [];
+
+ // Single tag
+ if ( parsed ) {
+ return [ context.createElement( parsed[ 1 ] ) ];
+ }
+
+ parsed = buildFragment( [ data ], context, scripts );
+
+ if ( scripts && scripts.length ) {
+ jQuery( scripts ).remove();
+ }
+
+ return jQuery.merge( [], parsed.childNodes );
+};
+
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+ var selector, type, response,
+ self = this,
+ off = url.indexOf( " " );
+
+ if ( off > -1 ) {
+ selector = jQuery.trim( url.slice( off ) );
+ url = url.slice( 0, off );
+ }
+
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( params && typeof params === "object" ) {
+ type = "POST";
+ }
+
+ // If we have elements to modify, make the request
+ if ( self.length > 0 ) {
+ jQuery.ajax( {
+ url: url,
+
+ // If "type" variable is undefined, then "GET" method will be used.
+ // Make value of this field explicit since
+ // user can override it through ajaxSetup method
+ type: type || "GET",
+ dataType: "html",
+ data: params
+ } ).done( function( responseText ) {
+
+ // Save response for use in complete callback
+ response = arguments;
+
+ self.html( selector ?
+
+ // If a selector was specified, locate the right elements in a dummy div
+ // Exclude scripts to avoid IE 'Permission Denied' errors
+ jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+ // Otherwise use the full result
+ responseText );
+
+ // If the request succeeds, this function gets "data", "status", "jqXHR"
+ // but they are ignored because response was set above.
+ // If it fails, this function gets "jqXHR", "status", "error"
+ } ).always( callback && function( jqXHR, status ) {
+ self.each( function() {
+ callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
+ } );
+ } );
+ }
+
+ return this;
+};
+
+
+
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [
+ "ajaxStart",
+ "ajaxStop",
+ "ajaxComplete",
+ "ajaxError",
+ "ajaxSuccess",
+ "ajaxSend"
+], function( i, type ) {
+ jQuery.fn[ type ] = function( fn ) {
+ return this.on( type, fn );
+ };
+} );
+
+
+
+
+jQuery.expr.pseudos.animated = function( elem ) {
+ return jQuery.grep( jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ } ).length;
+};
+
+
+
+
+/**
+ * Gets a window from an element
+ */
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
+}
+
+jQuery.offset = {
+ setOffset: function( elem, options, i ) {
+ var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+ position = jQuery.css( elem, "position" ),
+ curElem = jQuery( elem ),
+ props = {};
+
+ // Set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ curOffset = curElem.offset();
+ curCSSTop = jQuery.css( elem, "top" );
+ curCSSLeft = jQuery.css( elem, "left" );
+ calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+ ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
+
+ // Need to be able to calculate position if either
+ // top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+
+ // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
+ options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
+ }
+
+ if ( options.top != null ) {
+ props.top = ( options.top - curOffset.top ) + curTop;
+ }
+ if ( options.left != null ) {
+ props.left = ( options.left - curOffset.left ) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+jQuery.fn.extend( {
+ offset: function( options ) {
+
+ // Preserve chaining for setter
+ if ( arguments.length ) {
+ return options === undefined ?
+ this :
+ this.each( function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ } );
+ }
+
+ var docElem, win, rect, doc,
+ elem = this[ 0 ];
+
+ if ( !elem ) {
+ return;
+ }
+
+ // Support: IE <=11 only
+ // Running getBoundingClientRect on a
+ // disconnected node in IE throws an error
+ if ( !elem.getClientRects().length ) {
+ return { top: 0, left: 0 };
+ }
+
+ rect = elem.getBoundingClientRect();
+
+ // Make sure element is not hidden (display: none)
+ if ( rect.width || rect.height ) {
+ doc = elem.ownerDocument;
+ win = getWindow( doc );
+ docElem = doc.documentElement;
+
+ return {
+ top: rect.top + win.pageYOffset - docElem.clientTop,
+ left: rect.left + win.pageXOffset - docElem.clientLeft
+ };
+ }
+
+ // Return zeros for disconnected and hidden elements (gh-2310)
+ return rect;
+ },
+
+ position: function() {
+ if ( !this[ 0 ] ) {
+ return;
+ }
+
+ var offsetParent, offset,
+ elem = this[ 0 ],
+ parentOffset = { top: 0, left: 0 };
+
+ // Fixed elements are offset from window (parentOffset = {top:0, left: 0},
+ // because it is its only offset parent
+ if ( jQuery.css( elem, "position" ) === "fixed" ) {
+
+ // Assume getBoundingClientRect is there when computed position is fixed
+ offset = elem.getBoundingClientRect();
+
+ } else {
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent();
+
+ // Get correct offsets
+ offset = this.offset();
+ if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+ parentOffset = offsetParent.offset();
+ }
+
+ // Add offsetParent borders
+ parentOffset = {
+ top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),
+ left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )
+ };
+ }
+
+ // Subtract parent offsets and element margins
+ return {
+ top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+ left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+ };
+ },
+
+ // This method will return documentElement in the following cases:
+ // 1) For the element inside the iframe without offsetParent, this method will return
+ // documentElement of the parent window
+ // 2) For the hidden or detached element
+ // 3) For body or html element, i.e. in case of the html node - it will return itself
+ //
+ // but those exceptions were never presented as a real life use-cases
+ // and might be considered as more preferable results.
+ //
+ // This logic, however, is not guaranteed and can change at any point in the future
+ offsetParent: function() {
+ return this.map( function() {
+ var offsetParent = this.offsetParent;
+
+ while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+
+ return offsetParent || documentElement;
+ } );
+ }
+} );
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+ var top = "pageYOffset" === prop;
+
+ jQuery.fn[ method ] = function( val ) {
+ return access( this, function( elem, method, val ) {
+ var win = getWindow( elem );
+
+ if ( val === undefined ) {
+ return win ? win[ prop ] : elem[ method ];
+ }
+
+ if ( win ) {
+ win.scrollTo(
+ !top ? val : win.pageXOffset,
+ top ? val : win.pageYOffset
+ );
+
+ } else {
+ elem[ method ] = val;
+ }
+ }, method, val, arguments.length );
+ };
+} );
+
+// Support: Safari <=7 - 9.1, Chrome <=37 - 49
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+ jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+ function( elem, computed ) {
+ if ( computed ) {
+ computed = curCSS( elem, prop );
+
+ // If curCSS returns percentage, fallback to offset
+ return rnumnonpx.test( computed ) ?
+ jQuery( elem ).position()[ prop ] + "px" :
+ computed;
+ }
+ }
+ );
+} );
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
+ function( defaultExtra, funcName ) {
+
+ // Margin is only for outerHeight, outerWidth
+ jQuery.fn[ funcName ] = function( margin, value ) {
+ var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+ extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+ return access( this, function( elem, type, value ) {
+ var doc;
+
+ if ( jQuery.isWindow( elem ) ) {
+
+ // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
+ return funcName.indexOf( "outer" ) === 0 ?
+ elem[ "inner" + name ] :
+ elem.document.documentElement[ "client" + name ];
+ }
+
+ // Get document width or height
+ if ( elem.nodeType === 9 ) {
+ doc = elem.documentElement;
+
+ // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+ // whichever is greatest
+ return Math.max(
+ elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+ elem.body[ "offset" + name ], doc[ "offset" + name ],
+ doc[ "client" + name ]
+ );
+ }
+
+ return value === undefined ?
+
+ // Get width or height on the element, requesting but not forcing parseFloat
+ jQuery.css( elem, type, extra ) :
+
+ // Set width or height on the element
+ jQuery.style( elem, type, value, extra );
+ }, type, chainable ? margin : undefined, chainable );
+ };
+ } );
+} );
+
+
+jQuery.fn.extend( {
+
+ bind: function( types, data, fn ) {
+ return this.on( types, null, data, fn );
+ },
+ unbind: function( types, fn ) {
+ return this.off( types, null, fn );
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.on( types, selector, data, fn );
+ },
+ undelegate: function( selector, types, fn ) {
+
+ // ( namespace ) or ( selector, types [, fn] )
+ return arguments.length === 1 ?
+ this.off( selector, "**" ) :
+ this.off( types, selector || "**", fn );
+ }
+} );
+
+jQuery.parseJSON = JSON.parse;
+
+
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+ define( "jquery", [], function() {
+ return jQuery;
+ } );
+}
+
+
+
+
+
+var
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( !noGlobal ) {
+ window.jQuery = window.$ = jQuery;
+}
+
+
+return jQuery;
+} );
diff --git a/doc/html/_static/jquery.js b/doc/html/_static/jquery.js
index 7c24308..f6a6a99 100644
--- a/doc/html/_static/jquery.js
+++ b/doc/html/_static/jquery.js
@@ -1,154 +1,4 @@
-/*!
- * jQuery JavaScript Library v1.4.2
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Sat Feb 13 22:33:48 2010 -0500
- */
-(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
-e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
-j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
-"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
-true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
-Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
-(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
-a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
-"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
-function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
-c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
-L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
-"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
-a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
-d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
-a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
-!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
-true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
-parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
-false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
-s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
-applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
-else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
-a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
-w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
-cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
-i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
-" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
-this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
-e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
-c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
-a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
-function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
-k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
-C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
-null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
-e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
-f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
-if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
-"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
-a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
-isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
-{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
-if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
-e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
-"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
-d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
-!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
-toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
-u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
-function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
-if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
-e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
-t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
-g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
-for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
-1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
-CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
-relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
-l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
-h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
-CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
-g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
-text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
-setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
-h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
-m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
-"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
-h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
-!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
-h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
-q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
-if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
-(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
-function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
-gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
-c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
-{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
-"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
-d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
-a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
-1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
-a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
-c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
-wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
-prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
-this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
-return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
-""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
-this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
-u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
-1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
-return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
-""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
-c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
-c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
-function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
-Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
-"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
-a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
-a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
-"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
-serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
-function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
-global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
-e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
-"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
-false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
-false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
-c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
-d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
-g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
-1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
-"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
-if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
-this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
-"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
-animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
-j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
-this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
-"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
-c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
-this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
-this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
-e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
-c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
-function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
-this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
-k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
-f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
-a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
-c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
-d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
-"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
-e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
+/*! jQuery v3.1.0 | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.0",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null!=a?a<0?this[a+this.length]:this[a]:f.call(this)},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"label"in b&&b.disabled===a||"form"in b&&b.disabled===a||"form"in b&&b.disabled===!1&&(b.isDisabled===a||b.isDisabled!==!a&&("label"in b||!ea(b))!==a)}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e)}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(_,aa),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=V.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(_,aa),$.test(j[0].type)&&qa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&sa(j),!a)return G.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||$.test(a)&&qa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){if(r.isFunction(b))return r.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return r.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(C.test(b))return r.filter(b,a,c);b=r.filter(b,a)}return r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType})}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/\S+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,
+r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Y=/[A-Z]/g;function Z(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Y,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c||"false"!==c&&("null"===c?null:+c+""===c?+c:X.test(c)?JSON.parse(c):c)}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=W.get(f),1===f.nodeType&&!V.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),Z(f,d,e[d])));V.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f&&void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=Z(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=V.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var $=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,_=new RegExp("^(?:([+-])=|)("+$+")([a-z%]*)$","i"),aa=["Top","Right","Bottom","Left"],ba=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},ca=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function da(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&_.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ea={};function fa(a){var b,c=a.ownerDocument,d=a.nodeName,e=ea[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),ea[d]=e,e)}function ga(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=V.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&ba(d)&&(e[f]=fa(d))):"none"!==c&&(e[f]="none",V.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ga(this,!0)},hide:function(){return ga(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){ba(this)?r(this).show():r(this).hide()})}});var ha=/^(?:checkbox|radio)$/i,ia=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,ja=/^$|\/(?:java|ecma)script/i,ka={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ka.optgroup=ka.option,ka.tbody=ka.tfoot=ka.colgroup=ka.caption=ka.thead,ka.th=ka.td;function la(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function ma(a,b){for(var c=0,d=a.length;c<d;c++)V.set(a[c],"globalEval",!b||V.get(b[c],"globalEval"))}var na=/<|&#?\w+;/;function oa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(na.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ia.exec(f)||["",""])[1].toLowerCase(),i=ka[h]||ka._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=la(l.appendChild(f),"script"),j&&ma(g),c){k=0;while(f=g[k++])ja.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var pa=d.documentElement,qa=/^key/,ra=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,sa=/^([^.]*)(?:\.(.+)|)/;function ta(){return!0}function ua(){return!1}function va(){try{return d.activeElement}catch(a){}}function wa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)wa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ua;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(pa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;c<h;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?r(e,this).index(i)>-1:r.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==va()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===va()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&r.nodeName(this,"input"))return this.click(),!1},_default:function(a){return r.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ta:ua,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:ua,isPropagationStopped:ua,isImmediatePropagationStopped:ua,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ta,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ta,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ta,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&qa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ra.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return wa(this,a,b,c,d)},one:function(a,b,c,d){return wa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=ua),this.each(function(){r.event.remove(this,a,c,b)})}});var xa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,ya=/<script|<style|<link/i,za=/checked\s*(?:[^=]|=\s*.checked.)/i,Aa=/^true\/(.*)/,Ba=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ca(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Da(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ea(a){var b=Aa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}W.hasData(a)&&(h=W.access(a),i=r.extend({},h),W.set(b,i))}}function Ga(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ha.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ha(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&za.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(m&&(e=oa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(la(e,"script"),Da),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,la(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ea),l=0;l<i;l++)j=h[l],ja.test(j.type||"")&&!V.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Ba,""),k))}return a}function Ia(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(la(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&ma(la(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(xa,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=la(h),f=la(a),d=0,e=f.length;d<e;d++)Ga(f[d],g[d]);if(b)if(c)for(f=f||la(a),g=g||la(h),d=0,e=f.length;d<e;d++)Fa(f[d],g[d]);else Fa(a,h);return g=la(h,"script"),g.length>0&&ma(g,!i&&la(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(la(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!ya.test(a)&&!ka[(ia.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(la(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(la(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var Ja=/^margin/,Ka=new RegExp("^("+$+")(?!px)[a-z%]+$","i"),La=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",pa.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,pa.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Ma(a,b,c){var d,e,f,g,h=a.style;return c=c||La(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ka.test(g)&&Ja.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Na(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Oa=/^(none|table(?!-c[ea]).+)/,Pa={position:"absolute",visibility:"hidden",display:"block"},Qa={letterSpacing:"0",fontWeight:"400"},Ra=["Webkit","Moz","ms"],Sa=d.createElement("div").style;function Ta(a){if(a in Sa)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ra.length;while(c--)if(a=Ra[c]+b,a in Sa)return a}function Ua(a,b,c){var d=_.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Va(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+aa[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+aa[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+aa[f]+"Width",!0,e))):(g+=r.css(a,"padding"+aa[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+aa[f]+"Width",!0,e)));return g}function Wa(a,b,c){var d,e=!0,f=La(a),g="border-box"===r.css(a,"boxSizing",!1,f);if(a.getClientRects().length&&(d=a.getBoundingClientRect()[b]),d<=0||null==d){if(d=Ma(a,b,f),(d<0||null==d)&&(d=a.style[b]),Ka.test(d))return d;e=g&&(o.boxSizingReliable()||d===a.style[b]),d=parseFloat(d)||0}return d+Va(a,b,c||(g?"border":"content"),e,f)+"px"}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ma(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=a.style;return b=r.cssProps[h]||(r.cssProps[h]=Ta(h)||h),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=_.exec(c))&&e[1]&&(c=da(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b);return b=r.cssProps[h]||(r.cssProps[h]=Ta(h)||h),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Ma(a,b,d)),"normal"===e&&b in Qa&&(e=Qa[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Oa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?Wa(a,b,d):ca(a,Pa,function(){return Wa(a,b,d)})},set:function(a,c,d){var e,f=d&&La(a),g=d&&Va(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=_.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ua(a,c,g)}}}),r.cssHooks.marginLeft=Na(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Ma(a,"marginLeft"))||a.getBoundingClientRect().left-ca(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+aa[d]+b]=f[d]||f[d-2]||f[0];return e}},Ja.test(a)||(r.cssHooks[a+b].set=Ua)}),r.fn.extend({css:function(a,b){return S(this,function(a,b,c){var d,e,f={},g=0;if(r.isArray(b)){for(d=La(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function Xa(a,b,c,d,e){return new Xa.prototype.init(a,b,c,d,e)}r.Tween=Xa,Xa.prototype={constructor:Xa,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Xa.propHooks[this.prop];return a&&a.get?a.get(this):Xa.propHooks._default.get(this)},run:function(a){var b,c=Xa.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Xa.propHooks._default.set(this),this}},Xa.prototype.init.prototype=Xa.prototype,Xa.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Xa.propHooks.scrollTop=Xa.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Xa.prototype.init,r.fx.step={};var Ya,Za,$a=/^(?:toggle|show|hide)$/,_a=/queueHooks$/;function ab(){Za&&(a.requestAnimationFrame(ab),r.fx.tick())}function bb(){return a.setTimeout(function(){Ya=void 0}),Ya=r.now()}function cb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=aa[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function db(a,b,c){for(var d,e=(gb.tweeners[b]||[]).concat(gb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function eb(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&ba(a),q=V.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],$a.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=V.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ga([a],!0),j=a.style.display||j,k=r.css(a,"display"),ga([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=V.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ga([a],!0),m.done(function(){p||ga([a]),V.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=db(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function fb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],r.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function gb(a,b,c){var d,e,f=0,g=gb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Ya||bb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:Ya||bb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(fb(k,j.opts.specialEasing);f<g;f++)if(d=gb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,db,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}r.Animation=r.extend(gb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return da(c.elem,a,_.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(K);for(var c,d=0,e=a.length;d<e;d++)c=a[d],gb.tweeners[c]=gb.tweeners[c]||[],gb.tweeners[c].unshift(b)},prefilters:[eb],prefilter:function(a,b){b?gb.prefilters.unshift(a):gb.prefilters.push(a)}}),r.speed=function(a,b,c){var e=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off||d.hidden?e.duration=0:e.duration="number"==typeof e.duration?e.duration:e.duration in r.fx.speeds?r.fx.speeds[e.duration]:r.fx.speeds._default,null!=e.queue&&e.queue!==!0||(e.queue="fx"),e.old=e.complete,e.complete=function(){r.isFunction(e.old)&&e.old.call(this),e.queue&&r.dequeue(this,e.queue)},e},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(ba).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=gb(this,r.extend({},a),f);(e||V.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=V.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&_a.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=V.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(cb(b,!0),a,d,e)}}),r.each({slideDown:cb("show"),slideUp:cb("hide"),slideToggle:cb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(Ya=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),Ya=void 0},r.fx.timer=function(a){r.timers.push(a),a()?r.fx.start():r.timers.pop()},r.fx.interval=13,r.fx.start=function(){Za||(Za=a.requestAnimationFrame?a.requestAnimationFrame(ab):a.setInterval(r.fx.tick,r.fx.interval))},r.fx.stop=function(){a.cancelAnimationFrame?a.cancelAnimationFrame(Za):a.clearInterval(Za),Za=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var hb,ib=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return S(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?hb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);
+if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),hb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ib[b]||r.find.attr;ib[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ib[g],ib[g]=e,e=null!=c(a,b,d)?g:null,ib[g]=f),e}});var jb=/^(?:input|select|textarea|button)$/i,kb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):jb.test(a.nodeName)||kb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});var lb=/[\t\r\n\f]/g;function mb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,mb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,mb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,mb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=mb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(c)+" ").replace(lb," ").indexOf(b)>-1)return!0;return!1}});var nb=/\r/g,ob=/[\x20\t\r\n\f]+/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(nb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:r.trim(r.text(a)).replace(ob," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type,g=f?null:[],h=f?e+1:d.length,i=e<0?h:f?e:0;i<h;i++)if(c=d[i],(c.selected||i===e)&&!c.disabled&&(!c.parentNode.disabled||!r.nodeName(c.parentNode,"optgroup"))){if(b=r(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ha.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,""),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;if(o.cors||Pb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Qb=[],Rb=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Qb.pop()||r.expando+"_"+rb++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Rb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Rb.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Rb,"$1"+e):b.jsonp!==!1&&(b.url+=(sb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Qb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=B.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=oa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=r.trim(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length};function Sb(a){return r.isWindow(a)?a:9===a.nodeType&&a.defaultView}r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),d.width||d.height?(e=f.ownerDocument,c=Sb(e),b=e.documentElement,{top:d.top+c.pageYOffset-b.clientTop,left:d.left+c.pageXOffset-b.clientLeft}):d):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),r.nodeName(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||pa})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return S(this,function(a,d,e){var f=Sb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Na(o.pixelPosition,function(a,c){if(c)return c=Ma(a,b),Ka.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return S(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.parseJSON=JSON.parse,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Tb=a.jQuery,Ub=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Ub),b&&a.jQuery===r&&(a.jQuery=Tb),r},b||(a.jQuery=a.$=r),r});
diff --git a/doc/html/_static/minus.png b/doc/html/_static/minus.png
index da1c562..d96755f 100644
--- a/doc/html/_static/minus.png
+++ b/doc/html/_static/minus.png
Binary files differ
diff --git a/doc/html/_static/plus.png b/doc/html/_static/plus.png
index b3cb374..7107cec 100644
--- a/doc/html/_static/plus.png
+++ b/doc/html/_static/plus.png
Binary files differ
diff --git a/doc/html/_static/pygments.css b/doc/html/_static/pygments.css
index 8213e90..20c4814 100644
--- a/doc/html/_static/pygments.css
+++ b/doc/html/_static/pygments.css
@@ -47,8 +47,10 @@
.highlight .mh { color: #208050 } /* Literal.Number.Hex */
.highlight .mi { color: #208050 } /* Literal.Number.Integer */
.highlight .mo { color: #208050 } /* Literal.Number.Oct */
+.highlight .sa { color: #4070a0 } /* Literal.String.Affix */
.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */
.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
@@ -59,7 +61,9 @@
.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
.highlight .ss { color: #517918 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #06287e } /* Name.Function.Magic */
.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file
diff --git a/doc/html/_static/searchtools.js b/doc/html/_static/searchtools.js
index 663be4c..c821573 100644
--- a/doc/html/_static/searchtools.js
+++ b/doc/html/_static/searchtools.js
@@ -2,41 +2,15 @@
* searchtools.js_t
* ~~~~~~~~~~~~~~~~
*
- * Sphinx JavaScript utilties for the full-text search.
+ * Sphinx JavaScript utilities for the full-text search.
*
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
-/**
- * helper function to return a node containing the
- * search summary for a given text. keywords is a list
- * of stemmed words, hlwords is the list of normal, unstemmed
- * words. the first one is used to find the occurance, the
- * latter for highlighting it.
- */
-
-jQuery.makeSearchSummary = function(text, keywords, hlwords) {
- var textLower = text.toLowerCase();
- var start = 0;
- $.each(keywords, function() {
- var i = textLower.indexOf(this.toLowerCase());
- if (i > -1)
- start = i;
- });
- start = Math.max(start - 120, 0);
- var excerpt = ((start > 0) ? '...' : '') +
- $.trim(text.substr(start, 240)) +
- ((start + 240 - text.length) ? '...' : '');
- var rv = $('<div class="context"></div>').text(excerpt);
- $.each(hlwords, function() {
- rv = rv.highlightText(this, 'highlighted');
- });
- return rv;
-}
-
+/* Non-minified version JS is _stemmer.js if file is provided */
/**
* Porter Stemmer
*/
@@ -220,6 +194,138 @@ var Stemmer = function() {
}
+
+/**
+ * Simple result scoring code.
+ */
+var Scorer = {
+ // Implement the following function to further tweak the score for each result
+ // The function takes a result array [filename, title, anchor, descr, score]
+ // and returns the new score.
+ /*
+ score: function(result) {
+ return result[4];
+ },
+ */
+
+ // query matches the full name of an object
+ objNameMatch: 11,
+ // or matches in the last dotted part of the object name
+ objPartialMatch: 6,
+ // Additive scores depending on the priority of the object
+ objPrio: {0: 15, // used to be importantResults
+ 1: 5, // used to be objectResults
+ 2: -5}, // used to be unimportantResults
+ // Used when the priority is not in the mapping.
+ objPrioDefault: 0,
+
+ // query found in title
+ title: 15,
+ // query found in terms
+ term: 5
+};
+
+
+
+
+
+var splitChars = (function() {
+ var result = {};
+ var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
+ 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
+ 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
+ 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
+ 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
+ 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
+ 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
+ 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
+ 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
+ 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
+ var i, j, start, end;
+ for (i = 0; i < singles.length; i++) {
+ result[singles[i]] = true;
+ }
+ var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
+ [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
+ [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
+ [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
+ [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
+ [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
+ [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
+ [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
+ [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
+ [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
+ [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
+ [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
+ [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
+ [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
+ [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
+ [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
+ [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
+ [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
+ [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
+ [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
+ [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
+ [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
+ [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
+ [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
+ [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
+ [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
+ [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
+ [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
+ [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
+ [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
+ [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
+ [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
+ [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
+ [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
+ [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
+ [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
+ [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
+ [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
+ [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
+ [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
+ [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
+ [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
+ [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
+ [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
+ [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
+ [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
+ [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
+ [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
+ [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
+ for (i = 0; i < ranges.length; i++) {
+ start = ranges[i][0];
+ end = ranges[i][1];
+ for (j = start; j <= end; j++) {
+ result[j] = true;
+ }
+ }
+ return result;
+})();
+
+function splitQuery(query) {
+ var result = [];
+ var start = -1;
+ for (var i = 0; i < query.length; i++) {
+ if (splitChars[query.charCodeAt(i)]) {
+ if (start !== -1) {
+ result.push(query.slice(start, i));
+ start = -1;
+ }
+ } else if (start === -1) {
+ start = i;
+ }
+ }
+ if (start !== -1) {
+ result.push(query.slice(start));
+ }
+ return result;
+}
+
+
+
+
/**
* Search Module
*/
@@ -239,8 +345,13 @@ var Search = {
},
loadIndex : function(url) {
- $.ajax({type: "GET", url: url, data: null, success: null,
- dataType: "script", cache: true});
+ $.ajax({type: "GET", url: url, data: null,
+ dataType: "script", cache: true,
+ complete: function(jqxhr, textstatus) {
+ if (textstatus != "success") {
+ document.getElementById("searchindexloader").src = url;
+ }
+ }});
},
setIndex : function(index) {
@@ -268,19 +379,20 @@ var Search = {
if (this._pulse_status >= 0)
return;
function pulse() {
+ var i;
Search._pulse_status = (Search._pulse_status + 1) % 4;
var dotString = '';
- for (var i = 0; i < Search._pulse_status; i++)
+ for (i = 0; i < Search._pulse_status; i++)
dotString += '.';
Search.dots.text(dotString);
if (Search._pulse_status > -1)
window.setTimeout(pulse, 500);
- };
+ }
pulse();
},
/**
- * perform a search for something
+ * perform a search for something (or wait until index is loaded)
*/
performSearch : function(query) {
// create the required interface elements
@@ -300,41 +412,50 @@ var Search = {
this.deferQuery(query);
},
+ /**
+ * execute search (requires search index to be loaded)
+ */
query : function(query) {
- var stopwords = ["and","then","into","it","as","are","in","if","for","no","there","their","was","is","be","to","that","but","they","not","such","with","by","a","on","these","of","will","this","near","the","or","at"];
+ var i;
+ var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
- // Stem the searchterms and add them to the correct list
+ // stem the searchterms and add them to the correct list
var stemmer = new Stemmer();
var searchterms = [];
var excluded = [];
var hlterms = [];
- var tmp = query.split(/\s+/);
+ var tmp = splitQuery(query);
var objectterms = [];
- for (var i = 0; i < tmp.length; i++) {
- if (tmp[i] != "") {
+ for (i = 0; i < tmp.length; i++) {
+ if (tmp[i] !== "") {
objectterms.push(tmp[i].toLowerCase());
}
- if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
- tmp[i] == "") {
+ if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
+ tmp[i] === "") {
// skip this "word"
continue;
}
// stem the word
- var word = stemmer.stemWord(tmp[i]).toLowerCase();
+ var word = stemmer.stemWord(tmp[i].toLowerCase());
+ // prevent stemmer from cutting word smaller than two chars
+ if(word.length < 3 && tmp[i].length >= 3) {
+ word = tmp[i];
+ }
+ var toAppend;
// select the correct list
if (word[0] == '-') {
- var toAppend = excluded;
+ toAppend = excluded;
word = word.substr(1);
}
else {
- var toAppend = searchterms;
+ toAppend = searchterms;
hlterms.push(tmp[i].toLowerCase());
}
// only add if not already in the list
- if (!$.contains(toAppend, word))
+ if (!$u.contains(toAppend, word))
toAppend.push(word);
- };
+ }
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
// console.debug('SEARCH: searching for:');
@@ -342,89 +463,50 @@ var Search = {
// console.info('excluded: ', excluded);
// prepare search
- var filenames = this._index.filenames;
- var titles = this._index.titles;
var terms = this._index.terms;
- var fileMap = {};
- var files = null;
- // different result priorities
- var importantResults = [];
- var objectResults = [];
- var regularResults = [];
- var unimportantResults = [];
+ var titleterms = this._index.titleterms;
+
+ // array of [filename, title, anchor, descr, score]
+ var results = [];
$('#search-progress').empty();
// lookup as object
- for (var i = 0; i < objectterms.length; i++) {
- var others = [].concat(objectterms.slice(0,i),
- objectterms.slice(i+1, objectterms.length))
- var results = this.performObjectSearch(objectterms[i], others);
- // Assume first word is most likely to be the object,
- // other words more likely to be in description.
- // Therefore put matches for earlier words first.
- // (Results are eventually used in reverse order).
- objectResults = results[0].concat(objectResults);
- importantResults = results[1].concat(importantResults);
- unimportantResults = results[2].concat(unimportantResults);
+ for (i = 0; i < objectterms.length; i++) {
+ var others = [].concat(objectterms.slice(0, i),
+ objectterms.slice(i+1, objectterms.length));
+ results = results.concat(this.performObjectSearch(objectterms[i], others));
}
- // perform the search on the required terms
- for (var i = 0; i < searchterms.length; i++) {
- var word = searchterms[i];
- // no match but word was a required one
- if ((files = terms[word]) == null)
- break;
- if (files.length == undefined) {
- files = [files];
- }
- // create the mapping
- for (var j = 0; j < files.length; j++) {
- var file = files[j];
- if (file in fileMap)
- fileMap[file].push(word);
- else
- fileMap[file] = [word];
- }
- }
-
- // now check if the files don't contain excluded terms
- for (var file in fileMap) {
- var valid = true;
+ // lookup as search terms in fulltext
+ results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
- // check if all requirements are matched
- if (fileMap[file].length != searchterms.length)
- continue;
-
- // ensure that none of the excluded terms is in the
- // search result.
- for (var i = 0; i < excluded.length; i++) {
- if (terms[excluded[i]] == file ||
- $.contains(terms[excluded[i]] || [], file)) {
- valid = false;
- break;
- }
- }
-
- // if we have still a valid result we can add it
- // to the result list
- if (valid)
- regularResults.push([filenames[file], titles[file], '', null]);
+ // let the scorer override scores with a custom scoring function
+ if (Scorer.score) {
+ for (i = 0; i < results.length; i++)
+ results[i][4] = Scorer.score(results[i]);
}
- // delete unused variables in order to not waste
- // memory until list is retrieved completely
- delete filenames, titles, terms;
-
- // now sort the regular results descending by title
- regularResults.sort(function(a, b) {
- var left = a[1].toLowerCase();
- var right = b[1].toLowerCase();
- return (left > right) ? -1 : ((left < right) ? 1 : 0);
+ // now sort the results by score (in opposite order of appearance, since the
+ // display function below uses pop() to retrieve items) and then
+ // alphabetically
+ results.sort(function(a, b) {
+ var left = a[4];
+ var right = b[4];
+ if (left > right) {
+ return 1;
+ } else if (left < right) {
+ return -1;
+ } else {
+ // same score: sort alphabetically
+ left = a[1].toLowerCase();
+ right = b[1].toLowerCase();
+ return (left > right) ? -1 : ((left < right) ? 1 : 0);
+ }
});
- // combine all results
- var results = unimportantResults.concat(regularResults)
- .concat(objectResults).concat(importantResults);
+ // for debugging
+ //Search.lastresults = results.slice(); // a copy
+ //console.info('search results:', Search.lastresults);
// print the results
var resultCount = results.length;
@@ -433,7 +515,7 @@ var Search = {
if (results.length) {
var item = results.pop();
var listItem = $('<li style="display:none"></li>');
- if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
+ if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
// dirhtml builder
var dirname = item[0] + '/';
if (dirname.match(/\/index\/$/)) {
@@ -457,16 +539,19 @@ var Search = {
displayNextItem();
});
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
- $.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
- item[0] + '.txt', function(data) {
- if (data != '') {
- listItem.append($.makeSearchSummary(data, searchterms, hlterms));
- Search.output.append(listItem);
- }
- listItem.slideDown(5, function() {
- displayNextItem();
- });
- }, "text");
+ var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX;
+ $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].slice(-suffix.length) === suffix ? '' : suffix),
+ dataType: "text",
+ complete: function(jqxhr, textstatus) {
+ var data = jqxhr.responseText;
+ if (data !== '' && data !== undefined) {
+ listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
+ }
+ Search.output.append(listItem);
+ listItem.slideDown(5, function() {
+ displayNextItem();
+ });
+ }});
} else {
// no source available, just display title
Search.output.append(listItem);
@@ -489,20 +574,33 @@ var Search = {
displayNextItem();
},
+ /**
+ * search for object names
+ */
performObjectSearch : function(object, otherterms) {
var filenames = this._index.filenames;
+ var docnames = this._index.docnames;
var objects = this._index.objects;
var objnames = this._index.objnames;
var titles = this._index.titles;
- var importantResults = [];
- var objectResults = [];
- var unimportantResults = [];
+ var i;
+ var results = [];
for (var prefix in objects) {
for (var name in objects[prefix]) {
var fullname = (prefix ? prefix + '.' : '') + name;
if (fullname.toLowerCase().indexOf(object) > -1) {
+ var score = 0;
+ var parts = fullname.split('.');
+ // check for different match types: exact matches of full name or
+ // "last name" (i.e. last dotted part)
+ if (fullname == object || parts[parts.length - 1] == object) {
+ score += Scorer.objNameMatch;
+ // matches in last name
+ } else if (parts[parts.length - 1].indexOf(object) > -1) {
+ score += Scorer.objPartialMatch;
+ }
var match = objects[prefix][name];
var objname = objnames[match[1]][2];
var title = titles[match[0]];
@@ -512,7 +610,7 @@ var Search = {
var haystack = (prefix + ' ' + name + ' ' +
objname + ' ' + title).toLowerCase();
var allfound = true;
- for (var i = 0; i < otherterms.length; i++) {
+ for (i = 0; i < otherterms.length; i++) {
if (haystack.indexOf(otherterms[i]) == -1) {
allfound = false;
break;
@@ -523,37 +621,137 @@ var Search = {
}
}
var descr = objname + _(', in ') + title;
- anchor = match[3];
- if (anchor == '')
+
+ var anchor = match[3];
+ if (anchor === '')
anchor = fullname;
else if (anchor == '-')
anchor = objnames[match[1]][1] + '-' + fullname;
- result = [filenames[match[0]], fullname, '#'+anchor, descr];
- switch (match[2]) {
- case 1: objectResults.push(result); break;
- case 0: importantResults.push(result); break;
- case 2: unimportantResults.push(result); break;
+ // add custom score for some objects according to scorer
+ if (Scorer.objPrio.hasOwnProperty(match[2])) {
+ score += Scorer.objPrio[match[2]];
+ } else {
+ score += Scorer.objPrioDefault;
}
+ results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]);
}
}
}
- // sort results descending
- objectResults.sort(function(a, b) {
- return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
- });
+ return results;
+ },
- importantResults.sort(function(a, b) {
- return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
- });
+ /**
+ * search for full-text terms in the index
+ */
+ performTermsSearch : function(searchterms, excluded, terms, titleterms) {
+ var docnames = this._index.docnames;
+ var filenames = this._index.filenames;
+ var titles = this._index.titles;
- unimportantResults.sort(function(a, b) {
- return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
- });
+ var i, j, file;
+ var fileMap = {};
+ var scoreMap = {};
+ var results = [];
+
+ // perform the search on the required terms
+ for (i = 0; i < searchterms.length; i++) {
+ var word = searchterms[i];
+ var files = [];
+ var _o = [
+ {files: terms[word], score: Scorer.term},
+ {files: titleterms[word], score: Scorer.title}
+ ];
+
+ // no match but word was a required one
+ if ($u.every(_o, function(o){return o.files === undefined;})) {
+ break;
+ }
+ // found search word in contents
+ $u.each(_o, function(o) {
+ var _files = o.files;
+ if (_files === undefined)
+ return
+
+ if (_files.length === undefined)
+ _files = [_files];
+ files = files.concat(_files);
+
+ // set score for the word in each file to Scorer.term
+ for (j = 0; j < _files.length; j++) {
+ file = _files[j];
+ if (!(file in scoreMap))
+ scoreMap[file] = {}
+ scoreMap[file][word] = o.score;
+ }
+ });
+
+ // create the mapping
+ for (j = 0; j < files.length; j++) {
+ file = files[j];
+ if (file in fileMap)
+ fileMap[file].push(word);
+ else
+ fileMap[file] = [word];
+ }
+ }
+
+ // now check if the files don't contain excluded terms
+ for (file in fileMap) {
+ var valid = true;
- return [importantResults, objectResults, unimportantResults]
+ // check if all requirements are matched
+ if (fileMap[file].length != searchterms.length)
+ continue;
+
+ // ensure that none of the excluded terms is in the search result
+ for (i = 0; i < excluded.length; i++) {
+ if (terms[excluded[i]] == file ||
+ titleterms[excluded[i]] == file ||
+ $u.contains(terms[excluded[i]] || [], file) ||
+ $u.contains(titleterms[excluded[i]] || [], file)) {
+ valid = false;
+ break;
+ }
+ }
+
+ // if we have still a valid result we can add it to the result list
+ if (valid) {
+ // select one (max) score for the file.
+ // for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
+ var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
+ results.push([docnames[file], titles[file], '', null, score, filenames[file]]);
+ }
+ }
+ return results;
+ },
+
+ /**
+ * helper function to return a node containing the
+ * search summary for a given text. keywords is a list
+ * of stemmed words, hlwords is the list of normal, unstemmed
+ * words. the first one is used to find the occurrence, the
+ * latter for highlighting it.
+ */
+ makeSearchSummary : function(text, keywords, hlwords) {
+ var textLower = text.toLowerCase();
+ var start = 0;
+ $.each(keywords, function() {
+ var i = textLower.indexOf(this.toLowerCase());
+ if (i > -1)
+ start = i;
+ });
+ start = Math.max(start - 120, 0);
+ var excerpt = ((start > 0) ? '...' : '') +
+ $.trim(text.substr(start, 240)) +
+ ((start + 240 - text.length) ? '...' : '');
+ var rv = $('<div class="context"></div>').text(excerpt);
+ $.each(hlwords, function() {
+ rv = rv.highlightText(this, 'highlighted');
+ });
+ return rv;
}
-}
+};
$(document).ready(function() {
Search.init();
diff --git a/doc/html/_static/underscore-1.3.1.js b/doc/html/_static/underscore-1.3.1.js
new file mode 100644
index 0000000..208d4cd
--- /dev/null
+++ b/doc/html/_static/underscore-1.3.1.js
@@ -0,0 +1,999 @@
+// Underscore.js 1.3.1
+// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
+// Underscore is freely distributable under the MIT license.
+// Portions of Underscore are inspired or borrowed from Prototype,
+// Oliver Steele's Functional, and John Resig's Micro-Templating.
+// For all details and documentation:
+// http://documentcloud.github.com/underscore
+
+(function() {
+
+ // Baseline setup
+ // --------------
+
+ // Establish the root object, `window` in the browser, or `global` on the server.
+ var root = this;
+
+ // Save the previous value of the `_` variable.
+ var previousUnderscore = root._;
+
+ // Establish the object that gets returned to break out of a loop iteration.
+ var breaker = {};
+
+ // Save bytes in the minified (but not gzipped) version:
+ var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
+
+ // Create quick reference variables for speed access to core prototypes.
+ var slice = ArrayProto.slice,
+ unshift = ArrayProto.unshift,
+ toString = ObjProto.toString,
+ hasOwnProperty = ObjProto.hasOwnProperty;
+
+ // All **ECMAScript 5** native function implementations that we hope to use
+ // are declared here.
+ var
+ nativeForEach = ArrayProto.forEach,
+ nativeMap = ArrayProto.map,
+ nativeReduce = ArrayProto.reduce,
+ nativeReduceRight = ArrayProto.reduceRight,
+ nativeFilter = ArrayProto.filter,
+ nativeEvery = ArrayProto.every,
+ nativeSome = ArrayProto.some,
+ nativeIndexOf = ArrayProto.indexOf,
+ nativeLastIndexOf = ArrayProto.lastIndexOf,
+ nativeIsArray = Array.isArray,
+ nativeKeys = Object.keys,
+ nativeBind = FuncProto.bind;
+
+ // Create a safe reference to the Underscore object for use below.
+ var _ = function(obj) { return new wrapper(obj); };
+
+ // Export the Underscore object for **Node.js**, with
+ // backwards-compatibility for the old `require()` API. If we're in
+ // the browser, add `_` as a global object via a string identifier,
+ // for Closure Compiler "advanced" mode.
+ if (typeof exports !== 'undefined') {
+ if (typeof module !== 'undefined' && module.exports) {
+ exports = module.exports = _;
+ }
+ exports._ = _;
+ } else {
+ root['_'] = _;
+ }
+
+ // Current version.
+ _.VERSION = '1.3.1';
+
+ // Collection Functions
+ // --------------------
+
+ // The cornerstone, an `each` implementation, aka `forEach`.
+ // Handles objects with the built-in `forEach`, arrays, and raw objects.
+ // Delegates to **ECMAScript 5**'s native `forEach` if available.
+ var each = _.each = _.forEach = function(obj, iterator, context) {
+ if (obj == null) return;
+ if (nativeForEach && obj.forEach === nativeForEach) {
+ obj.forEach(iterator, context);
+ } else if (obj.length === +obj.length) {
+ for (var i = 0, l = obj.length; i < l; i++) {
+ if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;
+ }
+ } else {
+ for (var key in obj) {
+ if (_.has(obj, key)) {
+ if (iterator.call(context, obj[key], key, obj) === breaker) return;
+ }
+ }
+ }
+ };
+
+ // Return the results of applying the iterator to each element.
+ // Delegates to **ECMAScript 5**'s native `map` if available.
+ _.map = _.collect = function(obj, iterator, context) {
+ var results = [];
+ if (obj == null) return results;
+ if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
+ each(obj, function(value, index, list) {
+ results[results.length] = iterator.call(context, value, index, list);
+ });
+ if (obj.length === +obj.length) results.length = obj.length;
+ return results;
+ };
+
+ // **Reduce** builds up a single result from a list of values, aka `inject`,
+ // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
+ _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
+ var initial = arguments.length > 2;
+ if (obj == null) obj = [];
+ if (nativeReduce && obj.reduce === nativeReduce) {
+ if (context) iterator = _.bind(iterator, context);
+ return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
+ }
+ each(obj, function(value, index, list) {
+ if (!initial) {
+ memo = value;
+ initial = true;
+ } else {
+ memo = iterator.call(context, memo, value, index, list);
+ }
+ });
+ if (!initial) throw new TypeError('Reduce of empty array with no initial value');
+ return memo;
+ };
+
+ // The right-associative version of reduce, also known as `foldr`.
+ // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
+ _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
+ var initial = arguments.length > 2;
+ if (obj == null) obj = [];
+ if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
+ if (context) iterator = _.bind(iterator, context);
+ return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
+ }
+ var reversed = _.toArray(obj).reverse();
+ if (context && !initial) iterator = _.bind(iterator, context);
+ return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator);
+ };
+
+ // Return the first value which passes a truth test. Aliased as `detect`.
+ _.find = _.detect = function(obj, iterator, context) {
+ var result;
+ any(obj, function(value, index, list) {
+ if (iterator.call(context, value, index, list)) {
+ result = value;
+ return true;
+ }
+ });
+ return result;
+ };
+
+ // Return all the elements that pass a truth test.
+ // Delegates to **ECMAScript 5**'s native `filter` if available.
+ // Aliased as `select`.
+ _.filter = _.select = function(obj, iterator, context) {
+ var results = [];
+ if (obj == null) return results;
+ if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
+ each(obj, function(value, index, list) {
+ if (iterator.call(context, value, index, list)) results[results.length] = value;
+ });
+ return results;
+ };
+
+ // Return all the elements for which a truth test fails.
+ _.reject = function(obj, iterator, context) {
+ var results = [];
+ if (obj == null) return results;
+ each(obj, function(value, index, list) {
+ if (!iterator.call(context, value, index, list)) results[results.length] = value;
+ });
+ return results;
+ };
+
+ // Determine whether all of the elements match a truth test.
+ // Delegates to **ECMAScript 5**'s native `every` if available.
+ // Aliased as `all`.
+ _.every = _.all = function(obj, iterator, context) {
+ var result = true;
+ if (obj == null) return result;
+ if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
+ each(obj, function(value, index, list) {
+ if (!(result = result && iterator.call(context, value, index, list))) return breaker;
+ });
+ return result;
+ };
+
+ // Determine if at least one element in the object matches a truth test.
+ // Delegates to **ECMAScript 5**'s native `some` if available.
+ // Aliased as `any`.
+ var any = _.some = _.any = function(obj, iterator, context) {
+ iterator || (iterator = _.identity);
+ var result = false;
+ if (obj == null) return result;
+ if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
+ each(obj, function(value, index, list) {
+ if (result || (result = iterator.call(context, value, index, list))) return breaker;
+ });
+ return !!result;
+ };
+
+ // Determine if a given value is included in the array or object using `===`.
+ // Aliased as `contains`.
+ _.include = _.contains = function(obj, target) {
+ var found = false;
+ if (obj == null) return found;
+ if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
+ found = any(obj, function(value) {
+ return value === target;
+ });
+ return found;
+ };
+
+ // Invoke a method (with arguments) on every item in a collection.
+ _.invoke = function(obj, method) {
+ var args = slice.call(arguments, 2);
+ return _.map(obj, function(value) {
+ return (_.isFunction(method) ? method || value : value[method]).apply(value, args);
+ });
+ };
+
+ // Convenience version of a common use case of `map`: fetching a property.
+ _.pluck = function(obj, key) {
+ return _.map(obj, function(value){ return value[key]; });
+ };
+
+ // Return the maximum element or (element-based computation).
+ _.max = function(obj, iterator, context) {
+ if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj);
+ if (!iterator && _.isEmpty(obj)) return -Infinity;
+ var result = {computed : -Infinity};
+ each(obj, function(value, index, list) {
+ var computed = iterator ? iterator.call(context, value, index, list) : value;
+ computed >= result.computed && (result = {value : value, computed : computed});
+ });
+ return result.value;
+ };
+
+ // Return the minimum element (or element-based computation).
+ _.min = function(obj, iterator, context) {
+ if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj);
+ if (!iterator && _.isEmpty(obj)) return Infinity;
+ var result = {computed : Infinity};
+ each(obj, function(value, index, list) {
+ var computed = iterator ? iterator.call(context, value, index, list) : value;
+ computed < result.computed && (result = {value : value, computed : computed});
+ });
+ return result.value;
+ };
+
+ // Shuffle an array.
+ _.shuffle = function(obj) {
+ var shuffled = [], rand;
+ each(obj, function(value, index, list) {
+ if (index == 0) {
+ shuffled[0] = value;
+ } else {
+ rand = Math.floor(Math.random() * (index + 1));
+ shuffled[index] = shuffled[rand];
+ shuffled[rand] = value;
+ }
+ });
+ return shuffled;
+ };
+
+ // Sort the object's values by a criterion produced by an iterator.
+ _.sortBy = function(obj, iterator, context) {
+ return _.pluck(_.map(obj, function(value, index, list) {
+ return {
+ value : value,
+ criteria : iterator.call(context, value, index, list)
+ };
+ }).sort(function(left, right) {
+ var a = left.criteria, b = right.criteria;
+ return a < b ? -1 : a > b ? 1 : 0;
+ }), 'value');
+ };
+
+ // Groups the object's values by a criterion. Pass either a string attribute
+ // to group by, or a function that returns the criterion.
+ _.groupBy = function(obj, val) {
+ var result = {};
+ var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };
+ each(obj, function(value, index) {
+ var key = iterator(value, index);
+ (result[key] || (result[key] = [])).push(value);
+ });
+ return result;
+ };
+
+ // Use a comparator function to figure out at what index an object should
+ // be inserted so as to maintain order. Uses binary search.
+ _.sortedIndex = function(array, obj, iterator) {
+ iterator || (iterator = _.identity);
+ var low = 0, high = array.length;
+ while (low < high) {
+ var mid = (low + high) >> 1;
+ iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid;
+ }
+ return low;
+ };
+
+ // Safely convert anything iterable into a real, live array.
+ _.toArray = function(iterable) {
+ if (!iterable) return [];
+ if (iterable.toArray) return iterable.toArray();
+ if (_.isArray(iterable)) return slice.call(iterable);
+ if (_.isArguments(iterable)) return slice.call(iterable);
+ return _.values(iterable);
+ };
+
+ // Return the number of elements in an object.
+ _.size = function(obj) {
+ return _.toArray(obj).length;
+ };
+
+ // Array Functions
+ // ---------------
+
+ // Get the first element of an array. Passing **n** will return the first N
+ // values in the array. Aliased as `head`. The **guard** check allows it to work
+ // with `_.map`.
+ _.first = _.head = function(array, n, guard) {
+ return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
+ };
+
+ // Returns everything but the last entry of the array. Especcialy useful on
+ // the arguments object. Passing **n** will return all the values in
+ // the array, excluding the last N. The **guard** check allows it to work with
+ // `_.map`.
+ _.initial = function(array, n, guard) {
+ return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
+ };
+
+ // Get the last element of an array. Passing **n** will return the last N
+ // values in the array. The **guard** check allows it to work with `_.map`.
+ _.last = function(array, n, guard) {
+ if ((n != null) && !guard) {
+ return slice.call(array, Math.max(array.length - n, 0));
+ } else {
+ return array[array.length - 1];
+ }
+ };
+
+ // Returns everything but the first entry of the array. Aliased as `tail`.
+ // Especially useful on the arguments object. Passing an **index** will return
+ // the rest of the values in the array from that index onward. The **guard**
+ // check allows it to work with `_.map`.
+ _.rest = _.tail = function(array, index, guard) {
+ return slice.call(array, (index == null) || guard ? 1 : index);
+ };
+
+ // Trim out all falsy values from an array.
+ _.compact = function(array) {
+ return _.filter(array, function(value){ return !!value; });
+ };
+
+ // Return a completely flattened version of an array.
+ _.flatten = function(array, shallow) {
+ return _.reduce(array, function(memo, value) {
+ if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value));
+ memo[memo.length] = value;
+ return memo;
+ }, []);
+ };
+
+ // Return a version of the array that does not contain the specified value(s).
+ _.without = function(array) {
+ return _.difference(array, slice.call(arguments, 1));
+ };
+
+ // Produce a duplicate-free version of the array. If the array has already
+ // been sorted, you have the option of using a faster algorithm.
+ // Aliased as `unique`.
+ _.uniq = _.unique = function(array, isSorted, iterator) {
+ var initial = iterator ? _.map(array, iterator) : array;
+ var result = [];
+ _.reduce(initial, function(memo, el, i) {
+ if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) {
+ memo[memo.length] = el;
+ result[result.length] = array[i];
+ }
+ return memo;
+ }, []);
+ return result;
+ };
+
+ // Produce an array that contains the union: each distinct element from all of
+ // the passed-in arrays.
+ _.union = function() {
+ return _.uniq(_.flatten(arguments, true));
+ };
+
+ // Produce an array that contains every item shared between all the
+ // passed-in arrays. (Aliased as "intersect" for back-compat.)
+ _.intersection = _.intersect = function(array) {
+ var rest = slice.call(arguments, 1);
+ return _.filter(_.uniq(array), function(item) {
+ return _.every(rest, function(other) {
+ return _.indexOf(other, item) >= 0;
+ });
+ });
+ };
+
+ // Take the difference between one array and a number of other arrays.
+ // Only the elements present in just the first array will remain.
+ _.difference = function(array) {
+ var rest = _.flatten(slice.call(arguments, 1));
+ return _.filter(array, function(value){ return !_.include(rest, value); });
+ };
+
+ // Zip together multiple lists into a single array -- elements that share
+ // an index go together.
+ _.zip = function() {
+ var args = slice.call(arguments);
+ var length = _.max(_.pluck(args, 'length'));
+ var results = new Array(length);
+ for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i);
+ return results;
+ };
+
+ // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
+ // we need this function. Return the position of the first occurrence of an
+ // item in an array, or -1 if the item is not included in the array.
+ // Delegates to **ECMAScript 5**'s native `indexOf` if available.
+ // If the array is large and already in sort order, pass `true`
+ // for **isSorted** to use binary search.
+ _.indexOf = function(array, item, isSorted) {
+ if (array == null) return -1;
+ var i, l;
+ if (isSorted) {
+ i = _.sortedIndex(array, item);
+ return array[i] === item ? i : -1;
+ }
+ if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item);
+ for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i;
+ return -1;
+ };
+
+ // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
+ _.lastIndexOf = function(array, item) {
+ if (array == null) return -1;
+ if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item);
+ var i = array.length;
+ while (i--) if (i in array && array[i] === item) return i;
+ return -1;
+ };
+
+ // Generate an integer Array containing an arithmetic progression. A port of
+ // the native Python `range()` function. See
+ // [the Python documentation](http://docs.python.org/library/functions.html#range).
+ _.range = function(start, stop, step) {
+ if (arguments.length <= 1) {
+ stop = start || 0;
+ start = 0;
+ }
+ step = arguments[2] || 1;
+
+ var len = Math.max(Math.ceil((stop - start) / step), 0);
+ var idx = 0;
+ var range = new Array(len);
+
+ while(idx < len) {
+ range[idx++] = start;
+ start += step;
+ }
+
+ return range;
+ };
+
+ // Function (ahem) Functions
+ // ------------------
+
+ // Reusable constructor function for prototype setting.
+ var ctor = function(){};
+
+ // Create a function bound to a given object (assigning `this`, and arguments,
+ // optionally). Binding with arguments is also known as `curry`.
+ // Delegates to **ECMAScript 5**'s native `Function.bind` if available.
+ // We check for `func.bind` first, to fail fast when `func` is undefined.
+ _.bind = function bind(func, context) {
+ var bound, args;
+ if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
+ if (!_.isFunction(func)) throw new TypeError;
+ args = slice.call(arguments, 2);
+ return bound = function() {
+ if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
+ ctor.prototype = func.prototype;
+ var self = new ctor;
+ var result = func.apply(self, args.concat(slice.call(arguments)));
+ if (Object(result) === result) return result;
+ return self;
+ };
+ };
+
+ // Bind all of an object's methods to that object. Useful for ensuring that
+ // all callbacks defined on an object belong to it.
+ _.bindAll = function(obj) {
+ var funcs = slice.call(arguments, 1);
+ if (funcs.length == 0) funcs = _.functions(obj);
+ each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
+ return obj;
+ };
+
+ // Memoize an expensive function by storing its results.
+ _.memoize = function(func, hasher) {
+ var memo = {};
+ hasher || (hasher = _.identity);
+ return function() {
+ var key = hasher.apply(this, arguments);
+ return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
+ };
+ };
+
+ // Delays a function for the given number of milliseconds, and then calls
+ // it with the arguments supplied.
+ _.delay = function(func, wait) {
+ var args = slice.call(arguments, 2);
+ return setTimeout(function(){ return func.apply(func, args); }, wait);
+ };
+
+ // Defers a function, scheduling it to run after the current call stack has
+ // cleared.
+ _.defer = function(func) {
+ return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
+ };
+
+ // Returns a function, that, when invoked, will only be triggered at most once
+ // during a given window of time.
+ _.throttle = function(func, wait) {
+ var context, args, timeout, throttling, more;
+ var whenDone = _.debounce(function(){ more = throttling = false; }, wait);
+ return function() {
+ context = this; args = arguments;
+ var later = function() {
+ timeout = null;
+ if (more) func.apply(context, args);
+ whenDone();
+ };
+ if (!timeout) timeout = setTimeout(later, wait);
+ if (throttling) {
+ more = true;
+ } else {
+ func.apply(context, args);
+ }
+ whenDone();
+ throttling = true;
+ };
+ };
+
+ // Returns a function, that, as long as it continues to be invoked, will not
+ // be triggered. The function will be called after it stops being called for
+ // N milliseconds.
+ _.debounce = function(func, wait) {
+ var timeout;
+ return function() {
+ var context = this, args = arguments;
+ var later = function() {
+ timeout = null;
+ func.apply(context, args);
+ };
+ clearTimeout(timeout);
+ timeout = setTimeout(later, wait);
+ };
+ };
+
+ // Returns a function that will be executed at most one time, no matter how
+ // often you call it. Useful for lazy initialization.
+ _.once = function(func) {
+ var ran = false, memo;
+ return function() {
+ if (ran) return memo;
+ ran = true;
+ return memo = func.apply(this, arguments);
+ };
+ };
+
+ // Returns the first function passed as an argument to the second,
+ // allowing you to adjust arguments, run code before and after, and
+ // conditionally execute the original function.
+ _.wrap = function(func, wrapper) {
+ return function() {
+ var args = [func].concat(slice.call(arguments, 0));
+ return wrapper.apply(this, args);
+ };
+ };
+
+ // Returns a function that is the composition of a list of functions, each
+ // consuming the return value of the function that follows.
+ _.compose = function() {
+ var funcs = arguments;
+ return function() {
+ var args = arguments;
+ for (var i = funcs.length - 1; i >= 0; i--) {
+ args = [funcs[i].apply(this, args)];
+ }
+ return args[0];
+ };
+ };
+
+ // Returns a function that will only be executed after being called N times.
+ _.after = function(times, func) {
+ if (times <= 0) return func();
+ return function() {
+ if (--times < 1) { return func.apply(this, arguments); }
+ };
+ };
+
+ // Object Functions
+ // ----------------
+
+ // Retrieve the names of an object's properties.
+ // Delegates to **ECMAScript 5**'s native `Object.keys`
+ _.keys = nativeKeys || function(obj) {
+ if (obj !== Object(obj)) throw new TypeError('Invalid object');
+ var keys = [];
+ for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;
+ return keys;
+ };
+
+ // Retrieve the values of an object's properties.
+ _.values = function(obj) {
+ return _.map(obj, _.identity);
+ };
+
+ // Return a sorted list of the function names available on the object.
+ // Aliased as `methods`
+ _.functions = _.methods = function(obj) {
+ var names = [];
+ for (var key in obj) {
+ if (_.isFunction(obj[key])) names.push(key);
+ }
+ return names.sort();
+ };
+
+ // Extend a given object with all the properties in passed-in object(s).
+ _.extend = function(obj) {
+ each(slice.call(arguments, 1), function(source) {
+ for (var prop in source) {
+ obj[prop] = source[prop];
+ }
+ });
+ return obj;
+ };
+
+ // Fill in a given object with default properties.
+ _.defaults = function(obj) {
+ each(slice.call(arguments, 1), function(source) {
+ for (var prop in source) {
+ if (obj[prop] == null) obj[prop] = source[prop];
+ }
+ });
+ return obj;
+ };
+
+ // Create a (shallow-cloned) duplicate of an object.
+ _.clone = function(obj) {
+ if (!_.isObject(obj)) return obj;
+ return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
+ };
+
+ // Invokes interceptor with the obj, and then returns obj.
+ // The primary purpose of this method is to "tap into" a method chain, in
+ // order to perform operations on intermediate results within the chain.
+ _.tap = function(obj, interceptor) {
+ interceptor(obj);
+ return obj;
+ };
+
+ // Internal recursive comparison function.
+ function eq(a, b, stack) {
+ // Identical objects are equal. `0 === -0`, but they aren't identical.
+ // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.
+ if (a === b) return a !== 0 || 1 / a == 1 / b;
+ // A strict comparison is necessary because `null == undefined`.
+ if (a == null || b == null) return a === b;
+ // Unwrap any wrapped objects.
+ if (a._chain) a = a._wrapped;
+ if (b._chain) b = b._wrapped;
+ // Invoke a custom `isEqual` method if one is provided.
+ if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b);
+ if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a);
+ // Compare `[[Class]]` names.
+ var className = toString.call(a);
+ if (className != toString.call(b)) return false;
+ switch (className) {
+ // Strings, numbers, dates, and booleans are compared by value.
+ case '[object String]':
+ // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
+ // equivalent to `new String("5")`.
+ return a == String(b);
+ case '[object Number]':
+ // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
+ // other numeric values.
+ return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
+ case '[object Date]':
+ case '[object Boolean]':
+ // Coerce dates and booleans to numeric primitive values. Dates are compared by their
+ // millisecond representations. Note that invalid dates with millisecond representations
+ // of `NaN` are not equivalent.
+ return +a == +b;
+ // RegExps are compared by their source patterns and flags.
+ case '[object RegExp]':
+ return a.source == b.source &&
+ a.global == b.global &&
+ a.multiline == b.multiline &&
+ a.ignoreCase == b.ignoreCase;
+ }
+ if (typeof a != 'object' || typeof b != 'object') return false;
+ // Assume equality for cyclic structures. The algorithm for detecting cyclic
+ // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
+ var length = stack.length;
+ while (length--) {
+ // Linear search. Performance is inversely proportional to the number of
+ // unique nested structures.
+ if (stack[length] == a) return true;
+ }
+ // Add the first object to the stack of traversed objects.
+ stack.push(a);
+ var size = 0, result = true;
+ // Recursively compare objects and arrays.
+ if (className == '[object Array]') {
+ // Compare array lengths to determine if a deep comparison is necessary.
+ size = a.length;
+ result = size == b.length;
+ if (result) {
+ // Deep compare the contents, ignoring non-numeric properties.
+ while (size--) {
+ // Ensure commutative equality for sparse arrays.
+ if (!(result = size in a == size in b && eq(a[size], b[size], stack))) break;
+ }
+ }
+ } else {
+ // Objects with different constructors are not equivalent.
+ if ('constructor' in a != 'constructor' in b || a.constructor != b.constructor) return false;
+ // Deep compare objects.
+ for (var key in a) {
+ if (_.has(a, key)) {
+ // Count the expected number of properties.
+ size++;
+ // Deep compare each member.
+ if (!(result = _.has(b, key) && eq(a[key], b[key], stack))) break;
+ }
+ }
+ // Ensure that both objects contain the same number of properties.
+ if (result) {
+ for (key in b) {
+ if (_.has(b, key) && !(size--)) break;
+ }
+ result = !size;
+ }
+ }
+ // Remove the first object from the stack of traversed objects.
+ stack.pop();
+ return result;
+ }
+
+ // Perform a deep comparison to check if two objects are equal.
+ _.isEqual = function(a, b) {
+ return eq(a, b, []);
+ };
+
+ // Is a given array, string, or object empty?
+ // An "empty" object has no enumerable own-properties.
+ _.isEmpty = function(obj) {
+ if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
+ for (var key in obj) if (_.has(obj, key)) return false;
+ return true;
+ };
+
+ // Is a given value a DOM element?
+ _.isElement = function(obj) {
+ return !!(obj && obj.nodeType == 1);
+ };
+
+ // Is a given value an array?
+ // Delegates to ECMA5's native Array.isArray
+ _.isArray = nativeIsArray || function(obj) {
+ return toString.call(obj) == '[object Array]';
+ };
+
+ // Is a given variable an object?
+ _.isObject = function(obj) {
+ return obj === Object(obj);
+ };
+
+ // Is a given variable an arguments object?
+ _.isArguments = function(obj) {
+ return toString.call(obj) == '[object Arguments]';
+ };
+ if (!_.isArguments(arguments)) {
+ _.isArguments = function(obj) {
+ return !!(obj && _.has(obj, 'callee'));
+ };
+ }
+
+ // Is a given value a function?
+ _.isFunction = function(obj) {
+ return toString.call(obj) == '[object Function]';
+ };
+
+ // Is a given value a string?
+ _.isString = function(obj) {
+ return toString.call(obj) == '[object String]';
+ };
+
+ // Is a given value a number?
+ _.isNumber = function(obj) {
+ return toString.call(obj) == '[object Number]';
+ };
+
+ // Is the given value `NaN`?
+ _.isNaN = function(obj) {
+ // `NaN` is the only value for which `===` is not reflexive.
+ return obj !== obj;
+ };
+
+ // Is a given value a boolean?
+ _.isBoolean = function(obj) {
+ return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
+ };
+
+ // Is a given value a date?
+ _.isDate = function(obj) {
+ return toString.call(obj) == '[object Date]';
+ };
+
+ // Is the given value a regular expression?
+ _.isRegExp = function(obj) {
+ return toString.call(obj) == '[object RegExp]';
+ };
+
+ // Is a given value equal to null?
+ _.isNull = function(obj) {
+ return obj === null;
+ };
+
+ // Is a given variable undefined?
+ _.isUndefined = function(obj) {
+ return obj === void 0;
+ };
+
+ // Has own property?
+ _.has = function(obj, key) {
+ return hasOwnProperty.call(obj, key);
+ };
+
+ // Utility Functions
+ // -----------------
+
+ // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
+ // previous owner. Returns a reference to the Underscore object.
+ _.noConflict = function() {
+ root._ = previousUnderscore;
+ return this;
+ };
+
+ // Keep the identity function around for default iterators.
+ _.identity = function(value) {
+ return value;
+ };
+
+ // Run a function **n** times.
+ _.times = function (n, iterator, context) {
+ for (var i = 0; i < n; i++) iterator.call(context, i);
+ };
+
+ // Escape a string for HTML interpolation.
+ _.escape = function(string) {
+ return (''+string).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\//g,'&#x2F;');
+ };
+
+ // Add your own custom functions to the Underscore object, ensuring that
+ // they're correctly added to the OOP wrapper as well.
+ _.mixin = function(obj) {
+ each(_.functions(obj), function(name){
+ addToWrapper(name, _[name] = obj[name]);
+ });
+ };
+
+ // Generate a unique integer id (unique within the entire client session).
+ // Useful for temporary DOM ids.
+ var idCounter = 0;
+ _.uniqueId = function(prefix) {
+ var id = idCounter++;
+ return prefix ? prefix + id : id;
+ };
+
+ // By default, Underscore uses ERB-style template delimiters, change the
+ // following template settings to use alternative delimiters.
+ _.templateSettings = {
+ evaluate : /<%([\s\S]+?)%>/g,
+ interpolate : /<%=([\s\S]+?)%>/g,
+ escape : /<%-([\s\S]+?)%>/g
+ };
+
+ // When customizing `templateSettings`, if you don't want to define an
+ // interpolation, evaluation or escaping regex, we need one that is
+ // guaranteed not to match.
+ var noMatch = /.^/;
+
+ // Within an interpolation, evaluation, or escaping, remove HTML escaping
+ // that had been previously added.
+ var unescape = function(code) {
+ return code.replace(/\\\\/g, '\\').replace(/\\'/g, "'");
+ };
+
+ // JavaScript micro-templating, similar to John Resig's implementation.
+ // Underscore templating handles arbitrary delimiters, preserves whitespace,
+ // and correctly escapes quotes within interpolated code.
+ _.template = function(str, data) {
+ var c = _.templateSettings;
+ var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' +
+ 'with(obj||{}){__p.push(\'' +
+ str.replace(/\\/g, '\\\\')
+ .replace(/'/g, "\\'")
+ .replace(c.escape || noMatch, function(match, code) {
+ return "',_.escape(" + unescape(code) + "),'";
+ })
+ .replace(c.interpolate || noMatch, function(match, code) {
+ return "'," + unescape(code) + ",'";
+ })
+ .replace(c.evaluate || noMatch, function(match, code) {
+ return "');" + unescape(code).replace(/[\r\n\t]/g, ' ') + ";__p.push('";
+ })
+ .replace(/\r/g, '\\r')
+ .replace(/\n/g, '\\n')
+ .replace(/\t/g, '\\t')
+ + "');}return __p.join('');";
+ var func = new Function('obj', '_', tmpl);
+ if (data) return func(data, _);
+ return function(data) {
+ return func.call(this, data, _);
+ };
+ };
+
+ // Add a "chain" function, which will delegate to the wrapper.
+ _.chain = function(obj) {
+ return _(obj).chain();
+ };
+
+ // The OOP Wrapper
+ // ---------------
+
+ // If Underscore is called as a function, it returns a wrapped object that
+ // can be used OO-style. This wrapper holds altered versions of all the
+ // underscore functions. Wrapped objects may be chained.
+ var wrapper = function(obj) { this._wrapped = obj; };
+
+ // Expose `wrapper.prototype` as `_.prototype`
+ _.prototype = wrapper.prototype;
+
+ // Helper function to continue chaining intermediate results.
+ var result = function(obj, chain) {
+ return chain ? _(obj).chain() : obj;
+ };
+
+ // A method to easily add functions to the OOP wrapper.
+ var addToWrapper = function(name, func) {
+ wrapper.prototype[name] = function() {
+ var args = slice.call(arguments);
+ unshift.call(args, this._wrapped);
+ return result(func.apply(_, args), this._chain);
+ };
+ };
+
+ // Add all of the Underscore functions to the wrapper object.
+ _.mixin(_);
+
+ // Add all mutator Array functions to the wrapper.
+ each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
+ var method = ArrayProto[name];
+ wrapper.prototype[name] = function() {
+ var wrapped = this._wrapped;
+ method.apply(wrapped, arguments);
+ var length = wrapped.length;
+ if ((name == 'shift' || name == 'splice') && length === 0) delete wrapped[0];
+ return result(wrapped, this._chain);
+ };
+ });
+
+ // Add all accessor Array functions to the wrapper.
+ each(['concat', 'join', 'slice'], function(name) {
+ var method = ArrayProto[name];
+ wrapper.prototype[name] = function() {
+ return result(method.apply(this._wrapped, arguments), this._chain);
+ };
+ });
+
+ // Start chaining a wrapped Underscore object.
+ wrapper.prototype.chain = function() {
+ this._chain = true;
+ return this;
+ };
+
+ // Extracts the result from a wrapped and chained object.
+ wrapper.prototype.value = function() {
+ return this._wrapped;
+ };
+
+}).call(this);
diff --git a/doc/html/_static/underscore.js b/doc/html/_static/underscore.js
index 5d89914..5b55f32 100644
--- a/doc/html/_static/underscore.js
+++ b/doc/html/_static/underscore.js
@@ -1,23 +1,31 @@
-// Underscore.js 0.5.5
-// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc.
-// Underscore is freely distributable under the terms of the MIT license.
-// Portions of Underscore are inspired by or borrowed from Prototype.js,
+// Underscore.js 1.3.1
+// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
+// Underscore is freely distributable under the MIT license.
+// Portions of Underscore are inspired or borrowed from Prototype,
// Oliver Steele's Functional, and John Resig's Micro-Templating.
// For all details and documentation:
-// http://documentcloud.github.com/underscore/
-(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e<f;e++)c.call(d,
-a[e],e,a);else{var g=b.keys(a);f=g.length;for(e=0;e<f;e++)c.call(d,a[g[e]],g[e],a)}}catch(h){if(h!=m)throw h;}return a};b.map=function(a,c,d){if(a&&b.isFunction(a.map))return a.map(c,d);var e=[];b.each(a,function(f,g,h){e.push(c.call(d,f,g,h))});return e};b.reduce=function(a,c,d,e){if(a&&b.isFunction(a.reduce))return a.reduce(b.bind(d,e),c);b.each(a,function(f,g,h){c=d.call(e,c,f,g,h)});return c};b.reduceRight=function(a,c,d,e){if(a&&b.isFunction(a.reduceRight))return a.reduceRight(b.bind(d,e),c);
-var f=b.clone(b.toArray(a)).reverse();b.each(f,function(g,h){c=d.call(e,c,g,h,a)});return c};b.detect=function(a,c,d){var e;b.each(a,function(f,g,h){if(c.call(d,f,g,h)){e=f;b.breakLoop()}});return e};b.select=function(a,c,d){if(a&&b.isFunction(a.filter))return a.filter(c,d);var e=[];b.each(a,function(f,g,h){c.call(d,f,g,h)&&e.push(f)});return e};b.reject=function(a,c,d){var e=[];b.each(a,function(f,g,h){!c.call(d,f,g,h)&&e.push(f)});return e};b.all=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.every))return a.every(c,
-d);var e=true;b.each(a,function(f,g,h){(e=e&&c.call(d,f,g,h))||b.breakLoop()});return e};b.any=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.some))return a.some(c,d);var e=false;b.each(a,function(f,g,h){if(e=c.call(d,f,g,h))b.breakLoop()});return e};b.include=function(a,c){if(b.isArray(a))return b.indexOf(a,c)!=-1;var d=false;b.each(a,function(e){if(d=e===c)b.breakLoop()});return d};b.invoke=function(a,c){var d=b.rest(arguments,2);return b.map(a,function(e){return(c?e[c]:e).apply(e,d)})};b.pluck=
-function(a,c){return b.map(a,function(d){return d[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g>=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g<e.computed&&(e={value:f,computed:g})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a,
-function(e,f,g){return{value:e,criteria:c.call(d,e,f,g)}}).sort(function(e,f){e=e.criteria;f=f.criteria;return e<f?-1:e>f?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?(e=g+1):(f=g)}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return a;if(b.isArguments(a))return k.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=function(a,c,d){return c&&!d?k.call(a,
-0,c):a[0]};b.rest=function(a,c,d){return k.call(a,b.isUndefined(c)||d?1:c)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.select(a,function(c){return!!c})};b.flatten=function(a){return b.reduce(a,[],function(c,d){if(b.isArray(d))return c.concat(b.flatten(d));c.push(d);return c})};b.without=function(a){var c=b.rest(arguments);return b.select(a,function(d){return!b.include(c,d)})};b.uniq=function(a,c){return b.reduce(a,[],function(d,e,f){if(0==f||(c===true?b.last(d)!=e:!b.include(d,
-e)))d.push(e);return d})};b.intersect=function(a){var c=b.rest(arguments);return b.select(b.uniq(a),function(d){return b.all(c,function(e){return b.indexOf(e,d)>=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e<c;e++)d[e]=b.pluck(a,String(e));return d};b.indexOf=function(a,c){if(a.indexOf)return a.indexOf(c);for(var d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,c){if(a.lastIndexOf)return a.lastIndexOf(c);for(var d=
-a.length;d--;)if(a[d]===c)return d;return-1};b.range=function(a,c,d){var e=b.toArray(arguments),f=e.length<=1;a=f?0:e[0];c=f?e[0]:e[1];d=e[2]||1;e=Math.ceil((c-a)/d);if(e<=0)return[];e=new Array(e);f=a;for(var g=0;1;f+=d){if((d>0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)});
-return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length);
-var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false;
-if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length==
-0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&&
-a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
-" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments);
-o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})();
+// http://documentcloud.github.com/underscore
+(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
+c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
+h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
+b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
+null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
+function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
+e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
+function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
+return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
+c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
+b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
+return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
+d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
+var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
+c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
+a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
+b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
+1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
+b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
+b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.mixin=function(a){j(b.functions(a),
+function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
+u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
+function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
+true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
diff --git a/doc/html/_static/up-pressed.png b/doc/html/_static/up-pressed.png
index 8bd587a..acee3b6 100644
--- a/doc/html/_static/up-pressed.png
+++ b/doc/html/_static/up-pressed.png
Binary files differ
diff --git a/doc/html/_static/up.png b/doc/html/_static/up.png
index b946256..2a940a7 100644
--- a/doc/html/_static/up.png
+++ b/doc/html/_static/up.png
Binary files differ
diff --git a/doc/html/_static/websupport.js b/doc/html/_static/websupport.js
index e9bd1b8..53f6a45 100644
--- a/doc/html/_static/websupport.js
+++ b/doc/html/_static/websupport.js
@@ -2,9 +2,9 @@
* websupport.js
* ~~~~~~~~~~~~~
*
- * sphinx.websupport utilties for all documentation.
+ * sphinx.websupport utilities for all documentation.
*
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@@ -50,51 +50,51 @@
}
function initEvents() {
- $('a.comment-close').live("click", function(event) {
+ $(document).on("click", 'a.comment-close', function(event) {
event.preventDefault();
hide($(this).attr('id').substring(2));
});
- $('a.vote').live("click", function(event) {
+ $(document).on("click", 'a.vote', function(event) {
event.preventDefault();
handleVote($(this));
});
- $('a.reply').live("click", function(event) {
+ $(document).on("click", 'a.reply', function(event) {
event.preventDefault();
openReply($(this).attr('id').substring(2));
});
- $('a.close-reply').live("click", function(event) {
+ $(document).on("click", 'a.close-reply', function(event) {
event.preventDefault();
closeReply($(this).attr('id').substring(2));
});
- $('a.sort-option').live("click", function(event) {
+ $(document).on("click", 'a.sort-option', function(event) {
event.preventDefault();
handleReSort($(this));
});
- $('a.show-proposal').live("click", function(event) {
+ $(document).on("click", 'a.show-proposal', function(event) {
event.preventDefault();
showProposal($(this).attr('id').substring(2));
});
- $('a.hide-proposal').live("click", function(event) {
+ $(document).on("click", 'a.hide-proposal', function(event) {
event.preventDefault();
hideProposal($(this).attr('id').substring(2));
});
- $('a.show-propose-change').live("click", function(event) {
+ $(document).on("click", 'a.show-propose-change', function(event) {
event.preventDefault();
showProposeChange($(this).attr('id').substring(2));
});
- $('a.hide-propose-change').live("click", function(event) {
+ $(document).on("click", 'a.hide-propose-change', function(event) {
event.preventDefault();
hideProposeChange($(this).attr('id').substring(2));
});
- $('a.accept-comment').live("click", function(event) {
+ $(document).on("click", 'a.accept-comment', function(event) {
event.preventDefault();
acceptComment($(this).attr('id').substring(2));
});
- $('a.delete-comment').live("click", function(event) {
+ $(document).on("click", 'a.delete-comment', function(event) {
event.preventDefault();
deleteComment($(this).attr('id').substring(2));
});
- $('a.comment-markup').live("click", function(event) {
+ $(document).on("click", 'a.comment-markup', function(event) {
event.preventDefault();
toggleCommentMarkupBox($(this).attr('id').substring(2));
});
@@ -700,8 +700,8 @@
(<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
<div class="comment-markup-box" id="mb<%id%>">\
reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
- <tt>``code``</tt>, \
- code blocks: <tt>::</tt> and an indented block after blank line</div>\
+ <code>``code``</code>, \
+ code blocks: <code>::</code> and an indented block after blank line</div>\
<form method="post" id="cf<%id%>" class="comment-form" action="">\
<textarea name="comment" cols="80"></textarea>\
<p class="propose-button">\
diff --git a/doc/html/genindex.html b/doc/html/genindex.html
index 45f31b1..b24bf70 100644
--- a/doc/html/genindex.html
+++ b/doc/html/genindex.html
@@ -1,52 +1,43 @@
-
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Index &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
+ <title>Index &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: './',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="index.html" />
+ <link rel="index" title="Index" href="#" />
+ <link rel="search" title="Search" href="search.html" />
+
+ <link rel="stylesheet" href="_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="#" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1 id="index">Index</h1>
@@ -79,3136 +70,1602 @@
</div>
<h2 id="A">A</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.accept">accept() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.accept_ssl">accept_ssl() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Store.add_cert">add_cert() (M2Crypto.X509.X509_Store method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Name.add_entry_by_txt">add_entry_by_txt() (M2Crypto.X509.X509_Name method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.add_ext">add_ext() (M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request.add_extensions">add_extensions() (M2Crypto.X509.Request method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.add_session">add_session() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.PublicKey.PublicKey.add_signature">add_signature() (M2Crypto.PGP.PublicKey.PublicKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.PublicKey.PublicKey.add_userid">add_userid() (M2Crypto.PGP.PublicKey.PublicKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Store.add_x509">add_x509() (M2Crypto.X509.X509_Store method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.as_der">as_der() (M2Crypto.EVP.PKey method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.as_der">(M2Crypto.SSL.Session.Session method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request.as_der">(M2Crypto.X509.Request method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.as_der">(M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Name.as_der">(M2Crypto.X509.X509_Name method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Stack.as_der">(M2Crypto.X509.X509_Stack method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Name.as_hash">as_hash() (M2Crypto.X509.X509_Name method)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC.as_pem">as_pem() (M2Crypto.EC.EC method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.as_pem">(M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.as_pem">(M2Crypto.RSA.RSA method)</a>
- </dt>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.accept">accept() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.accept_ssl">accept_ssl() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Store.add_cert">add_cert() (M2Crypto.X509.X509_Store method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Name.add_entry_by_txt">add_entry_by_txt() (M2Crypto.X509.X509_Name method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.add_ext">add_ext() (M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request.add_extensions">add_extensions() (M2Crypto.X509.Request method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.add_session">add_session() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Store.add_x509">add_x509() (M2Crypto.X509.X509_Store method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.as_der">as_der() (M2Crypto.EVP.PKey method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request.as_pem">(M2Crypto.X509.Request method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.as_pem">(M2Crypto.X509.X509 method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_String.as_text">as_text() (M2Crypto.ASN1.ASN1_String method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.as_text">(M2Crypto.SSL.Session.Session method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.CRL.as_text">(M2Crypto.X509.CRL method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request.as_text">(M2Crypto.X509.Request method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.as_text">(M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Name.as_text">(M2Crypto.X509.X509_Name method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_Integer">ASN1_Integer (class in M2Crypto.ASN1)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_Object">ASN1_Object (class in M2Crypto.ASN1)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_String">ASN1_String (class in M2Crypto.ASN1)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_TIME">ASN1_TIME (class in M2Crypto.ASN1)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_UTCTIME">ASN1_UTCTIME (in module M2Crypto.ASN1)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.assign_rsa">assign_rsa() (M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ftpslib.FTP_TLS.auth_ssl">auth_ssl() (M2Crypto.ftpslib.FTP_TLS method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ftpslib.FTP_TLS.auth_tls">auth_tls() (M2Crypto.ftpslib.FTP_TLS method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie">AuthCookie (class in M2Crypto.AuthCookie)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.as_der">(M2Crypto.SSL.Session.Session method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request.as_der">(M2Crypto.X509.Request method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.as_der">(M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Name.as_der">(M2Crypto.X509.X509_Name method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Stack.as_der">(M2Crypto.X509.X509_Stack method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Name.as_hash">as_hash() (M2Crypto.X509.X509_Name method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC.as_pem">as_pem() (M2Crypto.EC.EC method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookieJar">AuthCookieJar (class in M2Crypto.AuthCookie)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.as_pem">(M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.as_pem">(M2Crypto.RSA.RSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request.as_pem">(M2Crypto.X509.Request method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.as_pem">(M2Crypto.X509.X509 method)</a>
+</li>
+ </ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_String.as_text">as_text() (M2Crypto.ASN1.ASN1_String method)</a>
- </dl></td>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.as_text">(M2Crypto.SSL.Session.Session method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.CRL.as_text">(M2Crypto.X509.CRL method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request.as_text">(M2Crypto.X509.Request method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.as_text">(M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Name.as_text">(M2Crypto.X509.X509_Name method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_Integer">ASN1_Integer (class in M2Crypto.ASN1)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_Object">ASN1_Object (class in M2Crypto.ASN1)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_String">ASN1_String (class in M2Crypto.ASN1)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_TIME">ASN1_TIME (class in M2Crypto.ASN1)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_UTCTIME">ASN1_UTCTIME (in module M2Crypto.ASN1)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.assign_rsa">assign_rsa() (M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ftpslib.FTP_TLS.auth_ssl">auth_ssl() (M2Crypto.ftpslib.FTP_TLS method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ftpslib.FTP_TLS.auth_tls">auth_tls() (M2Crypto.ftpslib.FTP_TLS method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie">AuthCookie (class in M2Crypto.AuthCookie)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookieJar">AuthCookieJar (class in M2Crypto.AuthCookie)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="B">B</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.util.bin_to_hex">bin_to_hex() (in module M2Crypto.util)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.bind">bind() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO">BIO (class in M2Crypto.BIO)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.bio_ptr">bio_ptr() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIOError">BIOError</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.m2urllib2.build_opener">build_opener() (in module M2Crypto.m2urllib2)</a>
- </dt>
-
- </dl></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.util.bin_to_hex">bin_to_hex() (in module M2Crypto.util)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.bind">bind() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO">BIO (class in M2Crypto.BIO)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.bio_ptr">bio_ptr() (M2Crypto.BIO.BIO method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIOError">BIOError</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.m2urllib2.build_opener">build_opener() (in module M2Crypto.m2urllib2)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="C">C</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.check_ca">check_ca() (M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA.check_key">check_key() (M2Crypto.DSA.DSA method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA_pub.check_key">(M2Crypto.DSA.DSA_pub method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC.check_key">(M2Crypto.EC.EC method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.check_key">(M2Crypto.RSA.RSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA_pub.check_key">(M2Crypto.RSA.RSA_pub method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.DH.DH.check_params">check_params() (M2Crypto.DH.DH method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.check_purpose">check_purpose() (M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Checker.Checker">Checker (class in M2Crypto.SSL.Checker)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.Cipher">Cipher (class in M2Crypto.EVP)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.Cipher">(class in M2Crypto.SMIME)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Cipher.Cipher">(class in M2Crypto.SSL.Cipher)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Cipher.Cipher_Stack">Cipher_Stack (class in M2Crypto.SSL.Cipher)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.CipherStream">CipherStream (class in M2Crypto.BIO)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.CKEPacket">CKEPacket (class in M2Crypto.PGP.packet)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Engine.cleanup">cleanup() (in module M2Crypto.Engine)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.threading.cleanup">(in module M2Crypto.threading)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.clear">clear() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.clear">(M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.clientPostConnectionCheck">clientPostConnectionCheck (M2Crypto.SSL.Connection.Connection attribute)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.close">close() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.CipherStream.close">(M2Crypto.BIO.CipherStream method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.File.close">(M2Crypto.BIO.File method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.IOBuffer.close">(M2Crypto.BIO.IOBuffer method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.MemoryBuffer.close">(M2Crypto.BIO.MemoryBuffer method)</a>
- </dt>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.check_ca">check_ca() (M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA.check_key">check_key() (M2Crypto.DSA.DSA method)</a>
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.PacketStream.close">(M2Crypto.PGP.packet.PacketStream method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.close">(M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.close">(M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.httpslib.HTTPSConnection.close">(M2Crypto.httpslib.HTTPSConnection method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.CommentPacket">CommentPacket (class in M2Crypto.PGP.packet)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.CompressedPacket">CompressedPacket (class in M2Crypto.PGP.packet)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC.compute_dh_key">compute_dh_key() (M2Crypto.EC.EC method)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.DH.DH.compute_key">compute_key() (M2Crypto.DH.DH method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.httpslib.HTTPSConnection.connect">connect() (M2Crypto.httpslib.HTTPSConnection method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.connect">(M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.connect">(M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.httpslib.ProxyHTTPSConnection.connect">(M2Crypto.httpslib.ProxyHTTPSConnection method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.connect_ssl">connect_ssl() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection">Connection (class in M2Crypto.SSL.Connection)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.connectionLost">connectionLost() (M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.connectionMade">connectionMade() (M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.connectSSL">connectSSL() (in module M2Crypto.SSL.TwistedProtocolWrapper)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.connectTCP">connectTCP() (in module M2Crypto.SSL.TwistedProtocolWrapper)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context">Context (class in M2Crypto.SSL.Context)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.PacketStream.count">count() (M2Crypto.PGP.packet.PacketStream method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Name_Entry.create_by_txt">create_by_txt() (M2Crypto.X509.X509_Name_Entry method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA_pub.check_key">(M2Crypto.DSA.DSA_pub method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC.check_key">(M2Crypto.EC.EC method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.check_key">(M2Crypto.RSA.RSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA_pub.check_key">(M2Crypto.RSA.RSA_pub method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.DH.DH.check_params">check_params() (M2Crypto.DH.DH method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.check_purpose">check_purpose() (M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Checker.Checker">Checker (class in M2Crypto.SSL.Checker)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.Cipher">Cipher (class in M2Crypto.EVP)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.create_socket">create_socket() (M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.Cipher">(class in M2Crypto.SMIME)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Cipher.Cipher">(class in M2Crypto.SSL.Cipher)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Cipher.Cipher_Stack">Cipher_Stack (class in M2Crypto.SSL.Cipher)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.CipherStream">CipherStream (class in M2Crypto.BIO)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Engine.cleanup">cleanup() (in module M2Crypto.Engine)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.CRL">CRL (class in M2Crypto.X509)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.threading.cleanup">(in module M2Crypto.threading)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.clear">clear() (M2Crypto.SSL.Connection.Connection method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.Engine.Engine.ctrl_cmd_string">ctrl_cmd_string() (M2Crypto.Engine.Engine method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.clear">(M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.clientPostConnectionCheck">clientPostConnectionCheck (M2Crypto.SSL.Connection.Connection attribute)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.close">close() (M2Crypto.BIO.BIO method)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.ctxmap">ctxmap() (in module M2Crypto.SSL.Context)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.CipherStream.close">(M2Crypto.BIO.CipherStream method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.File.close">(M2Crypto.BIO.File method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.IOBuffer.close">(M2Crypto.BIO.IOBuffer method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.MemoryBuffer.close">(M2Crypto.BIO.MemoryBuffer method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.close">(M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.close">(M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.httpslib.HTTPSConnection.close">(M2Crypto.httpslib.HTTPSConnection method)</a>
+</li>
+ </ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC.compute_dh_key">compute_dh_key() (M2Crypto.EC.EC method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DH.DH.compute_key">compute_key() (M2Crypto.DH.DH method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.httpslib.HTTPSConnection.connect">connect() (M2Crypto.httpslib.HTTPSConnection method)</a>
- </dl></td>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.connect">(M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.connect">(M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.httpslib.ProxyHTTPSConnection.connect">(M2Crypto.httpslib.ProxyHTTPSConnection method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.connect_ssl">connect_ssl() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection">Connection (class in M2Crypto.SSL.Connection)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.connectionLost">connectionLost() (M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.connectionMade">connectionMade() (M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.connectSSL">connectSSL() (in module M2Crypto.SSL.TwistedProtocolWrapper)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.connectTCP">connectTCP() (in module M2Crypto.SSL.TwistedProtocolWrapper)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context">Context (class in M2Crypto.SSL.Context)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Name_Entry.create_by_txt">create_by_txt() (M2Crypto.X509.X509_Name_Entry method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.create_socket">create_socket() (M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.CRL">CRL (class in M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Engine.Engine.ctrl_cmd_string">ctrl_cmd_string() (M2Crypto.Engine.Engine method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.ctxmap">ctxmap() (in module M2Crypto.SSL.Context)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="D">D</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.data">data() (M2Crypto.AuthCookie.AuthCookie method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.dataReceived">dataReceived() (M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.PublicKey.PublicKey.decrypt">decrypt() (M2Crypto.PGP.PublicKey.PublicKey method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.decrypt">(M2Crypto.SMIME.SMIME method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.httpslib.HTTPSConnection.default_port">default_port (M2Crypto.httpslib.HTTPSConnection attribute)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DH.DH">DH (class in M2Crypto.DH)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DH.DHError">DHError</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.HMAC.digest">digest() (M2Crypto.EVP.HMAC method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.MessageDigest.digest">(M2Crypto.EVP.MessageDigest method)</a>
- </dt>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.data">data() (M2Crypto.AuthCookie.AuthCookie method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.dataReceived">dataReceived() (M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.decrypt">decrypt() (M2Crypto.SMIME.SMIME method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.httpslib.HTTPSConnection.default_port">default_port (M2Crypto.httpslib.HTTPSConnection attribute)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DH.DH">DH (class in M2Crypto.DH)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DH.DHError">DHError</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.HMAC.digest">digest() (M2Crypto.EVP.HMAC method)</a>
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.SSLBio.do_handshake">do_handshake() (M2Crypto.BIO.SSLBio method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA">DSA (class in M2Crypto.DSA)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA_pub">DSA_pub (class in M2Crypto.DSA)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSAError">DSAError</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.LocalTimezone.dst">dst() (M2Crypto.ASN1.LocalTimezone method)</a>
- </dt>
-
- </dl></td>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.MessageDigest.digest">(M2Crypto.EVP.MessageDigest method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.SSLBio.do_handshake">do_handshake() (M2Crypto.BIO.SSLBio method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA">DSA (class in M2Crypto.DSA)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA_pub">DSA_pub (class in M2Crypto.DSA)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSAError">DSAError</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.LocalTimezone.dst">dst() (M2Crypto.ASN1.LocalTimezone method)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="E">E</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC">EC (class in M2Crypto.EC)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.ec_error">ec_error() (in module M2Crypto.EC)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC_pub">EC_pub (class in M2Crypto.EC)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.ECError">ECError</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.PublicKey.PublicKey.encrypt">encrypt() (M2Crypto.PGP.PublicKey.PublicKey method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.encrypt">(M2Crypto.SMIME.SMIME method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.httpslib.ProxyHTTPSConnection.endheaders">endheaders() (M2Crypto.httpslib.ProxyHTTPSConnection method)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.Engine.Engine">Engine (class in M2Crypto.Engine)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Engine.EngineError">EngineError</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Name.entry_count">entry_count() (M2Crypto.X509.X509_Name method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.EVPError">EVPError</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.expiry">expiry() (M2Crypto.AuthCookie.AuthCookie method)</a>
- </dt>
-
- </dl></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC">EC (class in M2Crypto.EC)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.ec_error">ec_error() (in module M2Crypto.EC)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC_pub">EC_pub (class in M2Crypto.EC)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.ECError">ECError</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.encrypt">encrypt() (M2Crypto.SMIME.SMIME method)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.httpslib.ProxyHTTPSConnection.endheaders">endheaders() (M2Crypto.httpslib.ProxyHTTPSConnection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Engine.Engine">Engine (class in M2Crypto.Engine)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Engine.EngineError">EngineError</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Name.entry_count">entry_count() (M2Crypto.X509.X509_Name method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.EVPError">EVPError</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.expiry">expiry() (M2Crypto.AuthCookie.AuthCookie method)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="F">F</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.File">File (class in M2Crypto.BIO)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.fileno">fileno() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.fileno">(M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.Cipher.final">final() (M2Crypto.EVP.Cipher method)</a>
- </dt>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.File">File (class in M2Crypto.BIO)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.fileno">fileno() (M2Crypto.BIO.BIO method)</a>
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.HMAC.final">(M2Crypto.EVP.HMAC method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.MessageDigest.final">(M2Crypto.EVP.MessageDigest method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.final">(M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RC4.RC4.final">(M2Crypto.RC4.RC4 method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.Engine.Engine.finish">finish() (M2Crypto.Engine.Engine method)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.flush">flush() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.SSLServer.ForkingSSLServer">ForkingSSLServer (class in M2Crypto.SSL.SSLServer)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.fileno">(M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.Cipher.final">final() (M2Crypto.EVP.Cipher method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.ftpslib.FTP_TLS">FTP_TLS (class in M2Crypto.ftpslib)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.HMAC.final">(M2Crypto.EVP.HMAC method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.MessageDigest.final">(M2Crypto.EVP.MessageDigest method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.final">(M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RC4.RC4.final">(M2Crypto.RC4.RC4 method)</a>
+</li>
+ </ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.Engine.Engine.finish">finish() (M2Crypto.Engine.Engine method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.flush">flush() (M2Crypto.BIO.BIO method)</a>
- </dl></td>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.File.flush">(M2Crypto.BIO.File method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.SSLServer.ForkingSSLServer">ForkingSSLServer (class in M2Crypto.SSL.SSLServer)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ftpslib.FTP_TLS">FTP_TLS (class in M2Crypto.ftpslib)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="G">G</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.gen_key">gen_key() (in module M2Crypto.RSA)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.DH.DH.gen_key">(M2Crypto.DH.DH method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA.gen_key">(M2Crypto.DSA.DSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC.gen_key">(M2Crypto.EC.EC method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.DH.gen_params">gen_params() (in module M2Crypto.DH)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.gen_params">(in module M2Crypto.DSA)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.gen_params">(in module M2Crypto.EC)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.util.genparam_callback">genparam_callback() (in module M2Crypto.util)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.PKCS7.get0_signers">get0_signers() (M2Crypto.SMIME.PKCS7 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Store_Context.get1_chain">get1_chain() (M2Crypto.X509.X509_Store_Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_allow_unknown_ca">get_allow_unknown_ca() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.get_builtin_curves">get_builtin_curves() (in module M2Crypto.EC)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_cert_store">get_cert_store() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_cipher">get_cipher() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_cipher_list">get_cipher_list() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_ciphers">get_ciphers() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_context">get_context() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Extension.get_critical">get_critical() (M2Crypto.X509.X509_Extension method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Store_Context.get_current_cert">get_current_cert() (M2Crypto.X509.X509_Store_Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Name_Entry.get_data">get_data() (M2Crypto.X509.X509_Name_Entry method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_TIME.get_datetime">get_datetime() (M2Crypto.ASN1.ASN1_TIME method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_default_session_timeout">get_default_session_timeout() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC_pub.get_der">get_der() (M2Crypto.EC.EC_pub method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Name.get_entries_by_nid">get_entries_by_nid() (M2Crypto.X509.X509_Name method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Err.get_error">get_error() (in module M2Crypto.Err)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Store_Context.get_error">(M2Crypto.X509.X509_Store_Context method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.Err.get_error_code">get_error_code() (in module M2Crypto.Err)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Store_Context.get_error_depth">get_error_depth() (M2Crypto.X509.X509_Store_Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Err.get_error_func">get_error_func() (in module M2Crypto.Err)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Err.get_error_lib">get_error_lib() (in module M2Crypto.Err)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Err.get_error_reason">get_error_reason() (in module M2Crypto.Err)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.get_ext">get_ext() (M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.get_ext_at">get_ext_at() (M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.get_ext_count">get_ext_count() (M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.get_fingerprint">get_fingerprint() (M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Engine.Engine.get_id">get_id() (M2Crypto.Engine.Engine method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.get_issuer">get_issuer() (M2Crypto.X509.X509 method)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC_pub.get_key">get_key() (M2Crypto.EC.EC_pub method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.get_modulus">get_modulus() (M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Engine.Engine.get_name">get_name() (M2Crypto.Engine.Engine method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Extension.get_name">(M2Crypto.X509.X509_Extension method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.get_not_after">get_not_after() (M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.get_not_before">get_not_before() (M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Name_Entry.get_object">get_object() (M2Crypto.X509.X509_Name_Entry method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_peer_cert">get_peer_cert() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_peer_cert_chain">get_peer_cert_chain() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.gen_key">gen_key() (in module M2Crypto.RSA)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request.get_pubkey">get_pubkey() (M2Crypto.X509.Request method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.get_pubkey">(M2Crypto.X509.X509 method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.get_rsa">get_rsa() (M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.get_serial_number">get_serial_number() (M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.httpslib.HTTPSConnection.get_session">get_session() (M2Crypto.httpslib.HTTPSConnection method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_session">(M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_session_cache_mode">get_session_cache_mode() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_session_timeout">get_session_timeout() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_shutdown">get_shutdown() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_socket_read_timeout">get_socket_read_timeout() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_socket_write_timeout">get_socket_write_timeout() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_state">get_state() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request.get_subject">get_subject() (M2Crypto.X509.Request method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.get_subject">(M2Crypto.X509.X509 method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.get_time">get_time() (M2Crypto.SSL.Session.Session method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.get_timeout">get_timeout() (M2Crypto.SSL.Session.Session method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Extension.get_value">get_value() (M2Crypto.X509.X509_Extension method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_verify_depth">get_verify_depth() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_verify_depth">(M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_verify_mode">get_verify_mode() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_verify_mode">(M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_verify_result">get_verify_result() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.DH.DH.gen_key">(M2Crypto.DH.DH method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA.gen_key">(M2Crypto.DSA.DSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC.gen_key">(M2Crypto.EC.EC method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.DH.gen_params">gen_params() (in module M2Crypto.DH)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_version">get_version() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.gen_params">(in module M2Crypto.DSA)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.gen_params">(in module M2Crypto.EC)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.util.genparam_callback">genparam_callback() (in module M2Crypto.util)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.PKCS7.get0_signers">get0_signers() (M2Crypto.SMIME.PKCS7 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Store_Context.get1_chain">get1_chain() (M2Crypto.X509.X509_Store_Context method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_allow_unknown_ca">get_allow_unknown_ca() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.get_builtin_curves">get_builtin_curves() (in module M2Crypto.EC)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_cert_store">get_cert_store() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_cipher">get_cipher() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_cipher_list">get_cipher_list() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_ciphers">get_ciphers() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_context">get_context() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Extension.get_critical">get_critical() (M2Crypto.X509.X509_Extension method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Store_Context.get_current_cert">get_current_cert() (M2Crypto.X509.X509_Store_Context method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Name_Entry.get_data">get_data() (M2Crypto.X509.X509_Name_Entry method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_TIME.get_datetime">get_datetime() (M2Crypto.ASN1.ASN1_TIME method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_default_session_timeout">get_default_session_timeout() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC_pub.get_der">get_der() (M2Crypto.EC.EC_pub method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Name.get_entries_by_nid">get_entries_by_nid() (M2Crypto.X509.X509_Name method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Err.get_error">get_error() (in module M2Crypto.Err)</a>
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request.get_version">(M2Crypto.X509.Request method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Store_Context.get_error">(M2Crypto.X509.X509_Store_Context method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.Err.get_error_code">get_error_code() (in module M2Crypto.Err)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Store_Context.get_error_depth">get_error_depth() (M2Crypto.X509.X509_Store_Context method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Err.get_error_func">get_error_func() (in module M2Crypto.Err)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Err.get_error_lib">get_error_lib() (in module M2Crypto.Err)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Err.get_error_message">get_error_message() (in module M2Crypto.Err)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Err.get_error_reason">get_error_reason() (in module M2Crypto.Err)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.get_ext">get_ext() (M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.get_ext_at">get_ext_at() (M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.get_ext_count">get_ext_count() (M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.get_fingerprint">get_fingerprint() (M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Engine.Engine.get_id">get_id() (M2Crypto.Engine.Engine method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.get_issuer">get_issuer() (M2Crypto.X509.X509 method)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC_pub.get_key">get_key() (M2Crypto.EC.EC_pub method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.get_modulus">get_modulus() (M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Engine.Engine.get_name">get_name() (M2Crypto.Engine.Engine method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.get_version">(M2Crypto.X509.X509 method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Extension.get_name">(M2Crypto.X509.X509_Extension method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.get_not_after">get_not_after() (M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.get_not_before">get_not_before() (M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Name_Entry.get_object">get_object() (M2Crypto.X509.X509_Name_Entry method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_peer_cert">get_peer_cert() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_peer_cert_chain">get_peer_cert_chain() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request.get_pubkey">get_pubkey() (M2Crypto.X509.Request method)</a>
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.Err.get_x509_verify_error">get_x509_verify_error() (in module M2Crypto.Err)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.get_pubkey">(M2Crypto.X509.X509 method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.get_rsa">get_rsa() (M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.get_serial_number">get_serial_number() (M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.httpslib.HTTPSConnection.get_session">get_session() (M2Crypto.httpslib.HTTPSConnection method)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.getpeername">getpeername() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_session">(M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_session_cache_mode">get_session_cache_mode() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_session_timeout">get_session_timeout() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_shutdown">get_shutdown() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_socket_read_timeout">get_socket_read_timeout() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_socket_write_timeout">get_socket_write_timeout() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_state">get_state() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request.get_subject">get_subject() (M2Crypto.X509.Request method)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.getsockname">getsockname() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.get_subject">(M2Crypto.X509.X509 method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.get_time">get_time() (M2Crypto.SSL.Session.Session method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.get_timeout">get_timeout() (M2Crypto.SSL.Session.Session method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Extension.get_value">get_value() (M2Crypto.X509.X509_Extension method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_verify_depth">get_verify_depth() (M2Crypto.SSL.Connection.Connection method)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.getsockopt">getsockopt() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_verify_depth">(M2Crypto.SSL.Context.Context method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_verify_mode">get_verify_mode() (M2Crypto.SSL.Connection.Connection method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.MemoryBuffer.getvalue">getvalue() (M2Crypto.BIO.MemoryBuffer method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.get_verify_mode">(M2Crypto.SSL.Context.Context method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_verify_result">get_verify_result() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.get_version">get_version() (M2Crypto.SSL.Connection.Connection method)</a>
- </dl></td>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request.get_version">(M2Crypto.X509.Request method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.get_version">(M2Crypto.X509.X509 method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.Err.get_x509_verify_error">get_x509_verify_error() (in module M2Crypto.Err)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.getpeername">getpeername() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.getsockname">getsockname() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.getsockopt">getsockopt() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.MemoryBuffer.getvalue">getvalue() (M2Crypto.BIO.MemoryBuffer method)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="H">H</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.SSLServer.SSLServer.handle_error">handle_error() (M2Crypto.SSL.SSLServer.SSLServer method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.SSLServer.SSLServer.handle_request">handle_request() (M2Crypto.SSL.SSLServer.SSLServer method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.headerValue">headerValue() (M2Crypto.AuthCookie.AuthCookie method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.HMAC">HMAC (class in M2Crypto.EVP)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.hmac">hmac() (in module M2Crypto.EVP)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.m2urllib2.HTTPSHandler.https_open">https_open() (M2Crypto.m2urllib2.HTTPSHandler method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.m2urllib2.HTTPSHandler.https_request">https_request() (M2Crypto.m2urllib2.HTTPSHandler method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.httpslib.HTTPSConnection">HTTPSConnection (class in M2Crypto.httpslib)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.m2urllib2.HTTPSHandler">HTTPSHandler (class in M2Crypto.m2urllib2)</a>
- </dt>
-
- </dl></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.SSLServer.SSLServer.handle_error">handle_error() (M2Crypto.SSL.SSLServer.SSLServer method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.SSLServer.SSLServer.handle_request">handle_request() (M2Crypto.SSL.SSLServer.SSLServer method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.headerValue">headerValue() (M2Crypto.AuthCookie.AuthCookie method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.HMAC">HMAC (class in M2Crypto.EVP)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.hmac">hmac() (in module M2Crypto.EVP)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.m2urllib2.HTTPSHandler.https_open">https_open() (M2Crypto.m2urllib2.HTTPSHandler method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.m2urllib2.HTTPSHandler.https_request">https_request() (M2Crypto.m2urllib2.HTTPSHandler method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.httpslib.HTTPSConnection">HTTPSConnection (class in M2Crypto.httpslib)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.m2urllib2.HTTPSHandler">HTTPSHandler (class in M2Crypto.m2urllib2)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="I">I</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.threading.init">init() (in module M2Crypto.threading)</a>
- </dt>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.threading.init">init() (in module M2Crypto.threading)</a>
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.Engine.Engine.init">(M2Crypto.Engine.Engine method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.IOBuffer">IOBuffer (class in M2Crypto.BIO)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.is_ctb">is_ctb() (in module M2Crypto.PGP.packet)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.PrivateKeyPacket.is_encrypted">is_encrypted() (M2Crypto.PGP.packet.PrivateKeyPacket method)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.isExpired">isExpired() (M2Crypto.AuthCookie.AuthCookie method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookieJar.isGoodCookie">isGoodCookie() (M2Crypto.AuthCookie.AuthCookieJar method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookieJar.isGoodCookieString">isGoodCookieString() (M2Crypto.AuthCookie.AuthCookieJar method)</a>
- </dt>
-
- </dl></td>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.Engine.Engine.init">(M2Crypto.Engine.Engine method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.IOBuffer">IOBuffer (class in M2Crypto.BIO)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.isExpired">isExpired() (M2Crypto.AuthCookie.AuthCookie method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookieJar.isGoodCookie">isGoodCookie() (M2Crypto.AuthCookie.AuthCookieJar method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookieJar.isGoodCookieString">isGoodCookieString() (M2Crypto.AuthCookie.AuthCookieJar method)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="K">K</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.keygen_callback">keygen_callback() (in module M2Crypto.RSA)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.PublicKey.PublicKey.keyid">keyid() (M2Crypto.PGP.PublicKey.PublicKey method)</a>
- </dt>
-
- </dl></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.keygen_callback">keygen_callback() (in module M2Crypto.RSA)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="L">L</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.listen">listen() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.listenSSL">listenSSL() (in module M2Crypto.SSL.TwistedProtocolWrapper)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.listenTCP">listenTCP() (in module M2Crypto.SSL.TwistedProtocolWrapper)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.LiteralPacket">LiteralPacket (class in M2Crypto.PGP.packet)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.PublicKeyRing.PublicKeyRing.load">load() (M2Crypto.PGP.PublicKeyRing.PublicKeyRing method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.load_cert">load_cert() (in module M2Crypto.X509)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_cert">(M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.load_cert_bio">load_cert_bio() (in module M2Crypto.X509)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_cert_chain">load_cert_chain() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.load_cert_der_string">load_cert_der_string() (in module M2Crypto.X509)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.load_cert_string">load_cert_string() (in module M2Crypto.X509)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Engine.Engine.load_certificate">load_certificate() (M2Crypto.Engine.Engine method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_client_CA">load_client_CA() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_client_ca">load_client_ca() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.load_crl">load_crl() (in module M2Crypto.X509)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Engine.load_dynamic">load_dynamic() (in module M2Crypto.Engine)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Engine.load_dynamic_engine">load_dynamic_engine() (in module M2Crypto.Engine)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Rand.load_file">load_file() (in module M2Crypto.Rand)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Store.load_info">load_info() (M2Crypto.X509.X509_Store method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.load_key">load_key() (in module M2Crypto.DSA)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.load_key">(M2Crypto.SMIME.SMIME method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.load_key">(in module M2Crypto.EC)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.load_key">(in module M2Crypto.EVP)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.load_key">(in module M2Crypto.RSA)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.load_key_bio">load_key_bio() (in module M2Crypto.DSA)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.load_key_bio">(M2Crypto.SMIME.SMIME method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.load_key_bio">(in module M2Crypto.EC)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.load_key_bio">(in module M2Crypto.EVP)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.load_key_bio">(in module M2Crypto.RSA)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.load_key_bio_pubkey">load_key_bio_pubkey() (in module M2Crypto.EVP)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.load_key_string">load_key_string() (in module M2Crypto.EC)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.load_key_string">(in module M2Crypto.EVP)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.load_key_string">(in module M2Crypto.RSA)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.load_key_string_pubkey">load_key_string_pubkey() (in module M2Crypto.EC)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.load_key_string_pubkey">(in module M2Crypto.EVP)</a>
- </dt>
-
- </dl></dd>
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Store.load_locations">load_locations() (M2Crypto.X509.X509_Store method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Engine.load_openssl">load_openssl() (in module M2Crypto.Engine)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DH.load_params">load_params() (in module M2Crypto.DH)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.load_params">(in module M2Crypto.DSA)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.DH.load_params_bio">load_params_bio() (in module M2Crypto.DH)</a>
- </dt>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.listen">listen() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.listenSSL">listenSSL() (in module M2Crypto.SSL.TwistedProtocolWrapper)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.listenTCP">listenTCP() (in module M2Crypto.SSL.TwistedProtocolWrapper)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.load_cert">load_cert() (in module M2Crypto.X509)</a>
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.load_params_bio">(in module M2Crypto.DSA)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.load_pkcs7">load_pkcs7() (in module M2Crypto.SMIME)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.load_pkcs7_bio">load_pkcs7_bio() (in module M2Crypto.SMIME)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.load_pkcs7_bio_der">load_pkcs7_bio_der() (in module M2Crypto.SMIME)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.load_pkcs7_der">load_pkcs7_der() (in module M2Crypto.SMIME)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Engine.Engine.load_private_key">load_private_key() (M2Crypto.Engine.Engine method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.load_pub_key">load_pub_key() (in module M2Crypto.DSA)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.load_pub_key">(in module M2Crypto.EC)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.load_pub_key">(in module M2Crypto.RSA)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.load_pub_key_bio">load_pub_key_bio() (in module M2Crypto.DSA)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.load_pub_key_bio">(in module M2Crypto.EC)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.load_pub_key_bio">(in module M2Crypto.RSA)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.Engine.Engine.load_public_key">load_public_key() (M2Crypto.Engine.Engine method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.PublicKeyRing.load_pubring">load_pubring() (in module M2Crypto.PGP.PublicKeyRing)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.load_request">load_request() (in module M2Crypto.X509)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.load_request_bio">load_request_bio() (in module M2Crypto.X509)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_cert">(M2Crypto.SSL.Context.Context method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.load_cert_bio">load_cert_bio() (in module M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_cert_chain">load_cert_chain() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.load_cert_der_string">load_cert_der_string() (in module M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.load_cert_string">load_cert_string() (in module M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Engine.Engine.load_certificate">load_certificate() (M2Crypto.Engine.Engine method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_client_CA">load_client_CA() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_client_ca">load_client_ca() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.load_crl">load_crl() (in module M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Engine.load_dynamic">load_dynamic() (in module M2Crypto.Engine)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Engine.load_dynamic_engine">load_dynamic_engine() (in module M2Crypto.Engine)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Rand.load_file">load_file() (in module M2Crypto.Rand)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Store.load_info">load_info() (M2Crypto.X509.X509_Store method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.load_key">load_key() (in module M2Crypto.DSA)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.load_request_der_string">load_request_der_string() (in module M2Crypto.X509)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.load_key">(M2Crypto.SMIME.SMIME method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.load_key">(in module M2Crypto.EC)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.load_key">(in module M2Crypto.EVP)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.load_key">(in module M2Crypto.RSA)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.load_key_bio">load_key_bio() (in module M2Crypto.DSA)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.load_request_string">load_request_string() (in module M2Crypto.X509)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.load_key_bio">(M2Crypto.SMIME.SMIME method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.load_key_bio">(in module M2Crypto.EC)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.load_key_bio">(in module M2Crypto.EVP)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.load_key_bio">(in module M2Crypto.RSA)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.load_key_bio_pubkey">load_key_bio_pubkey() (in module M2Crypto.EVP)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.load_key_string">load_key_string() (in module M2Crypto.EC)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.load_session">load_session() (in module M2Crypto.SSL.Session)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.load_key_string">(in module M2Crypto.EVP)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.load_key_string">(in module M2Crypto.RSA)</a>
+</li>
+ </ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.EC.load_key_string_pubkey">load_key_string_pubkey() (in module M2Crypto.EC)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_verify_info">load_verify_info() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.load_key_string_pubkey">(in module M2Crypto.EVP)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Store.load_locations">load_locations() (M2Crypto.X509.X509_Store method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Engine.load_openssl">load_openssl() (in module M2Crypto.Engine)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DH.load_params">load_params() (in module M2Crypto.DH)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_verify_locations">load_verify_locations() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.load_params">(in module M2Crypto.DSA)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.DH.load_params_bio">load_params_bio() (in module M2Crypto.DH)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.LocalTimezone">LocalTimezone (class in M2Crypto.ASN1)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.load_params_bio">(in module M2Crypto.DSA)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.load_pkcs7">load_pkcs7() (in module M2Crypto.SMIME)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.load_pkcs7_bio">load_pkcs7_bio() (in module M2Crypto.SMIME)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.load_pkcs7_bio_der">load_pkcs7_bio_der() (in module M2Crypto.SMIME)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.load_pkcs7_der">load_pkcs7_der() (in module M2Crypto.SMIME)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Engine.Engine.load_private_key">load_private_key() (M2Crypto.Engine.Engine method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.load_pub_key">load_pub_key() (in module M2Crypto.DSA)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.loseConnection">loseConnection() (M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.EC.load_pub_key">(in module M2Crypto.EC)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.load_pub_key">(in module M2Crypto.RSA)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.load_pub_key_bio">load_pub_key_bio() (in module M2Crypto.DSA)</a>
- </dl></td>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.EC.load_pub_key_bio">(in module M2Crypto.EC)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.load_pub_key_bio">(in module M2Crypto.RSA)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.Engine.Engine.load_public_key">load_public_key() (M2Crypto.Engine.Engine method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.load_request">load_request() (in module M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.load_request_bio">load_request_bio() (in module M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.load_request_der_string">load_request_der_string() (in module M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.load_request_string">load_request_string() (in module M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.load_session">load_session() (in module M2Crypto.SSL.Session)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_verify_info">load_verify_info() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.load_verify_locations">load_verify_locations() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.LocalTimezone">LocalTimezone (class in M2Crypto.ASN1)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.loseConnection">loseConnection() (M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper method)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="M">M</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_Integer.m2_asn1_integer_free">m2_asn1_integer_free() (M2Crypto.ASN1.ASN1_Integer method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_Object.m2_asn1_object_free">m2_asn1_object_free() (M2Crypto.ASN1.ASN1_Object method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_String.m2_asn1_string_free">m2_asn1_string_free() (M2Crypto.ASN1.ASN1_String method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_TIME.m2_asn1_time_free">m2_asn1_time_free() (M2Crypto.ASN1.ASN1_TIME method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.m2_bio_free">m2_bio_free() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.CipherStream.m2_bio_free">(M2Crypto.BIO.CipherStream method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.IOBuffer.m2_bio_free">(M2Crypto.BIO.IOBuffer method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.m2_bio_free">(M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.CipherStream.m2_bio_pop">m2_bio_pop() (M2Crypto.BIO.CipherStream method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.IOBuffer.m2_bio_pop">(M2Crypto.BIO.IOBuffer method)</a>
- </dt>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_Integer.m2_asn1_integer_free">m2_asn1_integer_free() (M2Crypto.ASN1.ASN1_Integer method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_Object.m2_asn1_object_free">m2_asn1_object_free() (M2Crypto.ASN1.ASN1_Object method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_String.m2_asn1_string_free">m2_asn1_string_free() (M2Crypto.ASN1.ASN1_String method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_TIME.m2_asn1_time_free">m2_asn1_time_free() (M2Crypto.ASN1.ASN1_TIME method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.m2_bio_free">m2_bio_free() (M2Crypto.BIO.BIO method)</a>
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.Cipher.m2_cipher_ctx_free">m2_cipher_ctx_free() (M2Crypto.EVP.Cipher method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DH.DH.m2_dh_free">m2_dh_free() (M2Crypto.DH.DH method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA.m2_dsa_free">m2_dsa_free() (M2Crypto.DSA.DSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC.m2_ec_key_free">m2_ec_key_free() (M2Crypto.EC.EC method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Engine.Engine.m2_engine_free">m2_engine_free() (M2Crypto.Engine.Engine method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.HMAC.m2_hmac_ctx_free">m2_hmac_ctx_free() (M2Crypto.EVP.HMAC method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.MessageDigest.m2_md_ctx_free">m2_md_ctx_free() (M2Crypto.EVP.MessageDigest method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.m2_md_ctx_free">(M2Crypto.EVP.PKey method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.PKCS7.m2_pkcs7_free">m2_pkcs7_free() (M2Crypto.SMIME.PKCS7 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.m2_pkey_free">m2_pkey_free() (M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.m2_rsa_free">m2_rsa_free() (M2Crypto.RSA.RSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Extension_Stack.m2_sk_x509_extension_free">m2_sk_x509_extension_free() (M2Crypto.X509.X509_Extension_Stack method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Stack.m2_sk_x509_free">m2_sk_x509_free() (M2Crypto.X509.X509_Stack method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.m2_ssl_ctx_free">m2_ssl_ctx_free() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.m2_ssl_free">m2_ssl_free() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.m2_ssl_session_free">m2_ssl_session_free() (M2Crypto.SSL.Session.Session method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.CRL.m2_x509_crl_free">m2_x509_crl_free() (M2Crypto.X509.CRL method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Extension.m2_x509_extension_free">m2_x509_extension_free() (M2Crypto.X509.X509_Extension method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.m2_x509_free">m2_x509_free() (M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Name_Entry.m2_x509_name_entry_free">m2_x509_name_entry_free() (M2Crypto.X509.X509_Name_Entry method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Name.m2_x509_name_free">m2_x509_name_free() (M2Crypto.X509.X509_Name method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request.m2_x509_req_free">m2_x509_req_free() (M2Crypto.X509.Request method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Store_Context.m2_x509_store_ctx_free">m2_x509_store_ctx_free() (M2Crypto.X509.X509_Store_Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Store.m2_x509_store_free">m2_x509_store_free() (M2Crypto.X509.X509_Store method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.__init__">M2Crypto.__init__ (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.ASN1">M2Crypto.ASN1 (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.AuthCookie">M2Crypto.AuthCookie (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.BIO">M2Crypto.BIO (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.BN">M2Crypto.BN (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.callback">M2Crypto.callback (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.DH">M2Crypto.DH (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.DSA">M2Crypto.DSA (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.EC">M2Crypto.EC (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.Engine">M2Crypto.Engine (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.Err">M2Crypto.Err (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.EVP">M2Crypto.EVP (module)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#module-M2Crypto.ftpslib">M2Crypto.ftpslib (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.httpslib">M2Crypto.httpslib (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.m2">M2Crypto.m2 (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.m2crypto">M2Crypto.m2crypto (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.m2urllib">M2Crypto.m2urllib (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.m2urllib2">M2Crypto.m2urllib2 (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.m2xmlrpclib">M2Crypto.m2xmlrpclib (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#module-M2Crypto.PGP">M2Crypto.PGP (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#module-M2Crypto.PGP.constants">M2Crypto.PGP.constants (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#module-M2Crypto.PGP.packet">M2Crypto.PGP.packet (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#module-M2Crypto.PGP.PublicKey">M2Crypto.PGP.PublicKey (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#module-M2Crypto.PGP.PublicKeyRing">M2Crypto.PGP.PublicKeyRing (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#module-M2Crypto.PGP.RSA">M2Crypto.PGP.RSA (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.Rand">M2Crypto.Rand (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.RC4">M2Crypto.RC4 (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.RSA">M2Crypto.RSA (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.SMIME">M2Crypto.SMIME (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#module-M2Crypto.SSL">M2Crypto.SSL (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.cb">M2Crypto.SSL.cb (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Checker">M2Crypto.SSL.Checker (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Cipher">M2Crypto.SSL.Cipher (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Connection">M2Crypto.SSL.Connection (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Context">M2Crypto.SSL.Context (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Session">M2Crypto.SSL.Session (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.ssl_dispatcher">M2Crypto.SSL.ssl_dispatcher (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.SSLServer">M2Crypto.SSL.SSLServer (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.timeout">M2Crypto.SSL.timeout (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.TwistedProtocolWrapper">M2Crypto.SSL.TwistedProtocolWrapper (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.threading">M2Crypto.threading (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.util">M2Crypto.util (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#module-M2Crypto.X509">M2Crypto.X509 (module)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Err.M2CryptoError">M2CryptoError</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.mac">mac() (M2Crypto.AuthCookie.AuthCookie method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.make_ctb">make_ctb() (in module M2Crypto.PGP.packet)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookieJar.makeCookie">makeCookie() (M2Crypto.AuthCookie.AuthCookieJar method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.makefile">makefile() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.map">map() (in module M2Crypto.SSL.Context)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.MemoryBuffer">MemoryBuffer (class in M2Crypto.BIO)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.MessageDigest">MessageDigest (class in M2Crypto.EVP)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.CipherStream.m2_bio_free">(M2Crypto.BIO.CipherStream method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.IOBuffer.m2_bio_free">(M2Crypto.BIO.IOBuffer method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.m2_bio_free">(M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.CipherStream.m2_bio_pop">m2_bio_pop() (M2Crypto.BIO.CipherStream method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.AuthCookie.mix">mix() (in module M2Crypto.AuthCookie)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.IOBuffer.m2_bio_pop">(M2Crypto.BIO.IOBuffer method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.Cipher.m2_cipher_ctx_free">m2_cipher_ctx_free() (M2Crypto.EVP.Cipher method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DH.DH.m2_dh_free">m2_dh_free() (M2Crypto.DH.DH method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA.m2_dsa_free">m2_dsa_free() (M2Crypto.DSA.DSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC.m2_ec_key_free">m2_ec_key_free() (M2Crypto.EC.EC method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Engine.Engine.m2_engine_free">m2_engine_free() (M2Crypto.Engine.Engine method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.HMAC.m2_hmac_ctx_free">m2_hmac_ctx_free() (M2Crypto.EVP.HMAC method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.MessageDigest.m2_md_ctx_free">m2_md_ctx_free() (M2Crypto.EVP.MessageDigest method)</a>
- </dl></td>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.m2_md_ctx_free">(M2Crypto.EVP.PKey method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.PKCS7.m2_pkcs7_free">m2_pkcs7_free() (M2Crypto.SMIME.PKCS7 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.m2_pkey_free">m2_pkey_free() (M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.m2_rsa_free">m2_rsa_free() (M2Crypto.RSA.RSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Extension_Stack.m2_sk_x509_extension_free">m2_sk_x509_extension_free() (M2Crypto.X509.X509_Extension_Stack method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Stack.m2_sk_x509_free">m2_sk_x509_free() (M2Crypto.X509.X509_Stack method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.m2_ssl_ctx_free">m2_ssl_ctx_free() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.m2_ssl_free">m2_ssl_free() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.m2_ssl_session_free">m2_ssl_session_free() (M2Crypto.SSL.Session.Session method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.CRL.m2_x509_crl_free">m2_x509_crl_free() (M2Crypto.X509.CRL method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Extension.m2_x509_extension_free">m2_x509_extension_free() (M2Crypto.X509.X509_Extension method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.m2_x509_free">m2_x509_free() (M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Name_Entry.m2_x509_name_entry_free">m2_x509_name_entry_free() (M2Crypto.X509.X509_Name_Entry method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Name.m2_x509_name_free">m2_x509_name_free() (M2Crypto.X509.X509_Name method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request.m2_x509_req_free">m2_x509_req_free() (M2Crypto.X509.Request method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Store_Context.m2_x509_store_ctx_free">m2_x509_store_ctx_free() (M2Crypto.X509.X509_Store_Context method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Store.m2_x509_store_free">m2_x509_store_free() (M2Crypto.X509.X509_Store method)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.__init__">M2Crypto.__init__ (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.ASN1">M2Crypto.ASN1 (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.AuthCookie">M2Crypto.AuthCookie (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.BIO">M2Crypto.BIO (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.BN">M2Crypto.BN (module)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#module-M2Crypto.callback">M2Crypto.callback (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.DH">M2Crypto.DH (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.DSA">M2Crypto.DSA (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.EC">M2Crypto.EC (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.Engine">M2Crypto.Engine (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.Err">M2Crypto.Err (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.EVP">M2Crypto.EVP (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.ftpslib">M2Crypto.ftpslib (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.httpslib">M2Crypto.httpslib (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.m2">M2Crypto.m2 (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.m2crypto">M2Crypto.m2crypto (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.m2urllib">M2Crypto.m2urllib (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.m2urllib2">M2Crypto.m2urllib2 (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.m2xmlrpclib">M2Crypto.m2xmlrpclib (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.Rand">M2Crypto.Rand (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.RC4">M2Crypto.RC4 (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.RSA">M2Crypto.RSA (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.SMIME">M2Crypto.SMIME (module)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#module-M2Crypto.SSL">M2Crypto.SSL (module)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.cb">M2Crypto.SSL.cb (module)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Checker">M2Crypto.SSL.Checker (module)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Cipher">M2Crypto.SSL.Cipher (module)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Connection">M2Crypto.SSL.Connection (module)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Context">M2Crypto.SSL.Context (module)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Session">M2Crypto.SSL.Session (module)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.ssl_dispatcher">M2Crypto.SSL.ssl_dispatcher (module)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.SSLServer">M2Crypto.SSL.SSLServer (module)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.timeout">M2Crypto.SSL.timeout (module)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#module-M2Crypto.SSL.TwistedProtocolWrapper">M2Crypto.SSL.TwistedProtocolWrapper (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.threading">M2Crypto.threading (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.util">M2Crypto.util (module)</a>
+</li>
+ <li><a href="M2Crypto.html#module-M2Crypto.X509">M2Crypto.X509 (module)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Err.M2CryptoError">M2CryptoError</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.mac">mac() (M2Crypto.AuthCookie.AuthCookie method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookieJar.makeCookie">makeCookie() (M2Crypto.AuthCookie.AuthCookieJar method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.makefile">makefile() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.map">map() (in module M2Crypto.SSL.Context)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.MemoryBuffer">MemoryBuffer (class in M2Crypto.BIO)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.MessageDigest">MessageDigest (class in M2Crypto.EVP)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.AuthCookie.mix">mix() (in module M2Crypto.AuthCookie)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="N">N</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.name">name() (M2Crypto.AuthCookie.AuthCookie method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Cipher.Cipher.name">(M2Crypto.SSL.Cipher.Cipher method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.new_extension">new_extension() (in module M2Crypto.X509)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.RSA.new_pub_key">new_pub_key() (in module M2Crypto.PGP.RSA)</a>
- </dt>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.name">name() (M2Crypto.AuthCookie.AuthCookie method)</a>
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.new_pub_key">(in module M2Crypto.RSA)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.new_stack_from_der">new_stack_from_der() (in module M2Crypto.X509)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Name.nid">nid (M2Crypto.X509.X509_Name attribute)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.util.no_passphrase_callback">no_passphrase_callback() (in module M2Crypto.util)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Checker.NoCertificate">NoCertificate</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ftpslib.FTP_TLS.ntransfercmd">ntransfercmd() (M2Crypto.ftpslib.FTP_TLS method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Checker.Checker.numericIpMatch">numericIpMatch (M2Crypto.SSL.Checker.Checker attribute)</a>
- </dt>
-
- </dl></td>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Cipher.Cipher.name">(M2Crypto.SSL.Cipher.Cipher method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.new_extension">new_extension() (in module M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.new_pub_key">new_pub_key() (in module M2Crypto.RSA)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.new_stack_from_der">new_stack_from_der() (in module M2Crypto.X509)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Name.nid">nid (M2Crypto.X509.X509_Name attribute)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.util.no_passphrase_callback">no_passphrase_callback() (in module M2Crypto.util)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Checker.NoCertificate">NoCertificate</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ftpslib.FTP_TLS.ntransfercmd">ntransfercmd() (M2Crypto.ftpslib.FTP_TLS method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Checker.Checker.numericIpMatch">numericIpMatch (M2Crypto.SSL.Checker.Checker attribute)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="O">O</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.util.octx_to_num">octx_to_num() (in module M2Crypto.util)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.m2urllib.open_https">open_https() (in module M2Crypto.m2urllib)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.openfile">openfile() (in module M2Crypto.BIO)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.output">output() (M2Crypto.AuthCookie.AuthCookie method)</a>
- </dt>
-
- </dl></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.util.octx_to_num">octx_to_num() (in module M2Crypto.util)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.m2urllib.open_https">open_https() (in module M2Crypto.m2urllib)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.openfile">openfile() (in module M2Crypto.BIO)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.output">output() (M2Crypto.AuthCookie.AuthCookie method)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="P">P</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.CommentPacket.pack">pack() (M2Crypto.PGP.packet.CommentPacket method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.Packet.pack">(M2Crypto.PGP.packet.Packet method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.PublicKeyPacket.pack">(M2Crypto.PGP.packet.PublicKeyPacket method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.SignaturePacket.pack">(M2Crypto.PGP.packet.SignaturePacket method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.UserIDPacket.pack">(M2Crypto.PGP.packet.UserIDPacket method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.timeout.timeout.pack">(M2Crypto.SSL.timeout.timeout method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.Packet">Packet (class in M2Crypto.PGP.packet)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.PacketStream">PacketStream (class in M2Crypto.PGP.packet)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.util.passphrase_callback">passphrase_callback() (in module M2Crypto.util)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.pbkdf2">pbkdf2() (in module M2Crypto.EVP)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Err.peek_error_code">peek_error_code() (in module M2Crypto.Err)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.pending">pending() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.Packet.pkc">pkc() (M2Crypto.PGP.packet.Packet method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.util.pkcs5_pad">pkcs5_pad() (in module M2Crypto.util)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.PKCS7">PKCS7 (class in M2Crypto.SMIME)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.PKCS7_Error">PKCS7_Error</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.util.pkcs7_pad">pkcs7_pad() (in module M2Crypto.util)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.PKEPacket">PKEPacket (class in M2Crypto.PGP.packet)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey">PKey (class in M2Crypto.EVP)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Extension_Stack.pop">pop() (M2Crypto.X509.X509_Extension_Stack method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Stack.pop">(M2Crypto.X509.X509_Stack method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.DH.DH.print_params">print_params() (M2Crypto.DH.DH method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.private_decrypt">private_decrypt() (M2Crypto.RSA.RSA method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA_pub.private_decrypt">(M2Crypto.RSA.RSA_pub method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.private_encrypt">private_encrypt() (M2Crypto.RSA.RSA method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA_pub.private_encrypt">(M2Crypto.RSA.RSA_pub method)</a>
- </dt>
-
- </dl></dd>
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.PrivateKeyPacket">PrivateKeyPacket (class in M2Crypto.PGP.packet)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ftpslib.FTP_TLS.prot_c">prot_c() (M2Crypto.ftpslib.FTP_TLS method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ftpslib.FTP_TLS.prot_p">prot_p() (M2Crypto.ftpslib.FTP_TLS method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.httpslib.ProxyHTTPSConnection">ProxyHTTPSConnection (class in M2Crypto.httpslib)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC.pub">pub() (M2Crypto.EC.EC method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.pub">(M2Crypto.RSA.RSA method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.pub_key_from_der">pub_key_from_der() (in module M2Crypto.EC)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.pub_key_from_params">pub_key_from_params() (in module M2Crypto.DSA)</a>
- </dt>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.timeout.timeout.pack">pack() (M2Crypto.SSL.timeout.timeout method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.util.passphrase_callback">passphrase_callback() (in module M2Crypto.util)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.pbkdf2">pbkdf2() (in module M2Crypto.EVP)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Err.peek_error_code">peek_error_code() (in module M2Crypto.Err)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.pending">pending() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.util.pkcs5_pad">pkcs5_pad() (in module M2Crypto.util)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.PKCS7">PKCS7 (class in M2Crypto.SMIME)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.PKCS7_Error">PKCS7_Error</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.util.pkcs7_pad">pkcs7_pad() (in module M2Crypto.util)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey">PKey (class in M2Crypto.EVP)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Extension_Stack.pop">pop() (M2Crypto.X509.X509_Extension_Stack method)</a>
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.pub_key_from_params">(in module M2Crypto.EC)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.PublicKeyPacket.pubkey">pubkey() (M2Crypto.PGP.packet.PublicKeyPacket method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.public_decrypt">public_decrypt() (M2Crypto.RSA.RSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.public_encrypt">public_encrypt() (M2Crypto.RSA.RSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.PublicKey.PublicKey">PublicKey (class in M2Crypto.PGP.PublicKey)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.PublicKeyPacket">PublicKeyPacket (class in M2Crypto.PGP.packet)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.PublicKeyRing.PublicKeyRing">PublicKeyRing (class in M2Crypto.PGP.PublicKeyRing)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Extension_Stack.push">push() (M2Crypto.X509.X509_Extension_Stack method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Stack.push">(M2Crypto.X509.X509_Stack method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Stack.pop">(M2Crypto.X509.X509_Stack method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.DH.DH.print_params">print_params() (M2Crypto.DH.DH method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.private_decrypt">private_decrypt() (M2Crypto.RSA.RSA method)</a>
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.httpslib.ProxyHTTPSConnection.putheader">putheader() (M2Crypto.httpslib.ProxyHTTPSConnection method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA_pub.private_decrypt">(M2Crypto.RSA.RSA_pub method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.private_encrypt">private_encrypt() (M2Crypto.RSA.RSA method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.httpslib.ProxyHTTPSConnection.putrequest">putrequest() (M2Crypto.httpslib.ProxyHTTPSConnection method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA_pub.private_encrypt">(M2Crypto.RSA.RSA_pub method)</a>
+</li>
+ </ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.ftpslib.FTP_TLS.prot_c">prot_c() (M2Crypto.ftpslib.FTP_TLS method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ftpslib.FTP_TLS.prot_p">prot_p() (M2Crypto.ftpslib.FTP_TLS method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.httpslib.ProxyHTTPSConnection">ProxyHTTPSConnection (class in M2Crypto.httpslib)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC.pub">pub() (M2Crypto.EC.EC method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.util.py3bytes">py3bytes() (in module M2Crypto.util)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.pub">(M2Crypto.RSA.RSA method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.pub_key_from_der">pub_key_from_der() (in module M2Crypto.EC)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.pub_key_from_params">pub_key_from_params() (in module M2Crypto.DSA)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.util.py3str">py3str() (in module M2Crypto.util)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.EC.pub_key_from_params">(in module M2Crypto.EC)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.public_decrypt">public_decrypt() (M2Crypto.RSA.RSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.public_encrypt">public_encrypt() (M2Crypto.RSA.RSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Extension_Stack.push">push() (M2Crypto.X509.X509_Extension_Stack method)</a>
- </dl></td>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Stack.push">(M2Crypto.X509.X509_Stack method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.httpslib.ProxyHTTPSConnection.putheader">putheader() (M2Crypto.httpslib.ProxyHTTPSConnection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.httpslib.ProxyHTTPSConnection.putrequest">putrequest() (M2Crypto.httpslib.ProxyHTTPSConnection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.util.py3bytes">py3bytes() (in module M2Crypto.util)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.util.py3str">py3str() (in module M2Crypto.util)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="Q">Q</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.util.quiet_genparam_callback">quiet_genparam_callback() (in module M2Crypto.util)</a>
- </dt>
-
- </dl></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.util.quiet_genparam_callback">quiet_genparam_callback() (in module M2Crypto.util)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="R">R</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.BN.rand">rand() (in module M2Crypto.BN)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Rand.rand_add">rand_add() (in module M2Crypto.Rand)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Rand.rand_bytes">rand_bytes() (in module M2Crypto.Rand)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Rand.rand_file_name">rand_file_name() (in module M2Crypto.Rand)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Rand.rand_pseudo_bytes">rand_pseudo_bytes() (in module M2Crypto.Rand)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BN.rand_range">rand_range() (in module M2Crypto.BN)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Rand.rand_seed">rand_seed() (in module M2Crypto.Rand)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Rand.rand_status">rand_status() (in module M2Crypto.Rand)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BN.randfname">randfname() (in module M2Crypto.BN)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RC4.RC4">RC4 (class in M2Crypto.RC4)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RC4.RC4.rc4_free">rc4_free() (M2Crypto.RC4.RC4 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.read">read() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.MemoryBuffer.read">(M2Crypto.BIO.MemoryBuffer method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.PacketStream.read">(M2Crypto.PGP.packet.PacketStream method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.read">(M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.MemoryBuffer.read_all">read_all() (M2Crypto.BIO.MemoryBuffer method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.readable">readable() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.readline">readline() (M2Crypto.BIO.BIO method)</a>
- </dt>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.BN.rand">rand() (in module M2Crypto.BN)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Rand.rand_add">rand_add() (in module M2Crypto.Rand)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Rand.rand_bytes">rand_bytes() (in module M2Crypto.Rand)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Rand.rand_file_name">rand_file_name() (in module M2Crypto.Rand)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Rand.rand_pseudo_bytes">rand_pseudo_bytes() (in module M2Crypto.Rand)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BN.rand_range">rand_range() (in module M2Crypto.BN)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Rand.rand_seed">rand_seed() (in module M2Crypto.Rand)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Rand.rand_status">rand_status() (in module M2Crypto.Rand)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BN.randfname">randfname() (in module M2Crypto.BN)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RC4.RC4">RC4 (class in M2Crypto.RC4)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RC4.RC4.rc4_free">rc4_free() (M2Crypto.RC4.RC4 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.read">read() (M2Crypto.BIO.BIO method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.readlines">readlines() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.recv">recv() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.recv">(M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.remove_session">remove_session() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.PublicKey.PublicKey.remove_userid">remove_userid() (M2Crypto.PGP.PublicKey.PublicKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.renegotiate">renegotiate() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request">Request (class in M2Crypto.X509)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.m2xmlrpclib.SSL_Transport.request">request() (M2Crypto.m2xmlrpclib.SSL_Transport method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.reset">reset() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.File.reset">(M2Crypto.BIO.File method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.HMAC.reset">(M2Crypto.EVP.HMAC method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.reset_context">reset_context() (M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA">RSA (class in M2Crypto.RSA)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.rsa_error">rsa_error() (in module M2Crypto.RSA)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA_pub">RSA_pub (class in M2Crypto.RSA)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.MemoryBuffer.read">(M2Crypto.BIO.MemoryBuffer method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.read">(M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.MemoryBuffer.read_all">read_all() (M2Crypto.BIO.MemoryBuffer method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.readable">readable() (M2Crypto.BIO.BIO method)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.readline">readline() (M2Crypto.BIO.BIO method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.readlines">readlines() (M2Crypto.BIO.BIO method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.recv">recv() (M2Crypto.SSL.Connection.Connection method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSAError">RSAError</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.recv">(M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.recv_into">recv_into() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.remove_session">remove_session() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.renegotiate">renegotiate() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request">Request (class in M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.m2xmlrpclib.SSL_Transport.request">request() (M2Crypto.m2xmlrpclib.SSL_Transport method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.reset">reset() (M2Crypto.BIO.BIO method)</a>
- </dl></td>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.File.reset">(M2Crypto.BIO.File method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.HMAC.reset">(M2Crypto.EVP.HMAC method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.reset_context">reset_context() (M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA">RSA (class in M2Crypto.RSA)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.rsa_error">rsa_error() (in module M2Crypto.RSA)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA_pub">RSA_pub (class in M2Crypto.RSA)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSAError">RSAError</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="S">S</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.CipherStream.SALT_LEN">SALT_LEN (M2Crypto.BIO.CipherStream attribute)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.PublicKeyRing.PublicKeyRing.save">save() (M2Crypto.PGP.PublicKeyRing.PublicKeyRing method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request.save">(M2Crypto.X509.Request method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.save">(M2Crypto.X509.X509 method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.Rand.save_file">save_file() (in module M2Crypto.Rand)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA.save_key">save_key() (M2Crypto.DSA.DSA method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA_pub.save_key">(M2Crypto.DSA.DSA_pub method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC.save_key">(M2Crypto.EC.EC method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC_pub.save_key">(M2Crypto.EC.EC_pub method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.save_key">(M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.save_key">(M2Crypto.RSA.RSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA_pub.save_key">(M2Crypto.RSA.RSA_pub method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA.save_key_bio">save_key_bio() (M2Crypto.DSA.DSA method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA_pub.save_key_bio">(M2Crypto.DSA.DSA_pub method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC.save_key_bio">(M2Crypto.EC.EC method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC_pub.save_key_bio">(M2Crypto.EC.EC_pub method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.save_key_bio">(M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.save_key_bio">(M2Crypto.RSA.RSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA_pub.save_key_bio">(M2Crypto.RSA.RSA_pub method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.save_key_der">save_key_der() (M2Crypto.RSA.RSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.save_key_der_bio">save_key_der_bio() (M2Crypto.RSA.RSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA.save_params">save_params() (M2Crypto.DSA.DSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA.save_params_bio">save_params_bio() (M2Crypto.DSA.DSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.save_pem">save_pem() (M2Crypto.RSA.RSA method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request.save_pem">(M2Crypto.X509.Request method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.save_pem">(M2Crypto.X509.X509 method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA.save_pub_key">save_pub_key() (M2Crypto.DSA.DSA method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC.save_pub_key">(M2Crypto.EC.EC method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.save_pub_key">(M2Crypto.RSA.RSA method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA.save_pub_key_bio">save_pub_key_bio() (M2Crypto.DSA.DSA method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC.save_pub_key_bio">(M2Crypto.EC.EC method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.save_pub_key_bio">(M2Crypto.RSA.RSA method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.seek">seek() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.send">send() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.send">(M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.sendall">sendall() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.serverPostConnectionCheck">serverPostConnectionCheck() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session">Session (class in M2Crypto.SSL.Session)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_accept_state">set_accept_state() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_allow_unknown_ca">set_allow_unknown_ca() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_bio">set_bio() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.CipherStream.set_cipher">set_cipher() (M2Crypto.BIO.CipherStream method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.set_cipher">(M2Crypto.SMIME.SMIME method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_cipher_list">set_cipher_list() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_cipher_list">(M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_client_CA_list_from_context">set_client_CA_list_from_context() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_client_CA_list_from_file">set_client_CA_list_from_file() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_client_CA_list_from_file">(M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_connect_state">set_connect_state() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Extension.set_critical">set_critical() (M2Crypto.X509.X509_Extension method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Name_Entry.set_data">set_data() (M2Crypto.X509.X509_Name_Entry method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_TIME.set_datetime">set_datetime() (M2Crypto.ASN1.ASN1_TIME method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.Engine.Engine.set_default">set_default() (M2Crypto.Engine.Engine method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_default_verify_paths">set_default_verify_paths() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_info_callback">set_info_callback() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.set_issuer">set_issuer() (M2Crypto.X509.X509 method)</a>
- </dt>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.CipherStream.SALT_LEN">SALT_LEN (M2Crypto.BIO.CipherStream attribute)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request.save">save() (M2Crypto.X509.Request method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.set_issuer_name">set_issuer_name() (M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RC4.RC4.set_key">set_key() (M2Crypto.RC4.RC4 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.set_not_after">set_not_after() (M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.set_not_before">set_not_before() (M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Name_Entry.set_object">set_object() (M2Crypto.X509.X509_Name_Entry method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_options">set_options() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.Cipher.set_padding">set_padding() (M2Crypto.EVP.Cipher method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DH.set_params">set_params() (in module M2Crypto.DH)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA.set_params">(M2Crypto.DSA.DSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.set_params">(in module M2Crypto.DSA)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_post_connection_check_callback">set_post_connection_check_callback() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request.set_pubkey">set_pubkey() (M2Crypto.X509.Request method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.set_pubkey">(M2Crypto.X509.X509 method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.set_serial_number">set_serial_number() (M2Crypto.X509.X509 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.httpslib.HTTPSConnection.set_session">set_session() (M2Crypto.httpslib.HTTPSConnection method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_session">(M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_session_cache_mode">set_session_cache_mode() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_session_id_ctx">set_session_id_ctx() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_session_id_ctx">(M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_session_timeout">set_session_timeout() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_shutdown">set_shutdown() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_socket_read_timeout">set_socket_read_timeout() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_socket_write_timeout">set_socket_write_timeout() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.SSLBio.set_ssl">set_ssl() (M2Crypto.BIO.SSLBio method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_ssl_close_flag">set_ssl_close_flag() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_TIME.set_string">set_string() (M2Crypto.ASN1.ASN1_TIME method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request.set_subject">set_subject() (M2Crypto.X509.Request method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.set_subject">(M2Crypto.X509.X509 method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request.set_subject_name">set_subject_name() (M2Crypto.X509.Request method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.set_subject_name">(M2Crypto.X509.X509 method)</a>
- </dt>
-
- </dl></dd>
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_TIME.set_time">set_time() (M2Crypto.ASN1.ASN1_TIME method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.set_time">(M2Crypto.SSL.Session.Session method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.set_timeout">set_timeout() (M2Crypto.SSL.Session.Session method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_tlsext_host_name">set_tlsext_host_name() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_tmp_dh">set_tmp_dh() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_tmp_dh_callback">set_tmp_dh_callback() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_tmp_rsa">set_tmp_rsa() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_tmp_rsa_callback">set_tmp_rsa_callback() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_verify">set_verify() (M2Crypto.SSL.Context.Context method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Store.set_verify_cb">set_verify_cb() (M2Crypto.X509.X509_Store method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request.set_version">set_version() (M2Crypto.X509.Request method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.set_version">(M2Crypto.X509.X509 method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.set_x509_stack">set_x509_stack() (M2Crypto.SMIME.SMIME method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.set_x509_store">set_x509_store() (M2Crypto.SMIME.SMIME method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.setblocking">setblocking() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.setsockopt">setsockopt() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.settimeout">settimeout() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.setup_addr">setup_addr() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.setup_ssl">setup_ssl() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.should_read">should_read() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.should_retry">should_retry() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.should_write">should_write() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.shutdown">shutdown() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA.sign">sign() (M2Crypto.DSA.DSA method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA_pub.sign">(M2Crypto.DSA.DSA_pub method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.sign">(M2Crypto.RSA.RSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.sign">(M2Crypto.SMIME.SMIME method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request.sign">(M2Crypto.X509.Request method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.sign">(M2Crypto.X509.X509 method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA.sign_asn1">sign_asn1() (M2Crypto.DSA.DSA method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA_pub.sign_asn1">(M2Crypto.DSA.DSA_pub method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC.sign_dsa">sign_dsa() (M2Crypto.EC.EC method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC.sign_dsa_asn1">sign_dsa_asn1() (M2Crypto.EC.EC method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.sign_final">sign_final() (M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.sign_init">sign_init() (M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.sign_rsassa_pss">sign_rsassa_pss() (M2Crypto.RSA.RSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.sign_update">sign_update() (M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.SignaturePacket">SignaturePacket (class in M2Crypto.PGP.packet)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.size">size() (M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.SMIME">SMIME (class in M2Crypto.SMIME)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.SMIME_Error">SMIME_Error</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.smime_load_pkcs7">smime_load_pkcs7() (in module M2Crypto.SMIME)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.smime_load_pkcs7_bio">smime_load_pkcs7_bio() (in module M2Crypto.SMIME)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.PublicKeyRing.PublicKeyRing.spurious">spurious() (M2Crypto.PGP.PublicKeyRing.PublicKeyRing method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher">ssl_dispatcher (class in M2Crypto.SSL.ssl_dispatcher)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.save">(M2Crypto.X509.X509 method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.Rand.save_file">save_file() (in module M2Crypto.Rand)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA.save_key">save_key() (M2Crypto.DSA.DSA method)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.ssl_get_error">ssl_get_error() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA_pub.save_key">(M2Crypto.DSA.DSA_pub method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC.save_key">(M2Crypto.EC.EC method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC_pub.save_key">(M2Crypto.EC.EC_pub method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.save_key">(M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.save_key">(M2Crypto.RSA.RSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA_pub.save_key">(M2Crypto.RSA.RSA_pub method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA.save_key_bio">save_key_bio() (M2Crypto.DSA.DSA method)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.cb.ssl_info_callback">ssl_info_callback() (in module M2Crypto.SSL.cb)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA_pub.save_key_bio">(M2Crypto.DSA.DSA_pub method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC.save_key_bio">(M2Crypto.EC.EC method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC_pub.save_key_bio">(M2Crypto.EC.EC_pub method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.save_key_bio">(M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.save_key_bio">(M2Crypto.RSA.RSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA_pub.save_key_bio">(M2Crypto.RSA.RSA_pub method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.save_key_der">save_key_der() (M2Crypto.RSA.RSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.save_key_der_bio">save_key_der_bio() (M2Crypto.RSA.RSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA.save_params">save_params() (M2Crypto.DSA.DSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA.save_params_bio">save_params_bio() (M2Crypto.DSA.DSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.save_pem">save_pem() (M2Crypto.RSA.RSA method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.m2xmlrpclib.SSL_Transport">SSL_Transport (class in M2Crypto.m2xmlrpclib)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request.save_pem">(M2Crypto.X509.Request method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.save_pem">(M2Crypto.X509.X509 method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA.save_pub_key">save_pub_key() (M2Crypto.DSA.DSA method)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.cb.ssl_verify_callback">ssl_verify_callback() (in module M2Crypto.SSL.cb)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC.save_pub_key">(M2Crypto.EC.EC method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.save_pub_key">(M2Crypto.RSA.RSA method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA.save_pub_key_bio">save_pub_key_bio() (M2Crypto.DSA.DSA method)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.cb.ssl_verify_callback_allow_unknown_ca">ssl_verify_callback_allow_unknown_ca() (in module M2Crypto.SSL.cb)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC.save_pub_key_bio">(M2Crypto.EC.EC method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.save_pub_key_bio">(M2Crypto.RSA.RSA method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.seek">seek() (M2Crypto.BIO.BIO method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.send">send() (M2Crypto.SSL.Connection.Connection method)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.cb.ssl_verify_callback_stub">ssl_verify_callback_stub() (in module M2Crypto.SSL.cb)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher.send">(M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.sendall">sendall() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.serverPostConnectionCheck">serverPostConnectionCheck() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session">Session (class in M2Crypto.SSL.Session)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_accept_state">set_accept_state() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_allow_unknown_ca">set_allow_unknown_ca() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_bio">set_bio() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.CipherStream.set_cipher">set_cipher() (M2Crypto.BIO.CipherStream method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.SSLBio">SSLBio (class in M2Crypto.BIO)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.set_cipher">(M2Crypto.SMIME.SMIME method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_cipher_list">set_cipher_list() (M2Crypto.SSL.Connection.Connection method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.Err.SSLError">SSLError</a>, <a href="M2Crypto.SSL.html#M2Crypto.SSL.SSLError">[1]</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_cipher_list">(M2Crypto.SSL.Context.Context method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_client_CA_list_from_context">set_client_CA_list_from_context() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_client_CA_list_from_file">set_client_CA_list_from_file() (M2Crypto.SSL.Connection.Connection method)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.SSLServer.SSLServer">SSLServer (class in M2Crypto.SSL.SSLServer)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_client_CA_list_from_file">(M2Crypto.SSL.Context.Context method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_connect_state">set_connect_state() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Extension.set_critical">set_critical() (M2Crypto.X509.X509_Extension method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Name_Entry.set_data">set_data() (M2Crypto.X509.X509_Name_Entry method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_TIME.set_datetime">set_datetime() (M2Crypto.ASN1.ASN1_TIME method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.Engine.Engine.set_default">set_default() (M2Crypto.Engine.Engine method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_default_verify_paths">set_default_verify_paths() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_info_callback">set_info_callback() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.set_issuer">set_issuer() (M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.set_issuer_name">set_issuer_name() (M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RC4.RC4.set_key">set_key() (M2Crypto.RC4.RC4 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.set_not_after">set_not_after() (M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.set_not_before">set_not_before() (M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Name_Entry.set_object">set_object() (M2Crypto.X509.X509_Name_Entry method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_options">set_options() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.Cipher.set_padding">set_padding() (M2Crypto.EVP.Cipher method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DH.set_params">set_params() (in module M2Crypto.DH)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.SSLTimeoutError">SSLTimeoutError</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA.set_params">(M2Crypto.DSA.DSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.set_params">(in module M2Crypto.DSA)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_post_connection_check_callback">set_post_connection_check_callback() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request.set_pubkey">set_pubkey() (M2Crypto.X509.Request method)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Checker.SSLVerificationError">SSLVerificationError</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.set_pubkey">(M2Crypto.X509.X509 method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.set_serial_number">set_serial_number() (M2Crypto.X509.X509 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.httpslib.HTTPSConnection.set_session">set_session() (M2Crypto.httpslib.HTTPSConnection method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.m2crypto.stack_st_OPENSSL_BLOCK.stack">stack (M2Crypto.m2crypto.stack_st_OPENSSL_BLOCK attribute)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_session">(M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ </ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_session_cache_mode">set_session_cache_mode() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_session_id_ctx">set_session_id_ctx() (M2Crypto.SSL.Connection.Connection method)</a>
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.m2crypto.stack_st_OPENSSL_STRING.stack">(M2Crypto.m2crypto.stack_st_OPENSSL_STRING attribute)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_session_id_ctx">(M2Crypto.SSL.Context.Context method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_session_timeout">set_session_timeout() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_shutdown">set_shutdown() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_socket_read_timeout">set_socket_read_timeout() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_socket_write_timeout">set_socket_write_timeout() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.SSLBio.set_ssl">set_ssl() (M2Crypto.BIO.SSLBio method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_ssl_close_flag">set_ssl_close_flag() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_TIME.set_string">set_string() (M2Crypto.ASN1.ASN1_TIME method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request.set_subject">set_subject() (M2Crypto.X509.Request method)</a>
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.m2crypto.stack_st_OPENSSL_BLOCK">stack_st_OPENSSL_BLOCK (class in M2Crypto.m2crypto)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.set_subject">(M2Crypto.X509.X509 method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request.set_subject_name">set_subject_name() (M2Crypto.X509.Request method)</a>
-
- <dt><a href="M2Crypto.html#M2Crypto.m2crypto.stack_st_OPENSSL_STRING">stack_st_OPENSSL_STRING (class in M2Crypto.m2crypto)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.set_subject_name">(M2Crypto.X509.X509 method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.ASN1_TIME.set_time">set_time() (M2Crypto.ASN1.ASN1_TIME method)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.startTLS">startTLS() (M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper method)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.set_time">(M2Crypto.SSL.Session.Session method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.set_timeout">set_timeout() (M2Crypto.SSL.Session.Session method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.set_tlsext_host_name">set_tlsext_host_name() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_tmp_dh">set_tmp_dh() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_tmp_dh_callback">set_tmp_dh_callback() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_tmp_rsa">set_tmp_rsa() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_tmp_rsa_callback">set_tmp_rsa_callback() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Context.Context.set_verify">set_verify() (M2Crypto.SSL.Context.Context method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Store.set_verify_cb">set_verify_cb() (M2Crypto.X509.X509_Store method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request.set_version">set_version() (M2Crypto.X509.Request method)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.timeout.struct_size">struct_size() (in module M2Crypto.SSL.timeout)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.set_version">(M2Crypto.X509.X509 method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.set_x509_stack">set_x509_stack() (M2Crypto.SMIME.SMIME method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.set_x509_store">set_x509_store() (M2Crypto.SMIME.SMIME method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.setblocking">setblocking() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.setsockopt">setsockopt() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.settimeout">settimeout() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.setup_addr">setup_addr() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.setup_ssl">setup_ssl() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.should_read">should_read() (M2Crypto.BIO.BIO method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.should_retry">should_retry() (M2Crypto.BIO.BIO method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.should_write">should_write() (M2Crypto.BIO.BIO method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.shutdown">shutdown() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA.sign">sign() (M2Crypto.DSA.DSA method)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.timeout.struct_to_timeout">struct_to_timeout() (in module M2Crypto.SSL.timeout)</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA_pub.sign">(M2Crypto.DSA.DSA_pub method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.sign">(M2Crypto.RSA.RSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.sign">(M2Crypto.SMIME.SMIME method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request.sign">(M2Crypto.X509.Request method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.sign">(M2Crypto.X509.X509 method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA.sign_asn1">sign_asn1() (M2Crypto.DSA.DSA method)</a>
- </dl></td>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA_pub.sign_asn1">(M2Crypto.DSA.DSA_pub method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC.sign_dsa">sign_dsa() (M2Crypto.EC.EC method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC.sign_dsa_asn1">sign_dsa_asn1() (M2Crypto.EC.EC method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.sign_final">sign_final() (M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.sign_init">sign_init() (M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.sign_rsassa_pss">sign_rsassa_pss() (M2Crypto.RSA.RSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.sign_update">sign_update() (M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.size">size() (M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.SMIME">SMIME (class in M2Crypto.SMIME)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.SMIME_Error">SMIME_Error</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.smime_load_pkcs7">smime_load_pkcs7() (in module M2Crypto.SMIME)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.smime_load_pkcs7_bio">smime_load_pkcs7_bio() (in module M2Crypto.SMIME)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher">ssl_dispatcher (class in M2Crypto.SSL.ssl_dispatcher)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.ssl_get_error">ssl_get_error() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.cb.ssl_info_callback">ssl_info_callback() (in module M2Crypto.SSL.cb)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.m2xmlrpclib.SSL_Transport">SSL_Transport (class in M2Crypto.m2xmlrpclib)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.cb.ssl_verify_callback">ssl_verify_callback() (in module M2Crypto.SSL.cb)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.cb.ssl_verify_callback_allow_unknown_ca">ssl_verify_callback_allow_unknown_ca() (in module M2Crypto.SSL.cb)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.cb.ssl_verify_callback_stub">ssl_verify_callback_stub() (in module M2Crypto.SSL.cb)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.SSLBio">SSLBio (class in M2Crypto.BIO)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.SSLError">SSLError</a>, <a href="M2Crypto.html#M2Crypto.Err.SSLError">[1]</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.SSLServer.SSLServer">SSLServer (class in M2Crypto.SSL.SSLServer)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.SSLTimeoutError">SSLTimeoutError</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Checker.SSLVerificationError">SSLVerificationError</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.startTLS">startTLS() (M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.timeout.struct_size">struct_size() (in module M2Crypto.SSL.timeout)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.timeout.struct_to_timeout">struct_to_timeout() (in module M2Crypto.SSL.timeout)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="T">T</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.tell">tell() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.text_crlf">text_crlf() (in module M2Crypto.SMIME)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.text_crlf_bio">text_crlf_bio() (in module M2Crypto.SMIME)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.m2crypto.stack_st_OPENSSL_BLOCK.this">this (M2Crypto.m2crypto.stack_st_OPENSSL_BLOCK attribute)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.m2crypto.stack_st_OPENSSL_STRING.this">(M2Crypto.m2crypto.stack_st_OPENSSL_STRING attribute)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.m2crypto.stack_st_OPENSSL_BLOCK.thisown">thisown (M2Crypto.m2crypto.stack_st_OPENSSL_BLOCK attribute)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.m2crypto.stack_st_OPENSSL_STRING.thisown">(M2Crypto.m2crypto.stack_st_OPENSSL_STRING attribute)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.SSLServer.ThreadingSSLServer">ThreadingSSLServer (class in M2Crypto.SSL.SSLServer)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.timeout.timeout">timeout (class in M2Crypto.SSL.timeout)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.Packet.timestamp">timestamp() (M2Crypto.PGP.packet.Packet method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper">TLSProtocolWrapper (class in M2Crypto.SSL.TwistedProtocolWrapper)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.TrustPacket">TrustPacket (class in M2Crypto.PGP.packet)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.PKCS7.type">type() (M2Crypto.SMIME.PKCS7 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.LocalTimezone.tzname">tzname() (M2Crypto.ASN1.LocalTimezone method)</a>
- </dt>
-
- </dl></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.tell">tell() (M2Crypto.BIO.BIO method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.text_crlf">text_crlf() (in module M2Crypto.SMIME)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.text_crlf_bio">text_crlf_bio() (in module M2Crypto.SMIME)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.SSLServer.ThreadingSSLServer">ThreadingSSLServer (class in M2Crypto.SSL.SSLServer)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.timeout.timeout">timeout (class in M2Crypto.SSL.timeout)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper">TLSProtocolWrapper (class in M2Crypto.SSL.TwistedProtocolWrapper)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.PKCS7.type">type() (M2Crypto.SMIME.PKCS7 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.LocalTimezone.tzname">tzname() (M2Crypto.ASN1.LocalTimezone method)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="U">U</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.CompressedPacket.uncompress">uncompress() (M2Crypto.PGP.packet.CompressedPacket method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.AuthCookie.unmix">unmix() (in module M2Crypto.AuthCookie)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.AuthCookie.unmix3">unmix3() (in module M2Crypto.AuthCookie)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.unset_cipher">unset_cipher() (M2Crypto.SMIME.SMIME method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.unset_key">unset_key() (M2Crypto.SMIME.SMIME method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.unset_x509_stack">unset_x509_stack() (M2Crypto.SMIME.SMIME method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.unset_x509_store">unset_x509_store() (M2Crypto.SMIME.SMIME method)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.Cipher.update">update() (M2Crypto.EVP.Cipher method)</a>
- </dt>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.AuthCookie.unmix">unmix() (in module M2Crypto.AuthCookie)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.AuthCookie.unmix3">unmix3() (in module M2Crypto.AuthCookie)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.unset_cipher">unset_cipher() (M2Crypto.SMIME.SMIME method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.unset_key">unset_key() (M2Crypto.SMIME.SMIME method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.unset_x509_stack">unset_x509_stack() (M2Crypto.SMIME.SMIME method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.unset_x509_store">unset_x509_store() (M2Crypto.SMIME.SMIME method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.Cipher.update">update() (M2Crypto.EVP.Cipher method)</a>
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.HMAC.update">(M2Crypto.EVP.HMAC method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.MessageDigest.update">(M2Crypto.EVP.MessageDigest method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.update">(M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RC4.RC4.update">(M2Crypto.RC4.RC4 method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.m2xmlrpclib.SSL_Transport.user_agent">user_agent (M2Crypto.m2xmlrpclib.SSL_Transport attribute)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.UserIDPacket.userid">userid() (M2Crypto.PGP.packet.UserIDPacket method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.UserIDPacket">UserIDPacket (class in M2Crypto.PGP.packet)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.ASN1.LocalTimezone.utcoffset">utcoffset() (M2Crypto.ASN1.LocalTimezone method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.util.UtilError">UtilError</a>
- </dt>
-
- </dl></td>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.HMAC.update">(M2Crypto.EVP.HMAC method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.MessageDigest.update">(M2Crypto.EVP.MessageDigest method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.update">(M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RC4.RC4.update">(M2Crypto.RC4.RC4 method)</a>
+</li>
+ </ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.m2xmlrpclib.SSL_Transport.user_agent">user_agent (M2Crypto.m2xmlrpclib.SSL_Transport attribute)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.ASN1.LocalTimezone.utcoffset">utcoffset() (M2Crypto.ASN1.LocalTimezone method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.util.UtilError">UtilError</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="V">V</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.CompressedPacket.validate">validate() (M2Crypto.PGP.packet.CompressedPacket method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.Packet.validate">(M2Crypto.PGP.packet.Packet method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.SignaturePacket.validate">(M2Crypto.PGP.packet.SignaturePacket method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.Packet.validity">validity() (M2Crypto.PGP.packet.Packet method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.value">value() (M2Crypto.AuthCookie.AuthCookie method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA.verify">verify() (M2Crypto.DSA.DSA method)</a>
- </dt>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.AuthCookie.AuthCookie.value">value() (M2Crypto.AuthCookie.AuthCookie method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA.verify">verify() (M2Crypto.DSA.DSA method)</a>
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.verify">(M2Crypto.RSA.RSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.verify">(M2Crypto.SMIME.SMIME method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.Request.verify">(M2Crypto.X509.Request method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509.verify">(M2Crypto.X509.X509 method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.DSA.DSA.verify_asn1">verify_asn1() (M2Crypto.DSA.DSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC.verify_dsa">verify_dsa() (M2Crypto.EC.EC method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EC.EC.verify_dsa_asn1">verify_dsa_asn1() (M2Crypto.EC.EC method)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.verify_final">verify_final() (M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.verify_init">verify_init() (M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.verify_ok">verify_ok() (M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.RSA.RSA.verify_rsassa_pss">verify_rsassa_pss() (M2Crypto.RSA.RSA method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.EVP.PKey.verify_update">verify_update() (M2Crypto.EVP.PKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.Packet.version">version() (M2Crypto.PGP.packet.Packet method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Cipher.Cipher.version">(M2Crypto.SSL.Cipher.Cipher method)</a>
- </dt>
-
- </dl></dd>
- </dl></td>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.verify">(M2Crypto.RSA.RSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.verify">(M2Crypto.SMIME.SMIME method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.Request.verify">(M2Crypto.X509.Request method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509.verify">(M2Crypto.X509.X509 method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.html#M2Crypto.DSA.DSA.verify_asn1">verify_asn1() (M2Crypto.DSA.DSA method)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC.verify_dsa">verify_dsa() (M2Crypto.EC.EC method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EC.EC.verify_dsa_asn1">verify_dsa_asn1() (M2Crypto.EC.EC method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.verify_final">verify_final() (M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.verify_init">verify_init() (M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.verify_ok">verify_ok() (M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.RSA.RSA.verify_rsassa_pss">verify_rsassa_pss() (M2Crypto.RSA.RSA method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.EVP.PKey.verify_update">verify_update() (M2Crypto.EVP.PKey method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Cipher.Cipher.version">version() (M2Crypto.SSL.Cipher.Cipher method)</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="W">W</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.write">write() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.PublicKey.PublicKey.write">(M2Crypto.PGP.PublicKey.PublicKey method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.PKCS7.write">(M2Crypto.SMIME.PKCS7 method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.write">(M2Crypto.SMIME.SMIME method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.write">(M2Crypto.SSL.Connection.Connection method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.write">(M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.write_bio">write_bio() (M2Crypto.SSL.Session.Session method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.write_close">write_close() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
- <dd><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.CipherStream.write_close">(M2Crypto.BIO.CipherStream method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.MemoryBuffer.write_close">(M2Crypto.BIO.MemoryBuffer method)</a>
- </dt>
-
- </dl></dd>
-
- <dt><a href="M2Crypto.html#M2Crypto.SMIME.PKCS7.write_der">write_der() (M2Crypto.SMIME.PKCS7 method)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.BIO.BIO.writeable">writeable() (M2Crypto.BIO.BIO method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.writeSequence">writeSequence() (M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper method)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Checker.WrongCertificate">WrongCertificate</a>
- </dt>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.write">write() (M2Crypto.BIO.BIO method)</a>
-
- <dt><a href="M2Crypto.SSL.html#M2Crypto.SSL.Checker.WrongHost">WrongHost</a>
- </dt>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.PKCS7.write">(M2Crypto.SMIME.PKCS7 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.SMIME.write">(M2Crypto.SMIME.SMIME method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Connection.Connection.write">(M2Crypto.SSL.Connection.Connection method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.write">(M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper method)</a>
+</li>
+ </ul></li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Session.Session.write_bio">write_bio() (M2Crypto.SSL.Session.Session method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.write_close">write_close() (M2Crypto.BIO.BIO method)</a>
- </dl></td>
+ <ul>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.CipherStream.write_close">(M2Crypto.BIO.CipherStream method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.MemoryBuffer.write_close">(M2Crypto.BIO.MemoryBuffer method)</a>
+</li>
+ </ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.SMIME.PKCS7.write_der">write_der() (M2Crypto.SMIME.PKCS7 method)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.BIO.BIO.writeable">writeable() (M2Crypto.BIO.BIO method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper.writeSequence">writeSequence() (M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper method)</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Checker.WrongCertificate">WrongCertificate</a>
+</li>
+ <li><a href="M2Crypto.SSL.html#M2Crypto.SSL.Checker.WrongHost">WrongHost</a>
+</li>
+ </ul></td>
</tr></table>
<h2 id="X">X</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509">X509 (class in M2Crypto.X509)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Extension">X509_Extension (class in M2Crypto.X509)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Extension_Stack">X509_Extension_Stack (class in M2Crypto.X509)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Name">X509_Name (class in M2Crypto.X509)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Name_Entry">X509_Name_Entry (class in M2Crypto.X509)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Stack">X509_Stack (class in M2Crypto.X509)</a>
- </dt>
-
- </dl></td>
- <td style="width: 33%" valign="top"><dl>
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Store">X509_Store (class in M2Crypto.X509)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509_Store_Context">X509_Store_Context (class in M2Crypto.X509)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.x509_store_default_cb">x509_store_default_cb() (in module M2Crypto.X509)</a>
- </dt>
-
-
- <dt><a href="M2Crypto.html#M2Crypto.X509.X509Error">X509Error</a>
- </dt>
-
-
- <dt><a href="M2Crypto.PGP.html#M2Crypto.PGP.packet.XXXError">XXXError</a>
- </dt>
-
- </dl></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509">X509 (class in M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Extension">X509_Extension (class in M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Extension_Stack">X509_Extension_Stack (class in M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Name">X509_Name (class in M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Name_Entry">X509_Name_Entry (class in M2Crypto.X509)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Stack">X509_Stack (class in M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Store">X509_Store (class in M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509_Store_Context">X509_Store_Context (class in M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.x509_store_default_cb">x509_store_default_cb() (in module M2Crypto.X509)</a>
+</li>
+ <li><a href="M2Crypto.html#M2Crypto.X509.X509Error">X509Error</a>
+</li>
+ </ul></td>
</tr></table>
@@ -3216,43 +1673,42 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
-
+ <div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="index.html">Documentation overview</a><ul>
+ </ul></li>
+</ul>
+</div>
-<div id="searchbox" style="display: none">
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="#" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/howto.ca.html b/doc/html/howto.ca.html
index b3625ec..8a30e5a 100644
--- a/doc/html/howto.ca.html
+++ b/doc/html/howto.ca.html
@@ -1,50 +1,42 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>HOWTO: Creating your own CA with OpenSSL &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
+ <title>HOWTO: Creating your own CA with OpenSSL &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: './',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="index.html" />
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+
+ <link rel="stylesheet" href="_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<div class="section" id="howto-creating-your-own-ca-with-openssl">
<span id="howto-ca"></span><h1>HOWTO: Creating your own CA with OpenSSL<a class="headerlink" href="#howto-creating-your-own-ca-with-openssl" title="Permalink to this headline">¶</a></h1>
@@ -64,30 +56,30 @@
with OpenSSL.</p>
<p>I last created a CA about a year ago, when I began work on
<a class="reference external" href="https://gitlab.com/m2crypto/m2crypto/">M2Crypto</a> and needed
-certificates for the SSL bits. I accepted the tools&#8217; default
+certificates for the SSL bits. I accepted the tools’ default
settings then, e.g., certificate validity of 365 days; this meant
-that my certificates, including my CA&#8217;s certificate, have now
+that my certificates, including my CA’s certificate, have now
expired.</p>
-<p>Since I am using these certificates for M2Crypto&#8217;s demonstration
-programs (and I have forgotten the passphrase to the CA&#8217;s private
+<p>Since I am using these certificates for M2Crypto’s demonstration
+programs (and I have forgotten the passphrase to the CA’s private
key), I decided to discard the old CA and start afresh. I also
decided to document the process, hence this HOWTO.</p>
</div>
<div class="section" id="the-procedure">
<h2>The Procedure<a class="headerlink" href="#the-procedure" title="Permalink to this headline">¶</a></h2>
-<p>I use <tt class="docutils literal"><span class="pre">CA.pl</span></tt>, a Perl program written by Steve Hanson and bundled with
+<p>I use <code class="docutils literal"><span class="pre">CA.pl</span></code>, a Perl program written by Steve Hanson and bundled with
OpenSSL.</p>
<p>The following are the steps to create a CA:</p>
<ol class="arabic">
<li><p class="first">Choose a directory to do your CA work. All commands are executed
-within this directory. Let&#8217;s call the directory <tt class="docutils literal"><span class="pre">demo</span></tt>.</p>
+within this directory. Let’s call the directory <code class="docutils literal"><span class="pre">demo</span></code>.</p>
</li>
-<li><p class="first">Copy <tt class="docutils literal"><span class="pre">CA.pl</span></tt> and <tt class="docutils literal"><span class="pre">openssl.cnf</span></tt> into <tt class="docutils literal"><span class="pre">demo</span></tt>.</p>
+<li><p class="first">Copy <code class="docutils literal"><span class="pre">CA.pl</span></code> and <code class="docutils literal"><span class="pre">openssl.cnf</span></code> into <code class="docutils literal"><span class="pre">demo</span></code>.</p>
</li>
-<li><p class="first">Apply the following patch to <tt class="docutils literal"><span class="pre">CA.pl</span></tt>, which allows it to generate a
+<li><p class="first">Apply the following patch to <code class="docutils literal"><span class="pre">CA.pl</span></code>, which allows it to generate a
CA certificate with a validity period of 1095 days, i.e.,
3 years:</p>
-<div class="highlight-python"><pre>--- CA.pl.org Sat Mar 31 12:40:13 2001
+<div class="highlight-default"><div class="highlight"><pre><span></span>--- CA.pl.org Sat Mar 31 12:40:13 2001
+++ CA.pl Sat Mar 31 12:41:15 2001
@@ -97,7 +97,7 @@
} else {
@@ -97,185 +89,191 @@ CA certificate with a validity period of 1095 days, i.e.,
+ &quot;${CATOP}/private/$CAKEY -out ${CATOP}/$CACERT -days 1095&quot;);
$RET=$?;
}
- }</pre>
+ }
+</pre></div>
</div>
</li>
<li><p class="first">Create a new CA like this:</p>
-<div class="highlight-python"><pre>./CA.pl -newca
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">CA</span><span class="o">.</span><span class="n">pl</span> <span class="o">-</span><span class="n">newca</span>
-A certificate filename (or enter to create) &lt;enter&gt;
+<span class="n">A</span> <span class="n">certificate</span> <span class="n">filename</span> <span class="p">(</span><span class="ow">or</span> <span class="n">enter</span> <span class="n">to</span> <span class="n">create</span><span class="p">)</span> <span class="o">&lt;</span><span class="n">enter</span><span class="o">&gt;</span>
-Making CA certificate ...
-Using configuration from openssl.cnf
-Generating a 1024 bit RSA private key
-............++++++
-......................++++++
-writing new private key to &#x27;./demoCA/private/cakey.pem&#x27;
-Enter PEM pass phrase: &lt;secret passphrase here&gt;
-Verifying password - Enter PEM pass phrase: &lt;secret passphrase again&gt;
------
-You are about to be asked to enter information that will be incorporated
-into your certificate request.
-What you are about to enter is what is called a Distinguished Name or a DN.
-There are quite a few fields but you can leave some blank
-For some fields there will be a default value,
-If you enter &#x27;.&#x27;, the field will be left blank.
------
-Country Name (2 letter code) [AU]:SG
-State or Province Name (full name) [Some-State]:.
-Locality Name (eg, city) []:..
-Organization Name (eg, company) [Internet Widgits Pty Ltd]:DemoCA
-Organizational Unit Name (eg, section) []:.
-Common Name (eg, YOUR name) []:DemoCA Certificate Master
-Email Address []:certmaster@democa.dom</pre>
+<span class="n">Making</span> <span class="n">CA</span> <span class="n">certificate</span> <span class="o">...</span>
+<span class="n">Using</span> <span class="n">configuration</span> <span class="kn">from</span> <span class="nn">openssl.cnf</span>
+<span class="n">Generating</span> <span class="n">a</span> <span class="mi">1024</span> <span class="n">bit</span> <span class="n">RSA</span> <span class="n">private</span> <span class="n">key</span>
+<span class="o">............++++++</span>
+<span class="o">......................++++++</span>
+<span class="n">writing</span> <span class="n">new</span> <span class="n">private</span> <span class="n">key</span> <span class="n">to</span> <span class="s1">&#39;./demoCA/private/cakey.pem&#39;</span>
+<span class="n">Enter</span> <span class="n">PEM</span> <span class="k">pass</span> <span class="n">phrase</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">secret</span> <span class="n">passphrase</span> <span class="n">here</span><span class="o">&gt;</span>
+<span class="n">Verifying</span> <span class="n">password</span> <span class="o">-</span> <span class="n">Enter</span> <span class="n">PEM</span> <span class="k">pass</span> <span class="n">phrase</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">secret</span> <span class="n">passphrase</span> <span class="n">again</span><span class="o">&gt;</span>
+<span class="o">-----</span>
+<span class="n">You</span> <span class="n">are</span> <span class="n">about</span> <span class="n">to</span> <span class="n">be</span> <span class="n">asked</span> <span class="n">to</span> <span class="n">enter</span> <span class="n">information</span> <span class="n">that</span> <span class="n">will</span> <span class="n">be</span> <span class="n">incorporated</span>
+<span class="n">into</span> <span class="n">your</span> <span class="n">certificate</span> <span class="n">request</span><span class="o">.</span>
+<span class="n">What</span> <span class="n">you</span> <span class="n">are</span> <span class="n">about</span> <span class="n">to</span> <span class="n">enter</span> <span class="ow">is</span> <span class="n">what</span> <span class="ow">is</span> <span class="n">called</span> <span class="n">a</span> <span class="n">Distinguished</span> <span class="n">Name</span> <span class="ow">or</span> <span class="n">a</span> <span class="n">DN</span><span class="o">.</span>
+<span class="n">There</span> <span class="n">are</span> <span class="n">quite</span> <span class="n">a</span> <span class="n">few</span> <span class="n">fields</span> <span class="n">but</span> <span class="n">you</span> <span class="n">can</span> <span class="n">leave</span> <span class="n">some</span> <span class="n">blank</span>
+<span class="n">For</span> <span class="n">some</span> <span class="n">fields</span> <span class="n">there</span> <span class="n">will</span> <span class="n">be</span> <span class="n">a</span> <span class="n">default</span> <span class="n">value</span><span class="p">,</span>
+<span class="n">If</span> <span class="n">you</span> <span class="n">enter</span> <span class="s1">&#39;.&#39;</span><span class="p">,</span> <span class="n">the</span> <span class="n">field</span> <span class="n">will</span> <span class="n">be</span> <span class="n">left</span> <span class="n">blank</span><span class="o">.</span>
+<span class="o">-----</span>
+<span class="n">Country</span> <span class="n">Name</span> <span class="p">(</span><span class="mi">2</span> <span class="n">letter</span> <span class="n">code</span><span class="p">)</span> <span class="p">[</span><span class="n">AU</span><span class="p">]:</span><span class="n">SG</span>
+<span class="n">State</span> <span class="ow">or</span> <span class="n">Province</span> <span class="n">Name</span> <span class="p">(</span><span class="n">full</span> <span class="n">name</span><span class="p">)</span> <span class="p">[</span><span class="n">Some</span><span class="o">-</span><span class="n">State</span><span class="p">]:</span><span class="o">.</span>
+<span class="n">Locality</span> <span class="n">Name</span> <span class="p">(</span><span class="n">eg</span><span class="p">,</span> <span class="n">city</span><span class="p">)</span> <span class="p">[]:</span><span class="o">..</span>
+<span class="n">Organization</span> <span class="n">Name</span> <span class="p">(</span><span class="n">eg</span><span class="p">,</span> <span class="n">company</span><span class="p">)</span> <span class="p">[</span><span class="n">Internet</span> <span class="n">Widgits</span> <span class="n">Pty</span> <span class="n">Ltd</span><span class="p">]:</span><span class="n">DemoCA</span>
+<span class="n">Organizational</span> <span class="n">Unit</span> <span class="n">Name</span> <span class="p">(</span><span class="n">eg</span><span class="p">,</span> <span class="n">section</span><span class="p">)</span> <span class="p">[]:</span><span class="o">.</span>
+<span class="n">Common</span> <span class="n">Name</span> <span class="p">(</span><span class="n">eg</span><span class="p">,</span> <span class="n">YOUR</span> <span class="n">name</span><span class="p">)</span> <span class="p">[]:</span><span class="n">DemoCA</span> <span class="n">Certificate</span> <span class="n">Master</span>
+<span class="n">Email</span> <span class="n">Address</span> <span class="p">[]:</span><span class="n">certmaster</span><span class="nd">@democa</span><span class="o">.</span><span class="n">dom</span>
+</pre></div>
</div>
-<p>This creates a new CA in the directory <tt class="docutils literal"><span class="pre">demoCA</span></tt>. The CA&#8217;s
-self-signed certificate is in <tt class="docutils literal"><span class="pre">demoCA/cacert.pem</span></tt> and its RSA key
-pair is in <tt class="docutils literal"><span class="pre">demoCA/private/cakey.pem</span></tt>.</p>
-<p><tt class="docutils literal"><span class="pre">demoCA/private/cakey.pem</span></tt> looks like this:</p>
-<div class="highlight-python"><pre>cat demoCA/private/cakey.pem
+<p>This creates a new CA in the directory <code class="docutils literal"><span class="pre">demoCA</span></code>. The CA’s
+self-signed certificate is in <code class="docutils literal"><span class="pre">demoCA/cacert.pem</span></code> and its RSA key
+pair is in <code class="docutils literal"><span class="pre">demoCA/private/cakey.pem</span></code>.</p>
+<p><code class="docutils literal"><span class="pre">demoCA/private/cakey.pem</span></code> looks like this:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">cat</span> <span class="n">demoCA</span><span class="o">/</span><span class="n">private</span><span class="o">/</span><span class="n">cakey</span><span class="o">.</span><span class="n">pem</span>
------BEGIN RSA PRIVATE KEY-----
-Proc-Type: 4,ENCRYPTED
-DEK-Info: DES-EDE3-CBC,19973A9DBBB601BA
+<span class="o">-----</span><span class="n">BEGIN</span> <span class="n">RSA</span> <span class="n">PRIVATE</span> <span class="n">KEY</span><span class="o">-----</span>
+<span class="n">Proc</span><span class="o">-</span><span class="n">Type</span><span class="p">:</span> <span class="mi">4</span><span class="p">,</span><span class="n">ENCRYPTED</span>
+<span class="n">DEK</span><span class="o">-</span><span class="n">Info</span><span class="p">:</span> <span class="n">DES</span><span class="o">-</span><span class="n">EDE3</span><span class="o">-</span><span class="n">CBC</span><span class="p">,</span><span class="mi">19973</span><span class="n">A9DBBB601BA</span>
-eOq9WFScNiI4/UWEUaSnGTKpJv2JYuMD3HwQox2Q3Cd4zGqVjJ6gF3exa5126cKf
-X/bMVnwbPpuFZPiAIvaLyCjT6pYeXTBbSzs7/GQnvEOv+nYnDUFWi0Qm92qLk0uy
-pFi/M1aWheN3vir2ZlAw+DW0bOOZhj8tC7Co7lMYb0YE271b6/YRPZCwQ3GXAHUJ
-+aMYxlUDrK45aCUa/1CZDzTgk7h9cDgx2QJSIvYMYytCfI3zsuZMJS8/4OXLL0bI
-lKmAc1dwB3DqGJt5XK4WJesiNfdxeCNEgAcYtEAgYZTPIApU+kTgTCIxJl2nMW7j
-ax+Q1z7g+4MpgG20WD633D4z4dTlDdz+dnLi0rvuvxiwt+dUhrqiML1tyi+Z6EBH
-jU4/cLBWev3rYfrlp4x8J9mDte0YKOk3t0wQOHqRetTsIfdtjnFp/Hu3qDmTCWjD
-z/g7PPoO/bg/B877J9WBPbL/1hXXFYo88M+2aGlPOgDcFdiOqbLb2DCscohMbbVr
-A4mgiy2kwWfIE73qiyV7yyG8FlRvr1iib+jbT3LTGf743utYAAs7HNGuOUObhoyt
-jYvBD7ACn35P5YX7KTqvqErwdijxYCaNBCnvmRtmYSaNw9Kv1UJTxc5Vx7YLwIPk
-E9KyBgKI7vPOjWBZ27+zOvNycmv1ciNtpALAw4bWtXnhCDVTHaVDy34OkheMzNCg
-2cjcBFzOkMIjcI03KbTQXOFIQGlsTWXGzkNf/zBQ+KksT1MCj+zBXSCvlDASMckg
-kef21pGgUqPF14gKGfWX3sV4bjc1vbrRwq6zlG3nMuYqR5MtJJY9eQ==
------END RSA PRIVATE KEY-----</pre>
+<span class="n">eOq9WFScNiI4</span><span class="o">/</span><span class="n">UWEUaSnGTKpJv2JYuMD3HwQox2Q3Cd4zGqVjJ6gF3exa5126cKf</span>
+<span class="n">X</span><span class="o">/</span><span class="n">bMVnwbPpuFZPiAIvaLyCjT6pYeXTBbSzs7</span><span class="o">/</span><span class="n">GQnvEOv</span><span class="o">+</span><span class="n">nYnDUFWi0Qm92qLk0uy</span>
+<span class="n">pFi</span><span class="o">/</span><span class="n">M1aWheN3vir2ZlAw</span><span class="o">+</span><span class="n">DW0bOOZhj8tC7Co7lMYb0YE271b6</span><span class="o">/</span><span class="n">YRPZCwQ3GXAHUJ</span>
+<span class="o">+</span><span class="n">aMYxlUDrK45aCUa</span><span class="o">/</span><span class="mi">1</span><span class="n">CZDzTgk7h9cDgx2QJSIvYMYytCfI3zsuZMJS8</span><span class="o">/</span><span class="mi">4</span><span class="n">OXLL0bI</span>
+<span class="n">lKmAc1dwB3DqGJt5XK4WJesiNfdxeCNEgAcYtEAgYZTPIApU</span><span class="o">+</span><span class="n">kTgTCIxJl2nMW7j</span>
+<span class="n">ax</span><span class="o">+</span><span class="n">Q1z7g</span><span class="o">+</span><span class="mi">4</span><span class="n">MpgG20WD633D4z4dTlDdz</span><span class="o">+</span><span class="n">dnLi0rvuvxiwt</span><span class="o">+</span><span class="n">dUhrqiML1tyi</span><span class="o">+</span><span class="n">Z6EBH</span>
+<span class="n">jU4</span><span class="o">/</span><span class="n">cLBWev3rYfrlp4x8J9mDte0YKOk3t0wQOHqRetTsIfdtjnFp</span><span class="o">/</span><span class="n">Hu3qDmTCWjD</span>
+<span class="n">z</span><span class="o">/</span><span class="n">g7PPoO</span><span class="o">/</span><span class="n">bg</span><span class="o">/</span><span class="n">B877J9WBPbL</span><span class="o">/</span><span class="mi">1</span><span class="n">hXXFYo88M</span><span class="o">+</span><span class="mi">2</span><span class="n">aGlPOgDcFdiOqbLb2DCscohMbbVr</span>
+<span class="n">A4mgiy2kwWfIE73qiyV7yyG8FlRvr1iib</span><span class="o">+</span><span class="n">jbT3LTGf743utYAAs7HNGuOUObhoyt</span>
+<span class="n">jYvBD7ACn35P5YX7KTqvqErwdijxYCaNBCnvmRtmYSaNw9Kv1UJTxc5Vx7YLwIPk</span>
+<span class="n">E9KyBgKI7vPOjWBZ27</span><span class="o">+</span><span class="n">zOvNycmv1ciNtpALAw4bWtXnhCDVTHaVDy34OkheMzNCg</span>
+<span class="mi">2</span><span class="n">cjcBFzOkMIjcI03KbTQXOFIQGlsTWXGzkNf</span><span class="o">/</span><span class="n">zBQ</span><span class="o">+</span><span class="n">KksT1MCj</span><span class="o">+</span><span class="n">zBXSCvlDASMckg</span>
+<span class="n">kef21pGgUqPF14gKGfWX3sV4bjc1vbrRwq6zlG3nMuYqR5MtJJY9eQ</span><span class="o">==</span>
+<span class="o">-----</span><span class="n">END</span> <span class="n">RSA</span> <span class="n">PRIVATE</span> <span class="n">KEY</span><span class="o">-----</span>
+</pre></div>
</div>
</li>
<li><p class="first">Next, generate a certificate request:</p>
-<div class="highlight-python"><pre>./CA.pl -newreq
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">./</span><span class="n">CA</span><span class="o">.</span><span class="n">pl</span> <span class="o">-</span><span class="n">newreq</span>
-Using configuration from openssl.cnf
-Generating a 1024 bit RSA private key
-..........++++++
-..............++++++
-writing new private key to &#x27;newreq.pem&#x27;
-Enter PEM pass phrase: &lt;another secret passphrase here&gt;
-Verifying password - Enter PEM pass phrase: &lt;another secret passphrase again&gt;
------
-You are about to be asked to enter information that will be incorporated
-into your certificate request.
-What you are about to enter is what is called a Distinguished Name or a DN.
-There are quite a few fields but you can leave some blank
-For some fields there will be a default value,
-If you enter &#x27;.&#x27;, the field will be left blank.
------
-Country Name (2 letter code) [AU]:SG
-State or Province Name (full name) [Some-State]:..
-Locality Name (eg, city) []:.
-Organization Name (eg, company) [Internet Widgits Pty Ltd]:M2Crypto
-Organizational Unit Name (eg, section) []:.
-Common Name (eg, YOUR name) []:localhost
-Email Address []:admin@server.example.dom
+<span class="n">Using</span> <span class="n">configuration</span> <span class="kn">from</span> <span class="nn">openssl.cnf</span>
+<span class="n">Generating</span> <span class="n">a</span> <span class="mi">1024</span> <span class="n">bit</span> <span class="n">RSA</span> <span class="n">private</span> <span class="n">key</span>
+<span class="o">..........++++++</span>
+<span class="o">..............++++++</span>
+<span class="n">writing</span> <span class="n">new</span> <span class="n">private</span> <span class="n">key</span> <span class="n">to</span> <span class="s1">&#39;newreq.pem&#39;</span>
+<span class="n">Enter</span> <span class="n">PEM</span> <span class="k">pass</span> <span class="n">phrase</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">another</span> <span class="n">secret</span> <span class="n">passphrase</span> <span class="n">here</span><span class="o">&gt;</span>
+<span class="n">Verifying</span> <span class="n">password</span> <span class="o">-</span> <span class="n">Enter</span> <span class="n">PEM</span> <span class="k">pass</span> <span class="n">phrase</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">another</span> <span class="n">secret</span> <span class="n">passphrase</span> <span class="n">again</span><span class="o">&gt;</span>
+<span class="o">-----</span>
+<span class="n">You</span> <span class="n">are</span> <span class="n">about</span> <span class="n">to</span> <span class="n">be</span> <span class="n">asked</span> <span class="n">to</span> <span class="n">enter</span> <span class="n">information</span> <span class="n">that</span> <span class="n">will</span> <span class="n">be</span> <span class="n">incorporated</span>
+<span class="n">into</span> <span class="n">your</span> <span class="n">certificate</span> <span class="n">request</span><span class="o">.</span>
+<span class="n">What</span> <span class="n">you</span> <span class="n">are</span> <span class="n">about</span> <span class="n">to</span> <span class="n">enter</span> <span class="ow">is</span> <span class="n">what</span> <span class="ow">is</span> <span class="n">called</span> <span class="n">a</span> <span class="n">Distinguished</span> <span class="n">Name</span> <span class="ow">or</span> <span class="n">a</span> <span class="n">DN</span><span class="o">.</span>
+<span class="n">There</span> <span class="n">are</span> <span class="n">quite</span> <span class="n">a</span> <span class="n">few</span> <span class="n">fields</span> <span class="n">but</span> <span class="n">you</span> <span class="n">can</span> <span class="n">leave</span> <span class="n">some</span> <span class="n">blank</span>
+<span class="n">For</span> <span class="n">some</span> <span class="n">fields</span> <span class="n">there</span> <span class="n">will</span> <span class="n">be</span> <span class="n">a</span> <span class="n">default</span> <span class="n">value</span><span class="p">,</span>
+<span class="n">If</span> <span class="n">you</span> <span class="n">enter</span> <span class="s1">&#39;.&#39;</span><span class="p">,</span> <span class="n">the</span> <span class="n">field</span> <span class="n">will</span> <span class="n">be</span> <span class="n">left</span> <span class="n">blank</span><span class="o">.</span>
+<span class="o">-----</span>
+<span class="n">Country</span> <span class="n">Name</span> <span class="p">(</span><span class="mi">2</span> <span class="n">letter</span> <span class="n">code</span><span class="p">)</span> <span class="p">[</span><span class="n">AU</span><span class="p">]:</span><span class="n">SG</span>
+<span class="n">State</span> <span class="ow">or</span> <span class="n">Province</span> <span class="n">Name</span> <span class="p">(</span><span class="n">full</span> <span class="n">name</span><span class="p">)</span> <span class="p">[</span><span class="n">Some</span><span class="o">-</span><span class="n">State</span><span class="p">]:</span><span class="o">..</span>
+<span class="n">Locality</span> <span class="n">Name</span> <span class="p">(</span><span class="n">eg</span><span class="p">,</span> <span class="n">city</span><span class="p">)</span> <span class="p">[]:</span><span class="o">.</span>
+<span class="n">Organization</span> <span class="n">Name</span> <span class="p">(</span><span class="n">eg</span><span class="p">,</span> <span class="n">company</span><span class="p">)</span> <span class="p">[</span><span class="n">Internet</span> <span class="n">Widgits</span> <span class="n">Pty</span> <span class="n">Ltd</span><span class="p">]:</span><span class="n">M2Crypto</span>
+<span class="n">Organizational</span> <span class="n">Unit</span> <span class="n">Name</span> <span class="p">(</span><span class="n">eg</span><span class="p">,</span> <span class="n">section</span><span class="p">)</span> <span class="p">[]:</span><span class="o">.</span>
+<span class="n">Common</span> <span class="n">Name</span> <span class="p">(</span><span class="n">eg</span><span class="p">,</span> <span class="n">YOUR</span> <span class="n">name</span><span class="p">)</span> <span class="p">[]:</span><span class="n">localhost</span>
+<span class="n">Email</span> <span class="n">Address</span> <span class="p">[]:</span><span class="n">admin</span><span class="nd">@server</span><span class="o">.</span><span class="n">example</span><span class="o">.</span><span class="n">dom</span>
-Please enter the following &#x27;extra&#x27; attributes
-to be sent with your certificate request
-A challenge password []:&lt;enter&gt;
-An optional company name []:&lt;enter&gt;
-Request (and private key) is in newreq.pem</pre>
+<span class="n">Please</span> <span class="n">enter</span> <span class="n">the</span> <span class="n">following</span> <span class="s1">&#39;extra&#39;</span> <span class="n">attributes</span>
+<span class="n">to</span> <span class="n">be</span> <span class="n">sent</span> <span class="k">with</span> <span class="n">your</span> <span class="n">certificate</span> <span class="n">request</span>
+<span class="n">A</span> <span class="n">challenge</span> <span class="n">password</span> <span class="p">[]:</span><span class="o">&lt;</span><span class="n">enter</span><span class="o">&gt;</span>
+<span class="n">An</span> <span class="n">optional</span> <span class="n">company</span> <span class="n">name</span> <span class="p">[]:</span><span class="o">&lt;</span><span class="n">enter</span><span class="o">&gt;</span>
+<span class="n">Request</span> <span class="p">(</span><span class="ow">and</span> <span class="n">private</span> <span class="n">key</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">in</span> <span class="n">newreq</span><span class="o">.</span><span class="n">pem</span>
+</pre></div>
</div>
</li>
</ol>
<p></p>
<blockquote>
-<div><p>The certificate request and private key in <tt class="docutils literal"><span class="pre">newreq.pem</span></tt> looks like
+<div><p>The certificate request and private key in <code class="docutils literal"><span class="pre">newreq.pem</span></code> looks like
this:</p>
-<div class="highlight-python"><pre>cat newreq.pem
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">cat</span> <span class="n">newreq</span><span class="o">.</span><span class="n">pem</span>
------BEGIN RSA PRIVATE KEY-----
-Proc-Type: 4,ENCRYPTED
-DEK-Info: DES-EDE3-CBC,41B2874DF3D02DD4
+<span class="o">-----</span><span class="n">BEGIN</span> <span class="n">RSA</span> <span class="n">PRIVATE</span> <span class="n">KEY</span><span class="o">-----</span>
+<span class="n">Proc</span><span class="o">-</span><span class="n">Type</span><span class="p">:</span> <span class="mi">4</span><span class="p">,</span><span class="n">ENCRYPTED</span>
+<span class="n">DEK</span><span class="o">-</span><span class="n">Info</span><span class="p">:</span> <span class="n">DES</span><span class="o">-</span><span class="n">EDE3</span><span class="o">-</span><span class="n">CBC</span><span class="p">,</span><span class="mi">41</span><span class="n">B2874DF3D02DD4</span>
-mg611EoVkLEooSTv+qTM0Ddmm/M1jE/Jy5RD/sc3LSMhuGu9xc26OgsTJmkQuIAh
-J/B4lAw8G59VTG6DykeEtrG0rUBx4bggc7PKbFuiN423YjJODWcHvVgnPOzXMQt+
-lY4tPl5+217MRHyx2NsWGrpkQNdu3GeSPOVMl3jeQiaXupONbwQ7rj42+X/VtAJP
-W4D1NNwu8aGCPyShsEXHc/fI1WDpphYWke97pOjIZVQESFZOPty5HjIYZux4U+td
-W81xODtq2ecJXc8fn2Wpa9y5VD1LT7oJksOuL1+Z04OVaeUe4x0swM17HlBm2kVt
-fe/C/L6kN27MwZhE331VjtTjSGl4/gknqQDbLOtqT06f3OISsDJETm2itllyhgzv
-C6Fi3N03rGFmKectijC+tws5k+P+HRG6sai33usk8xPokJqA+HYSWPz1XVlpRmv4
-kdjQOdST7ovU62mOTgf3ARcduPPwuzTfxOlYONe5NioO1APVHBrInQwcpLkpOTQR
-vI4roIN+b75/nihUWGUJn/nbbBa2Yl0N5Gs1Tyiy9Z+CcRT2TfWKBBFlEUIFl7Mb
-J9fTV3DI+k+akbR4il1NkQ8EcSmCr3WpA0I9n0EHI7ZVpVaHxc0sqaPFl8YGdFHq
-1Qk53C/w6+qPpDzT3yKFmG2LZytAAM1czvb6RbNRJJP2ZrpBwn/h99sUTo/yPfxY
-nueYmFJDm0uVNtG0icXGNUfSfnjKNTtHPAgyKGetRIC3kgJz/bo2w7EI6iEjBAzK
-l5TRm4x6ZJxwuXXMiJCehMMd8TC8ybwWO4AO19B3ebFFeTVsUgxSGA==
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE REQUEST-----
-MIIBnTCCAQYCAQAwXTELMAkGA1UEBhMCU0cxETAPBgNVBAoTCE0yQ3J5cHRvMRIw
-EAYDVQQDEwlsb2NhbGhvc3QxJzAlBgkqhkiG9w0BCQEWGGFkbWluQHNlcnZlci5l
-eGFtcGxlLmRvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAr1nYY1Qrll1r
-uB/FqlCRrr5nvupdIN+3wF7q915tvEQoc74bnu6b8IbbGRMhzdzmvQ4SzFfVEAuM
-MuTHeybPq5th7YDrTNizKKxOBnqE2KYuX9X22A1Kh49soJJFg6kPb9MUgiZBiMlv
-tb7K3CHfgw5WagWnLl8Lb+ccvKZZl+8CAwEAAaAAMA0GCSqGSIb3DQEBBAUAA4GB
-AHpoRp5YS55CZpy+wdigQEwjL/wSluvo+WjtpvP0YoBMJu4VMKeZi405R7o8oEwi
-PdlrrliKNknFmHKIaCKTLRcU59ScA6ADEIWUzqmUzP5Cs6jrSRo3NKfg1bd09D1K
-9rsQkRc9Urv9mRBIsredGnYECNeRaK5R1yzpOowninXC
------END CERTIFICATE REQUEST-----</pre>
+<span class="n">mg611EoVkLEooSTv</span><span class="o">+</span><span class="n">qTM0Ddmm</span><span class="o">/</span><span class="n">M1jE</span><span class="o">/</span><span class="n">Jy5RD</span><span class="o">/</span><span class="n">sc3LSMhuGu9xc26OgsTJmkQuIAh</span>
+<span class="n">J</span><span class="o">/</span><span class="n">B4lAw8G59VTG6DykeEtrG0rUBx4bggc7PKbFuiN423YjJODWcHvVgnPOzXMQt</span><span class="o">+</span>
+<span class="n">lY4tPl5</span><span class="o">+</span><span class="mi">217</span><span class="n">MRHyx2NsWGrpkQNdu3GeSPOVMl3jeQiaXupONbwQ7rj42</span><span class="o">+</span><span class="n">X</span><span class="o">/</span><span class="n">VtAJP</span>
+<span class="n">W4D1NNwu8aGCPyShsEXHc</span><span class="o">/</span><span class="n">fI1WDpphYWke97pOjIZVQESFZOPty5HjIYZux4U</span><span class="o">+</span><span class="n">td</span>
+<span class="n">W81xODtq2ecJXc8fn2Wpa9y5VD1LT7oJksOuL1</span><span class="o">+</span><span class="n">Z04OVaeUe4x0swM17HlBm2kVt</span>
+<span class="n">fe</span><span class="o">/</span><span class="n">C</span><span class="o">/</span><span class="n">L6kN27MwZhE331VjtTjSGl4</span><span class="o">/</span><span class="n">gknqQDbLOtqT06f3OISsDJETm2itllyhgzv</span>
+<span class="n">C6Fi3N03rGFmKectijC</span><span class="o">+</span><span class="n">tws5k</span><span class="o">+</span><span class="n">P</span><span class="o">+</span><span class="n">HRG6sai33usk8xPokJqA</span><span class="o">+</span><span class="n">HYSWPz1XVlpRmv4</span>
+<span class="n">kdjQOdST7ovU62mOTgf3ARcduPPwuzTfxOlYONe5NioO1APVHBrInQwcpLkpOTQR</span>
+<span class="n">vI4roIN</span><span class="o">+</span><span class="n">b75</span><span class="o">/</span><span class="n">nihUWGUJn</span><span class="o">/</span><span class="n">nbbBa2Yl0N5Gs1Tyiy9Z</span><span class="o">+</span><span class="n">CcRT2TfWKBBFlEUIFl7Mb</span>
+<span class="n">J9fTV3DI</span><span class="o">+</span><span class="n">k</span><span class="o">+</span><span class="n">akbR4il1NkQ8EcSmCr3WpA0I9n0EHI7ZVpVaHxc0sqaPFl8YGdFHq</span>
+<span class="mi">1</span><span class="n">Qk53C</span><span class="o">/</span><span class="n">w6</span><span class="o">+</span><span class="n">qPpDzT3yKFmG2LZytAAM1czvb6RbNRJJP2ZrpBwn</span><span class="o">/</span><span class="n">h99sUTo</span><span class="o">/</span><span class="n">yPfxY</span>
+<span class="n">nueYmFJDm0uVNtG0icXGNUfSfnjKNTtHPAgyKGetRIC3kgJz</span><span class="o">/</span><span class="n">bo2w7EI6iEjBAzK</span>
+<span class="n">l5TRm4x6ZJxwuXXMiJCehMMd8TC8ybwWO4AO19B3ebFFeTVsUgxSGA</span><span class="o">==</span>
+<span class="o">-----</span><span class="n">END</span> <span class="n">RSA</span> <span class="n">PRIVATE</span> <span class="n">KEY</span><span class="o">-----</span>
+<span class="o">-----</span><span class="n">BEGIN</span> <span class="n">CERTIFICATE</span> <span class="n">REQUEST</span><span class="o">-----</span>
+<span class="n">MIIBnTCCAQYCAQAwXTELMAkGA1UEBhMCU0cxETAPBgNVBAoTCE0yQ3J5cHRvMRIw</span>
+<span class="n">EAYDVQQDEwlsb2NhbGhvc3QxJzAlBgkqhkiG9w0BCQEWGGFkbWluQHNlcnZlci5l</span>
+<span class="n">eGFtcGxlLmRvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAr1nYY1Qrll1r</span>
+<span class="n">uB</span><span class="o">/</span><span class="n">FqlCRrr5nvupdIN</span><span class="o">+</span><span class="mi">3</span><span class="n">wF7q915tvEQoc74bnu6b8IbbGRMhzdzmvQ4SzFfVEAuM</span>
+<span class="n">MuTHeybPq5th7YDrTNizKKxOBnqE2KYuX9X22A1Kh49soJJFg6kPb9MUgiZBiMlv</span>
+<span class="n">tb7K3CHfgw5WagWnLl8Lb</span><span class="o">+</span><span class="n">ccvKZZl</span><span class="o">+</span><span class="mi">8</span><span class="n">CAwEAAaAAMA0GCSqGSIb3DQEBBAUAA4GB</span>
+<span class="n">AHpoRp5YS55CZpy</span><span class="o">+</span><span class="n">wdigQEwjL</span><span class="o">/</span><span class="n">wSluvo</span><span class="o">+</span><span class="n">WjtpvP0YoBMJu4VMKeZi405R7o8oEwi</span>
+<span class="n">PdlrrliKNknFmHKIaCKTLRcU59ScA6ADEIWUzqmUzP5Cs6jrSRo3NKfg1bd09D1K</span>
+<span class="mi">9</span><span class="n">rsQkRc9Urv9mRBIsredGnYECNeRaK5R1yzpOowninXC</span>
+<span class="o">-----</span><span class="n">END</span> <span class="n">CERTIFICATE</span> <span class="n">REQUEST</span><span class="o">-----</span>
+</pre></div>
</div>
</div></blockquote>
<p></p>
<blockquote>
<div><p>Decoding the certificate request gives the following:</p>
-<div class="highlight-python"><pre>openssl req -text -noout &lt; newreq.pem
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">openssl</span> <span class="n">req</span> <span class="o">-</span><span class="n">text</span> <span class="o">-</span><span class="n">noout</span> <span class="o">&lt;</span> <span class="n">newreq</span><span class="o">.</span><span class="n">pem</span>
-Using configuration from /usr/local/pkg/openssl/openssl.cnf
-Certificate Request:
- Data:
- Version: 0 (0x0)
- Subject: C=SG, O=M2Crypto, CN=localhost/Email=admin@server.example.dom
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:af:59:d8:63:54:2b:96:5d:6b:b8:1f:c5:aa:50:
- 91:ae:be:67:be:ea:5d:20:df:b7:c0:5e:ea:f7:5e:
- 6d:bc:44:28:73:be:1b:9e:ee:9b:f0:86:db:19:13:
- 21:cd:dc:e6:bd:0e:12:cc:57:d5:10:0b:8c:32:e4:
- c7:7b:26:cf:ab:9b:61:ed:80:eb:4c:d8:b3:28:ac:
- 4e:06:7a:84:d8:a6:2e:5f:d5:f6:d8:0d:4a:87:8f:
- 6c:a0:92:45:83:a9:0f:6f:d3:14:82:26:41:88:c9:
- 6f:b5:be:ca:dc:21:df:83:0e:56:6a:05:a7:2e:5f:
- 0b:6f:e7:1c:bc:a6:59:97:ef
- Exponent: 65537 (0x10001)
- Attributes:
- a0:00
- Signature Algorithm: md5WithRSAEncryption
- 7a:68:46:9e:58:4b:9e:42:66:9c:be:c1:d8:a0:40:4c:23:2f:
- fc:12:96:eb:e8:f9:68:ed:a6:f3:f4:62:80:4c:26:ee:15:30:
- a7:99:8b:8d:39:47:ba:3c:a0:4c:22:3d:d9:6b:ae:58:8a:36:
- 49:c5:98:72:88:68:22:93:2d:17:14:e7:d4:9c:03:a0:03:10:
- 85:94:ce:a9:94:cc:fe:42:b3:a8:eb:49:1a:37:34:a7:e0:d5:
- b7:74:f4:3d:4a:f6:bb:10:91:17:3d:52:bb:fd:99:10:48:b2:
- b7:9d:1a:76:04:08:d7:91:68:ae:51:d7:2c:e9:3a:8c:27:8a:
- 75:c2</pre>
+<span class="n">Using</span> <span class="n">configuration</span> <span class="kn">from</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">openssl</span><span class="o">/</span><span class="n">openssl</span><span class="o">.</span><span class="n">cnf</span>
+<span class="n">Certificate</span> <span class="n">Request</span><span class="p">:</span>
+ <span class="n">Data</span><span class="p">:</span>
+ <span class="n">Version</span><span class="p">:</span> <span class="mi">0</span> <span class="p">(</span><span class="mh">0x0</span><span class="p">)</span>
+ <span class="n">Subject</span><span class="p">:</span> <span class="n">C</span><span class="o">=</span><span class="n">SG</span><span class="p">,</span> <span class="n">O</span><span class="o">=</span><span class="n">M2Crypto</span><span class="p">,</span> <span class="n">CN</span><span class="o">=</span><span class="n">localhost</span><span class="o">/</span><span class="n">Email</span><span class="o">=</span><span class="n">admin</span><span class="nd">@server</span><span class="o">.</span><span class="n">example</span><span class="o">.</span><span class="n">dom</span>
+ <span class="n">Subject</span> <span class="n">Public</span> <span class="n">Key</span> <span class="n">Info</span><span class="p">:</span>
+ <span class="n">Public</span> <span class="n">Key</span> <span class="n">Algorithm</span><span class="p">:</span> <span class="n">rsaEncryption</span>
+ <span class="n">RSA</span> <span class="n">Public</span> <span class="n">Key</span><span class="p">:</span> <span class="p">(</span><span class="mi">1024</span> <span class="n">bit</span><span class="p">)</span>
+ <span class="n">Modulus</span> <span class="p">(</span><span class="mi">1024</span> <span class="n">bit</span><span class="p">):</span>
+ <span class="mi">00</span><span class="p">:</span><span class="n">af</span><span class="p">:</span><span class="mi">59</span><span class="p">:</span><span class="n">d8</span><span class="p">:</span><span class="mi">63</span><span class="p">:</span><span class="mi">54</span><span class="p">:</span><span class="mi">2</span><span class="n">b</span><span class="p">:</span><span class="mi">96</span><span class="p">:</span><span class="mi">5</span><span class="n">d</span><span class="p">:</span><span class="mi">6</span><span class="n">b</span><span class="p">:</span><span class="n">b8</span><span class="p">:</span><span class="mi">1</span><span class="n">f</span><span class="p">:</span><span class="n">c5</span><span class="p">:</span><span class="n">aa</span><span class="p">:</span><span class="mi">50</span><span class="p">:</span>
+ <span class="mi">91</span><span class="p">:</span><span class="n">ae</span><span class="p">:</span><span class="n">be</span><span class="p">:</span><span class="mi">67</span><span class="p">:</span><span class="n">be</span><span class="p">:</span><span class="n">ea</span><span class="p">:</span><span class="mi">5</span><span class="n">d</span><span class="p">:</span><span class="mi">20</span><span class="p">:</span><span class="n">df</span><span class="p">:</span><span class="n">b7</span><span class="p">:</span><span class="n">c0</span><span class="p">:</span><span class="mi">5</span><span class="n">e</span><span class="p">:</span><span class="n">ea</span><span class="p">:</span><span class="n">f7</span><span class="p">:</span><span class="mi">5</span><span class="n">e</span><span class="p">:</span>
+ <span class="mi">6</span><span class="n">d</span><span class="p">:</span><span class="n">bc</span><span class="p">:</span><span class="mi">44</span><span class="p">:</span><span class="mi">28</span><span class="p">:</span><span class="mi">73</span><span class="p">:</span><span class="n">be</span><span class="p">:</span><span class="mi">1</span><span class="n">b</span><span class="p">:</span><span class="mi">9</span><span class="n">e</span><span class="p">:</span><span class="n">ee</span><span class="p">:</span><span class="mi">9</span><span class="n">b</span><span class="p">:</span><span class="n">f0</span><span class="p">:</span><span class="mi">86</span><span class="p">:</span><span class="n">db</span><span class="p">:</span><span class="mi">19</span><span class="p">:</span><span class="mi">13</span><span class="p">:</span>
+ <span class="mi">21</span><span class="p">:</span><span class="n">cd</span><span class="p">:</span><span class="n">dc</span><span class="p">:</span><span class="n">e6</span><span class="p">:</span><span class="n">bd</span><span class="p">:</span><span class="mi">0</span><span class="n">e</span><span class="p">:</span><span class="mi">12</span><span class="p">:</span><span class="n">cc</span><span class="p">:</span><span class="mi">57</span><span class="p">:</span><span class="n">d5</span><span class="p">:</span><span class="mi">10</span><span class="p">:</span><span class="mi">0</span><span class="n">b</span><span class="p">:</span><span class="mi">8</span><span class="n">c</span><span class="p">:</span><span class="mi">32</span><span class="p">:</span><span class="n">e4</span><span class="p">:</span>
+ <span class="n">c7</span><span class="p">:</span><span class="mi">7</span><span class="n">b</span><span class="p">:</span><span class="mi">26</span><span class="p">:</span><span class="n">cf</span><span class="p">:</span><span class="n">ab</span><span class="p">:</span><span class="mi">9</span><span class="n">b</span><span class="p">:</span><span class="mi">61</span><span class="p">:</span><span class="n">ed</span><span class="p">:</span><span class="mi">80</span><span class="p">:</span><span class="n">eb</span><span class="p">:</span><span class="mi">4</span><span class="n">c</span><span class="p">:</span><span class="n">d8</span><span class="p">:</span><span class="n">b3</span><span class="p">:</span><span class="mi">28</span><span class="p">:</span><span class="n">ac</span><span class="p">:</span>
+ <span class="mi">4</span><span class="n">e</span><span class="p">:</span><span class="mi">06</span><span class="p">:</span><span class="mi">7</span><span class="n">a</span><span class="p">:</span><span class="mi">84</span><span class="p">:</span><span class="n">d8</span><span class="p">:</span><span class="n">a6</span><span class="p">:</span><span class="mi">2</span><span class="n">e</span><span class="p">:</span><span class="mi">5</span><span class="n">f</span><span class="p">:</span><span class="n">d5</span><span class="p">:</span><span class="n">f6</span><span class="p">:</span><span class="n">d8</span><span class="p">:</span><span class="mi">0</span><span class="n">d</span><span class="p">:</span><span class="mi">4</span><span class="n">a</span><span class="p">:</span><span class="mi">87</span><span class="p">:</span><span class="mi">8</span><span class="n">f</span><span class="p">:</span>
+ <span class="mi">6</span><span class="n">c</span><span class="p">:</span><span class="n">a0</span><span class="p">:</span><span class="mi">92</span><span class="p">:</span><span class="mi">45</span><span class="p">:</span><span class="mi">83</span><span class="p">:</span><span class="n">a9</span><span class="p">:</span><span class="mi">0</span><span class="n">f</span><span class="p">:</span><span class="mi">6</span><span class="n">f</span><span class="p">:</span><span class="n">d3</span><span class="p">:</span><span class="mi">14</span><span class="p">:</span><span class="mi">82</span><span class="p">:</span><span class="mi">26</span><span class="p">:</span><span class="mi">41</span><span class="p">:</span><span class="mi">88</span><span class="p">:</span><span class="n">c9</span><span class="p">:</span>
+ <span class="mi">6</span><span class="n">f</span><span class="p">:</span><span class="n">b5</span><span class="p">:</span><span class="n">be</span><span class="p">:</span><span class="n">ca</span><span class="p">:</span><span class="n">dc</span><span class="p">:</span><span class="mi">21</span><span class="p">:</span><span class="n">df</span><span class="p">:</span><span class="mi">83</span><span class="p">:</span><span class="mi">0</span><span class="n">e</span><span class="p">:</span><span class="mi">56</span><span class="p">:</span><span class="mi">6</span><span class="n">a</span><span class="p">:</span><span class="mi">05</span><span class="p">:</span><span class="n">a7</span><span class="p">:</span><span class="mi">2</span><span class="n">e</span><span class="p">:</span><span class="mi">5</span><span class="n">f</span><span class="p">:</span>
+ <span class="mi">0</span><span class="n">b</span><span class="p">:</span><span class="mi">6</span><span class="n">f</span><span class="p">:</span><span class="n">e7</span><span class="p">:</span><span class="mi">1</span><span class="n">c</span><span class="p">:</span><span class="n">bc</span><span class="p">:</span><span class="n">a6</span><span class="p">:</span><span class="mi">59</span><span class="p">:</span><span class="mi">97</span><span class="p">:</span><span class="n">ef</span>
+ <span class="n">Exponent</span><span class="p">:</span> <span class="mi">65537</span> <span class="p">(</span><span class="mh">0x10001</span><span class="p">)</span>
+ <span class="n">Attributes</span><span class="p">:</span>
+ <span class="n">a0</span><span class="p">:</span><span class="mi">00</span>
+ <span class="n">Signature</span> <span class="n">Algorithm</span><span class="p">:</span> <span class="n">md5WithRSAEncryption</span>
+ <span class="mi">7</span><span class="n">a</span><span class="p">:</span><span class="mi">68</span><span class="p">:</span><span class="mi">46</span><span class="p">:</span><span class="mi">9</span><span class="n">e</span><span class="p">:</span><span class="mi">58</span><span class="p">:</span><span class="mi">4</span><span class="n">b</span><span class="p">:</span><span class="mi">9</span><span class="n">e</span><span class="p">:</span><span class="mi">42</span><span class="p">:</span><span class="mi">66</span><span class="p">:</span><span class="mi">9</span><span class="n">c</span><span class="p">:</span><span class="n">be</span><span class="p">:</span><span class="n">c1</span><span class="p">:</span><span class="n">d8</span><span class="p">:</span><span class="n">a0</span><span class="p">:</span><span class="mi">40</span><span class="p">:</span><span class="mi">4</span><span class="n">c</span><span class="p">:</span><span class="mi">23</span><span class="p">:</span><span class="mi">2</span><span class="n">f</span><span class="p">:</span>
+ <span class="n">fc</span><span class="p">:</span><span class="mi">12</span><span class="p">:</span><span class="mi">96</span><span class="p">:</span><span class="n">eb</span><span class="p">:</span><span class="n">e8</span><span class="p">:</span><span class="n">f9</span><span class="p">:</span><span class="mi">68</span><span class="p">:</span><span class="n">ed</span><span class="p">:</span><span class="n">a6</span><span class="p">:</span><span class="n">f3</span><span class="p">:</span><span class="n">f4</span><span class="p">:</span><span class="mi">62</span><span class="p">:</span><span class="mi">80</span><span class="p">:</span><span class="mi">4</span><span class="n">c</span><span class="p">:</span><span class="mi">26</span><span class="p">:</span><span class="n">ee</span><span class="p">:</span><span class="mi">15</span><span class="p">:</span><span class="mi">30</span><span class="p">:</span>
+ <span class="n">a7</span><span class="p">:</span><span class="mi">99</span><span class="p">:</span><span class="mi">8</span><span class="n">b</span><span class="p">:</span><span class="mi">8</span><span class="n">d</span><span class="p">:</span><span class="mi">39</span><span class="p">:</span><span class="mi">47</span><span class="p">:</span><span class="n">ba</span><span class="p">:</span><span class="mi">3</span><span class="n">c</span><span class="p">:</span><span class="n">a0</span><span class="p">:</span><span class="mi">4</span><span class="n">c</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mi">3</span><span class="n">d</span><span class="p">:</span><span class="n">d9</span><span class="p">:</span><span class="mi">6</span><span class="n">b</span><span class="p">:</span><span class="n">ae</span><span class="p">:</span><span class="mi">58</span><span class="p">:</span><span class="mi">8</span><span class="n">a</span><span class="p">:</span><span class="mi">36</span><span class="p">:</span>
+ <span class="mi">49</span><span class="p">:</span><span class="n">c5</span><span class="p">:</span><span class="mi">98</span><span class="p">:</span><span class="mi">72</span><span class="p">:</span><span class="mi">88</span><span class="p">:</span><span class="mi">68</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mi">93</span><span class="p">:</span><span class="mi">2</span><span class="n">d</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">14</span><span class="p">:</span><span class="n">e7</span><span class="p">:</span><span class="n">d4</span><span class="p">:</span><span class="mi">9</span><span class="n">c</span><span class="p">:</span><span class="mi">03</span><span class="p">:</span><span class="n">a0</span><span class="p">:</span><span class="mi">03</span><span class="p">:</span><span class="mi">10</span><span class="p">:</span>
+ <span class="mi">85</span><span class="p">:</span><span class="mi">94</span><span class="p">:</span><span class="n">ce</span><span class="p">:</span><span class="n">a9</span><span class="p">:</span><span class="mi">94</span><span class="p">:</span><span class="n">cc</span><span class="p">:</span><span class="n">fe</span><span class="p">:</span><span class="mi">42</span><span class="p">:</span><span class="n">b3</span><span class="p">:</span><span class="n">a8</span><span class="p">:</span><span class="n">eb</span><span class="p">:</span><span class="mi">49</span><span class="p">:</span><span class="mi">1</span><span class="n">a</span><span class="p">:</span><span class="mi">37</span><span class="p">:</span><span class="mi">34</span><span class="p">:</span><span class="n">a7</span><span class="p">:</span><span class="n">e0</span><span class="p">:</span><span class="n">d5</span><span class="p">:</span>
+ <span class="n">b7</span><span class="p">:</span><span class="mi">74</span><span class="p">:</span><span class="n">f4</span><span class="p">:</span><span class="mi">3</span><span class="n">d</span><span class="p">:</span><span class="mi">4</span><span class="n">a</span><span class="p">:</span><span class="n">f6</span><span class="p">:</span><span class="n">bb</span><span class="p">:</span><span class="mi">10</span><span class="p">:</span><span class="mi">91</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">3</span><span class="n">d</span><span class="p">:</span><span class="mi">52</span><span class="p">:</span><span class="n">bb</span><span class="p">:</span><span class="n">fd</span><span class="p">:</span><span class="mi">99</span><span class="p">:</span><span class="mi">10</span><span class="p">:</span><span class="mi">48</span><span class="p">:</span><span class="n">b2</span><span class="p">:</span>
+ <span class="n">b7</span><span class="p">:</span><span class="mi">9</span><span class="n">d</span><span class="p">:</span><span class="mi">1</span><span class="n">a</span><span class="p">:</span><span class="mi">76</span><span class="p">:</span><span class="mi">04</span><span class="p">:</span><span class="mi">08</span><span class="p">:</span><span class="n">d7</span><span class="p">:</span><span class="mi">91</span><span class="p">:</span><span class="mi">68</span><span class="p">:</span><span class="n">ae</span><span class="p">:</span><span class="mi">51</span><span class="p">:</span><span class="n">d7</span><span class="p">:</span><span class="mi">2</span><span class="n">c</span><span class="p">:</span><span class="n">e9</span><span class="p">:</span><span class="mi">3</span><span class="n">a</span><span class="p">:</span><span class="mi">8</span><span class="n">c</span><span class="p">:</span><span class="mi">27</span><span class="p">:</span><span class="mi">8</span><span class="n">a</span><span class="p">:</span>
+ <span class="mi">75</span><span class="p">:</span><span class="n">c2</span>
+</pre></div>
</div>
</div></blockquote>
<ol class="arabic" start="6">
<li><p class="first">Now, sign the certificate request:</p>
-<div class="highlight-python"><pre>./CA.pl -sign
+<div class="highlight-default"><div class="highlight"><pre><span></span>./CA.pl -sign
Using configuration from openssl.cnf
-Enter PEM pass phrase: &lt;CA&#x27;s passphrase&gt;
+Enter PEM pass phrase: &lt;CA&#39;s passphrase&gt;
Check that the request matches the signature
Signature ok
The Subjects Distinguished Name is as follows
-countryName :PRINTABLE:&#x27;SG&#x27;
-organizationName :PRINTABLE:&#x27;M2Crypto&#x27;
-commonName :PRINTABLE:&#x27;localhost&#x27;
-emailAddress :IA5STRING:&#x27;admin@server.example.dom&#x27;
+countryName :PRINTABLE:&#39;SG&#39;
+organizationName :PRINTABLE:&#39;M2Crypto&#39;
+commonName :PRINTABLE:&#39;localhost&#39;
+emailAddress :IA5STRING:&#39;admin@server.example.dom&#39;
Certificate is to be certified until Mar 31 02:57:30 2002 GMT (365 days)
Sign the certificate? [y/n]:y
@@ -283,123 +281,127 @@ Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
-Signed certificate is in newcert.pem</pre>
+Signed certificate is in newcert.pem
+</pre></div>
</div>
</li>
</ol>
<p></p>
<blockquote>
-<div><p><tt class="docutils literal"><span class="pre">newcert.pem</span></tt> looks like this:</p>
-<div class="highlight-python"><pre>cat newcert.pem
+<div><p><code class="docutils literal"><span class="pre">newcert.pem</span></code> looks like this:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">cat</span> <span class="n">newcert</span><span class="o">.</span><span class="n">pem</span>
-Certificate:
-Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: md5WithRSAEncryption
- Issuer: C=SG, O=DemoCA, CN=DemoCA Certificate Master/Email=certmaster@democa.dom
- Validity
- Not Before: Mar 31 02:57:30 2001 GMT
- Not After : Mar 31 02:57:30 2002 GMT
- Subject: C=SG, O=M2Crypto, CN=localhost/Email=admin@server.example.dom
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:af:59:d8:63:54:2b:96:5d:6b:b8:1f:c5:aa:50:
- 91:ae:be:67:be:ea:5d:20:df:b7:c0:5e:ea:f7:5e:
- 6d:bc:44:28:73:be:1b:9e:ee:9b:f0:86:db:19:13:
- 21:cd:dc:e6:bd:0e:12:cc:57:d5:10:0b:8c:32:e4:
- c7:7b:26:cf:ab:9b:61:ed:80:eb:4c:d8:b3:28:ac:
- 4e:06:7a:84:d8:a6:2e:5f:d5:f6:d8:0d:4a:87:8f:
- 6c:a0:92:45:83:a9:0f:6f:d3:14:82:26:41:88:c9:
- 6f:b5:be:ca:dc:21:df:83:0e:56:6a:05:a7:2e:5f:
- 0b:6f:e7:1c:bc:a6:59:97:ef
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints:
-Certificate:
-Data:
- Version: 3 (0x2)
- Serial Number: 1 (0x1)
- Signature Algorithm: md5WithRSAEncryption
- Issuer: C=SG, O=DemoCA, CN=DemoCA Certificate Master/Email=certmaster@democa.dom
- Validity
- Not Before: Mar 31 02:57:30 2001 GMT
- Not After : Mar 31 02:57:30 2002 GMT
- Subject: C=SG, O=M2Crypto, CN=localhost/Email=admin@server.example.dom
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:af:59:d8:63:54:2b:96:5d:6b:b8:1f:c5:aa:50:
- 91:ae:be:67:be:ea:5d:20:df:b7:c0:5e:ea:f7:5e:
- 6d:bc:44:28:73:be:1b:9e:ee:9b:f0:86:db:19:13:
- 21:cd:dc:e6:bd:0e:12:cc:57:d5:10:0b:8c:32:e4:
- c7:7b:26:cf:ab:9b:61:ed:80:eb:4c:d8:b3:28:ac:
- 4e:06:7a:84:d8:a6:2e:5f:d5:f6:d8:0d:4a:87:8f:
- 6c:a0:92:45:83:a9:0f:6f:d3:14:82:26:41:88:c9:
- 6f:b5:be:ca:dc:21:df:83:0e:56:6a:05:a7:2e:5f:
- 0b:6f:e7:1c:bc:a6:59:97:ef
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Basic Constraints:
- CA:FALSE
- Netscape Comment:
- OpenSSL Generated Certificate
- X509v3 Subject Key Identifier:
- B3:D6:89:88:2F:B1:15:40:EC:0A:C0:30:35:3A:B7:DA:72:73:1B:4D
- X509v3 Authority Key Identifier:
- keyid:F9:6A:A6:34:97:6B:BC:BB:5A:17:0D:19:FC:62:21:0B:00:B5:0E:29
- DirName:/C=SG/O=DemoCA/CN=DemoCA Certificate Master/Email=certmaster@democa.dom
- serial:00
+<span class="n">Certificate</span><span class="p">:</span>
+<span class="n">Data</span><span class="p">:</span>
+ <span class="n">Version</span><span class="p">:</span> <span class="mi">3</span> <span class="p">(</span><span class="mh">0x2</span><span class="p">)</span>
+ <span class="n">Serial</span> <span class="n">Number</span><span class="p">:</span> <span class="mi">1</span> <span class="p">(</span><span class="mh">0x1</span><span class="p">)</span>
+ <span class="n">Signature</span> <span class="n">Algorithm</span><span class="p">:</span> <span class="n">md5WithRSAEncryption</span>
+ <span class="n">Issuer</span><span class="p">:</span> <span class="n">C</span><span class="o">=</span><span class="n">SG</span><span class="p">,</span> <span class="n">O</span><span class="o">=</span><span class="n">DemoCA</span><span class="p">,</span> <span class="n">CN</span><span class="o">=</span><span class="n">DemoCA</span> <span class="n">Certificate</span> <span class="n">Master</span><span class="o">/</span><span class="n">Email</span><span class="o">=</span><span class="n">certmaster</span><span class="nd">@democa</span><span class="o">.</span><span class="n">dom</span>
+ <span class="n">Validity</span>
+ <span class="n">Not</span> <span class="n">Before</span><span class="p">:</span> <span class="n">Mar</span> <span class="mi">31</span> <span class="mi">02</span><span class="p">:</span><span class="mi">57</span><span class="p">:</span><span class="mi">30</span> <span class="mi">2001</span> <span class="n">GMT</span>
+ <span class="n">Not</span> <span class="n">After</span> <span class="p">:</span> <span class="n">Mar</span> <span class="mi">31</span> <span class="mi">02</span><span class="p">:</span><span class="mi">57</span><span class="p">:</span><span class="mi">30</span> <span class="mi">2002</span> <span class="n">GMT</span>
+ <span class="n">Subject</span><span class="p">:</span> <span class="n">C</span><span class="o">=</span><span class="n">SG</span><span class="p">,</span> <span class="n">O</span><span class="o">=</span><span class="n">M2Crypto</span><span class="p">,</span> <span class="n">CN</span><span class="o">=</span><span class="n">localhost</span><span class="o">/</span><span class="n">Email</span><span class="o">=</span><span class="n">admin</span><span class="nd">@server</span><span class="o">.</span><span class="n">example</span><span class="o">.</span><span class="n">dom</span>
+ <span class="n">Subject</span> <span class="n">Public</span> <span class="n">Key</span> <span class="n">Info</span><span class="p">:</span>
+ <span class="n">Public</span> <span class="n">Key</span> <span class="n">Algorithm</span><span class="p">:</span> <span class="n">rsaEncryption</span>
+ <span class="n">RSA</span> <span class="n">Public</span> <span class="n">Key</span><span class="p">:</span> <span class="p">(</span><span class="mi">1024</span> <span class="n">bit</span><span class="p">)</span>
+ <span class="n">Modulus</span> <span class="p">(</span><span class="mi">1024</span> <span class="n">bit</span><span class="p">):</span>
+ <span class="mi">00</span><span class="p">:</span><span class="n">af</span><span class="p">:</span><span class="mi">59</span><span class="p">:</span><span class="n">d8</span><span class="p">:</span><span class="mi">63</span><span class="p">:</span><span class="mi">54</span><span class="p">:</span><span class="mi">2</span><span class="n">b</span><span class="p">:</span><span class="mi">96</span><span class="p">:</span><span class="mi">5</span><span class="n">d</span><span class="p">:</span><span class="mi">6</span><span class="n">b</span><span class="p">:</span><span class="n">b8</span><span class="p">:</span><span class="mi">1</span><span class="n">f</span><span class="p">:</span><span class="n">c5</span><span class="p">:</span><span class="n">aa</span><span class="p">:</span><span class="mi">50</span><span class="p">:</span>
+ <span class="mi">91</span><span class="p">:</span><span class="n">ae</span><span class="p">:</span><span class="n">be</span><span class="p">:</span><span class="mi">67</span><span class="p">:</span><span class="n">be</span><span class="p">:</span><span class="n">ea</span><span class="p">:</span><span class="mi">5</span><span class="n">d</span><span class="p">:</span><span class="mi">20</span><span class="p">:</span><span class="n">df</span><span class="p">:</span><span class="n">b7</span><span class="p">:</span><span class="n">c0</span><span class="p">:</span><span class="mi">5</span><span class="n">e</span><span class="p">:</span><span class="n">ea</span><span class="p">:</span><span class="n">f7</span><span class="p">:</span><span class="mi">5</span><span class="n">e</span><span class="p">:</span>
+ <span class="mi">6</span><span class="n">d</span><span class="p">:</span><span class="n">bc</span><span class="p">:</span><span class="mi">44</span><span class="p">:</span><span class="mi">28</span><span class="p">:</span><span class="mi">73</span><span class="p">:</span><span class="n">be</span><span class="p">:</span><span class="mi">1</span><span class="n">b</span><span class="p">:</span><span class="mi">9</span><span class="n">e</span><span class="p">:</span><span class="n">ee</span><span class="p">:</span><span class="mi">9</span><span class="n">b</span><span class="p">:</span><span class="n">f0</span><span class="p">:</span><span class="mi">86</span><span class="p">:</span><span class="n">db</span><span class="p">:</span><span class="mi">19</span><span class="p">:</span><span class="mi">13</span><span class="p">:</span>
+ <span class="mi">21</span><span class="p">:</span><span class="n">cd</span><span class="p">:</span><span class="n">dc</span><span class="p">:</span><span class="n">e6</span><span class="p">:</span><span class="n">bd</span><span class="p">:</span><span class="mi">0</span><span class="n">e</span><span class="p">:</span><span class="mi">12</span><span class="p">:</span><span class="n">cc</span><span class="p">:</span><span class="mi">57</span><span class="p">:</span><span class="n">d5</span><span class="p">:</span><span class="mi">10</span><span class="p">:</span><span class="mi">0</span><span class="n">b</span><span class="p">:</span><span class="mi">8</span><span class="n">c</span><span class="p">:</span><span class="mi">32</span><span class="p">:</span><span class="n">e4</span><span class="p">:</span>
+ <span class="n">c7</span><span class="p">:</span><span class="mi">7</span><span class="n">b</span><span class="p">:</span><span class="mi">26</span><span class="p">:</span><span class="n">cf</span><span class="p">:</span><span class="n">ab</span><span class="p">:</span><span class="mi">9</span><span class="n">b</span><span class="p">:</span><span class="mi">61</span><span class="p">:</span><span class="n">ed</span><span class="p">:</span><span class="mi">80</span><span class="p">:</span><span class="n">eb</span><span class="p">:</span><span class="mi">4</span><span class="n">c</span><span class="p">:</span><span class="n">d8</span><span class="p">:</span><span class="n">b3</span><span class="p">:</span><span class="mi">28</span><span class="p">:</span><span class="n">ac</span><span class="p">:</span>
+ <span class="mi">4</span><span class="n">e</span><span class="p">:</span><span class="mi">06</span><span class="p">:</span><span class="mi">7</span><span class="n">a</span><span class="p">:</span><span class="mi">84</span><span class="p">:</span><span class="n">d8</span><span class="p">:</span><span class="n">a6</span><span class="p">:</span><span class="mi">2</span><span class="n">e</span><span class="p">:</span><span class="mi">5</span><span class="n">f</span><span class="p">:</span><span class="n">d5</span><span class="p">:</span><span class="n">f6</span><span class="p">:</span><span class="n">d8</span><span class="p">:</span><span class="mi">0</span><span class="n">d</span><span class="p">:</span><span class="mi">4</span><span class="n">a</span><span class="p">:</span><span class="mi">87</span><span class="p">:</span><span class="mi">8</span><span class="n">f</span><span class="p">:</span>
+ <span class="mi">6</span><span class="n">c</span><span class="p">:</span><span class="n">a0</span><span class="p">:</span><span class="mi">92</span><span class="p">:</span><span class="mi">45</span><span class="p">:</span><span class="mi">83</span><span class="p">:</span><span class="n">a9</span><span class="p">:</span><span class="mi">0</span><span class="n">f</span><span class="p">:</span><span class="mi">6</span><span class="n">f</span><span class="p">:</span><span class="n">d3</span><span class="p">:</span><span class="mi">14</span><span class="p">:</span><span class="mi">82</span><span class="p">:</span><span class="mi">26</span><span class="p">:</span><span class="mi">41</span><span class="p">:</span><span class="mi">88</span><span class="p">:</span><span class="n">c9</span><span class="p">:</span>
+ <span class="mi">6</span><span class="n">f</span><span class="p">:</span><span class="n">b5</span><span class="p">:</span><span class="n">be</span><span class="p">:</span><span class="n">ca</span><span class="p">:</span><span class="n">dc</span><span class="p">:</span><span class="mi">21</span><span class="p">:</span><span class="n">df</span><span class="p">:</span><span class="mi">83</span><span class="p">:</span><span class="mi">0</span><span class="n">e</span><span class="p">:</span><span class="mi">56</span><span class="p">:</span><span class="mi">6</span><span class="n">a</span><span class="p">:</span><span class="mi">05</span><span class="p">:</span><span class="n">a7</span><span class="p">:</span><span class="mi">2</span><span class="n">e</span><span class="p">:</span><span class="mi">5</span><span class="n">f</span><span class="p">:</span>
+ <span class="mi">0</span><span class="n">b</span><span class="p">:</span><span class="mi">6</span><span class="n">f</span><span class="p">:</span><span class="n">e7</span><span class="p">:</span><span class="mi">1</span><span class="n">c</span><span class="p">:</span><span class="n">bc</span><span class="p">:</span><span class="n">a6</span><span class="p">:</span><span class="mi">59</span><span class="p">:</span><span class="mi">97</span><span class="p">:</span><span class="n">ef</span>
+ <span class="n">Exponent</span><span class="p">:</span> <span class="mi">65537</span> <span class="p">(</span><span class="mh">0x10001</span><span class="p">)</span>
+ <span class="n">X509v3</span> <span class="n">extensions</span><span class="p">:</span>
+ <span class="n">X509v3</span> <span class="n">Basic</span> <span class="n">Constraints</span><span class="p">:</span>
+<span class="n">Certificate</span><span class="p">:</span>
+<span class="n">Data</span><span class="p">:</span>
+ <span class="n">Version</span><span class="p">:</span> <span class="mi">3</span> <span class="p">(</span><span class="mh">0x2</span><span class="p">)</span>
+ <span class="n">Serial</span> <span class="n">Number</span><span class="p">:</span> <span class="mi">1</span> <span class="p">(</span><span class="mh">0x1</span><span class="p">)</span>
+ <span class="n">Signature</span> <span class="n">Algorithm</span><span class="p">:</span> <span class="n">md5WithRSAEncryption</span>
+ <span class="n">Issuer</span><span class="p">:</span> <span class="n">C</span><span class="o">=</span><span class="n">SG</span><span class="p">,</span> <span class="n">O</span><span class="o">=</span><span class="n">DemoCA</span><span class="p">,</span> <span class="n">CN</span><span class="o">=</span><span class="n">DemoCA</span> <span class="n">Certificate</span> <span class="n">Master</span><span class="o">/</span><span class="n">Email</span><span class="o">=</span><span class="n">certmaster</span><span class="nd">@democa</span><span class="o">.</span><span class="n">dom</span>
+ <span class="n">Validity</span>
+ <span class="n">Not</span> <span class="n">Before</span><span class="p">:</span> <span class="n">Mar</span> <span class="mi">31</span> <span class="mi">02</span><span class="p">:</span><span class="mi">57</span><span class="p">:</span><span class="mi">30</span> <span class="mi">2001</span> <span class="n">GMT</span>
+ <span class="n">Not</span> <span class="n">After</span> <span class="p">:</span> <span class="n">Mar</span> <span class="mi">31</span> <span class="mi">02</span><span class="p">:</span><span class="mi">57</span><span class="p">:</span><span class="mi">30</span> <span class="mi">2002</span> <span class="n">GMT</span>
+ <span class="n">Subject</span><span class="p">:</span> <span class="n">C</span><span class="o">=</span><span class="n">SG</span><span class="p">,</span> <span class="n">O</span><span class="o">=</span><span class="n">M2Crypto</span><span class="p">,</span> <span class="n">CN</span><span class="o">=</span><span class="n">localhost</span><span class="o">/</span><span class="n">Email</span><span class="o">=</span><span class="n">admin</span><span class="nd">@server</span><span class="o">.</span><span class="n">example</span><span class="o">.</span><span class="n">dom</span>
+ <span class="n">Subject</span> <span class="n">Public</span> <span class="n">Key</span> <span class="n">Info</span><span class="p">:</span>
+ <span class="n">Public</span> <span class="n">Key</span> <span class="n">Algorithm</span><span class="p">:</span> <span class="n">rsaEncryption</span>
+ <span class="n">RSA</span> <span class="n">Public</span> <span class="n">Key</span><span class="p">:</span> <span class="p">(</span><span class="mi">1024</span> <span class="n">bit</span><span class="p">)</span>
+ <span class="n">Modulus</span> <span class="p">(</span><span class="mi">1024</span> <span class="n">bit</span><span class="p">):</span>
+ <span class="mi">00</span><span class="p">:</span><span class="n">af</span><span class="p">:</span><span class="mi">59</span><span class="p">:</span><span class="n">d8</span><span class="p">:</span><span class="mi">63</span><span class="p">:</span><span class="mi">54</span><span class="p">:</span><span class="mi">2</span><span class="n">b</span><span class="p">:</span><span class="mi">96</span><span class="p">:</span><span class="mi">5</span><span class="n">d</span><span class="p">:</span><span class="mi">6</span><span class="n">b</span><span class="p">:</span><span class="n">b8</span><span class="p">:</span><span class="mi">1</span><span class="n">f</span><span class="p">:</span><span class="n">c5</span><span class="p">:</span><span class="n">aa</span><span class="p">:</span><span class="mi">50</span><span class="p">:</span>
+ <span class="mi">91</span><span class="p">:</span><span class="n">ae</span><span class="p">:</span><span class="n">be</span><span class="p">:</span><span class="mi">67</span><span class="p">:</span><span class="n">be</span><span class="p">:</span><span class="n">ea</span><span class="p">:</span><span class="mi">5</span><span class="n">d</span><span class="p">:</span><span class="mi">20</span><span class="p">:</span><span class="n">df</span><span class="p">:</span><span class="n">b7</span><span class="p">:</span><span class="n">c0</span><span class="p">:</span><span class="mi">5</span><span class="n">e</span><span class="p">:</span><span class="n">ea</span><span class="p">:</span><span class="n">f7</span><span class="p">:</span><span class="mi">5</span><span class="n">e</span><span class="p">:</span>
+ <span class="mi">6</span><span class="n">d</span><span class="p">:</span><span class="n">bc</span><span class="p">:</span><span class="mi">44</span><span class="p">:</span><span class="mi">28</span><span class="p">:</span><span class="mi">73</span><span class="p">:</span><span class="n">be</span><span class="p">:</span><span class="mi">1</span><span class="n">b</span><span class="p">:</span><span class="mi">9</span><span class="n">e</span><span class="p">:</span><span class="n">ee</span><span class="p">:</span><span class="mi">9</span><span class="n">b</span><span class="p">:</span><span class="n">f0</span><span class="p">:</span><span class="mi">86</span><span class="p">:</span><span class="n">db</span><span class="p">:</span><span class="mi">19</span><span class="p">:</span><span class="mi">13</span><span class="p">:</span>
+ <span class="mi">21</span><span class="p">:</span><span class="n">cd</span><span class="p">:</span><span class="n">dc</span><span class="p">:</span><span class="n">e6</span><span class="p">:</span><span class="n">bd</span><span class="p">:</span><span class="mi">0</span><span class="n">e</span><span class="p">:</span><span class="mi">12</span><span class="p">:</span><span class="n">cc</span><span class="p">:</span><span class="mi">57</span><span class="p">:</span><span class="n">d5</span><span class="p">:</span><span class="mi">10</span><span class="p">:</span><span class="mi">0</span><span class="n">b</span><span class="p">:</span><span class="mi">8</span><span class="n">c</span><span class="p">:</span><span class="mi">32</span><span class="p">:</span><span class="n">e4</span><span class="p">:</span>
+ <span class="n">c7</span><span class="p">:</span><span class="mi">7</span><span class="n">b</span><span class="p">:</span><span class="mi">26</span><span class="p">:</span><span class="n">cf</span><span class="p">:</span><span class="n">ab</span><span class="p">:</span><span class="mi">9</span><span class="n">b</span><span class="p">:</span><span class="mi">61</span><span class="p">:</span><span class="n">ed</span><span class="p">:</span><span class="mi">80</span><span class="p">:</span><span class="n">eb</span><span class="p">:</span><span class="mi">4</span><span class="n">c</span><span class="p">:</span><span class="n">d8</span><span class="p">:</span><span class="n">b3</span><span class="p">:</span><span class="mi">28</span><span class="p">:</span><span class="n">ac</span><span class="p">:</span>
+ <span class="mi">4</span><span class="n">e</span><span class="p">:</span><span class="mi">06</span><span class="p">:</span><span class="mi">7</span><span class="n">a</span><span class="p">:</span><span class="mi">84</span><span class="p">:</span><span class="n">d8</span><span class="p">:</span><span class="n">a6</span><span class="p">:</span><span class="mi">2</span><span class="n">e</span><span class="p">:</span><span class="mi">5</span><span class="n">f</span><span class="p">:</span><span class="n">d5</span><span class="p">:</span><span class="n">f6</span><span class="p">:</span><span class="n">d8</span><span class="p">:</span><span class="mi">0</span><span class="n">d</span><span class="p">:</span><span class="mi">4</span><span class="n">a</span><span class="p">:</span><span class="mi">87</span><span class="p">:</span><span class="mi">8</span><span class="n">f</span><span class="p">:</span>
+ <span class="mi">6</span><span class="n">c</span><span class="p">:</span><span class="n">a0</span><span class="p">:</span><span class="mi">92</span><span class="p">:</span><span class="mi">45</span><span class="p">:</span><span class="mi">83</span><span class="p">:</span><span class="n">a9</span><span class="p">:</span><span class="mi">0</span><span class="n">f</span><span class="p">:</span><span class="mi">6</span><span class="n">f</span><span class="p">:</span><span class="n">d3</span><span class="p">:</span><span class="mi">14</span><span class="p">:</span><span class="mi">82</span><span class="p">:</span><span class="mi">26</span><span class="p">:</span><span class="mi">41</span><span class="p">:</span><span class="mi">88</span><span class="p">:</span><span class="n">c9</span><span class="p">:</span>
+ <span class="mi">6</span><span class="n">f</span><span class="p">:</span><span class="n">b5</span><span class="p">:</span><span class="n">be</span><span class="p">:</span><span class="n">ca</span><span class="p">:</span><span class="n">dc</span><span class="p">:</span><span class="mi">21</span><span class="p">:</span><span class="n">df</span><span class="p">:</span><span class="mi">83</span><span class="p">:</span><span class="mi">0</span><span class="n">e</span><span class="p">:</span><span class="mi">56</span><span class="p">:</span><span class="mi">6</span><span class="n">a</span><span class="p">:</span><span class="mi">05</span><span class="p">:</span><span class="n">a7</span><span class="p">:</span><span class="mi">2</span><span class="n">e</span><span class="p">:</span><span class="mi">5</span><span class="n">f</span><span class="p">:</span>
+ <span class="mi">0</span><span class="n">b</span><span class="p">:</span><span class="mi">6</span><span class="n">f</span><span class="p">:</span><span class="n">e7</span><span class="p">:</span><span class="mi">1</span><span class="n">c</span><span class="p">:</span><span class="n">bc</span><span class="p">:</span><span class="n">a6</span><span class="p">:</span><span class="mi">59</span><span class="p">:</span><span class="mi">97</span><span class="p">:</span><span class="n">ef</span>
+ <span class="n">Exponent</span><span class="p">:</span> <span class="mi">65537</span> <span class="p">(</span><span class="mh">0x10001</span><span class="p">)</span>
+ <span class="n">X509v3</span> <span class="n">extensions</span><span class="p">:</span>
+ <span class="n">X509v3</span> <span class="n">Basic</span> <span class="n">Constraints</span><span class="p">:</span>
+ <span class="n">CA</span><span class="p">:</span><span class="n">FALSE</span>
+ <span class="n">Netscape</span> <span class="n">Comment</span><span class="p">:</span>
+ <span class="n">OpenSSL</span> <span class="n">Generated</span> <span class="n">Certificate</span>
+ <span class="n">X509v3</span> <span class="n">Subject</span> <span class="n">Key</span> <span class="n">Identifier</span><span class="p">:</span>
+ <span class="n">B3</span><span class="p">:</span><span class="n">D6</span><span class="p">:</span><span class="mi">89</span><span class="p">:</span><span class="mi">88</span><span class="p">:</span><span class="mi">2</span><span class="n">F</span><span class="p">:</span><span class="n">B1</span><span class="p">:</span><span class="mi">15</span><span class="p">:</span><span class="mi">40</span><span class="p">:</span><span class="n">EC</span><span class="p">:</span><span class="mi">0</span><span class="n">A</span><span class="p">:</span><span class="n">C0</span><span class="p">:</span><span class="mi">30</span><span class="p">:</span><span class="mi">35</span><span class="p">:</span><span class="mi">3</span><span class="n">A</span><span class="p">:</span><span class="n">B7</span><span class="p">:</span><span class="n">DA</span><span class="p">:</span><span class="mi">72</span><span class="p">:</span><span class="mi">73</span><span class="p">:</span><span class="mi">1</span><span class="n">B</span><span class="p">:</span><span class="mi">4</span><span class="n">D</span>
+ <span class="n">X509v3</span> <span class="n">Authority</span> <span class="n">Key</span> <span class="n">Identifier</span><span class="p">:</span>
+ <span class="n">keyid</span><span class="p">:</span><span class="n">F9</span><span class="p">:</span><span class="mi">6</span><span class="n">A</span><span class="p">:</span><span class="n">A6</span><span class="p">:</span><span class="mi">34</span><span class="p">:</span><span class="mi">97</span><span class="p">:</span><span class="mi">6</span><span class="n">B</span><span class="p">:</span><span class="n">BC</span><span class="p">:</span><span class="n">BB</span><span class="p">:</span><span class="mi">5</span><span class="n">A</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">0</span><span class="n">D</span><span class="p">:</span><span class="mi">19</span><span class="p">:</span><span class="n">FC</span><span class="p">:</span><span class="mi">62</span><span class="p">:</span><span class="mi">21</span><span class="p">:</span><span class="mi">0</span><span class="n">B</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="n">B5</span><span class="p">:</span><span class="mi">0</span><span class="n">E</span><span class="p">:</span><span class="mi">29</span>
+ <span class="n">DirName</span><span class="p">:</span><span class="o">/</span><span class="n">C</span><span class="o">=</span><span class="n">SG</span><span class="o">/</span><span class="n">O</span><span class="o">=</span><span class="n">DemoCA</span><span class="o">/</span><span class="n">CN</span><span class="o">=</span><span class="n">DemoCA</span> <span class="n">Certificate</span> <span class="n">Master</span><span class="o">/</span><span class="n">Email</span><span class="o">=</span><span class="n">certmaster</span><span class="nd">@democa</span><span class="o">.</span><span class="n">dom</span>
+ <span class="n">serial</span><span class="p">:</span><span class="mi">00</span>
-Signature Algorithm: md5WithRSAEncryption</pre>
+<span class="n">Signature</span> <span class="n">Algorithm</span><span class="p">:</span> <span class="n">md5WithRSAEncryption</span>
+</pre></div>
</div>
</div></blockquote>
<ol class="arabic" start="7">
<li><p class="first">In certain situations, e.g., where your certificate and private key
are to be used in an unattended SSL server, you may wish to not
encrypt the private key, i.e., leave the key in the clear. This
-decision should be governed by your site&#8217;s security policy and threat
+decision should be governed by your site’s security policy and threat
model, of course:</p>
-<div class="highlight-python"><pre>openssl rsa &lt; newkey.pem &gt; newkey2.pem
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">openssl</span> <span class="n">rsa</span> <span class="o">&lt;</span> <span class="n">newkey</span><span class="o">.</span><span class="n">pem</span> <span class="o">&gt;</span> <span class="n">newkey2</span><span class="o">.</span><span class="n">pem</span>
-read RSA key
-Enter PEM pass phrase:&lt;secret passphrase here&gt;
-writing RSA key</pre>
+<span class="n">read</span> <span class="n">RSA</span> <span class="n">key</span>
+<span class="n">Enter</span> <span class="n">PEM</span> <span class="k">pass</span> <span class="n">phrase</span><span class="p">:</span><span class="o">&lt;</span><span class="n">secret</span> <span class="n">passphrase</span> <span class="n">here</span><span class="o">&gt;</span>
+<span class="n">writing</span> <span class="n">RSA</span> <span class="n">key</span>
+</pre></div>
</div>
-<p><tt class="docutils literal"><span class="pre">newkey2.pem</span></tt> looks like this:</p>
-<div class="highlight-python"><pre>cat newkey2.pem
+<p><code class="docutils literal"><span class="pre">newkey2.pem</span></code> looks like this:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">cat</span> <span class="n">newkey2</span><span class="o">.</span><span class="n">pem</span>
------BEGIN RSA PRIVATE KEY-----
-MIICXgIBAAKBgQCvWdhjVCuWXWu4H8WqUJGuvme+6l0g37fAXur3Xm28RChzvhue
-7pvwhtsZEyHN3Oa9DhLMV9UQC4wy5Md7Js+rm2HtgOtM2LMorE4GeoTYpi5f1fbY
-DUqHj2ygkkWDqQ9v0xSCJkGIyW+1vsrcId+DDlZqBacuXwtv5xy8plmX7wIDAQAB
-AoGAbAkU8w3W1Qu15Hle1bJSL7GMReoreqeblOBmMAZz4by0l6sXZXJpjWXo86f/
-+dASMYTMPC4ZTYtv06N07AFbjL+kDfqDMTfzQkYMHp1LAq1Ihbq1rHWSBH5n3ekq
-KiY8JKpv8DR5Po1iKaXJFuDByGDENJwYbSRSpSK3P+vkWWECQQDkEUE/ZPqqqZkQ
-2iWRPAsCbEID8SAraQl3DdCLYs/GgARfmmj4yUHEwkys9Jo1H8k4BdxugmaUwNi5
-YQ/CVzrXAkEAxNO80ArbGxPUmr11GHG/bGBYj1DUBkHZSc7dgxZdtUCLGNxQnNsg
-Iwq3n6j1sUzS3UW6abQ8bivYNOUcMKJAqQJBANQxFaLU4b/NQaODQ3aoBZpAfP9L
-5eFdvbet+7zjt2r5CpikgkwOfAmDuXEltx/8LevY0CllW+nErx9zJgVrwUsCQQCu
-76H5JiznPBDSF2FjgHWqVVdgyW4owY3mU739LHvNBLicN/RN9VPy0Suy8/CqzKT9
-lWPBXzf2k3FuUdNkRlFBAkEAmpXoybuiFR2S5Bma/ax96lVs0/VihhfC1zZP/X/F
-Br77+h9dIul+2DnyOl50zu0Sdzst1/7ay4JSDHyiBCMGSQ==
------END RSA PRIVATE KEY-----</pre>
+<span class="o">-----</span><span class="n">BEGIN</span> <span class="n">RSA</span> <span class="n">PRIVATE</span> <span class="n">KEY</span><span class="o">-----</span>
+<span class="n">MIICXgIBAAKBgQCvWdhjVCuWXWu4H8WqUJGuvme</span><span class="o">+</span><span class="mi">6</span><span class="n">l0g37fAXur3Xm28RChzvhue</span>
+<span class="mi">7</span><span class="n">pvwhtsZEyHN3Oa9DhLMV9UQC4wy5Md7Js</span><span class="o">+</span><span class="n">rm2HtgOtM2LMorE4GeoTYpi5f1fbY</span>
+<span class="n">DUqHj2ygkkWDqQ9v0xSCJkGIyW</span><span class="o">+</span><span class="mi">1</span><span class="n">vsrcId</span><span class="o">+</span><span class="n">DDlZqBacuXwtv5xy8plmX7wIDAQAB</span>
+<span class="n">AoGAbAkU8w3W1Qu15Hle1bJSL7GMReoreqeblOBmMAZz4by0l6sXZXJpjWXo86f</span><span class="o">/</span>
+<span class="o">+</span><span class="n">dASMYTMPC4ZTYtv06N07AFbjL</span><span class="o">+</span><span class="n">kDfqDMTfzQkYMHp1LAq1Ihbq1rHWSBH5n3ekq</span>
+<span class="n">KiY8JKpv8DR5Po1iKaXJFuDByGDENJwYbSRSpSK3P</span><span class="o">+</span><span class="n">vkWWECQQDkEUE</span><span class="o">/</span><span class="n">ZPqqqZkQ</span>
+<span class="mi">2</span><span class="n">iWRPAsCbEID8SAraQl3DdCLYs</span><span class="o">/</span><span class="n">GgARfmmj4yUHEwkys9Jo1H8k4BdxugmaUwNi5</span>
+<span class="n">YQ</span><span class="o">/</span><span class="n">CVzrXAkEAxNO80ArbGxPUmr11GHG</span><span class="o">/</span><span class="n">bGBYj1DUBkHZSc7dgxZdtUCLGNxQnNsg</span>
+<span class="n">Iwq3n6j1sUzS3UW6abQ8bivYNOUcMKJAqQJBANQxFaLU4b</span><span class="o">/</span><span class="n">NQaODQ3aoBZpAfP9L</span>
+<span class="mi">5</span><span class="n">eFdvbet</span><span class="o">+</span><span class="mi">7</span><span class="n">zjt2r5CpikgkwOfAmDuXEltx</span><span class="o">/</span><span class="mi">8</span><span class="n">LevY0CllW</span><span class="o">+</span><span class="n">nErx9zJgVrwUsCQQCu</span>
+<span class="mi">76</span><span class="n">H5JiznPBDSF2FjgHWqVVdgyW4owY3mU739LHvNBLicN</span><span class="o">/</span><span class="n">RN9VPy0Suy8</span><span class="o">/</span><span class="n">CqzKT9</span>
+<span class="n">lWPBXzf2k3FuUdNkRlFBAkEAmpXoybuiFR2S5Bma</span><span class="o">/</span><span class="n">ax96lVs0</span><span class="o">/</span><span class="n">VihhfC1zZP</span><span class="o">/</span><span class="n">X</span><span class="o">/</span><span class="n">F</span>
+<span class="n">Br77</span><span class="o">+</span><span class="n">h9dIul</span><span class="o">+</span><span class="mi">2</span><span class="n">DnyOl50zu0Sdzst1</span><span class="o">/</span><span class="mi">7</span><span class="n">ay4JSDHyiBCMGSQ</span><span class="o">==</span>
+<span class="o">-----</span><span class="n">END</span> <span class="n">RSA</span> <span class="n">PRIVATE</span> <span class="n">KEY</span><span class="o">-----</span>
+</pre></div>
</div>
</li>
</ol>
-<p>That&#8217;s it! The certificate, <tt class="docutils literal"><span class="pre">newcert.pem</span></tt>, and the private key -
-<tt class="docutils literal"><span class="pre">newkey.pem</span></tt> (encrypted) or <tt class="docutils literal"><span class="pre">newkey2.pem</span></tt> (unencrypted) - are now
+<p>That’s it! The certificate, <code class="docutils literal"><span class="pre">newcert.pem</span></code>, and the private key -
+<code class="docutils literal"><span class="pre">newkey.pem</span></code> (encrypted) or <code class="docutils literal"><span class="pre">newkey2.pem</span></code> (unencrypted) - are now
ready to be used. You may wish to rename the files to more intuitive
names.</p>
-<p>You should also keep the CA&#8217;s certificate <tt class="docutils literal"><span class="pre">demo/cacert.pem</span></tt> handy
+<p>You should also keep the CA’s certificate <code class="docutils literal"><span class="pre">demo/cacert.pem</span></code> handy
for use when developing and deploying SSL or S/MIME applications.</p>
</div>
<div class="section" id="conclusion">
<h2>Conclusion<a class="headerlink" href="#conclusion" title="Permalink to this headline">¶</a></h2>
-<p>We&#8217;ve walked through the basic steps in the creation of a CA and
+<p>We’ve walked through the basic steps in the creation of a CA and
certificates using the tools that come with OpenSSL. We did not cover
more advanced topics such as constraining a certificate to be SSL-only
or S/MIME-only.</p>
@@ -415,7 +417,7 @@ developing SSL and S/MIME applications in
</div>
</div>
</div>
- <div class="sphinxsidebar">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
@@ -426,44 +428,48 @@ developing SSL and S/MIME applications in
</ul>
</li>
</ul>
-
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/howto.ca.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
+<div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="index.html">Documentation overview</a><ul>
+ </ul></li>
+</ul>
+</div>
+ <div role="note" aria-label="source link">
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/howto.ca.rst.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+ </div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
+ |
+ <a href="_sources/howto.ca.rst.txt"
+ rel="nofollow">Page source</a>
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/howto.smime.html b/doc/html/howto.smime.html
index d1ae312..75a4ecf 100644
--- a/doc/html/howto.smime.html
+++ b/doc/html/howto.smime.html
@@ -1,50 +1,42 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>HOWTO: Programming S/MIME in Python with M2Crypto &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
+ <title>HOWTO: Programming S/MIME in Python with M2Crypto &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: './',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="index.html" />
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+
+ <link rel="stylesheet" href="_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<div class="section" id="howto-programming-s-mime-in-python-with-m2crypto">
<span id="howto-smime"></span><h1>HOWTO: Programming S/MIME in Python with M2Crypto<a class="headerlink" href="#howto-programming-s-mime-in-python-with-m2crypto" title="Permalink to this headline">¶</a></h1>
@@ -86,7 +78,7 @@ said public key.</p>
<p>To create an S/MIME-encrypted message, you need an X.509 certificate for
each recipient.</p>
<p>To create an S/MIME-signed <em>and</em> -encrypted message, first create a
-signed message, then encrypt the signed message with the recipients&#8217;
+signed message, then encrypt the signed message with the recipients’
certificates.</p>
<p>You may generate key pairs and obtain certificates by using a commercial
<em>certification authority</em> service.</p>
@@ -97,122 +89,127 @@ this approach is cheap and effective.</p>
certificates. This assumes you have OpenSSL installed properly on your
system.</p>
<p>First, we generate an X.509 certificate to be used for signing:</p>
-<div class="highlight-python"><pre>openssl req -newkey rsa:1024 -nodes -x509 -days 365 -out signer.pem
-
-Using configuration from /usr/local/pkg/openssl/openssl.cnf
-Generating a 1024 bit RSA private key
-..++++++
-....................++++++
-writing new private key to &#x27;privkey.pem&#x27;
------
-You are about to be asked to enter information that will be incorporated
-into your certificate request.
-What you are about to enter is what is called a Distinguished Name or a DN.
-There are quite a few fields but you can leave some blank
-For some fields there will be a default value,
-If you enter &#x27;.&#x27;, the field will be left blank.
------
-Country Name (2 letter code) [AU]:SG
-State or Province Name (full name) [Some-State]:.
-Locality Name (eg, city) []:.
-Organization Name (eg, company) [Internet Widgits Pty Ltd]:M2Crypto
-Organizational Unit Name (eg, section) []:.
-Common Name (eg, YOUR name) []:S/MIME Sender
-Email Address []:sender@example.dom</pre>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">openssl</span> <span class="n">req</span> <span class="o">-</span><span class="n">newkey</span> <span class="n">rsa</span><span class="p">:</span><span class="mi">1024</span> <span class="o">-</span><span class="n">nodes</span> <span class="o">-</span><span class="n">x509</span> <span class="o">-</span><span class="n">days</span> <span class="mi">365</span> <span class="o">-</span><span class="n">out</span> <span class="n">signer</span><span class="o">.</span><span class="n">pem</span>
+
+<span class="n">Using</span> <span class="n">configuration</span> <span class="kn">from</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">openssl</span><span class="o">/</span><span class="n">openssl</span><span class="o">.</span><span class="n">cnf</span>
+<span class="n">Generating</span> <span class="n">a</span> <span class="mi">1024</span> <span class="n">bit</span> <span class="n">RSA</span> <span class="n">private</span> <span class="n">key</span>
+<span class="o">..++++++</span>
+<span class="o">....................++++++</span>
+<span class="n">writing</span> <span class="n">new</span> <span class="n">private</span> <span class="n">key</span> <span class="n">to</span> <span class="s1">&#39;privkey.pem&#39;</span>
+<span class="o">-----</span>
+<span class="n">You</span> <span class="n">are</span> <span class="n">about</span> <span class="n">to</span> <span class="n">be</span> <span class="n">asked</span> <span class="n">to</span> <span class="n">enter</span> <span class="n">information</span> <span class="n">that</span> <span class="n">will</span> <span class="n">be</span> <span class="n">incorporated</span>
+<span class="n">into</span> <span class="n">your</span> <span class="n">certificate</span> <span class="n">request</span><span class="o">.</span>
+<span class="n">What</span> <span class="n">you</span> <span class="n">are</span> <span class="n">about</span> <span class="n">to</span> <span class="n">enter</span> <span class="ow">is</span> <span class="n">what</span> <span class="ow">is</span> <span class="n">called</span> <span class="n">a</span> <span class="n">Distinguished</span> <span class="n">Name</span> <span class="ow">or</span> <span class="n">a</span> <span class="n">DN</span><span class="o">.</span>
+<span class="n">There</span> <span class="n">are</span> <span class="n">quite</span> <span class="n">a</span> <span class="n">few</span> <span class="n">fields</span> <span class="n">but</span> <span class="n">you</span> <span class="n">can</span> <span class="n">leave</span> <span class="n">some</span> <span class="n">blank</span>
+<span class="n">For</span> <span class="n">some</span> <span class="n">fields</span> <span class="n">there</span> <span class="n">will</span> <span class="n">be</span> <span class="n">a</span> <span class="n">default</span> <span class="n">value</span><span class="p">,</span>
+<span class="n">If</span> <span class="n">you</span> <span class="n">enter</span> <span class="s1">&#39;.&#39;</span><span class="p">,</span> <span class="n">the</span> <span class="n">field</span> <span class="n">will</span> <span class="n">be</span> <span class="n">left</span> <span class="n">blank</span><span class="o">.</span>
+<span class="o">-----</span>
+<span class="n">Country</span> <span class="n">Name</span> <span class="p">(</span><span class="mi">2</span> <span class="n">letter</span> <span class="n">code</span><span class="p">)</span> <span class="p">[</span><span class="n">AU</span><span class="p">]:</span><span class="n">SG</span>
+<span class="n">State</span> <span class="ow">or</span> <span class="n">Province</span> <span class="n">Name</span> <span class="p">(</span><span class="n">full</span> <span class="n">name</span><span class="p">)</span> <span class="p">[</span><span class="n">Some</span><span class="o">-</span><span class="n">State</span><span class="p">]:</span><span class="o">.</span>
+<span class="n">Locality</span> <span class="n">Name</span> <span class="p">(</span><span class="n">eg</span><span class="p">,</span> <span class="n">city</span><span class="p">)</span> <span class="p">[]:</span><span class="o">.</span>
+<span class="n">Organization</span> <span class="n">Name</span> <span class="p">(</span><span class="n">eg</span><span class="p">,</span> <span class="n">company</span><span class="p">)</span> <span class="p">[</span><span class="n">Internet</span> <span class="n">Widgits</span> <span class="n">Pty</span> <span class="n">Ltd</span><span class="p">]:</span><span class="n">M2Crypto</span>
+<span class="n">Organizational</span> <span class="n">Unit</span> <span class="n">Name</span> <span class="p">(</span><span class="n">eg</span><span class="p">,</span> <span class="n">section</span><span class="p">)</span> <span class="p">[]:</span><span class="o">.</span>
+<span class="n">Common</span> <span class="n">Name</span> <span class="p">(</span><span class="n">eg</span><span class="p">,</span> <span class="n">YOUR</span> <span class="n">name</span><span class="p">)</span> <span class="p">[]:</span><span class="n">S</span><span class="o">/</span><span class="n">MIME</span> <span class="n">Sender</span>
+<span class="n">Email</span> <span class="n">Address</span> <span class="p">[]:</span><span class="n">sender</span><span class="nd">@example</span><span class="o">.</span><span class="n">dom</span>
+</pre></div>
</div>
<p>This generates a 1024-bit RSA key pair, unencrypted, into
-<tt class="docutils literal"><span class="pre">privkey.pem</span></tt>; it also generates a self-signed X.509 certificate for
-the public key into <tt class="docutils literal"><span class="pre">signer.pem</span></tt>. The certificate is valid for 365
+<code class="docutils literal"><span class="pre">privkey.pem</span></code>; it also generates a self-signed X.509 certificate for
+the public key into <code class="docutils literal"><span class="pre">signer.pem</span></code>. The certificate is valid for 365
days, i.e., a year.</p>
-<p>Let&#8217;s rename <tt class="docutils literal"><span class="pre">privkey.pem</span></tt> so that we know it is a companion of
-<tt class="docutils literal"><span class="pre">signer.pem</span></tt>&#8216;s:</p>
-<div class="highlight-python"><pre>mv privkey.pem signer_key.pem</pre>
-</div>
-<p>To verify the content of <tt class="docutils literal"><span class="pre">signer.pem</span></tt>, execute the following:</p>
-<div class="highlight-python"><pre>openssl x509 -noout -text -in signer.pem
-
-Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number: 0 (0x0)
- Signature Algorithm: md5WithRSAEncryption
- Issuer: C=SG, O=M2Crypto, CN=S/MIME Sender/Email=sender@example.dom
- Validity
- Not Before: Mar 24 12:56:16 2001 GMT
- Not After : Mar 24 12:56:16 2002 GMT
- Subject: C=SG, O=M2Crypto, CN=S/MIME Sender/Email=sender@example.dom
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- RSA Public Key: (1024 bit)
- Modulus (1024 bit):
- 00:a9:d6:e2:b5:11:3b:ae:3c:e2:17:31:70:e1:6e:
- 01:f4:19:6d:bd:2a:42:36:2b:37:34:e2:83:1d:0d:
- 11:2e:b4:99:44:db:10:67:be:97:5f:5b:1a:26:33:
- 46:23:2f:95:04:7a:35:da:9d:f9:26:88:39:9e:17:
- cd:3e:eb:a8:19:8d:a8:2a:f1:43:da:55:a9:2e:2c:
- 65:ed:04:71:42:ce:73:53:b8:ea:7e:c7:f0:23:c6:
- 63:c5:5e:68:96:64:a7:b4:2a:94:26:76:eb:79:ea:
- e3:4e:aa:82:09:4f:44:87:4a:12:62:b5:d7:1f:ca:
- f2:ce:d5:ba:7e:1f:48:fd:b9
- Exponent: 65537 (0x10001)
- X509v3 extensions:
- X509v3 Subject Key Identifier:
- 29:FB:38:B6:BF:E2:40:BB:FF:D5:71:D7:D5:C4:F0:83:1A:2B:C7:99
- X509v3 Authority Key Identifier:
- keyid:29:FB:38:B6:BF:E2:40:BB:FF:D5:71:D7:D5:C4:F0:83:1A:2B:C7:99
- DirName:/C=SG/O=M2Crypto/CN=S/MIME Sender/Email=sender@example.dom
- serial:00
-
- X509v3 Basic Constraints:
- CA:TRUE
- Signature Algorithm: md5WithRSAEncryption
- 68:c8:6b:1b:fa:7c:9a:39:35:76:18:15:c9:fd:89:97:62:db:
- 7a:b0:2d:13:dd:97:e8:1b:7a:9f:22:27:83:24:9d:2e:56:ec:
- 97:89:3c:ef:16:55:80:5a:18:7c:22:d0:f6:bb:e3:a4:e8:59:
- 30:ff:99:5a:93:3e:ea:bc:ee:7f:8d:d6:7d:37:8c:ac:3d:74:
- 80:ce:7a:99:ba:27:b9:2a:a3:71:fa:a5:25:ba:47:17:df:07:
- 56:96:36:fd:60:b9:6c:96:06:e8:e3:7b:9f:4b:6a:95:71:a8:
- 34:fc:fc:b5:88:8b:c4:3f:1e:24:f6:52:47:b2:7d:44:67:d9:
- 83:e8</pre>
+<p>Let’s rename <code class="docutils literal"><span class="pre">privkey.pem</span></code> so that we know it is a companion of
+<code class="docutils literal"><span class="pre">signer.pem</span></code>’s:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">mv</span> <span class="n">privkey</span><span class="o">.</span><span class="n">pem</span> <span class="n">signer_key</span><span class="o">.</span><span class="n">pem</span>
+</pre></div>
+</div>
+<p>To verify the content of <code class="docutils literal"><span class="pre">signer.pem</span></code>, execute the following:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">openssl</span> <span class="n">x509</span> <span class="o">-</span><span class="n">noout</span> <span class="o">-</span><span class="n">text</span> <span class="o">-</span><span class="ow">in</span> <span class="n">signer</span><span class="o">.</span><span class="n">pem</span>
+
+<span class="n">Certificate</span><span class="p">:</span>
+ <span class="n">Data</span><span class="p">:</span>
+ <span class="n">Version</span><span class="p">:</span> <span class="mi">3</span> <span class="p">(</span><span class="mh">0x2</span><span class="p">)</span>
+ <span class="n">Serial</span> <span class="n">Number</span><span class="p">:</span> <span class="mi">0</span> <span class="p">(</span><span class="mh">0x0</span><span class="p">)</span>
+ <span class="n">Signature</span> <span class="n">Algorithm</span><span class="p">:</span> <span class="n">md5WithRSAEncryption</span>
+ <span class="n">Issuer</span><span class="p">:</span> <span class="n">C</span><span class="o">=</span><span class="n">SG</span><span class="p">,</span> <span class="n">O</span><span class="o">=</span><span class="n">M2Crypto</span><span class="p">,</span> <span class="n">CN</span><span class="o">=</span><span class="n">S</span><span class="o">/</span><span class="n">MIME</span> <span class="n">Sender</span><span class="o">/</span><span class="n">Email</span><span class="o">=</span><span class="n">sender</span><span class="nd">@example</span><span class="o">.</span><span class="n">dom</span>
+ <span class="n">Validity</span>
+ <span class="n">Not</span> <span class="n">Before</span><span class="p">:</span> <span class="n">Mar</span> <span class="mi">24</span> <span class="mi">12</span><span class="p">:</span><span class="mi">56</span><span class="p">:</span><span class="mi">16</span> <span class="mi">2001</span> <span class="n">GMT</span>
+ <span class="n">Not</span> <span class="n">After</span> <span class="p">:</span> <span class="n">Mar</span> <span class="mi">24</span> <span class="mi">12</span><span class="p">:</span><span class="mi">56</span><span class="p">:</span><span class="mi">16</span> <span class="mi">2002</span> <span class="n">GMT</span>
+ <span class="n">Subject</span><span class="p">:</span> <span class="n">C</span><span class="o">=</span><span class="n">SG</span><span class="p">,</span> <span class="n">O</span><span class="o">=</span><span class="n">M2Crypto</span><span class="p">,</span> <span class="n">CN</span><span class="o">=</span><span class="n">S</span><span class="o">/</span><span class="n">MIME</span> <span class="n">Sender</span><span class="o">/</span><span class="n">Email</span><span class="o">=</span><span class="n">sender</span><span class="nd">@example</span><span class="o">.</span><span class="n">dom</span>
+ <span class="n">Subject</span> <span class="n">Public</span> <span class="n">Key</span> <span class="n">Info</span><span class="p">:</span>
+ <span class="n">Public</span> <span class="n">Key</span> <span class="n">Algorithm</span><span class="p">:</span> <span class="n">rsaEncryption</span>
+ <span class="n">RSA</span> <span class="n">Public</span> <span class="n">Key</span><span class="p">:</span> <span class="p">(</span><span class="mi">1024</span> <span class="n">bit</span><span class="p">)</span>
+ <span class="n">Modulus</span> <span class="p">(</span><span class="mi">1024</span> <span class="n">bit</span><span class="p">):</span>
+ <span class="mi">00</span><span class="p">:</span><span class="n">a9</span><span class="p">:</span><span class="n">d6</span><span class="p">:</span><span class="n">e2</span><span class="p">:</span><span class="n">b5</span><span class="p">:</span><span class="mi">11</span><span class="p">:</span><span class="mi">3</span><span class="n">b</span><span class="p">:</span><span class="n">ae</span><span class="p">:</span><span class="mi">3</span><span class="n">c</span><span class="p">:</span><span class="n">e2</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">31</span><span class="p">:</span><span class="mi">70</span><span class="p">:</span><span class="n">e1</span><span class="p">:</span><span class="mi">6</span><span class="n">e</span><span class="p">:</span>
+ <span class="mi">01</span><span class="p">:</span><span class="n">f4</span><span class="p">:</span><span class="mi">19</span><span class="p">:</span><span class="mi">6</span><span class="n">d</span><span class="p">:</span><span class="n">bd</span><span class="p">:</span><span class="mi">2</span><span class="n">a</span><span class="p">:</span><span class="mi">42</span><span class="p">:</span><span class="mi">36</span><span class="p">:</span><span class="mi">2</span><span class="n">b</span><span class="p">:</span><span class="mi">37</span><span class="p">:</span><span class="mi">34</span><span class="p">:</span><span class="n">e2</span><span class="p">:</span><span class="mi">83</span><span class="p">:</span><span class="mi">1</span><span class="n">d</span><span class="p">:</span><span class="mi">0</span><span class="n">d</span><span class="p">:</span>
+ <span class="mi">11</span><span class="p">:</span><span class="mi">2</span><span class="n">e</span><span class="p">:</span><span class="n">b4</span><span class="p">:</span><span class="mi">99</span><span class="p">:</span><span class="mi">44</span><span class="p">:</span><span class="n">db</span><span class="p">:</span><span class="mi">10</span><span class="p">:</span><span class="mi">67</span><span class="p">:</span><span class="n">be</span><span class="p">:</span><span class="mi">97</span><span class="p">:</span><span class="mi">5</span><span class="n">f</span><span class="p">:</span><span class="mi">5</span><span class="n">b</span><span class="p">:</span><span class="mi">1</span><span class="n">a</span><span class="p">:</span><span class="mi">26</span><span class="p">:</span><span class="mi">33</span><span class="p">:</span>
+ <span class="mi">46</span><span class="p">:</span><span class="mi">23</span><span class="p">:</span><span class="mi">2</span><span class="n">f</span><span class="p">:</span><span class="mi">95</span><span class="p">:</span><span class="mi">04</span><span class="p">:</span><span class="mi">7</span><span class="n">a</span><span class="p">:</span><span class="mi">35</span><span class="p">:</span><span class="n">da</span><span class="p">:</span><span class="mi">9</span><span class="n">d</span><span class="p">:</span><span class="n">f9</span><span class="p">:</span><span class="mi">26</span><span class="p">:</span><span class="mi">88</span><span class="p">:</span><span class="mi">39</span><span class="p">:</span><span class="mi">9</span><span class="n">e</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span>
+ <span class="n">cd</span><span class="p">:</span><span class="mi">3</span><span class="n">e</span><span class="p">:</span><span class="n">eb</span><span class="p">:</span><span class="n">a8</span><span class="p">:</span><span class="mi">19</span><span class="p">:</span><span class="mi">8</span><span class="n">d</span><span class="p">:</span><span class="n">a8</span><span class="p">:</span><span class="mi">2</span><span class="n">a</span><span class="p">:</span><span class="n">f1</span><span class="p">:</span><span class="mi">43</span><span class="p">:</span><span class="n">da</span><span class="p">:</span><span class="mi">55</span><span class="p">:</span><span class="n">a9</span><span class="p">:</span><span class="mi">2</span><span class="n">e</span><span class="p">:</span><span class="mi">2</span><span class="n">c</span><span class="p">:</span>
+ <span class="mi">65</span><span class="p">:</span><span class="n">ed</span><span class="p">:</span><span class="mi">04</span><span class="p">:</span><span class="mi">71</span><span class="p">:</span><span class="mi">42</span><span class="p">:</span><span class="n">ce</span><span class="p">:</span><span class="mi">73</span><span class="p">:</span><span class="mi">53</span><span class="p">:</span><span class="n">b8</span><span class="p">:</span><span class="n">ea</span><span class="p">:</span><span class="mi">7</span><span class="n">e</span><span class="p">:</span><span class="n">c7</span><span class="p">:</span><span class="n">f0</span><span class="p">:</span><span class="mi">23</span><span class="p">:</span><span class="n">c6</span><span class="p">:</span>
+ <span class="mi">63</span><span class="p">:</span><span class="n">c5</span><span class="p">:</span><span class="mi">5</span><span class="n">e</span><span class="p">:</span><span class="mi">68</span><span class="p">:</span><span class="mi">96</span><span class="p">:</span><span class="mi">64</span><span class="p">:</span><span class="n">a7</span><span class="p">:</span><span class="n">b4</span><span class="p">:</span><span class="mi">2</span><span class="n">a</span><span class="p">:</span><span class="mi">94</span><span class="p">:</span><span class="mi">26</span><span class="p">:</span><span class="mi">76</span><span class="p">:</span><span class="n">eb</span><span class="p">:</span><span class="mi">79</span><span class="p">:</span><span class="n">ea</span><span class="p">:</span>
+ <span class="n">e3</span><span class="p">:</span><span class="mi">4</span><span class="n">e</span><span class="p">:</span><span class="n">aa</span><span class="p">:</span><span class="mi">82</span><span class="p">:</span><span class="mi">09</span><span class="p">:</span><span class="mi">4</span><span class="n">f</span><span class="p">:</span><span class="mi">44</span><span class="p">:</span><span class="mi">87</span><span class="p">:</span><span class="mi">4</span><span class="n">a</span><span class="p">:</span><span class="mi">12</span><span class="p">:</span><span class="mi">62</span><span class="p">:</span><span class="n">b5</span><span class="p">:</span><span class="n">d7</span><span class="p">:</span><span class="mi">1</span><span class="n">f</span><span class="p">:</span><span class="n">ca</span><span class="p">:</span>
+ <span class="n">f2</span><span class="p">:</span><span class="n">ce</span><span class="p">:</span><span class="n">d5</span><span class="p">:</span><span class="n">ba</span><span class="p">:</span><span class="mi">7</span><span class="n">e</span><span class="p">:</span><span class="mi">1</span><span class="n">f</span><span class="p">:</span><span class="mi">48</span><span class="p">:</span><span class="n">fd</span><span class="p">:</span><span class="n">b9</span>
+ <span class="n">Exponent</span><span class="p">:</span> <span class="mi">65537</span> <span class="p">(</span><span class="mh">0x10001</span><span class="p">)</span>
+ <span class="n">X509v3</span> <span class="n">extensions</span><span class="p">:</span>
+ <span class="n">X509v3</span> <span class="n">Subject</span> <span class="n">Key</span> <span class="n">Identifier</span><span class="p">:</span>
+ <span class="mi">29</span><span class="p">:</span><span class="n">FB</span><span class="p">:</span><span class="mi">38</span><span class="p">:</span><span class="n">B6</span><span class="p">:</span><span class="n">BF</span><span class="p">:</span><span class="n">E2</span><span class="p">:</span><span class="mi">40</span><span class="p">:</span><span class="n">BB</span><span class="p">:</span><span class="n">FF</span><span class="p">:</span><span class="n">D5</span><span class="p">:</span><span class="mi">71</span><span class="p">:</span><span class="n">D7</span><span class="p">:</span><span class="n">D5</span><span class="p">:</span><span class="n">C4</span><span class="p">:</span><span class="n">F0</span><span class="p">:</span><span class="mi">83</span><span class="p">:</span><span class="mi">1</span><span class="n">A</span><span class="p">:</span><span class="mi">2</span><span class="n">B</span><span class="p">:</span><span class="n">C7</span><span class="p">:</span><span class="mi">99</span>
+ <span class="n">X509v3</span> <span class="n">Authority</span> <span class="n">Key</span> <span class="n">Identifier</span><span class="p">:</span>
+ <span class="n">keyid</span><span class="p">:</span><span class="mi">29</span><span class="p">:</span><span class="n">FB</span><span class="p">:</span><span class="mi">38</span><span class="p">:</span><span class="n">B6</span><span class="p">:</span><span class="n">BF</span><span class="p">:</span><span class="n">E2</span><span class="p">:</span><span class="mi">40</span><span class="p">:</span><span class="n">BB</span><span class="p">:</span><span class="n">FF</span><span class="p">:</span><span class="n">D5</span><span class="p">:</span><span class="mi">71</span><span class="p">:</span><span class="n">D7</span><span class="p">:</span><span class="n">D5</span><span class="p">:</span><span class="n">C4</span><span class="p">:</span><span class="n">F0</span><span class="p">:</span><span class="mi">83</span><span class="p">:</span><span class="mi">1</span><span class="n">A</span><span class="p">:</span><span class="mi">2</span><span class="n">B</span><span class="p">:</span><span class="n">C7</span><span class="p">:</span><span class="mi">99</span>
+ <span class="n">DirName</span><span class="p">:</span><span class="o">/</span><span class="n">C</span><span class="o">=</span><span class="n">SG</span><span class="o">/</span><span class="n">O</span><span class="o">=</span><span class="n">M2Crypto</span><span class="o">/</span><span class="n">CN</span><span class="o">=</span><span class="n">S</span><span class="o">/</span><span class="n">MIME</span> <span class="n">Sender</span><span class="o">/</span><span class="n">Email</span><span class="o">=</span><span class="n">sender</span><span class="nd">@example</span><span class="o">.</span><span class="n">dom</span>
+ <span class="n">serial</span><span class="p">:</span><span class="mi">00</span>
+
+ <span class="n">X509v3</span> <span class="n">Basic</span> <span class="n">Constraints</span><span class="p">:</span>
+ <span class="n">CA</span><span class="p">:</span><span class="n">TRUE</span>
+ <span class="n">Signature</span> <span class="n">Algorithm</span><span class="p">:</span> <span class="n">md5WithRSAEncryption</span>
+ <span class="mi">68</span><span class="p">:</span><span class="n">c8</span><span class="p">:</span><span class="mi">6</span><span class="n">b</span><span class="p">:</span><span class="mi">1</span><span class="n">b</span><span class="p">:</span><span class="n">fa</span><span class="p">:</span><span class="mi">7</span><span class="n">c</span><span class="p">:</span><span class="mi">9</span><span class="n">a</span><span class="p">:</span><span class="mi">39</span><span class="p">:</span><span class="mi">35</span><span class="p">:</span><span class="mi">76</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">15</span><span class="p">:</span><span class="n">c9</span><span class="p">:</span><span class="n">fd</span><span class="p">:</span><span class="mi">89</span><span class="p">:</span><span class="mi">97</span><span class="p">:</span><span class="mi">62</span><span class="p">:</span><span class="n">db</span><span class="p">:</span>
+ <span class="mi">7</span><span class="n">a</span><span class="p">:</span><span class="n">b0</span><span class="p">:</span><span class="mi">2</span><span class="n">d</span><span class="p">:</span><span class="mi">13</span><span class="p">:</span><span class="n">dd</span><span class="p">:</span><span class="mi">97</span><span class="p">:</span><span class="n">e8</span><span class="p">:</span><span class="mi">1</span><span class="n">b</span><span class="p">:</span><span class="mi">7</span><span class="n">a</span><span class="p">:</span><span class="mi">9</span><span class="n">f</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="mi">27</span><span class="p">:</span><span class="mi">83</span><span class="p">:</span><span class="mi">24</span><span class="p">:</span><span class="mi">9</span><span class="n">d</span><span class="p">:</span><span class="mi">2</span><span class="n">e</span><span class="p">:</span><span class="mi">56</span><span class="p">:</span><span class="n">ec</span><span class="p">:</span>
+ <span class="mi">97</span><span class="p">:</span><span class="mi">89</span><span class="p">:</span><span class="mi">3</span><span class="n">c</span><span class="p">:</span><span class="n">ef</span><span class="p">:</span><span class="mi">16</span><span class="p">:</span><span class="mi">55</span><span class="p">:</span><span class="mi">80</span><span class="p">:</span><span class="mi">5</span><span class="n">a</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">7</span><span class="n">c</span><span class="p">:</span><span class="mi">22</span><span class="p">:</span><span class="n">d0</span><span class="p">:</span><span class="n">f6</span><span class="p">:</span><span class="n">bb</span><span class="p">:</span><span class="n">e3</span><span class="p">:</span><span class="n">a4</span><span class="p">:</span><span class="n">e8</span><span class="p">:</span><span class="mi">59</span><span class="p">:</span>
+ <span class="mi">30</span><span class="p">:</span><span class="n">ff</span><span class="p">:</span><span class="mi">99</span><span class="p">:</span><span class="mi">5</span><span class="n">a</span><span class="p">:</span><span class="mi">93</span><span class="p">:</span><span class="mi">3</span><span class="n">e</span><span class="p">:</span><span class="n">ea</span><span class="p">:</span><span class="n">bc</span><span class="p">:</span><span class="n">ee</span><span class="p">:</span><span class="mi">7</span><span class="n">f</span><span class="p">:</span><span class="mi">8</span><span class="n">d</span><span class="p">:</span><span class="n">d6</span><span class="p">:</span><span class="mi">7</span><span class="n">d</span><span class="p">:</span><span class="mi">37</span><span class="p">:</span><span class="mi">8</span><span class="n">c</span><span class="p">:</span><span class="n">ac</span><span class="p">:</span><span class="mi">3</span><span class="n">d</span><span class="p">:</span><span class="mi">74</span><span class="p">:</span>
+ <span class="mi">80</span><span class="p">:</span><span class="n">ce</span><span class="p">:</span><span class="mi">7</span><span class="n">a</span><span class="p">:</span><span class="mi">99</span><span class="p">:</span><span class="n">ba</span><span class="p">:</span><span class="mi">27</span><span class="p">:</span><span class="n">b9</span><span class="p">:</span><span class="mi">2</span><span class="n">a</span><span class="p">:</span><span class="n">a3</span><span class="p">:</span><span class="mi">71</span><span class="p">:</span><span class="n">fa</span><span class="p">:</span><span class="n">a5</span><span class="p">:</span><span class="mi">25</span><span class="p">:</span><span class="n">ba</span><span class="p">:</span><span class="mi">47</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="n">df</span><span class="p">:</span><span class="mi">07</span><span class="p">:</span>
+ <span class="mi">56</span><span class="p">:</span><span class="mi">96</span><span class="p">:</span><span class="mi">36</span><span class="p">:</span><span class="n">fd</span><span class="p">:</span><span class="mi">60</span><span class="p">:</span><span class="n">b9</span><span class="p">:</span><span class="mi">6</span><span class="n">c</span><span class="p">:</span><span class="mi">96</span><span class="p">:</span><span class="mi">06</span><span class="p">:</span><span class="n">e8</span><span class="p">:</span><span class="n">e3</span><span class="p">:</span><span class="mi">7</span><span class="n">b</span><span class="p">:</span><span class="mi">9</span><span class="n">f</span><span class="p">:</span><span class="mi">4</span><span class="n">b</span><span class="p">:</span><span class="mi">6</span><span class="n">a</span><span class="p">:</span><span class="mi">95</span><span class="p">:</span><span class="mi">71</span><span class="p">:</span><span class="n">a8</span><span class="p">:</span>
+ <span class="mi">34</span><span class="p">:</span><span class="n">fc</span><span class="p">:</span><span class="n">fc</span><span class="p">:</span><span class="n">b5</span><span class="p">:</span><span class="mi">88</span><span class="p">:</span><span class="mi">8</span><span class="n">b</span><span class="p">:</span><span class="n">c4</span><span class="p">:</span><span class="mi">3</span><span class="n">f</span><span class="p">:</span><span class="mi">1</span><span class="n">e</span><span class="p">:</span><span class="mi">24</span><span class="p">:</span><span class="n">f6</span><span class="p">:</span><span class="mi">52</span><span class="p">:</span><span class="mi">47</span><span class="p">:</span><span class="n">b2</span><span class="p">:</span><span class="mi">7</span><span class="n">d</span><span class="p">:</span><span class="mi">44</span><span class="p">:</span><span class="mi">67</span><span class="p">:</span><span class="n">d9</span><span class="p">:</span>
+ <span class="mi">83</span><span class="p">:</span><span class="n">e8</span>
+</pre></div>
</div>
<p>Next, we generate a self-signed X.509 certificate for the recipient.
-Note that <tt class="docutils literal"><span class="pre">privkey.pem</span></tt> will be recreated:</p>
-<div class="highlight-python"><pre>openssl req -newkey rsa:1024 -nodes -x509 -days 365 -out recipient.pem
-
-Using configuration from /usr/local/pkg/openssl/openssl.cnf
-Generating a 1024 bit RSA private key
-.....................................++++++
-.................++++++
-writing new private key to &#x27;privkey.pem&#x27;
------
-You are about to be asked to enter information that will be incorporated
-into your certificate request.
-What you are about to enter is what is called a Distinguished Name or a DN.
-There are quite a few fields but you can leave some blank
-For some fields there will be a default value,
-If you enter &#x27;.&#x27;, the field will be left blank.
------
-Country Name (2 letter code) [AU]:SG
-State or Province Name (full name) [Some-State]:.
-Locality Name (eg, city) []:.
-Organization Name (eg, company) [Internet Widgits Pty Ltd]:M2Crypto
-Organizational Unit Name (eg, section) []:.
-Common Name (eg, YOUR name) []:S/MIME Recipient
-Email Address []:recipient@example.dom</pre>
-</div>
-<p>Again, rename <tt class="docutils literal"><span class="pre">privkey.pem</span></tt>:</p>
-<div class="highlight-python"><pre>mv privkey.pem recipient_key.pem</pre>
-</div>
-<p>In the examples to follow, S/MIME Sender, <tt class="docutils literal"><span class="pre">&lt;sender&#64;example.dom&gt;</span></tt>,
+Note that <code class="docutils literal"><span class="pre">privkey.pem</span></code> will be recreated:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">openssl</span> <span class="n">req</span> <span class="o">-</span><span class="n">newkey</span> <span class="n">rsa</span><span class="p">:</span><span class="mi">1024</span> <span class="o">-</span><span class="n">nodes</span> <span class="o">-</span><span class="n">x509</span> <span class="o">-</span><span class="n">days</span> <span class="mi">365</span> <span class="o">-</span><span class="n">out</span> <span class="n">recipient</span><span class="o">.</span><span class="n">pem</span>
+
+<span class="n">Using</span> <span class="n">configuration</span> <span class="kn">from</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">pkg</span><span class="o">/</span><span class="n">openssl</span><span class="o">/</span><span class="n">openssl</span><span class="o">.</span><span class="n">cnf</span>
+<span class="n">Generating</span> <span class="n">a</span> <span class="mi">1024</span> <span class="n">bit</span> <span class="n">RSA</span> <span class="n">private</span> <span class="n">key</span>
+<span class="o">.....................................++++++</span>
+<span class="o">.................++++++</span>
+<span class="n">writing</span> <span class="n">new</span> <span class="n">private</span> <span class="n">key</span> <span class="n">to</span> <span class="s1">&#39;privkey.pem&#39;</span>
+<span class="o">-----</span>
+<span class="n">You</span> <span class="n">are</span> <span class="n">about</span> <span class="n">to</span> <span class="n">be</span> <span class="n">asked</span> <span class="n">to</span> <span class="n">enter</span> <span class="n">information</span> <span class="n">that</span> <span class="n">will</span> <span class="n">be</span> <span class="n">incorporated</span>
+<span class="n">into</span> <span class="n">your</span> <span class="n">certificate</span> <span class="n">request</span><span class="o">.</span>
+<span class="n">What</span> <span class="n">you</span> <span class="n">are</span> <span class="n">about</span> <span class="n">to</span> <span class="n">enter</span> <span class="ow">is</span> <span class="n">what</span> <span class="ow">is</span> <span class="n">called</span> <span class="n">a</span> <span class="n">Distinguished</span> <span class="n">Name</span> <span class="ow">or</span> <span class="n">a</span> <span class="n">DN</span><span class="o">.</span>
+<span class="n">There</span> <span class="n">are</span> <span class="n">quite</span> <span class="n">a</span> <span class="n">few</span> <span class="n">fields</span> <span class="n">but</span> <span class="n">you</span> <span class="n">can</span> <span class="n">leave</span> <span class="n">some</span> <span class="n">blank</span>
+<span class="n">For</span> <span class="n">some</span> <span class="n">fields</span> <span class="n">there</span> <span class="n">will</span> <span class="n">be</span> <span class="n">a</span> <span class="n">default</span> <span class="n">value</span><span class="p">,</span>
+<span class="n">If</span> <span class="n">you</span> <span class="n">enter</span> <span class="s1">&#39;.&#39;</span><span class="p">,</span> <span class="n">the</span> <span class="n">field</span> <span class="n">will</span> <span class="n">be</span> <span class="n">left</span> <span class="n">blank</span><span class="o">.</span>
+<span class="o">-----</span>
+<span class="n">Country</span> <span class="n">Name</span> <span class="p">(</span><span class="mi">2</span> <span class="n">letter</span> <span class="n">code</span><span class="p">)</span> <span class="p">[</span><span class="n">AU</span><span class="p">]:</span><span class="n">SG</span>
+<span class="n">State</span> <span class="ow">or</span> <span class="n">Province</span> <span class="n">Name</span> <span class="p">(</span><span class="n">full</span> <span class="n">name</span><span class="p">)</span> <span class="p">[</span><span class="n">Some</span><span class="o">-</span><span class="n">State</span><span class="p">]:</span><span class="o">.</span>
+<span class="n">Locality</span> <span class="n">Name</span> <span class="p">(</span><span class="n">eg</span><span class="p">,</span> <span class="n">city</span><span class="p">)</span> <span class="p">[]:</span><span class="o">.</span>
+<span class="n">Organization</span> <span class="n">Name</span> <span class="p">(</span><span class="n">eg</span><span class="p">,</span> <span class="n">company</span><span class="p">)</span> <span class="p">[</span><span class="n">Internet</span> <span class="n">Widgits</span> <span class="n">Pty</span> <span class="n">Ltd</span><span class="p">]:</span><span class="n">M2Crypto</span>
+<span class="n">Organizational</span> <span class="n">Unit</span> <span class="n">Name</span> <span class="p">(</span><span class="n">eg</span><span class="p">,</span> <span class="n">section</span><span class="p">)</span> <span class="p">[]:</span><span class="o">.</span>
+<span class="n">Common</span> <span class="n">Name</span> <span class="p">(</span><span class="n">eg</span><span class="p">,</span> <span class="n">YOUR</span> <span class="n">name</span><span class="p">)</span> <span class="p">[]:</span><span class="n">S</span><span class="o">/</span><span class="n">MIME</span> <span class="n">Recipient</span>
+<span class="n">Email</span> <span class="n">Address</span> <span class="p">[]:</span><span class="n">recipient</span><span class="nd">@example</span><span class="o">.</span><span class="n">dom</span>
+</pre></div>
+</div>
+<p>Again, rename <code class="docutils literal"><span class="pre">privkey.pem</span></code>:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">mv</span> <span class="n">privkey</span><span class="o">.</span><span class="n">pem</span> <span class="n">recipient_key</span><span class="o">.</span><span class="n">pem</span>
+</pre></div>
+</div>
+<p>In the examples to follow, S/MIME Sender, <code class="docutils literal"><span class="pre">&lt;sender&#64;example.dom&gt;</span></code>,
shall be the sender of S/MIME messages, while S/MIME Recipient,
-<tt class="docutils literal"><span class="pre">&lt;recipient&#64;example.dom&gt;</span></tt>, shall be the recipient of S/MIME messages.</p>
+<code class="docutils literal"><span class="pre">&lt;recipient&#64;example.dom&gt;</span></code>, shall be the recipient of S/MIME messages.</p>
<p>Armed with the key pairs and certificates, we are now ready to begin
programming S/MIME in Python.</p>
<blockquote>
<div><p><strong>Note:</strong> The private keys generated above are <em>not
passphrase-protected</em>, i.e., they are <em>in the clear</em>. Anyone who has
access to such a key can generate S/MIME-signed messages with it,
-and decrypt S/MIME messages encrypted to it&#8217;s corresponding public
+and decrypt S/MIME messages encrypted to it’s corresponding public
key.</p>
<p>We may passphrase-protect the keys, if we so choose. M2Crypto will
prompt the user for the passphrase when such a key is being loaded.</p>
@@ -220,23 +217,23 @@ prompt the user for the passphrase when such a key is being loaded.</p>
</div>
<div class="section" id="m2crypto-smime">
<h1>M2Crypto.SMIME<a class="headerlink" href="#m2crypto-smime" title="Permalink to this headline">¶</a></h1>
-<p>The Python programmer accesses M2Crypto&#8217;s S/MIME functionality through
-class <tt class="docutils literal"><span class="pre">SMIME</span></tt> in the module <tt class="docutils literal"><span class="pre">M2Crypto.SMIME</span></tt>. Typically, an
-<tt class="docutils literal"><span class="pre">SMIME</span></tt> object is instantiated; the object is then set up for the
+<p>The Python programmer accesses M2Crypto’s S/MIME functionality through
+class <code class="docutils literal"><span class="pre">SMIME</span></code> in the module <code class="docutils literal"><span class="pre">M2Crypto.SMIME</span></code>. Typically, an
+<code class="docutils literal"><span class="pre">SMIME</span></code> object is instantiated; the object is then set up for the
intended operation: sign, encrypt, decrypt or verify; finally, the
operation is invoked on the object.</p>
-<p><tt class="docutils literal"><span class="pre">M2Crypto.SMIME</span></tt> makes extensive use of <tt class="docutils literal"><span class="pre">M2Crypto.BIO</span></tt>:
-<tt class="docutils literal"><span class="pre">M2Crypto.BIO</span></tt> is a Python abstraction of the <tt class="docutils literal"><span class="pre">BIO</span></tt> abstraction in
-OpenSSL. A commonly used <tt class="docutils literal"><span class="pre">BIO</span></tt> abstraction in M2Crypto is
-<tt class="docutils literal"><span class="pre">M2Crypto.BIO.MemoryBuffer</span></tt>, which implements a memory-based file-like
-object, similar to Python&#8217;s own <tt class="docutils literal"><span class="pre">StringIO</span></tt>.</p>
+<p><code class="docutils literal"><span class="pre">M2Crypto.SMIME</span></code> makes extensive use of <code class="docutils literal"><span class="pre">M2Crypto.BIO</span></code>:
+<code class="docutils literal"><span class="pre">M2Crypto.BIO</span></code> is a Python abstraction of the <code class="docutils literal"><span class="pre">BIO</span></code> abstraction in
+OpenSSL. A commonly used <code class="docutils literal"><span class="pre">BIO</span></code> abstraction in M2Crypto is
+<code class="docutils literal"><span class="pre">M2Crypto.BIO.MemoryBuffer</span></code>, which implements a memory-based file-like
+object, similar to Python’s own <code class="docutils literal"><span class="pre">StringIO</span></code>.</p>
</div>
<div class="section" id="sign">
<h1>Sign<a class="headerlink" href="#sign" title="Permalink to this headline">¶</a></h1>
<p>The following code demonstrates how to generate an S/MIME-signed
-message. <tt class="docutils literal"><span class="pre">randpool.dat</span></tt> contains random data which is used to seed
-OpenSSL&#8217;s pseudo-random number generator via M2Crypto:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">Rand</span><span class="p">,</span> <span class="n">SMIME</span>
+message. <code class="docutils literal"><span class="pre">randpool.dat</span></code> contains random data which is used to seed
+OpenSSL’s pseudo-random number generator via M2Crypto:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">Rand</span><span class="p">,</span> <span class="n">SMIME</span>
<span class="k">def</span> <span class="nf">makebuf</span><span class="p">(</span><span class="n">text</span><span class="p">):</span>
<span class="k">return</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
@@ -253,14 +250,14 @@ OpenSSL&#8217;s pseudo-random number generator via M2Crypto:</p>
<span class="n">p7</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">sign</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="n">SMIME</span><span class="o">.</span><span class="n">PKCS7_DETACHED</span><span class="p">)</span>
</pre></div>
</div>
-<p><tt class="docutils literal"><span class="pre">p7</span></tt> now contains a <em>PKCS #7 signature blob</em> wrapped in an
-<tt class="docutils literal"><span class="pre">M2Crypto.SMIME.PKCS7</span></tt> object. Note that <tt class="docutils literal"><span class="pre">buf</span></tt> has been consumed by
-<tt class="docutils literal"><span class="pre">sign()</span></tt> and has to be recreated if it is to be used again.</p>
+<p><code class="docutils literal"><span class="pre">p7</span></code> now contains a <em>PKCS #7 signature blob</em> wrapped in an
+<code class="docutils literal"><span class="pre">M2Crypto.SMIME.PKCS7</span></code> object. Note that <code class="docutils literal"><span class="pre">buf</span></code> has been consumed by
+<code class="docutils literal"><span class="pre">sign()</span></code> and has to be recreated if it is to be used again.</p>
<p>We may now send the signed message via SMTP. In these examples, we shall
-not do so; instead, we&#8217;ll render the S/MIME output in mail-friendly
+not do so; instead, we’ll render the S/MIME output in mail-friendly
format, and pretend that our messages are sent and received
correctly:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="c1"># Recreate buf.</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1"># Recreate buf.</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">makebuf</span><span class="p">(</span><span class="s1">&#39;a sign of our times&#39;</span><span class="p">)</span>
<span class="c1"># Output p7 in mail-friendly format.</span>
@@ -270,64 +267,65 @@ correctly:</p>
<span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;Subject: M2Crypto S/MIME testing</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="n">s</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n">p7</span><span class="p">,</span> <span class="n">buf</span><span class="p">)</span>
-<span class="k">print</span><span class="p">(</span><span class="n">out</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
+<span class="nb">print</span><span class="p">(</span><span class="n">out</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
<span class="c1"># Save the PRNG&#39;s state.</span>
<span class="n">Rand</span><span class="o">.</span><span class="n">save_file</span><span class="p">(</span><span class="s1">&#39;randpool.dat&#39;</span><span class="p">)</span>
</pre></div>
</div>
-<p>Here&#8217;s the output:</p>
-<div class="highlight-python"><pre>From: sender@example.dom
-To: recipient@example.dom
-Subject: M2Crypto S/MIME testing
-MIME-Version: 1.0
-Content-Type: multipart/signed ; protocol=&quot;application/x-pkcs7-signature&quot; ; micalg=sha1 ; boundary=&quot;----3C93156FC7B4EBF49FE9C7DB7F503087&quot;
-
-This is an S/MIME signed message
-
-------3C93156FC7B4EBF49FE9C7DB7F503087
-a sign of our times
-------3C93156FC7B4EBF49FE9C7DB7F503087
-Content-Type: application/x-pkcs7-signature; name=&quot;smime.p7s&quot;
-Content-Transfer-Encoding: base64
-Content-Disposition: attachment; filename=&quot;smime.p7s&quot;
-
-MIIE8AYJKoZIhvcNAQcCoIIE4TCCBN0CAQExCzAJBgUrDgMCGgUAMCIGCSqGSIb3
-DQEHAaAVBBNhIHNpZ24gb2Ygb3VyIHRpbWVzoIIC5zCCAuMwggJMoAMCAQICAQAw
-DQYJKoZIhvcNAQEEBQAwWzELMAkGA1UEBhMCU0cxETAPBgNVBAoTCE0yQ3J5cHRv
-MRYwFAYDVQQDEw1TL01JTUUgU2VuZGVyMSEwHwYJKoZIhvcNAQkBFhJzZW5kZXJA
-ZXhhbXBsZS5kb20wHhcNMDEwMzMxMTE0MDMzWhcNMDIwMzMxMTE0MDMzWjBbMQsw
-CQYDVQQGEwJTRzERMA8GA1UEChMITTJDcnlwdG8xFjAUBgNVBAMTDVMvTUlNRSBT
-ZW5kZXIxITAfBgkqhkiG9w0BCQEWEnNlbmRlckBleGFtcGxlLmRvbTCBnzANBgkq
-hkiG9w0BAQEFAAOBjQAwgYkCgYEA5c5Tj1CHTSOxa1q2q0FYiwMWYHptJpJcvtZm
-UwrgU5sHrA8OnCM0cDXEj0KPf3cfNjHffB8HWMzI4UEgNmFXQNsxoGZ+iqwxLlNj
-y9Mh7eFW/Bjq5hNXbouSlQ0rWBRkoxV64y+t6lQehb32WfYXQbKFxFJSXzSxOx3R
-8YhSPd0CAwEAAaOBtjCBszAdBgNVHQ4EFgQUXOyolL1t4jaBwZFRM7MS8nBLzUow
-gYMGA1UdIwR8MHqAFFzsqJS9beI2gcGRUTOzEvJwS81KoV+kXTBbMQswCQYDVQQG
-EwJTRzERMA8GA1UEChMITTJDcnlwdG8xFjAUBgNVBAMTDVMvTUlNRSBTZW5kZXIx
-ITAfBgkqhkiG9w0BCQEWEnNlbmRlckBleGFtcGxlLmRvbYIBADAMBgNVHRMEBTAD
-AQH/MA0GCSqGSIb3DQEBBAUAA4GBAHo3DrCHR86fSTVAvfiXdSswWqKtCEhUHRdC
-TLFGl4hDk2GyZxaFuqZwiURz/H7nMicymI2wkz8H/wyHFg8G3BIehURpj2v/ZWXY
-eovbgS7EZALVVkDj4hNl/IIHWd6Gtv1UODf7URbxtl3hQ9/eTWITrefT1heuPnar
-8czydsOLMYIBujCCAbYCAQEwYDBbMQswCQYDVQQGEwJTRzERMA8GA1UEChMITTJD
-cnlwdG8xFjAUBgNVBAMTDVMvTUlNRSBTZW5kZXIxITAfBgkqhkiG9w0BCQEWEnNl
-bmRlckBleGFtcGxlLmRvbQIBADAJBgUrDgMCGgUAoIGxMBgGCSqGSIb3DQEJAzEL
-BgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTAxMDMzMTExNDUwMlowIwYJKoZI
-hvcNAQkEMRYEFOoeRUd8ExIYXfQq8BTFuKWrSP3iMFIGCSqGSIb3DQEJDzFFMEMw
-CgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsO
-AwIHMA0GCCqGSIb3DQMCAgEoMA0GCSqGSIb3DQEBAQUABIGAQpU8hFUtLCF6hO2t
-ec9EYJ/Imqqiiw+BxWxkUUVT81Vbjwdn9JST6+sztM5JRP2ZW+b4txEjZriYC8f3
-kv95YMTGbIsuWkJ93GrbvqoJ/CxO23r9WWRnZEm/1EZN9ZmlrYqzBTxnNRmP3Dhj
-cW8kzZwH+2/2zz2G7x1HxRWH95A=
-
-------3C93156FC7B4EBF49FE9C7DB7F503087--</pre>
+<p>Here’s the output:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">From</span><span class="p">:</span> <span class="n">sender</span><span class="nd">@example</span><span class="o">.</span><span class="n">dom</span>
+<span class="n">To</span><span class="p">:</span> <span class="n">recipient</span><span class="nd">@example</span><span class="o">.</span><span class="n">dom</span>
+<span class="n">Subject</span><span class="p">:</span> <span class="n">M2Crypto</span> <span class="n">S</span><span class="o">/</span><span class="n">MIME</span> <span class="n">testing</span>
+<span class="n">MIME</span><span class="o">-</span><span class="n">Version</span><span class="p">:</span> <span class="mf">1.0</span>
+<span class="n">Content</span><span class="o">-</span><span class="n">Type</span><span class="p">:</span> <span class="n">multipart</span><span class="o">/</span><span class="n">signed</span> <span class="p">;</span> <span class="n">protocol</span><span class="o">=</span><span class="s2">&quot;application/x-pkcs7-signature&quot;</span> <span class="p">;</span> <span class="n">micalg</span><span class="o">=</span><span class="n">sha1</span> <span class="p">;</span> <span class="n">boundary</span><span class="o">=</span><span class="s2">&quot;----3C93156FC7B4EBF49FE9C7DB7F503087&quot;</span>
+
+<span class="n">This</span> <span class="ow">is</span> <span class="n">an</span> <span class="n">S</span><span class="o">/</span><span class="n">MIME</span> <span class="n">signed</span> <span class="n">message</span>
+
+<span class="o">------</span><span class="mi">3</span><span class="n">C93156FC7B4EBF49FE9C7DB7F503087</span>
+<span class="n">a</span> <span class="n">sign</span> <span class="n">of</span> <span class="n">our</span> <span class="n">times</span>
+<span class="o">------</span><span class="mi">3</span><span class="n">C93156FC7B4EBF49FE9C7DB7F503087</span>
+<span class="n">Content</span><span class="o">-</span><span class="n">Type</span><span class="p">:</span> <span class="n">application</span><span class="o">/</span><span class="n">x</span><span class="o">-</span><span class="n">pkcs7</span><span class="o">-</span><span class="n">signature</span><span class="p">;</span> <span class="n">name</span><span class="o">=</span><span class="s2">&quot;smime.p7s&quot;</span>
+<span class="n">Content</span><span class="o">-</span><span class="n">Transfer</span><span class="o">-</span><span class="n">Encoding</span><span class="p">:</span> <span class="n">base64</span>
+<span class="n">Content</span><span class="o">-</span><span class="n">Disposition</span><span class="p">:</span> <span class="n">attachment</span><span class="p">;</span> <span class="n">filename</span><span class="o">=</span><span class="s2">&quot;smime.p7s&quot;</span>
+
+<span class="n">MIIE8AYJKoZIhvcNAQcCoIIE4TCCBN0CAQExCzAJBgUrDgMCGgUAMCIGCSqGSIb3</span>
+<span class="n">DQEHAaAVBBNhIHNpZ24gb2Ygb3VyIHRpbWVzoIIC5zCCAuMwggJMoAMCAQICAQAw</span>
+<span class="n">DQYJKoZIhvcNAQEEBQAwWzELMAkGA1UEBhMCU0cxETAPBgNVBAoTCE0yQ3J5cHRv</span>
+<span class="n">MRYwFAYDVQQDEw1TL01JTUUgU2VuZGVyMSEwHwYJKoZIhvcNAQkBFhJzZW5kZXJA</span>
+<span class="n">ZXhhbXBsZS5kb20wHhcNMDEwMzMxMTE0MDMzWhcNMDIwMzMxMTE0MDMzWjBbMQsw</span>
+<span class="n">CQYDVQQGEwJTRzERMA8GA1UEChMITTJDcnlwdG8xFjAUBgNVBAMTDVMvTUlNRSBT</span>
+<span class="n">ZW5kZXIxITAfBgkqhkiG9w0BCQEWEnNlbmRlckBleGFtcGxlLmRvbTCBnzANBgkq</span>
+<span class="n">hkiG9w0BAQEFAAOBjQAwgYkCgYEA5c5Tj1CHTSOxa1q2q0FYiwMWYHptJpJcvtZm</span>
+<span class="n">UwrgU5sHrA8OnCM0cDXEj0KPf3cfNjHffB8HWMzI4UEgNmFXQNsxoGZ</span><span class="o">+</span><span class="n">iqwxLlNj</span>
+<span class="n">y9Mh7eFW</span><span class="o">/</span><span class="n">Bjq5hNXbouSlQ0rWBRkoxV64y</span><span class="o">+</span><span class="n">t6lQehb32WfYXQbKFxFJSXzSxOx3R</span>
+<span class="mi">8</span><span class="n">YhSPd0CAwEAAaOBtjCBszAdBgNVHQ4EFgQUXOyolL1t4jaBwZFRM7MS8nBLzUow</span>
+<span class="n">gYMGA1UdIwR8MHqAFFzsqJS9beI2gcGRUTOzEvJwS81KoV</span><span class="o">+</span><span class="n">kXTBbMQswCQYDVQQG</span>
+<span class="n">EwJTRzERMA8GA1UEChMITTJDcnlwdG8xFjAUBgNVBAMTDVMvTUlNRSBTZW5kZXIx</span>
+<span class="n">ITAfBgkqhkiG9w0BCQEWEnNlbmRlckBleGFtcGxlLmRvbYIBADAMBgNVHRMEBTAD</span>
+<span class="n">AQH</span><span class="o">/</span><span class="n">MA0GCSqGSIb3DQEBBAUAA4GBAHo3DrCHR86fSTVAvfiXdSswWqKtCEhUHRdC</span>
+<span class="n">TLFGl4hDk2GyZxaFuqZwiURz</span><span class="o">/</span><span class="n">H7nMicymI2wkz8H</span><span class="o">/</span><span class="n">wyHFg8G3BIehURpj2v</span><span class="o">/</span><span class="n">ZWXY</span>
+<span class="n">eovbgS7EZALVVkDj4hNl</span><span class="o">/</span><span class="n">IIHWd6Gtv1UODf7URbxtl3hQ9</span><span class="o">/</span><span class="n">eTWITrefT1heuPnar</span>
+<span class="mi">8</span><span class="n">czydsOLMYIBujCCAbYCAQEwYDBbMQswCQYDVQQGEwJTRzERMA8GA1UEChMITTJD</span>
+<span class="n">cnlwdG8xFjAUBgNVBAMTDVMvTUlNRSBTZW5kZXIxITAfBgkqhkiG9w0BCQEWEnNl</span>
+<span class="n">bmRlckBleGFtcGxlLmRvbQIBADAJBgUrDgMCGgUAoIGxMBgGCSqGSIb3DQEJAzEL</span>
+<span class="n">BgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTAxMDMzMTExNDUwMlowIwYJKoZI</span>
+<span class="n">hvcNAQkEMRYEFOoeRUd8ExIYXfQq8BTFuKWrSP3iMFIGCSqGSIb3DQEJDzFFMEMw</span>
+<span class="n">CgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsO</span>
+<span class="n">AwIHMA0GCCqGSIb3DQMCAgEoMA0GCSqGSIb3DQEBAQUABIGAQpU8hFUtLCF6hO2t</span>
+<span class="n">ec9EYJ</span><span class="o">/</span><span class="n">Imqqiiw</span><span class="o">+</span><span class="n">BxWxkUUVT81Vbjwdn9JST6</span><span class="o">+</span><span class="n">sztM5JRP2ZW</span><span class="o">+</span><span class="n">b4txEjZriYC8f3</span>
+<span class="n">kv95YMTGbIsuWkJ93GrbvqoJ</span><span class="o">/</span><span class="n">CxO23r9WWRnZEm</span><span class="o">/</span><span class="mi">1</span><span class="n">EZN9ZmlrYqzBTxnNRmP3Dhj</span>
+<span class="n">cW8kzZwH</span><span class="o">+</span><span class="mi">2</span><span class="o">/</span><span class="mi">2</span><span class="n">zz2G7x1HxRWH95A</span><span class="o">=</span>
+
+<span class="o">------</span><span class="mi">3</span><span class="n">C93156FC7B4EBF49FE9C7DB7F503087</span><span class="o">--</span>
+</pre></div>
</div>
</div>
<div class="section" id="verify">
<h1>Verify<a class="headerlink" href="#verify" title="Permalink to this headline">¶</a></h1>
-<p>Assume the above output has been saved into <tt class="docutils literal"><span class="pre">sign.p7</span></tt>. Let&#8217;s now
+<p>Assume the above output has been saved into <code class="docutils literal"><span class="pre">sign.p7</span></code>. Let’s now
verify the signature:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">SMIME</span><span class="p">,</span> <span class="n">X509</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">SMIME</span><span class="p">,</span> <span class="n">X509</span>
<span class="c1"># Instantiate an SMIME object.</span>
<span class="n">s</span> <span class="o">=</span> <span class="n">SMIME</span><span class="o">.</span><span class="n">SMIME</span><span class="p">()</span>
@@ -347,36 +345,38 @@ verify the signature:</p>
<span class="c1"># Load the data, verify it.</span>
<span class="n">p7</span><span class="p">,</span> <span class="n">data</span> <span class="o">=</span> <span class="n">SMIME</span><span class="o">.</span><span class="n">smime_load_pkcs7</span><span class="p">(</span><span class="s1">&#39;sign.p7&#39;</span><span class="p">)</span>
<span class="n">v</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">verify</span><span class="p">(</span><span class="n">p7</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
-<span class="k">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
-<span class="k">print</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
-<span class="k">print</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
+<span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
+<span class="nb">print</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
+<span class="nb">print</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
</pre></div>
</div>
-<p>Here&#8217;s the output of the above program:</p>
-<div class="highlight-python"><pre>a sign of our times
-&lt;M2Crypto.BIO.BIO instance at 0x822012c&gt;
-a sign of our times</pre>
+<p>Here’s the output of the above program:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">a</span> <span class="n">sign</span> <span class="n">of</span> <span class="n">our</span> <span class="n">times</span>
+<span class="o">&lt;</span><span class="n">M2Crypto</span><span class="o">.</span><span class="n">BIO</span><span class="o">.</span><span class="n">BIO</span> <span class="n">instance</span> <span class="n">at</span> <span class="mh">0x822012c</span><span class="o">&gt;</span>
+<span class="n">a</span> <span class="n">sign</span> <span class="n">of</span> <span class="n">our</span> <span class="n">times</span>
+</pre></div>
</div>
-<p>Suppose, instead of loading <tt class="docutils literal"><span class="pre">signer.pem</span></tt> above, we load
-<tt class="docutils literal"><span class="pre">recipient.pem</span></tt>. That is, we do a global substitution of
-<tt class="docutils literal"><span class="pre">recipient.pem</span></tt> for <tt class="docutils literal"><span class="pre">signer.pem</span></tt> in the above program. Here&#8217;s the
-modified program&#8217;s output:</p>
-<div class="highlight-python"><pre>Traceback (most recent call last):
+<p>Suppose, instead of loading <code class="docutils literal"><span class="pre">signer.pem</span></code> above, we load
+<code class="docutils literal"><span class="pre">recipient.pem</span></code>. That is, we do a global substitution of
+<code class="docutils literal"><span class="pre">recipient.pem</span></code> for <code class="docutils literal"><span class="pre">signer.pem</span></code> in the above program. Here’s the
+modified program’s output:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span>Traceback (most recent call last):
File &quot;./verify.py&quot;, line 22, in ?
v = s.verify(p7)
File &quot;/usr/local/home/ngps/prog/m2/M2Crypto/SMIME.py&quot;, line 205, in verify
raise SMIME_Error, Err.get_error()
-M2Crypto.SMIME.SMIME_Error: 312:error:21075075:PKCS7 routines:PKCS7_verify:certificate verify error:pk7_smime.c:213:Verify error:self signed certificate</pre>
+M2Crypto.SMIME.SMIME_Error: 312:error:21075075:PKCS7 routines:PKCS7_verify:certificate verify error:pk7_smime.c:213:Verify error:self signed certificate
+</pre></div>
</div>
-<p>As displayed, the error is generated by line 213 of OpenSSL&#8217;s
-<tt class="docutils literal"><span class="pre">pk7_smime.c</span></tt> (as of OpenSSL 0.9.6); if you are a C programmer, you
-may wish to look up the C source to explore OpenSSL&#8217;s S/MIME
+<p>As displayed, the error is generated by line 213 of OpenSSL’s
+<code class="docutils literal"><span class="pre">pk7_smime.c</span></code> (as of OpenSSL 0.9.6); if you are a C programmer, you
+may wish to look up the C source to explore OpenSSL’s S/MIME
implementation and understand why the error message is worded thus.</p>
</div>
<div class="section" id="encrypt">
<h1>Encrypt<a class="headerlink" href="#encrypt" title="Permalink to this headline">¶</a></h1>
<p>We now demonstrate how to generate an S/MIME-encrypted message:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">Rand</span><span class="p">,</span> <span class="n">SMIME</span><span class="p">,</span> <span class="n">X509</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">Rand</span><span class="p">,</span> <span class="n">SMIME</span><span class="p">,</span> <span class="n">X509</span>
<span class="k">def</span> <span class="nf">makebuf</span><span class="p">(</span><span class="n">text</span><span class="p">):</span>
<span class="k">return</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
@@ -409,36 +409,37 @@ implementation and understand why the error message is worded thus.</p>
<span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;Subject: M2Crypto S/MIME testing</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="n">s</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n">p7</span><span class="p">)</span>
-<span class="k">print</span><span class="p">(</span><span class="n">out</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
+<span class="nb">print</span><span class="p">(</span><span class="n">out</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
<span class="c1"># Save the PRNG&#39;s state.</span>
<span class="n">Rand</span><span class="o">.</span><span class="n">save_file</span><span class="p">(</span><span class="s1">&#39;randpool.dat&#39;</span><span class="p">)</span>
</pre></div>
</div>
-<p>Here&#8217;s the output of the above program:</p>
-<div class="highlight-python"><pre>From: sender@example.dom
-To: recipient@example.dom
-Subject: M2Crypto S/MIME testing
-MIME-Version: 1.0
-Content-Disposition: attachment; filename=&quot;smime.p7m&quot;
-Content-Type: application/x-pkcs7-mime; name=&quot;smime.p7m&quot;
-Content-Transfer-Encoding: base64
-
-MIIBVwYJKoZIhvcNAQcDoIIBSDCCAUQCAQAxggEAMIH9AgEAMGYwYTELMAkGA1UE
-BhMCU0cxETAPBgNVBAoTCE0yQ3J5cHRvMRkwFwYDVQQDExBTL01JTUUgUmVjaXBp
-ZW50MSQwIgYJKoZIhvcNAQkBFhVyZWNpcGllbnRAZXhhbXBsZS5kb20CAQAwDQYJ
-KoZIhvcNAQEBBQAEgYCBaXZ+qjpBEZwdP7gjfzfAtQitESyMwo3i+LBOw6sSDir6
-FlNDPCnkrTvqDX3Rt6X6vBtTCYOm+qiN7ujPkOU61cN7h8dvHR8YW9+0IPY80/W0
-lZ/HihSRgwTNd7LnxUUcPx8YV1id0dlmP0Hz+Lg+mHf6rqaR//JcYhX9vW4XvjA7
-BgkqhkiG9w0BBwEwFAYIKoZIhvcNAwcECMN+qya6ADywgBgHr9Jkhwn5Gsdu7BwX
-nIQfYTYcdL9I5Sk=</pre>
+<p>Here’s the output of the above program:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">From</span><span class="p">:</span> <span class="n">sender</span><span class="nd">@example</span><span class="o">.</span><span class="n">dom</span>
+<span class="n">To</span><span class="p">:</span> <span class="n">recipient</span><span class="nd">@example</span><span class="o">.</span><span class="n">dom</span>
+<span class="n">Subject</span><span class="p">:</span> <span class="n">M2Crypto</span> <span class="n">S</span><span class="o">/</span><span class="n">MIME</span> <span class="n">testing</span>
+<span class="n">MIME</span><span class="o">-</span><span class="n">Version</span><span class="p">:</span> <span class="mf">1.0</span>
+<span class="n">Content</span><span class="o">-</span><span class="n">Disposition</span><span class="p">:</span> <span class="n">attachment</span><span class="p">;</span> <span class="n">filename</span><span class="o">=</span><span class="s2">&quot;smime.p7m&quot;</span>
+<span class="n">Content</span><span class="o">-</span><span class="n">Type</span><span class="p">:</span> <span class="n">application</span><span class="o">/</span><span class="n">x</span><span class="o">-</span><span class="n">pkcs7</span><span class="o">-</span><span class="n">mime</span><span class="p">;</span> <span class="n">name</span><span class="o">=</span><span class="s2">&quot;smime.p7m&quot;</span>
+<span class="n">Content</span><span class="o">-</span><span class="n">Transfer</span><span class="o">-</span><span class="n">Encoding</span><span class="p">:</span> <span class="n">base64</span>
+
+<span class="n">MIIBVwYJKoZIhvcNAQcDoIIBSDCCAUQCAQAxggEAMIH9AgEAMGYwYTELMAkGA1UE</span>
+<span class="n">BhMCU0cxETAPBgNVBAoTCE0yQ3J5cHRvMRkwFwYDVQQDExBTL01JTUUgUmVjaXBp</span>
+<span class="n">ZW50MSQwIgYJKoZIhvcNAQkBFhVyZWNpcGllbnRAZXhhbXBsZS5kb20CAQAwDQYJ</span>
+<span class="n">KoZIhvcNAQEBBQAEgYCBaXZ</span><span class="o">+</span><span class="n">qjpBEZwdP7gjfzfAtQitESyMwo3i</span><span class="o">+</span><span class="n">LBOw6sSDir6</span>
+<span class="n">FlNDPCnkrTvqDX3Rt6X6vBtTCYOm</span><span class="o">+</span><span class="n">qiN7ujPkOU61cN7h8dvHR8YW9</span><span class="o">+</span><span class="mi">0</span><span class="n">IPY80</span><span class="o">/</span><span class="n">W0</span>
+<span class="n">lZ</span><span class="o">/</span><span class="n">HihSRgwTNd7LnxUUcPx8YV1id0dlmP0Hz</span><span class="o">+</span><span class="n">Lg</span><span class="o">+</span><span class="n">mHf6rqaR</span><span class="o">//</span><span class="n">JcYhX9vW4XvjA7</span>
+<span class="n">BgkqhkiG9w0BBwEwFAYIKoZIhvcNAwcECMN</span><span class="o">+</span><span class="n">qya6ADywgBgHr9Jkhwn5Gsdu7BwX</span>
+<span class="n">nIQfYTYcdL9I5Sk</span><span class="o">=</span>
+</pre></div>
</div>
</div>
<div class="section" id="decrypt">
<h1>Decrypt<a class="headerlink" href="#decrypt" title="Permalink to this headline">¶</a></h1>
-<p>Assume the above output has been saved into <tt class="docutils literal"><span class="pre">encrypt.p7</span></tt>. Decrypt the
+<p>Assume the above output has been saved into <code class="docutils literal"><span class="pre">encrypt.p7</span></code>. Decrypt the
message thusly:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">SMIME</span><span class="p">,</span> <span class="n">X509</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">SMIME</span><span class="p">,</span> <span class="n">X509</span>
<span class="c1"># Instantiate an SMIME object.</span>
<span class="n">s</span> <span class="o">=</span> <span class="n">SMIME</span><span class="o">.</span><span class="n">SMIME</span><span class="p">()</span>
@@ -452,17 +453,18 @@ message thusly:</p>
<span class="c1"># Decrypt p7.</span>
<span class="n">out</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">decrypt</span><span class="p">(</span><span class="n">p7</span><span class="p">)</span>
-<span class="k">print</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
+<span class="nb">print</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
</pre></div>
</div>
-<p>Here&#8217;s the output:</p>
-<div class="highlight-python"><pre>a sign of our times</pre>
+<p>Here’s the output:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">a</span> <span class="n">sign</span> <span class="n">of</span> <span class="n">our</span> <span class="n">times</span>
+</pre></div>
</div>
</div>
<div class="section" id="sign-and-encrypt">
<h1>Sign and Encrypt<a class="headerlink" href="#sign-and-encrypt" title="Permalink to this headline">¶</a></h1>
-<p>Here&#8217;s how to generate an S/MIME-signed/encrypted message:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">Rand</span><span class="p">,</span> <span class="n">SMIME</span><span class="p">,</span> <span class="n">X509</span>
+<p>Here’s how to generate an S/MIME-signed/encrypted message:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">Rand</span><span class="p">,</span> <span class="n">SMIME</span><span class="p">,</span> <span class="n">X509</span>
<span class="k">def</span> <span class="nf">makebuf</span><span class="p">(</span><span class="n">text</span><span class="p">):</span>
<span class="k">return</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
@@ -505,75 +507,76 @@ message thusly:</p>
<span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;Subject: M2Crypto S/MIME testing</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="n">s</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n">p7</span><span class="p">)</span>
-<span class="k">print</span><span class="p">(</span><span class="n">out</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
+<span class="nb">print</span><span class="p">(</span><span class="n">out</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
<span class="c1"># Save the PRNG&#39;s state.</span>
<span class="n">Rand</span><span class="o">.</span><span class="n">save_file</span><span class="p">(</span><span class="s1">&#39;randpool.dat&#39;</span><span class="p">)</span>
</pre></div>
</div>
-<p>Here&#8217;s the output of the above program:</p>
-<div class="highlight-python"><pre>From: sender@example.dom
-To: recipient@example.dom
-Subject: M2Crypto S/MIME testing
-MIME-Version: 1.0
-Content-Disposition: attachment; filename=&quot;smime.p7m&quot;
-Content-Type: application/x-pkcs7-mime; name=&quot;smime.p7m&quot;
-Content-Transfer-Encoding: base64
-
-MIIIwwYJKoZIhvcNAQcDoIIItDCCCLACAQAxggEAMIH9AgEAMGYwYTELMAkGA1UE
-BhMCU0cxETAPBgNVBAoTCE0yQ3J5cHRvMRkwFwYDVQQDExBTL01JTUUgUmVjaXBp
-ZW50MSQwIgYJKoZIhvcNAQkBFhVyZWNpcGllbnRAZXhhbXBsZS5kb20CAQAwDQYJ
-KoZIhvcNAQEBBQAEgYBlZlGupFphwhsGtIAPvDExN61qisz3oem88xoXkUW0SzoR
-B9zJFFAuQTWzdNJgrKKYikhWjDojaAc/PFl1K5dYxRgtZLB36ULJD/v/yWmxnjz8
-TvtK+Wbal2P/MH2pZ4LVERXa/snTElhCawUlwtiFz/JvY5CiF/dcwd+AwFQq4jCC
-B6UGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIRF525UfwszaAggeA85RmX6AXQMxb
-eBDz/LJeCgc3RqU1UwIsbKMquIs1S46Ebbm5nP75izPnujOkJ2hv+LNzqOWADmOl
-+CnGEq1qxTyduIgUDA2nBgCL/gVyVy+/XC9dtImUUTxtxLgYtB0ujkBNsOaENOlM
-fv4SGM3jkR+K/xlYG6HHzZGbfYyNGj2Y7yMZ1rL1m8SnRNmkCysKGTrudeNf6wT9
-J6wO9DzLTioz3ZnVr3LjsSKIb4tIp4ugqNJaLuW7m3FtZ3MAgxN68hBbJs8TZ8tL
-V/0jwUqS+grcgZEb9ymfcedxahtDUfHjRkpDpsxZzVVGkSBNcbQu92oByQVnRQ8m
-wrYLp3/eawM5AvuV7HNpTT5ZR+1t8luishHN9899IMP2Vyg0Ub67FqFypYmM2cm2
-sjAI4KpfvT00XFNvgLuYwYEKs9syGTO7hiHNQKcF44F5LYv6nTFwmFQB11dAtY9V
-ull4D2CLDx9OvyNyKwdEZB5dyV0r/uKIdkhST60V2Q9KegpzgFpoZtSKM/HPYSVH
-1Bc9f3Q/GqZCvNZZCMx8UvRjQR8dRWDSmPJ0VXG1+wJ+fCmSPP3AuQ1/VsgPRqx2
-56VrpGPpGut40hV8xQFbWIZ2whwWLKPFAHj8B79ZtFUzUrU6Z2rNpvv8inHc/+S/
-b6GR5s8/gucRblvd7n3OFNX5UJmPmcw9zWbu/1Dr9DY8l0nAQh21y5FGSS8B1wdE
-oD2M3Lp7JbwjQbRtnDhImqul2S4yu+m+wDD1aR2K4k3GAI7KKgOBWT0+BDClcn8A
-4Ju6/YUbj33YlMPJgnGijLnolFy0hNW7TmWqR+8tSI3wO5eNKg4qwBnarqc3vgCV
-quVxINAXyGQCO9lzdw6hudk8/+BlweGdqhONaIWbK5z1L/SfQo6LC9MTsj7FJydq
-bc+kEbfZS8aSq7uc9axW6Ti0eAPJ8EVHtwhSBgZQRweKFBXs6HbbhMIdc4N0M7Oq
-UiFXaF6s4n2uihVP6TqXtHEjTpZoC7pC+HCYiuKXUJtaqtXBOh+y3KLvHk09YL6D
-XmTDg+UTiFsh4jKKm/BhdelbR5JbpJcj5AId76Mfr8+F/1g9ePOvsWHpQr/oIQTo
-xEkaxCmzEgP0b6caMWfMUQrbVGxBBNcqKc/ir9fGGOPHATzzq/xLcQYvK1tZhd/D
-ah/gpMPndsyvVCEuFPluWyDiM0VkwHgC2/3pJIYFHaxK64IutmPsy393rHMEB4kN
-AHau6kWK+yL9qEVH1pP2zvswQ12P7gjt3T/G3bGsmvlXkEfztfjkXo6XnjcBNf5y
-G+974AKLcjnk1gzIgarz+lAMY57Gkw4oNDMrTqVQ2OJQlvOSbllPXzH+aAiavB8W
-ZPECLLwHxD4B1AuaiAArgKl935u/TOB+yQOR8JgGsUzROyJqHJ/SC51HkebgCkL1
-aggtjgPlIBEXLZAlhpWLZ9lAQyrQpvCVJYwaOvfMmvRav4NAFNoZ2/Q7S4Tn1z+U
-XX+f+GD58P4MPMhU5IKnz4yH4nlHnAiTEvcs85TZUAXze9g/uBOwZITeGtyLi52S
-aETIr4v7SgXMepX7ThQ1Pv/jddsK/u4j2F34u0XktwCP+UrbfkE2mocdXvdzxbmd
-tZSznK2qwgVSsPOs9MhUaepbnjmNBFFBrULhrUtSglM/VX/rWNiyh0aw4XYyHhIt
-9ZNlfEjKjJ67VEMBxBJ/ieUCouRGCxPYD1j65VT7oB3ZiyPu2F2nlUIcYNqPg1Sd
-QBCrdaOXdJ0uLwyTAUeVE+wMbgscLvWsfZcCCJHAvw9NHFMUcnrdWxAYMVETNUOn
-uryVAK7VfOldaz6z3NOSOi6nonNeHpR/sipBa4ik5xCRLT9e0S2QJgRvO9GyfAqz
-3DIzHtxIGePFzTiUYUTxS3i2gnMX2PEe3ChTLlYWD3jNeAKz0iOzpDphIF2xHLLQ
-1tCAqBmq/vUzALyDFFdFuTIqQZys4z/u4Dmyq9uXs421eN3v2hkVHvDy8uT2Ot29
-lg4Q5YezR1EjaW//9guL1BXbcKrTEdtxeNqtem7SpZOMTSwD2lhB8z65GrX90Cyt
-EMmaRSGYEdf5h1afL1SmKOMskbqxe1D2jG/vsXC7XX7xO/ioy0BdiJcYN1JiMOHJ
-EOzFol5I20YkiV6j+cenfQFwc/NkaSxEkR8AUHJSbvUmRQRl6r0nnsFpZdR1w7pv
-wkaT+eOpZynO4mY/ZtF6MpXJsixi6L4ZYXEbS6yHf+XGFfB0okILylmwv2bf6+Mq
-nqXlmGj3Jwq7X9/+2BDqvfpFFX5lSmItKZAobLdssjFR6roJxOqRsGia2aZ+0+U5
-VhgdITtnElgtHBaeZU5rHDswgdeLVBP+rGWnKxpJ+pLtNNi25sPYRcWFL6Erd25u
-eXiY8GEIr+u7rqBWpc9HR34sAPRs3ubbCUleT748keCbx247ImBtiDctZxcc1O86
-+0QjHP6HUT7FSo/FmT7a120S3Gd2jixGh06l/9ij5Z6mJa7Rm7TTbSjup/XISnOT
-MKWcbI1nfVOhCv3xDq2eLae+s0oVoc041ceRazqFM2TL/Z6UXRME</pre>
+<p>Here’s the output of the above program:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">From</span><span class="p">:</span> <span class="n">sender</span><span class="nd">@example</span><span class="o">.</span><span class="n">dom</span>
+<span class="n">To</span><span class="p">:</span> <span class="n">recipient</span><span class="nd">@example</span><span class="o">.</span><span class="n">dom</span>
+<span class="n">Subject</span><span class="p">:</span> <span class="n">M2Crypto</span> <span class="n">S</span><span class="o">/</span><span class="n">MIME</span> <span class="n">testing</span>
+<span class="n">MIME</span><span class="o">-</span><span class="n">Version</span><span class="p">:</span> <span class="mf">1.0</span>
+<span class="n">Content</span><span class="o">-</span><span class="n">Disposition</span><span class="p">:</span> <span class="n">attachment</span><span class="p">;</span> <span class="n">filename</span><span class="o">=</span><span class="s2">&quot;smime.p7m&quot;</span>
+<span class="n">Content</span><span class="o">-</span><span class="n">Type</span><span class="p">:</span> <span class="n">application</span><span class="o">/</span><span class="n">x</span><span class="o">-</span><span class="n">pkcs7</span><span class="o">-</span><span class="n">mime</span><span class="p">;</span> <span class="n">name</span><span class="o">=</span><span class="s2">&quot;smime.p7m&quot;</span>
+<span class="n">Content</span><span class="o">-</span><span class="n">Transfer</span><span class="o">-</span><span class="n">Encoding</span><span class="p">:</span> <span class="n">base64</span>
+
+<span class="n">MIIIwwYJKoZIhvcNAQcDoIIItDCCCLACAQAxggEAMIH9AgEAMGYwYTELMAkGA1UE</span>
+<span class="n">BhMCU0cxETAPBgNVBAoTCE0yQ3J5cHRvMRkwFwYDVQQDExBTL01JTUUgUmVjaXBp</span>
+<span class="n">ZW50MSQwIgYJKoZIhvcNAQkBFhVyZWNpcGllbnRAZXhhbXBsZS5kb20CAQAwDQYJ</span>
+<span class="n">KoZIhvcNAQEBBQAEgYBlZlGupFphwhsGtIAPvDExN61qisz3oem88xoXkUW0SzoR</span>
+<span class="n">B9zJFFAuQTWzdNJgrKKYikhWjDojaAc</span><span class="o">/</span><span class="n">PFl1K5dYxRgtZLB36ULJD</span><span class="o">/</span><span class="n">v</span><span class="o">/</span><span class="n">yWmxnjz8</span>
+<span class="n">TvtK</span><span class="o">+</span><span class="n">Wbal2P</span><span class="o">/</span><span class="n">MH2pZ4LVERXa</span><span class="o">/</span><span class="n">snTElhCawUlwtiFz</span><span class="o">/</span><span class="n">JvY5CiF</span><span class="o">/</span><span class="n">dcwd</span><span class="o">+</span><span class="n">AwFQq4jCC</span>
+<span class="n">B6UGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIRF525UfwszaAggeA85RmX6AXQMxb</span>
+<span class="n">eBDz</span><span class="o">/</span><span class="n">LJeCgc3RqU1UwIsbKMquIs1S46Ebbm5nP75izPnujOkJ2hv</span><span class="o">+</span><span class="n">LNzqOWADmOl</span>
+<span class="o">+</span><span class="n">CnGEq1qxTyduIgUDA2nBgCL</span><span class="o">/</span><span class="n">gVyVy</span><span class="o">+/</span><span class="n">XC9dtImUUTxtxLgYtB0ujkBNsOaENOlM</span>
+<span class="n">fv4SGM3jkR</span><span class="o">+</span><span class="n">K</span><span class="o">/</span><span class="n">xlYG6HHzZGbfYyNGj2Y7yMZ1rL1m8SnRNmkCysKGTrudeNf6wT9</span>
+<span class="n">J6wO9DzLTioz3ZnVr3LjsSKIb4tIp4ugqNJaLuW7m3FtZ3MAgxN68hBbJs8TZ8tL</span>
+<span class="n">V</span><span class="o">/</span><span class="mi">0</span><span class="n">jwUqS</span><span class="o">+</span><span class="n">grcgZEb9ymfcedxahtDUfHjRkpDpsxZzVVGkSBNcbQu92oByQVnRQ8m</span>
+<span class="n">wrYLp3</span><span class="o">/</span><span class="n">eawM5AvuV7HNpTT5ZR</span><span class="o">+</span><span class="mi">1</span><span class="n">t8luishHN9899IMP2Vyg0Ub67FqFypYmM2cm2</span>
+<span class="n">sjAI4KpfvT00XFNvgLuYwYEKs9syGTO7hiHNQKcF44F5LYv6nTFwmFQB11dAtY9V</span>
+<span class="n">ull4D2CLDx9OvyNyKwdEZB5dyV0r</span><span class="o">/</span><span class="n">uKIdkhST60V2Q9KegpzgFpoZtSKM</span><span class="o">/</span><span class="n">HPYSVH</span>
+<span class="mi">1</span><span class="n">Bc9f3Q</span><span class="o">/</span><span class="n">GqZCvNZZCMx8UvRjQR8dRWDSmPJ0VXG1</span><span class="o">+</span><span class="n">wJ</span><span class="o">+</span><span class="n">fCmSPP3AuQ1</span><span class="o">/</span><span class="n">VsgPRqx2</span>
+<span class="mi">56</span><span class="n">VrpGPpGut40hV8xQFbWIZ2whwWLKPFAHj8B79ZtFUzUrU6Z2rNpvv8inHc</span><span class="o">/+</span><span class="n">S</span><span class="o">/</span>
+<span class="n">b6GR5s8</span><span class="o">/</span><span class="n">gucRblvd7n3OFNX5UJmPmcw9zWbu</span><span class="o">/</span><span class="mi">1</span><span class="n">Dr9DY8l0nAQh21y5FGSS8B1wdE</span>
+<span class="n">oD2M3Lp7JbwjQbRtnDhImqul2S4yu</span><span class="o">+</span><span class="n">m</span><span class="o">+</span><span class="n">wDD1aR2K4k3GAI7KKgOBWT0</span><span class="o">+</span><span class="n">BDClcn8A</span>
+<span class="mi">4</span><span class="n">Ju6</span><span class="o">/</span><span class="n">YUbj33YlMPJgnGijLnolFy0hNW7TmWqR</span><span class="o">+</span><span class="mi">8</span><span class="n">tSI3wO5eNKg4qwBnarqc3vgCV</span>
+<span class="n">quVxINAXyGQCO9lzdw6hudk8</span><span class="o">/+</span><span class="n">BlweGdqhONaIWbK5z1L</span><span class="o">/</span><span class="n">SfQo6LC9MTsj7FJydq</span>
+<span class="n">bc</span><span class="o">+</span><span class="n">kEbfZS8aSq7uc9axW6Ti0eAPJ8EVHtwhSBgZQRweKFBXs6HbbhMIdc4N0M7Oq</span>
+<span class="n">UiFXaF6s4n2uihVP6TqXtHEjTpZoC7pC</span><span class="o">+</span><span class="n">HCYiuKXUJtaqtXBOh</span><span class="o">+</span><span class="n">y3KLvHk09YL6D</span>
+<span class="n">XmTDg</span><span class="o">+</span><span class="n">UTiFsh4jKKm</span><span class="o">/</span><span class="n">BhdelbR5JbpJcj5AId76Mfr8</span><span class="o">+</span><span class="n">F</span><span class="o">/</span><span class="mi">1</span><span class="n">g9ePOvsWHpQr</span><span class="o">/</span><span class="n">oIQTo</span>
+<span class="n">xEkaxCmzEgP0b6caMWfMUQrbVGxBBNcqKc</span><span class="o">/</span><span class="n">ir9fGGOPHATzzq</span><span class="o">/</span><span class="n">xLcQYvK1tZhd</span><span class="o">/</span><span class="n">D</span>
+<span class="n">ah</span><span class="o">/</span><span class="n">gpMPndsyvVCEuFPluWyDiM0VkwHgC2</span><span class="o">/</span><span class="mi">3</span><span class="n">pJIYFHaxK64IutmPsy393rHMEB4kN</span>
+<span class="n">AHau6kWK</span><span class="o">+</span><span class="n">yL9qEVH1pP2zvswQ12P7gjt3T</span><span class="o">/</span><span class="n">G3bGsmvlXkEfztfjkXo6XnjcBNf5y</span>
+<span class="n">G</span><span class="o">+</span><span class="mi">974</span><span class="n">AKLcjnk1gzIgarz</span><span class="o">+</span><span class="n">lAMY57Gkw4oNDMrTqVQ2OJQlvOSbllPXzH</span><span class="o">+</span><span class="n">aAiavB8W</span>
+<span class="n">ZPECLLwHxD4B1AuaiAArgKl935u</span><span class="o">/</span><span class="n">TOB</span><span class="o">+</span><span class="n">yQOR8JgGsUzROyJqHJ</span><span class="o">/</span><span class="n">SC51HkebgCkL1</span>
+<span class="n">aggtjgPlIBEXLZAlhpWLZ9lAQyrQpvCVJYwaOvfMmvRav4NAFNoZ2</span><span class="o">/</span><span class="n">Q7S4Tn1z</span><span class="o">+</span><span class="n">U</span>
+<span class="n">XX</span><span class="o">+</span><span class="n">f</span><span class="o">+</span><span class="n">GD58P4MPMhU5IKnz4yH4nlHnAiTEvcs85TZUAXze9g</span><span class="o">/</span><span class="n">uBOwZITeGtyLi52S</span>
+<span class="n">aETIr4v7SgXMepX7ThQ1Pv</span><span class="o">/</span><span class="n">jddsK</span><span class="o">/</span><span class="n">u4j2F34u0XktwCP</span><span class="o">+</span><span class="n">UrbfkE2mocdXvdzxbmd</span>
+<span class="n">tZSznK2qwgVSsPOs9MhUaepbnjmNBFFBrULhrUtSglM</span><span class="o">/</span><span class="n">VX</span><span class="o">/</span><span class="n">rWNiyh0aw4XYyHhIt</span>
+<span class="mi">9</span><span class="n">ZNlfEjKjJ67VEMBxBJ</span><span class="o">/</span><span class="n">ieUCouRGCxPYD1j65VT7oB3ZiyPu2F2nlUIcYNqPg1Sd</span>
+<span class="n">QBCrdaOXdJ0uLwyTAUeVE</span><span class="o">+</span><span class="n">wMbgscLvWsfZcCCJHAvw9NHFMUcnrdWxAYMVETNUOn</span>
+<span class="n">uryVAK7VfOldaz6z3NOSOi6nonNeHpR</span><span class="o">/</span><span class="n">sipBa4ik5xCRLT9e0S2QJgRvO9GyfAqz</span>
+<span class="mi">3</span><span class="n">DIzHtxIGePFzTiUYUTxS3i2gnMX2PEe3ChTLlYWD3jNeAKz0iOzpDphIF2xHLLQ</span>
+<span class="mi">1</span><span class="n">tCAqBmq</span><span class="o">/</span><span class="n">vUzALyDFFdFuTIqQZys4z</span><span class="o">/</span><span class="n">u4Dmyq9uXs421eN3v2hkVHvDy8uT2Ot29</span>
+<span class="n">lg4Q5YezR1EjaW</span><span class="o">//</span><span class="mi">9</span><span class="n">guL1BXbcKrTEdtxeNqtem7SpZOMTSwD2lhB8z65GrX90Cyt</span>
+<span class="n">EMmaRSGYEdf5h1afL1SmKOMskbqxe1D2jG</span><span class="o">/</span><span class="n">vsXC7XX7xO</span><span class="o">/</span><span class="n">ioy0BdiJcYN1JiMOHJ</span>
+<span class="n">EOzFol5I20YkiV6j</span><span class="o">+</span><span class="n">cenfQFwc</span><span class="o">/</span><span class="n">NkaSxEkR8AUHJSbvUmRQRl6r0nnsFpZdR1w7pv</span>
+<span class="n">wkaT</span><span class="o">+</span><span class="n">eOpZynO4mY</span><span class="o">/</span><span class="n">ZtF6MpXJsixi6L4ZYXEbS6yHf</span><span class="o">+</span><span class="n">XGFfB0okILylmwv2bf6</span><span class="o">+</span><span class="n">Mq</span>
+<span class="n">nqXlmGj3Jwq7X9</span><span class="o">/+</span><span class="mi">2</span><span class="n">BDqvfpFFX5lSmItKZAobLdssjFR6roJxOqRsGia2aZ</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="n">U5</span>
+<span class="n">VhgdITtnElgtHBaeZU5rHDswgdeLVBP</span><span class="o">+</span><span class="n">rGWnKxpJ</span><span class="o">+</span><span class="n">pLtNNi25sPYRcWFL6Erd25u</span>
+<span class="n">eXiY8GEIr</span><span class="o">+</span><span class="n">u7rqBWpc9HR34sAPRs3ubbCUleT748keCbx247ImBtiDctZxcc1O86</span>
+<span class="o">+</span><span class="mi">0</span><span class="n">QjHP6HUT7FSo</span><span class="o">/</span><span class="n">FmT7a120S3Gd2jixGh06l</span><span class="o">/</span><span class="mi">9</span><span class="n">ij5Z6mJa7Rm7TTbSjup</span><span class="o">/</span><span class="n">XISnOT</span>
+<span class="n">MKWcbI1nfVOhCv3xDq2eLae</span><span class="o">+</span><span class="n">s0oVoc041ceRazqFM2TL</span><span class="o">/</span><span class="n">Z6UXRME</span>
+</pre></div>
</div>
</div>
<div class="section" id="decrypt-and-verify">
<h1>Decrypt and Verify<a class="headerlink" href="#decrypt-and-verify" title="Permalink to this headline">¶</a></h1>
-<p>Suppose the above output has been saved into <tt class="docutils literal"><span class="pre">se.p7</span></tt>. The following
+<p>Suppose the above output has been saved into <code class="docutils literal"><span class="pre">se.p7</span></code>. The following
demonstrates how to decrypt and verify it:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">SMIME</span><span class="p">,</span> <span class="n">X509</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">SMIME</span><span class="p">,</span> <span class="n">X509</span>
<span class="c1"># Instantiate an SMIME object.</span>
<span class="n">s</span> <span class="o">=</span> <span class="n">SMIME</span><span class="o">.</span><span class="n">SMIME</span><span class="p">()</span>
@@ -606,23 +609,24 @@ demonstrates how to decrypt and verify it:</p>
<span class="n">p7</span><span class="p">,</span> <span class="n">data</span> <span class="o">=</span> <span class="n">SMIME</span><span class="o">.</span><span class="n">smime_load_pkcs7_bio</span><span class="p">(</span><span class="n">p7_bio</span><span class="p">)</span>
<span class="n">v</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">verify</span><span class="p">(</span><span class="n">p7</span><span class="p">)</span>
-<span class="k">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
+<span class="nb">print</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
</pre></div>
</div>
<p>The output is as follows:</p>
-<div class="highlight-python"><pre>a sign of our times</pre>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">a</span> <span class="n">sign</span> <span class="n">of</span> <span class="n">our</span> <span class="n">times</span>
+</pre></div>
</div>
</div>
<div class="section" id="sending-s-mime-messages-via-smtp">
<h1>Sending S/MIME messages via SMTP<a class="headerlink" href="#sending-s-mime-messages-via-smtp" title="Permalink to this headline">¶</a></h1>
-<p>In the above examples, we&#8217;ve assumed that our S/MIME messages are sent
+<p>In the above examples, we’ve assumed that our S/MIME messages are sent
and received automagically. The following is a Python function that
generates S/MIME-signed/encrypted messages and sends them via
SMTP:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="kn">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">SMIME</span><span class="p">,</span> <span class="n">X509</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">M2Crypto</span> <span class="k">import</span> <span class="n">BIO</span><span class="p">,</span> <span class="n">SMIME</span><span class="p">,</span> <span class="n">X509</span>
<span class="kn">import</span> <span class="nn">smtplib</span><span class="o">,</span> <span class="nn">string</span><span class="o">,</span> <span class="nn">sys</span>
-<span class="k">def</span> <span class="nf">sendsmime</span><span class="p">(</span><span class="n">from_addr</span><span class="p">,</span> <span class="n">to_addrs</span><span class="p">,</span> <span class="n">subject</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">from_key</span><span class="p">,</span> <span class="n">from_cert</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">to_certs</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">smtpd</span><span class="o">=</span><span class="s1">&#39;localhost&#39;</span><span class="p">):</span>
+<span class="k">def</span> <span class="nf">sendsmime</span><span class="p">(</span><span class="n">from_addr</span><span class="p">,</span> <span class="n">to_addrs</span><span class="p">,</span> <span class="n">subject</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">from_key</span><span class="p">,</span> <span class="n">from_cert</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">to_certs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">smtpd</span><span class="o">=</span><span class="s1">&#39;localhost&#39;</span><span class="p">):</span>
<span class="n">msg_bio</span> <span class="o">=</span> <span class="n">BIO</span><span class="o">.</span><span class="n">MemoryBuffer</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
<span class="n">sign</span> <span class="o">=</span> <span class="n">from_key</span>
@@ -672,81 +676,83 @@ SMTP:</p>
</div>
<p>This function sends plain, S/MIME-signed, S/MIME-encrypted, and
S/MIME-signed/encrypted messages, depending on the parameters
-<tt class="docutils literal"><span class="pre">from_key</span></tt> and <tt class="docutils literal"><span class="pre">to_certs</span></tt>. The function&#8217;s output interoperates with
+<code class="docutils literal"><span class="pre">from_key</span></code> and <code class="docutils literal"><span class="pre">to_certs</span></code>. The function’s output interoperates with
Netscape Messenger.</p>
</div>
<div class="section" id="verifying-origin-of-s-mime-messages">
<h1>Verifying origin of S/MIME messages<a class="headerlink" href="#verifying-origin-of-s-mime-messages" title="Permalink to this headline">¶</a></h1>
<p>In our examples above that decrypt or verify messages, we skipped a
-step: verifying that the <tt class="docutils literal"><span class="pre">from</span></tt> address of the message matches the
-<tt class="docutils literal"><span class="pre">email</span> <span class="pre">address</span></tt> attribute in the sender&#8217;s certificate.</p>
+step: verifying that the <code class="docutils literal"><span class="pre">from</span></code> address of the message matches the
+<code class="docutils literal"><span class="pre">email</span> <span class="pre">address</span></code> attribute in the sender’s certificate.</p>
<p>The premise of current X.509 certification practice is that the CA is
supposed to verify your identity, and to issue a certificate with
-<tt class="docutils literal"><span class="pre">email</span> <span class="pre">address</span></tt> that matches your actual mail address. (Verisign&#8217;s
+<code class="docutils literal"><span class="pre">email</span> <span class="pre">address</span></code> that matches your actual mail address. (Verisign’s
March 2001 failure in identity verification resulting in Microsoft
certificates being issued to spoofers notwithstanding.)</p>
<p>If you run your own CA, your certification practice is up to you, of
course, and it would probably be part of your security policy.</p>
-<p>Whether your S/MIME messaging application needs to verify the <tt class="docutils literal"><span class="pre">from</span></tt>
+<p>Whether your S/MIME messaging application needs to verify the <code class="docutils literal"><span class="pre">from</span></code>
addresses of S/MIME messages depends on your security policy and your
-system&#8217;s threat model, as always.</p>
+system’s threat model, as always.</p>
</div>
<div class="section" id="interoperating-with-netscape-messenger">
<h1>Interoperating with Netscape Messenger<a class="headerlink" href="#interoperating-with-netscape-messenger" title="Permalink to this headline">¶</a></h1>
<p>Suppose S/MIME Recipient uses Netscape Messenger. To enable Messenger to
handle S/MIME messages from S/MIME Sender, S/MIME Recipient needs to
configure Messenger with his private key and certificate, as well as
-S/MIME Sender&#8217;s certificate.</p>
+S/MIME Sender’s certificate.</p>
<blockquote>
-<div><strong>Note:</strong> Configuring Messenger&#8217;s POP or IMAP settings so that it
+<div><strong>Note:</strong> Configuring Messenger’s POP or IMAP settings so that it
retrieves mail correctly is beyond the scope of this HOWTO.</div></blockquote>
-<p>The following steps demonstrate how to import S/MIME Recipient&#8217;s private
+<p>The following steps demonstrate how to import S/MIME Recipient’s private
key and certificate for Messenger:</p>
<ol class="arabic">
-<li><p class="first">Transform S/MIME Recipient&#8217;s private key and certificate into <em>PKCS
+<li><p class="first">Transform S/MIME Recipient’s private key and certificate into <em>PKCS
#12</em> format:</p>
-<div class="highlight-python"><pre>openssl pkcs12 -export -in recipient.pem -inkey recipient_key.pem \
- -name &quot;S/MIME Recipient&quot; -out recipient.p12
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">openssl</span> <span class="n">pkcs12</span> <span class="o">-</span><span class="n">export</span> <span class="o">-</span><span class="ow">in</span> <span class="n">recipient</span><span class="o">.</span><span class="n">pem</span> <span class="o">-</span><span class="n">inkey</span> <span class="n">recipient_key</span><span class="o">.</span><span class="n">pem</span> \
+ <span class="o">-</span><span class="n">name</span> <span class="s2">&quot;S/MIME Recipient&quot;</span> <span class="o">-</span><span class="n">out</span> <span class="n">recipient</span><span class="o">.</span><span class="n">p12</span>
-Enter Export Password:&lt;enter&gt;
-Verifying password - Enter Export Password:&lt;enter&gt;</pre>
+<span class="n">Enter</span> <span class="n">Export</span> <span class="n">Password</span><span class="p">:</span><span class="o">&lt;</span><span class="n">enter</span><span class="o">&gt;</span>
+<span class="n">Verifying</span> <span class="n">password</span> <span class="o">-</span> <span class="n">Enter</span> <span class="n">Export</span> <span class="n">Password</span><span class="p">:</span><span class="o">&lt;</span><span class="n">enter</span><span class="o">&gt;</span>
+</pre></div>
</div>
</li>
<li><p class="first">Start Messenger.</p>
</li>
-<li><p class="first">Click on the (open) &#8220;lock&#8221; icon at the bottom left corner of
-Messenger&#8217;s window. This brings up the &#8220;Security Info&#8221; dialog box.</p>
+<li><p class="first">Click on the (open) “lock” icon at the bottom left corner of
+Messenger’s window. This brings up the “Security Info” dialog box.</p>
</li>
-<li><p class="first">Click on &#8220;Yours&#8221; under &#8220;Certificates&#8221;.</p>
+<li><p class="first">Click on “Yours” under “Certificates”.</p>
</li>
-<li><p class="first">Select &#8220;Import a certificate&#8221;, then pick <tt class="docutils literal"><span class="pre">recipient.p12</span></tt> from the
+<li><p class="first">Select “Import a certificate”, then pick <code class="docutils literal"><span class="pre">recipient.p12</span></code> from the
ensuing file selection dialog box.</p>
</li>
</ol>
-<p>Next, you need to import <tt class="docutils literal"><span class="pre">signer.pem</span></tt> as a CA certificate, so that
-Messenger will mark messages signed by S/MIME Sender as &#8220;trusted&#8221;:</p>
+<p>Next, you need to import <code class="docutils literal"><span class="pre">signer.pem</span></code> as a CA certificate, so that
+Messenger will mark messages signed by S/MIME Sender as “trusted”:</p>
<ol class="arabic">
-<li><p class="first">Create a DER encoding of <tt class="docutils literal"><span class="pre">signer.pem</span></tt>:</p>
-<div class="highlight-python"><pre>openssl x509 -inform pem -outform der -in signer.pem -out signer.der</pre>
+<li><p class="first">Create a DER encoding of <code class="docutils literal"><span class="pre">signer.pem</span></code>:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">openssl</span> <span class="n">x509</span> <span class="o">-</span><span class="n">inform</span> <span class="n">pem</span> <span class="o">-</span><span class="n">outform</span> <span class="n">der</span> <span class="o">-</span><span class="ow">in</span> <span class="n">signer</span><span class="o">.</span><span class="n">pem</span> <span class="o">-</span><span class="n">out</span> <span class="n">signer</span><span class="o">.</span><span class="n">der</span>
+</pre></div>
</div>
</li>
-<li><p class="first">Install <tt class="docutils literal"><span class="pre">signer.der</span></tt> into Messenger as MIME type
-<tt class="docutils literal"><span class="pre">application/x-x509-ca-cert</span></tt>. You do this by downloading
-<tt class="docutils literal"><span class="pre">signer.der</span></tt> via Navigator from a HTTP or HTTPS server, with the
-correct MIME type mapping. (You may use <tt class="docutils literal"><span class="pre">demo/ssl/https_srv.py</span></tt>,
+<li><p class="first">Install <code class="docutils literal"><span class="pre">signer.der</span></code> into Messenger as MIME type
+<code class="docutils literal"><span class="pre">application/x-x509-ca-cert</span></code>. You do this by downloading
+<code class="docutils literal"><span class="pre">signer.der</span></code> via Navigator from a HTTP or HTTPS server, with the
+correct MIME type mapping. (You may use <code class="docutils literal"><span class="pre">demo/ssl/https_srv.py</span></code>,
bundled with M2Crypto, for this purpose.) Follow the series of dialog
-boxes to accept <tt class="docutils literal"><span class="pre">signer.der</span></tt> as a CA for certifying email users.</p>
+boxes to accept <code class="docutils literal"><span class="pre">signer.der</span></code> as a CA for certifying email users.</p>
</li>
</ol>
-<p>S/MIME Recipient is now able to decrypt and read S/MIME Sender&#8217;s
-messages with Messenger. Messenger will indicate that S/MIME Sender&#8217;s
+<p>S/MIME Recipient is now able to decrypt and read S/MIME Sender’s
+messages with Messenger. Messenger will indicate that S/MIME Sender’s
messages are signed, encrypted, or encrypted <em>and</em> signed, as the case
-may be, via the &#8220;stamp&#8221; icon on the message window&#8217;s top right corner.</p>
-<p>Clicking on the &#8220;stamp&#8221; icon brings you to the Security Info dialog box.
+may be, via the “stamp” icon on the message window’s top right corner.</p>
+<p>Clicking on the “stamp” icon brings you to the Security Info dialog box.
Messenger informs you that the message is, say, encrypted with 168-bit
DES-EDE3-CBC and that it is digitally signed by the private key
corresponding to the public key contained in the certificate
-<tt class="docutils literal"><span class="pre">signer.pem</span></tt>.</p>
+<code class="docutils literal"><span class="pre">signer.pem</span></code>.</p>
</div>
<div class="section" id="interoperating-with-microsoft-outlook">
<h1>Interoperating with Microsoft Outlook<a class="headerlink" href="#interoperating-with-microsoft-outlook" title="Permalink to this headline">¶</a></h1>
@@ -782,7 +788,7 @@ document.)</p>
</div>
</div>
</div>
- <div class="sphinxsidebar">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
@@ -804,44 +810,48 @@ document.)</p>
<li><a class="reference internal" href="#zsmime">ZSmime</a></li>
<li><a class="reference internal" href="#resources">Resources</a></li>
</ul>
-
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/howto.smime.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
+<div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="index.html">Documentation overview</a><ul>
+ </ul></li>
+</ul>
+</div>
+ <div role="note" aria-label="source link">
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/howto.smime.rst.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+ </div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
+ |
+ <a href="_sources/howto.smime.rst.txt"
+ rel="nofollow">Page source</a>
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/howto.ssl.html b/doc/html/howto.ssl.html
index e880fe8..f31f9db 100644
--- a/doc/html/howto.ssl.html
+++ b/doc/html/howto.ssl.html
@@ -1,50 +1,42 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>HOWTO: Programming SSL in Python with M2Crypto &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
+ <title>HOWTO: Programming SSL in Python with M2Crypto &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: './',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="index.html" />
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+
+ <link rel="stylesheet" href="_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<div class="section" id="howto-programming-ssl-in-python-with-m2crypto">
<span id="howto-ssl"></span><h1>HOWTO: Programming SSL in Python with M2Crypto<a class="headerlink" href="#howto-programming-ssl-in-python-with-m2crypto" title="Permalink to this headline">¶</a></h1>
@@ -74,21 +66,21 @@ v2, RSA, DSA, DH, symmetric ciphers, message digests and HMACs.</p>
<p>M2Crypto was created during the time of Python 1.5, which features a
module httplib providing client-side HTTP functionality. M2Crypto sports
a httpslib based on httplib.</p>
-<p>Beginning with version 2.0, Python&#8217;s socket module provided
+<p>Beginning with version 2.0, Python’s socket module provided
(rudimentary) SSL support. Also in the same version, httplib was
enhanced with class HTTPConnection, which is more sophisticated than the
old class HTTP, and HTTPSConnection, which does HTTPS.</p>
<p>Subsequently, M2Crypto.httpslib grew a compatible (but not identical)
class HTTPSConnection.</p>
<p>The primary interface difference between the two HTTPSConnection classes
-is that M2Crypto&#8217;s version accepts an M2Crypto.SSL.Context instance as a
-parameter, whereas Python 2.x&#8217;s SSL support does not permit Pythonic
+is that M2Crypto’s version accepts an M2Crypto.SSL.Context instance as a
+parameter, whereas Python 2.x’s SSL support does not permit Pythonic
control of the SSL context.</p>
-<p>Within the implementations, Python&#8217;s <tt class="docutils literal"><span class="pre">HTTPSConnection</span></tt> employs a
-<tt class="docutils literal"><span class="pre">FakeSocket</span></tt> object, which collects all input from the SSL connection
-before returning it to the application as a <tt class="docutils literal"><span class="pre">StringIO</span></tt> buffer, whereas
-M2Crypto&#8217;s <tt class="docutils literal"><span class="pre">HTTPSConnection</span></tt> uses a buffering
-<tt class="docutils literal"><span class="pre">M2Crypto.BIO.IOBuffer</span></tt> object that works over the underlying
+<p>Within the implementations, Python’s <code class="docutils literal"><span class="pre">HTTPSConnection</span></code> employs a
+<code class="docutils literal"><span class="pre">FakeSocket</span></code> object, which collects all input from the SSL connection
+before returning it to the application as a <code class="docutils literal"><span class="pre">StringIO</span></code> buffer, whereas
+M2Crypto’s <code class="docutils literal"><span class="pre">HTTPSConnection</span></code> uses a buffering
+<code class="docutils literal"><span class="pre">M2Crypto.BIO.IOBuffer</span></code> object that works over the underlying
M2Crypto.SSL.Connection directly.</p>
<p>Since then M2Crypto has gained a Twisted wrapper that allows securing
Twisted SSL connections with M2Crypto.</p>
@@ -99,9 +91,9 @@ Twisted SSL connections with M2Crypto.</p>
by John Viega, Matt Messier and Pravir Chandra, ISBN 059600270X.</p>
<p>Using M2Crypto does not automatically make an SSL connection secure.
There are various steps that need to be made before we can make that
-claim. Let&#8217;s see how a simple client can establish a secure
+claim. Let’s see how a simple client can establish a secure
connection:</p>
-<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">ctx</span> <span class="o">=</span> <span class="n">SSL</span><span class="o">.</span><span class="n">Context</span><span class="p">()</span>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ctx</span> <span class="o">=</span> <span class="n">SSL</span><span class="o">.</span><span class="n">Context</span><span class="p">()</span>
<span class="n">ctx</span><span class="o">.</span><span class="n">set_verify</span><span class="p">(</span><span class="n">SSL</span><span class="o">.</span><span class="n">verify_peer</span> <span class="o">|</span> <span class="n">SSL</span><span class="o">.</span><span class="n">verify_fail_if_no_peer_cert</span><span class="p">,</span> <span class="n">depth</span><span class="o">=</span><span class="mi">9</span><span class="p">)</span>
<span class="k">if</span> <span class="n">ctx</span><span class="o">.</span><span class="n">load_verify_locations</span><span class="p">(</span><span class="s1">&#39;ca.pem&#39;</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span> <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">&#39;No CA certs&#39;</span><span class="p">)</span>
<span class="n">s</span> <span class="o">=</span> <span class="n">SSL</span><span class="o">.</span><span class="n">Connection</span><span class="p">(</span><span class="n">ctx</span><span class="p">)</span>
@@ -150,7 +142,7 @@ above on how to make them secure.</p>
</div>
<div class="section" id="ssldump">
<h1>ssldump<a class="headerlink" href="#ssldump" title="Permalink to this headline">¶</a></h1>
-<p>ssldump &#8220;is an SSLv3/TLS network protocol analyser. It identifies TCP
+<p>ssldump “is an SSLv3/TLS network protocol analyser. It identifies TCP
connections on the chosen network interface and attempts to interpret
them as SSLv3/TLS traffic. When it identifies SSLv3/TLS traffic, it
decodes the records and displays them in a textual form to stdout. If
@@ -158,7 +150,7 @@ provided with the appropriate keying material, it will also decrypt the
connections and display the application data traffic.</p>
<p>If linked with OpenSSL, ssldump can display certificates in decoded form
and decrypt traffic (provided that it has the appropriate keying
-material).&#8221;</p>
+material).”</p>
<p>ssldump is written by Eric Rescorla.</p>
</div>
@@ -166,7 +158,7 @@ material).&#8221;</p>
</div>
</div>
</div>
- <div class="sphinxsidebar">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
@@ -177,44 +169,48 @@ material).&#8221;</p>
<li><a class="reference internal" href="#code-samples">Code Samples</a></li>
<li><a class="reference internal" href="#ssldump">ssldump</a></li>
</ul>
-
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/howto.ssl.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
+<div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="index.html">Documentation overview</a><ul>
+ </ul></li>
+</ul>
+</div>
+ <div role="note" aria-label="source link">
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/howto.ssl.rst.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+ </div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
+ |
+ <a href="_sources/howto.ssl.rst.txt"
+ rel="nofollow">Page source</a>
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/index.html b/doc/html/index.html
index ac8e968..cabf99c 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -1,109 +1,89 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Welcome to M2Crypto’s documentation! &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
+ <title>Welcome to M2Crypto’s documentation! &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: './',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="#" />
- <link rel="next" title="M2Crypto Package" href="M2Crypto.html" />
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+ <link rel="next" title="M2Crypto Package" href="M2Crypto.html" />
+
+ <link rel="stylesheet" href="_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li class="right" >
- <a href="M2Crypto.html" title="M2Crypto Package"
- accesskey="N">next</a> |</li>
- <li><a href="#">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<div class="section" id="welcome-to-m2crypto-s-documentation">
-<h1>Welcome to M2Crypto&#8217;s documentation!<a class="headerlink" href="#welcome-to-m2crypto-s-documentation" title="Permalink to this headline">¶</a></h1>
+<h1>Welcome to M2Crypto’s documentation!<a class="headerlink" href="#welcome-to-m2crypto-s-documentation" title="Permalink to this headline">¶</a></h1>
<p>Contents:</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="M2Crypto.html">M2Crypto Package</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#id1"><tt class="docutils literal"><span class="pre">M2Crypto</span></tt> Package</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.ASN1"><tt class="docutils literal"><span class="pre">ASN1</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.AuthCookie"><tt class="docutils literal"><span class="pre">AuthCookie</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.BIO"><tt class="docutils literal"><span class="pre">BIO</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.BN"><tt class="docutils literal"><span class="pre">BN</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.DH"><tt class="docutils literal"><span class="pre">DH</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.DSA"><tt class="docutils literal"><span class="pre">DSA</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.EC"><tt class="docutils literal"><span class="pre">EC</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.EVP"><tt class="docutils literal"><span class="pre">EVP</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.Engine"><tt class="docutils literal"><span class="pre">Engine</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.Err"><tt class="docutils literal"><span class="pre">Err</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.RC4"><tt class="docutils literal"><span class="pre">RC4</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.RSA"><tt class="docutils literal"><span class="pre">RSA</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.Rand"><tt class="docutils literal"><span class="pre">Rand</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.SMIME"><tt class="docutils literal"><span class="pre">SMIME</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.X509"><tt class="docutils literal"><span class="pre">X509</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.callback"><tt class="docutils literal"><span class="pre">callback</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.ftpslib"><tt class="docutils literal"><span class="pre">ftpslib</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.httpslib"><tt class="docutils literal"><span class="pre">httpslib</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.m2"><tt class="docutils literal"><span class="pre">m2</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.m2crypto"><tt class="docutils literal"><span class="pre">m2crypto</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.m2urllib"><tt class="docutils literal"><span class="pre">m2urllib</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.m2urllib2"><tt class="docutils literal"><span class="pre">m2urllib2</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.m2xmlrpclib"><tt class="docutils literal"><span class="pre">m2xmlrpclib</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.threading"><tt class="docutils literal"><span class="pre">threading</span></tt> Module</a></li>
-<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.util"><tt class="docutils literal"><span class="pre">util</span></tt> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#id1"><code class="docutils literal"><span class="pre">M2Crypto</span></code> Package</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.ASN1"><code class="docutils literal"><span class="pre">ASN1</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.AuthCookie"><code class="docutils literal"><span class="pre">AuthCookie</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.BIO"><code class="docutils literal"><span class="pre">BIO</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.BN"><code class="docutils literal"><span class="pre">BN</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.DH"><code class="docutils literal"><span class="pre">DH</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.DSA"><code class="docutils literal"><span class="pre">DSA</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.EC"><code class="docutils literal"><span class="pre">EC</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.EVP"><code class="docutils literal"><span class="pre">EVP</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.Engine"><code class="docutils literal"><span class="pre">Engine</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.Err"><code class="docutils literal"><span class="pre">Err</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.RC4"><code class="docutils literal"><span class="pre">RC4</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.RSA"><code class="docutils literal"><span class="pre">RSA</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.Rand"><code class="docutils literal"><span class="pre">Rand</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.SMIME"><code class="docutils literal"><span class="pre">SMIME</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.X509"><code class="docutils literal"><span class="pre">X509</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.callback"><code class="docutils literal"><span class="pre">callback</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.ftpslib"><code class="docutils literal"><span class="pre">ftpslib</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.httpslib"><code class="docutils literal"><span class="pre">httpslib</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.m2"><code class="docutils literal"><span class="pre">m2</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.m2crypto"><code class="docutils literal"><span class="pre">m2crypto</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.m2urllib"><code class="docutils literal"><span class="pre">m2urllib</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.m2urllib2"><code class="docutils literal"><span class="pre">m2urllib2</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.m2xmlrpclib"><code class="docutils literal"><span class="pre">m2xmlrpclib</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.threading"><code class="docutils literal"><span class="pre">threading</span></code> Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#module-M2Crypto.util"><code class="docutils literal"><span class="pre">util</span></code> Module</a></li>
<li class="toctree-l2"><a class="reference internal" href="M2Crypto.html#subpackages">Subpackages</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="M2Crypto.PGP.html">PGP Package</a><ul>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.PGP.html#id1"><tt class="docutils literal"><span class="pre">PGP</span></tt> Package</a></li>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.PGP.html#module-M2Crypto.PGP.PublicKey"><tt class="docutils literal"><span class="pre">PublicKey</span></tt> Module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.PGP.html#module-M2Crypto.PGP.PublicKeyRing"><tt class="docutils literal"><span class="pre">PublicKeyRing</span></tt> Module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.PGP.html#module-M2Crypto.PGP.RSA"><tt class="docutils literal"><span class="pre">RSA</span></tt> Module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.PGP.html#module-M2Crypto.PGP.constants"><tt class="docutils literal"><span class="pre">constants</span></tt> Module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.PGP.html#module-M2Crypto.PGP.packet"><tt class="docutils literal"><span class="pre">packet</span></tt> Module</a></li>
-</ul>
-</li>
<li class="toctree-l3"><a class="reference internal" href="M2Crypto.SSL.html">SSL Package</a><ul>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#id1"><tt class="docutils literal"><span class="pre">SSL</span></tt> Package</a></li>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Checker"><tt class="docutils literal"><span class="pre">Checker</span></tt> Module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Cipher"><tt class="docutils literal"><span class="pre">Cipher</span></tt> Module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Connection"><tt class="docutils literal"><span class="pre">Connection</span></tt> Module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Context"><tt class="docutils literal"><span class="pre">Context</span></tt> Module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.SSLServer"><tt class="docutils literal"><span class="pre">SSLServer</span></tt> Module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Session"><tt class="docutils literal"><span class="pre">Session</span></tt> Module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.TwistedProtocolWrapper"><tt class="docutils literal"><span class="pre">TwistedProtocolWrapper</span></tt> Module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.cb"><tt class="docutils literal"><span class="pre">cb</span></tt> Module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.ssl_dispatcher"><tt class="docutils literal"><span class="pre">ssl_dispatcher</span></tt> Module</a></li>
-<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.timeout"><tt class="docutils literal"><span class="pre">timeout</span></tt> Module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#id1"><code class="docutils literal"><span class="pre">SSL</span></code> Package</a></li>
+<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Checker"><code class="docutils literal"><span class="pre">Checker</span></code> Module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Cipher"><code class="docutils literal"><span class="pre">Cipher</span></code> Module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Connection"><code class="docutils literal"><span class="pre">Connection</span></code> Module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Context"><code class="docutils literal"><span class="pre">Context</span></code> Module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.SSLServer"><code class="docutils literal"><span class="pre">SSLServer</span></code> Module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.Session"><code class="docutils literal"><span class="pre">Session</span></code> Module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.TwistedProtocolWrapper"><code class="docutils literal"><span class="pre">TwistedProtocolWrapper</span></code> Module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.cb"><code class="docutils literal"><span class="pre">cb</span></code> Module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.ssl_dispatcher"><code class="docutils literal"><span class="pre">ssl_dispatcher</span></code> Module</a></li>
+<li class="toctree-l4"><a class="reference internal" href="M2Crypto.SSL.html#module-M2Crypto.SSL.timeout"><code class="docutils literal"><span class="pre">timeout</span></code> Module</a></li>
</ul>
</li>
</ul>
@@ -116,18 +96,18 @@
<div class="section" id="howtos">
<h1>HOWTOs<a class="headerlink" href="#howtos" title="Permalink to this headline">¶</a></h1>
<ul class="simple">
-<li><a class="reference internal" href="howto.ca.html#howto-ca"><em>HOWTO: Creating your own CA with OpenSSL</em></a></li>
-<li><a class="reference internal" href="howto.ssl.html#howto-ssl"><em>HOWTO: Programming SSL in Python with M2Crypto</em></a></li>
-<li><a class="reference internal" href="howto.smime.html#howto-smime"><em>HOWTO: Programming S/MIME in Python with M2Crypto</em></a></li>
-<li><a class="reference internal" href="ZServerSSL-HOWTO.html#zserverssl-howto"><em>1.&nbsp;&nbsp;&nbsp;ZServerSSL-HOWTO</em></a></li>
+<li><a class="reference internal" href="howto.ca.html#howto-ca"><span class="std std-ref">HOWTO: Creating your own CA with OpenSSL</span></a></li>
+<li><a class="reference internal" href="howto.ssl.html#howto-ssl"><span class="std std-ref">HOWTO: Programming SSL in Python with M2Crypto</span></a></li>
+<li><a class="reference internal" href="howto.smime.html#howto-smime"><span class="std std-ref">HOWTO: Programming S/MIME in Python with M2Crypto</span></a></li>
+<li><a class="reference internal" href="ZServerSSL-HOWTO.html#zserverssl-howto"><span class="std std-ref">1.&nbsp;&nbsp;&nbsp;ZServerSSL-HOWTO</span></a></li>
</ul>
</div>
<div class="section" id="indices-and-tables">
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
<ul class="simple">
-<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
-<li><a class="reference internal" href="py-modindex.html"><em>Module Index</em></a></li>
-<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
+<li><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></li>
+<li><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></li>
+<li><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></li>
</ul>
</div>
@@ -135,60 +115,57 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="#">Table Of Contents</a></h3>
<ul>
-<li><a class="reference internal" href="#">Welcome to M2Crypto&#8217;s documentation!</a><ul>
-</ul>
-</li>
+<li><a class="reference internal" href="#">Welcome to M2Crypto’s documentation!</a></li>
<li><a class="reference internal" href="#howtos">HOWTOs</a></li>
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
</ul>
-
- <h4>Next topic</h4>
- <p class="topless"><a href="M2Crypto.html"
- title="next chapter">M2Crypto Package</a></p>
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="_sources/index.txt"
- rel="nofollow">Show Source</a></li>
- </ul>
-<div id="searchbox" style="display: none">
+<div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="#">Documentation overview</a><ul>
+ <li>Next: <a href="M2Crypto.html" title="next chapter">M2Crypto Package</a></li>
+ </ul></li>
+</ul>
+</div>
+ <div role="note" aria-label="source link">
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/index.rst.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+ </div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li class="right" >
- <a href="M2Crypto.html" title="M2Crypto Package"
- >next</a> |</li>
- <li><a href="#">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
+ |
+ <a href="_sources/index.rst.txt"
+ rel="nofollow">Page source</a>
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/objects.inv b/doc/html/objects.inv
index 9d7632e..82b7dd9 100644
--- a/doc/html/objects.inv
+++ b/doc/html/objects.inv
Binary files differ
diff --git a/doc/html/py-modindex.html b/doc/html/py-modindex.html
index 100b720..85d8c98 100644
--- a/doc/html/py-modindex.html
+++ b/doc/html/py-modindex.html
@@ -1,53 +1,45 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Python Module Index &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
+ <title>Python Module Index &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: './',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="index.html" />
-
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+
+
+ <link rel="stylesheet" href="_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="#" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1>Python Module Index</h1>
@@ -56,230 +48,200 @@
<a href="#cap-m"><strong>m</strong></a>
</div>
- <table class="indextable modindextable" cellspacing="0" cellpadding="2">
- <tr class="pcap"><td></td><td>&nbsp;</td><td></td></tr>
+ <table class="indextable modindextable">
+ <tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
<tr class="cap" id="cap-m"><td></td><td>
<strong>m</strong></td><td></td></tr>
<tr>
<td><img src="_static/minus.png" class="toggler"
id="toggle-1" style="display: none" alt="-" /></td>
<td>
- <tt class="xref">M2Crypto</tt></td><td>
- <em></em></td></tr>
- <tr class="cg-1">
- <td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.__init__"><tt class="xref">M2Crypto.__init__</tt></a></td><td>
- <em></em></td></tr>
- <tr class="cg-1">
- <td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.ASN1"><tt class="xref">M2Crypto.ASN1</tt></a></td><td>
- <em></em></td></tr>
- <tr class="cg-1">
- <td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.AuthCookie"><tt class="xref">M2Crypto.AuthCookie</tt></a></td><td>
+ <code class="xref">M2Crypto</code></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.BIO"><tt class="xref">M2Crypto.BIO</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.__init__"><code class="xref">M2Crypto.__init__</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.BN"><tt class="xref">M2Crypto.BN</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.ASN1"><code class="xref">M2Crypto.ASN1</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.callback"><tt class="xref">M2Crypto.callback</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.AuthCookie"><code class="xref">M2Crypto.AuthCookie</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.DH"><tt class="xref">M2Crypto.DH</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.BIO"><code class="xref">M2Crypto.BIO</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.DSA"><tt class="xref">M2Crypto.DSA</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.BN"><code class="xref">M2Crypto.BN</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.EC"><tt class="xref">M2Crypto.EC</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.callback"><code class="xref">M2Crypto.callback</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.Engine"><tt class="xref">M2Crypto.Engine</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.DH"><code class="xref">M2Crypto.DH</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.Err"><tt class="xref">M2Crypto.Err</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.DSA"><code class="xref">M2Crypto.DSA</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.EVP"><tt class="xref">M2Crypto.EVP</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.EC"><code class="xref">M2Crypto.EC</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.ftpslib"><tt class="xref">M2Crypto.ftpslib</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.Engine"><code class="xref">M2Crypto.Engine</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.httpslib"><tt class="xref">M2Crypto.httpslib</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.Err"><code class="xref">M2Crypto.Err</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.m2"><tt class="xref">M2Crypto.m2</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.EVP"><code class="xref">M2Crypto.EVP</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.m2crypto"><tt class="xref">M2Crypto.m2crypto</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.ftpslib"><code class="xref">M2Crypto.ftpslib</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.m2urllib"><tt class="xref">M2Crypto.m2urllib</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.httpslib"><code class="xref">M2Crypto.httpslib</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.m2urllib2"><tt class="xref">M2Crypto.m2urllib2</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.m2"><code class="xref">M2Crypto.m2</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.m2xmlrpclib"><tt class="xref">M2Crypto.m2xmlrpclib</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.m2crypto"><code class="xref">M2Crypto.m2crypto</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.PGP.html#module-M2Crypto.PGP"><tt class="xref">M2Crypto.PGP</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.m2urllib"><code class="xref">M2Crypto.m2urllib</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.PGP.html#module-M2Crypto.PGP.constants"><tt class="xref">M2Crypto.PGP.constants</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.m2urllib2"><code class="xref">M2Crypto.m2urllib2</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.PGP.html#module-M2Crypto.PGP.packet"><tt class="xref">M2Crypto.PGP.packet</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.m2xmlrpclib"><code class="xref">M2Crypto.m2xmlrpclib</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.PGP.html#module-M2Crypto.PGP.PublicKey"><tt class="xref">M2Crypto.PGP.PublicKey</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.Rand"><code class="xref">M2Crypto.Rand</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.PGP.html#module-M2Crypto.PGP.PublicKeyRing"><tt class="xref">M2Crypto.PGP.PublicKeyRing</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.RC4"><code class="xref">M2Crypto.RC4</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.PGP.html#module-M2Crypto.PGP.RSA"><tt class="xref">M2Crypto.PGP.RSA</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.RSA"><code class="xref">M2Crypto.RSA</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.Rand"><tt class="xref">M2Crypto.Rand</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.SMIME"><code class="xref">M2Crypto.SMIME</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.RC4"><tt class="xref">M2Crypto.RC4</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.SSL.html#module-M2Crypto.SSL"><code class="xref">M2Crypto.SSL</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.RSA"><tt class="xref">M2Crypto.RSA</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.cb"><code class="xref">M2Crypto.SSL.cb</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.SMIME"><tt class="xref">M2Crypto.SMIME</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Checker"><code class="xref">M2Crypto.SSL.Checker</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.SSL.html#module-M2Crypto.SSL"><tt class="xref">M2Crypto.SSL</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Cipher"><code class="xref">M2Crypto.SSL.Cipher</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.cb"><tt class="xref">M2Crypto.SSL.cb</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Connection"><code class="xref">M2Crypto.SSL.Connection</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Checker"><tt class="xref">M2Crypto.SSL.Checker</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Context"><code class="xref">M2Crypto.SSL.Context</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Cipher"><tt class="xref">M2Crypto.SSL.Cipher</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Session"><code class="xref">M2Crypto.SSL.Session</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Connection"><tt class="xref">M2Crypto.SSL.Connection</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.ssl_dispatcher"><code class="xref">M2Crypto.SSL.ssl_dispatcher</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Context"><tt class="xref">M2Crypto.SSL.Context</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.SSLServer"><code class="xref">M2Crypto.SSL.SSLServer</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.Session"><tt class="xref">M2Crypto.SSL.Session</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.timeout"><code class="xref">M2Crypto.SSL.timeout</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.ssl_dispatcher"><tt class="xref">M2Crypto.SSL.ssl_dispatcher</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.TwistedProtocolWrapper"><code class="xref">M2Crypto.SSL.TwistedProtocolWrapper</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.SSLServer"><tt class="xref">M2Crypto.SSL.SSLServer</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.threading"><code class="xref">M2Crypto.threading</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.timeout"><tt class="xref">M2Crypto.SSL.timeout</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.util"><code class="xref">M2Crypto.util</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.SSL.html#module-M2Crypto.SSL.TwistedProtocolWrapper"><tt class="xref">M2Crypto.SSL.TwistedProtocolWrapper</tt></a></td><td>
- <em></em></td></tr>
- <tr class="cg-1">
- <td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.threading"><tt class="xref">M2Crypto.threading</tt></a></td><td>
- <em></em></td></tr>
- <tr class="cg-1">
- <td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.util"><tt class="xref">M2Crypto.util</tt></a></td><td>
- <em></em></td></tr>
- <tr class="cg-1">
- <td></td>
- <td>&nbsp;&nbsp;&nbsp;
- <a href="M2Crypto.html#module-M2Crypto.X509"><tt class="xref">M2Crypto.X509</tt></a></td><td>
+ <td>&#160;&#160;&#160;
+ <a href="M2Crypto.html#module-M2Crypto.X509"><code class="xref">M2Crypto.X509</code></a></td><td>
<em></em></td></tr>
</table>
@@ -287,40 +249,39 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="index.html">Documentation overview</a><ul>
+ </ul></li>
+</ul>
+</div>
+<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
+ <div><input type="text" name="q" /></div>
+ <div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="#" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/search.html b/doc/html/search.html
index d5386cc..ac23baf 100644
--- a/doc/html/search.html
+++ b/doc/html/search.html
@@ -1,56 +1,50 @@
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Search &mdash; M2Crypto documentation</title>
-
- <link rel="stylesheet" href="_static/default.css" type="text/css" />
+ <title>Search &#8212; M2Crypto documentation</title>
+ <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: './',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/searchtools.js"></script>
- <link rel="top" title="M2Crypto documentation" href="index.html" />
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="#" />
<script type="text/javascript">
jQuery(function() { Search.loadIndex("searchindex.js"); });
</script>
+
+ <script type="text/javascript" id="searchindexloader"></script>
+
+ <link rel="stylesheet" href="_static/custom.css" type="text/css" />
+
+
+ <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
+
</head>
<body>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
+
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
- <div class="body">
+ <div class="body" role="main">
<h1 id="search-documentation">Search</h1>
<div id="fallback" class="admonition warning">
@@ -79,27 +73,29 @@
</div>
</div>
</div>
- <div class="sphinxsidebar">
- <div class="sphinxsidebarwrapper">
+ <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+ <div class="sphinxsidebarwrapper"><div class="relations">
+<h3>Related Topics</h3>
+<ul>
+ <li><a href="index.html">Documentation overview</a><ul>
+ </ul></li>
+</ul>
+</div>
</div>
</div>
<div class="clearer"></div>
</div>
- <div class="related">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li><a href="index.html">M2Crypto documentation</a> &raquo;</li>
- </ul>
- </div>
<div class="footer">
- &copy; Copyright 2017, Matej Cepl &lt;mcepl@cepl.eu&gt;.
- Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ &copy;2017, Matej Cepl <mcepl@cepl.eu>.
+
+ |
+ Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.4</a>
+ &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.9</a>
+
</div>
+
+
+
+
</body>
</html> \ No newline at end of file
diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js
index 4ca9b1b..b55849b 100644
--- a/doc/html/searchindex.js
+++ b/doc/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({objects:{"M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper":{connectionMade:[6,1,1,""],startTLS:[6,1,1,""],clear:[6,1,1,""],write:[6,1,1,""],connectionLost:[6,1,1,""],loseConnection:[6,1,1,""],dataReceived:[6,1,1,""],writeSequence:[6,1,1,""]},"M2Crypto.threading":{init:[3,2,1,""],cleanup:[3,2,1,""]},"M2Crypto.AuthCookie":{mix:[3,2,1,""],unmix:[3,2,1,""],unmix3:[3,2,1,""],AuthCookie:[3,3,1,""],AuthCookieJar:[3,3,1,""]},"M2Crypto.PGP":{PublicKey:[4,0,1,""],PublicKeyRing:[4,0,1,""],packet:[4,0,1,""],constants:[4,0,1,""],RSA:[4,0,1,""]},"M2Crypto.PGP.packet.Packet":{timestamp:[4,1,1,""],validity:[4,1,1,""],pkc:[4,1,1,""],version:[4,1,1,""],validate:[4,1,1,""],pack:[4,1,1,""]},"M2Crypto.X509.X509_Name":{add_entry_by_txt:[3,1,1,""],as_hash:[3,1,1,""],as_text:[3,1,1,""],nid:[3,4,1,""],entry_count:[3,1,1,""],as_der:[3,1,1,""],m2_x509_name_free:[3,1,1,""],get_entries_by_nid:[3,1,1,""]},"M2Crypto.PGP.packet.UserIDPacket":{userid:[4,1,1,""],pack:[4,1,1,""]},"M2Crypto.EVP.Cipher":{set_padding:[3,1,1,""],"final":[3,1,1,""],m2_cipher_ctx_free:[3,1,1,""],update:[3,1,1,""]},"M2Crypto.SSL.Session":{Session:[6,3,1,""],load_session:[6,2,1,""]},"M2Crypto.BIO.MemoryBuffer":{read_all:[3,1,1,""],close:[3,1,1,""],write_close:[3,1,1,""],read:[3,1,1,""],getvalue:[3,1,1,""]},"M2Crypto.m2urllib":{open_https:[3,2,1,""]},"M2Crypto.SSL.timeout.timeout":{pack:[6,1,1,""]},"M2Crypto.SMIME.SMIME":{unset_key:[3,1,1,""],encrypt:[3,1,1,""],set_x509_store:[3,1,1,""],load_key:[3,1,1,""],unset_x509_store:[3,1,1,""],decrypt:[3,1,1,""],sign:[3,1,1,""],write:[3,1,1,""],set_cipher:[3,1,1,""],verify:[3,1,1,""],set_x509_stack:[3,1,1,""],load_key_bio:[3,1,1,""],unset_cipher:[3,1,1,""],unset_x509_stack:[3,1,1,""]},"M2Crypto.m2xmlrpclib":{SSL_Transport:[3,3,1,""]},"M2Crypto.SSL.Checker":{WrongCertificate:[6,5,1,""],Checker:[6,3,1,""],SSLVerificationError:[6,5,1,""],WrongHost:[6,5,1,""],NoCertificate:[6,5,1,""]},"M2Crypto.EC.EC_pub":{get_der:[3,1,1,""],save_key:[3,1,1,""],save_key_bio:[3,1,1,""],get_key:[3,1,1,""]},"M2Crypto.SSL.ssl_dispatcher":{ssl_dispatcher:[6,3,1,""]},"M2Crypto.EVP":{MessageDigest:[3,3,1,""],PKey:[3,3,1,""],load_key_string:[3,2,1,""],load_key:[3,2,1,""],pbkdf2:[3,2,1,""],load_key_bio_pubkey:[3,2,1,""],HMAC:[3,3,1,""],Cipher:[3,3,1,""],EVPError:[3,5,1,""],load_key_string_pubkey:[3,2,1,""],hmac:[3,2,1,""],load_key_bio:[3,2,1,""]},"M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher":{recv:[6,1,1,""],connect:[6,1,1,""],send:[6,1,1,""],create_socket:[6,1,1,""]},"M2Crypto.BIO.SSLBio":{set_ssl:[3,1,1,""],do_handshake:[3,1,1,""]},"M2Crypto.SSL.Checker.Checker":{numericIpMatch:[6,4,1,""]},"M2Crypto.PGP.packet.CompressedPacket":{validate:[4,1,1,""],uncompress:[4,1,1,""]},"M2Crypto.BIO.IOBuffer":{m2_bio_pop:[3,1,1,""],close:[3,1,1,""],m2_bio_free:[3,1,1,""]},"M2Crypto.PGP.packet.SignaturePacket":{validate:[4,1,1,""],pack:[4,1,1,""]},"M2Crypto.BN":{randfname:[3,2,1,""],rand_range:[3,2,1,""],rand:[3,2,1,""]},"M2Crypto.X509.X509_Name_Entry":{get_object:[3,1,1,""],get_data:[3,1,1,""],create_by_txt:[3,1,1,""],set_data:[3,1,1,""],set_object:[3,1,1,""],m2_x509_name_entry_free:[3,1,1,""]},"M2Crypto.Err":{get_error_reason:[3,2,1,""],get_error_code:[3,2,1,""],peek_error_code:[3,2,1,""],get_error_lib:[3,2,1,""],M2CryptoError:[3,5,1,""],get_error:[3,2,1,""],SSLError:[3,5,1,""],get_error_func:[3,2,1,""],get_x509_verify_error:[3,2,1,""]},"M2Crypto.SSL.Session.Session":{write_bio:[6,1,1,""],as_text:[6,1,1,""],m2_ssl_session_free:[6,1,1,""],get_timeout:[6,1,1,""],as_der:[6,1,1,""],get_time:[6,1,1,""],set_timeout:[6,1,1,""],set_time:[6,1,1,""]},"M2Crypto.m2urllib2":{HTTPSHandler:[3,3,1,""],build_opener:[3,2,1,""]},"M2Crypto.m2crypto.stack_st_OPENSSL_BLOCK":{"this":[3,4,1,""],thisown:[3,4,1,""],stack:[3,4,1,""]},"M2Crypto.SMIME":{text_crlf:[3,2,1,""],load_pkcs7:[3,2,1,""],load_pkcs7_bio_der:[3,2,1,""],SMIME_Error:[3,5,1,""],load_pkcs7_bio:[3,2,1,""],load_pkcs7_der:[3,2,1,""],smime_load_pkcs7_bio:[3,2,1,""],PKCS7_Error:[3,5,1,""],Cipher:[3,3,1,""],SMIME:[3,3,1,""],smime_load_pkcs7:[3,2,1,""],text_crlf_bio:[3,2,1,""],PKCS7:[3,3,1,""]},"M2Crypto.PGP.packet":{CompressedPacket:[4,3,1,""],LiteralPacket:[4,3,1,""],PKEPacket:[4,3,1,""],CommentPacket:[4,3,1,""],make_ctb:[4,2,1,""],is_ctb:[4,2,1,""],CKEPacket:[4,3,1,""],Packet:[4,3,1,""],XXXError:[4,5,1,""],PacketStream:[4,3,1,""],UserIDPacket:[4,3,1,""],SignaturePacket:[4,3,1,""],TrustPacket:[4,3,1,""],PrivateKeyPacket:[4,3,1,""],PublicKeyPacket:[4,3,1,""]},"M2Crypto.EVP.PKey":{as_pem:[3,1,1,""],"final":[3,1,1,""],save_key_bio:[3,1,1,""],verify_final:[3,1,1,""],sign_init:[3,1,1,""],reset_context:[3,1,1,""],update:[3,1,1,""],as_der:[3,1,1,""],verify_init:[3,1,1,""],get_rsa:[3,1,1,""],verify_update:[3,1,1,""],m2_pkey_free:[3,1,1,""],save_key:[3,1,1,""],sign_final:[3,1,1,""],get_modulus:[3,1,1,""],assign_rsa:[3,1,1,""],m2_md_ctx_free:[3,1,1,""],sign_update:[3,1,1,""],size:[3,1,1,""]},"M2Crypto.httpslib.HTTPSConnection":{close:[3,1,1,""],get_session:[3,1,1,""],connect:[3,1,1,""],set_session:[3,1,1,""],default_port:[3,4,1,""]},"M2Crypto.SSL.Connection.Connection":{m2_bio_free:[6,1,1,""],set_connect_state:[6,1,1,""],set_accept_state:[6,1,1,""],set_session_id_ctx:[6,1,1,""],get_peer_cert:[6,1,1,""],accept:[6,1,1,""],set_tlsext_host_name:[6,1,1,""],connect:[6,1,1,""],shutdown:[6,1,1,""],serverPostConnectionCheck:[6,1,1,""],close:[6,1,1,""],ssl_get_error:[6,1,1,""],write:[6,1,1,""],get_socket_read_timeout:[6,1,1,""],getsockopt:[6,1,1,""],get_verify_depth:[6,1,1,""],verify_ok:[6,1,1,""],get_version:[6,1,1,""],makefile:[6,1,1,""],setup_addr:[6,1,1,""],send:[6,1,1,""],m2_ssl_free:[6,1,1,""],get_verify_mode:[6,1,1,""],get_peer_cert_chain:[6,1,1,""],set_cipher_list:[6,1,1,""],get_context:[6,1,1,""],get_ciphers:[6,1,1,""],listen:[6,1,1,""],set_socket_write_timeout:[6,1,1,""],set_client_CA_list_from_context:[6,1,1,""],get_session:[6,1,1,""],set_post_connection_check_callback:[6,1,1,""],get_verify_result:[6,1,1,""],fileno:[6,1,1,""],getsockname:[6,1,1,""],get_cipher:[6,1,1,""],set_session:[6,1,1,""],setup_ssl:[6,1,1,""],set_bio:[6,1,1,""],get_cipher_list:[6,1,1,""],get_state:[6,1,1,""],get_shutdown:[6,1,1,""],getpeername:[6,1,1,""],recv:[6,1,1,""],setblocking:[6,1,1,""],set_client_CA_list_from_file:[6,1,1,""],setsockopt:[6,1,1,""],get_default_session_timeout:[6,1,1,""],accept_ssl:[6,1,1,""],connect_ssl:[6,1,1,""],read:[6,1,1,""],bind:[6,1,1,""],clear:[6,1,1,""],clientPostConnectionCheck:[6,4,1,""],set_shutdown:[6,1,1,""],renegotiate:[6,1,1,""],get_socket_write_timeout:[6,1,1,""],pending:[6,1,1,""],sendall:[6,1,1,""],set_ssl_close_flag:[6,1,1,""],settimeout:[6,1,1,""],set_socket_read_timeout:[6,1,1,""]},"M2Crypto.ASN1.ASN1_Integer":{m2_asn1_integer_free:[3,1,1,""]},"M2Crypto.EVP.HMAC":{m2_hmac_ctx_free:[3,1,1,""],reset:[3,1,1,""],"final":[3,1,1,""],digest:[3,1,1,""],update:[3,1,1,""]},"M2Crypto.X509.X509":{get_serial_number:[3,1,1,""],get_subject:[3,1,1,""],add_ext:[3,1,1,""],sign:[3,1,1,""],get_not_after:[3,1,1,""],set_version:[3,1,1,""],set_subject:[3,1,1,""],set_serial_number:[3,1,1,""],as_pem:[3,1,1,""],get_issuer:[3,1,1,""],m2_x509_free:[3,1,1,""],get_version:[3,1,1,""],as_der:[3,1,1,""],check_purpose:[3,1,1,""],save:[3,1,1,""],get_fingerprint:[3,1,1,""],as_text:[3,1,1,""],save_pem:[3,1,1,""],set_issuer_name:[3,1,1,""],set_not_after:[3,1,1,""],set_subject_name:[3,1,1,""],get_ext_at:[3,1,1,""],check_ca:[3,1,1,""],set_issuer:[3,1,1,""],verify:[3,1,1,""],get_pubkey:[3,1,1,""],get_not_before:[3,1,1,""],set_not_before:[3,1,1,""],set_pubkey:[3,1,1,""],get_ext:[3,1,1,""],get_ext_count:[3,1,1,""]},"M2Crypto.RC4.RC4":{rc4_free:[3,1,1,""],set_key:[3,1,1,""],update:[3,1,1,""],"final":[3,1,1,""]},"M2Crypto.SSL.cb":{ssl_verify_callback_allow_unknown_ca:[6,2,1,""],ssl_info_callback:[6,2,1,""],ssl_verify_callback_stub:[6,2,1,""],ssl_verify_callback:[6,2,1,""]},"M2Crypto.httpslib.ProxyHTTPSConnection":{putrequest:[3,1,1,""],endheaders:[3,1,1,""],connect:[3,1,1,""],putheader:[3,1,1,""]},"M2Crypto.SSL.SSLServer":{ThreadingSSLServer:[6,3,1,""],SSLServer:[6,3,1,""],ForkingSSLServer:[6,3,1,""]},"M2Crypto.PGP.PublicKey.PublicKey":{keyid:[4,1,1,""],encrypt:[4,1,1,""],decrypt:[4,1,1,""],write:[4,1,1,""],add_userid:[4,1,1,""],add_signature:[4,1,1,""],remove_userid:[4,1,1,""]},"M2Crypto.X509.X509_Store_Context":{get1_chain:[3,1,1,""],get_error_depth:[3,1,1,""],get_current_cert:[3,1,1,""],get_error:[3,1,1,""],m2_x509_store_ctx_free:[3,1,1,""]},"M2Crypto.X509":{load_request_string:[3,2,1,""],x509_store_default_cb:[3,2,1,""],new_extension:[3,2,1,""],new_stack_from_der:[3,2,1,""],load_crl:[3,2,1,""],load_request_bio:[3,2,1,""],X509_Extension_Stack:[3,3,1,""],CRL:[3,3,1,""],X509_Store_Context:[3,3,1,""],load_cert_bio:[3,2,1,""],X509:[3,3,1,""],load_cert_string:[3,2,1,""],load_request:[3,2,1,""],X509_Name_Entry:[3,3,1,""],load_request_der_string:[3,2,1,""],load_cert_der_string:[3,2,1,""],Request:[3,3,1,""],X509_Store:[3,3,1,""],X509Error:[3,5,1,""],load_cert:[3,2,1,""],X509_Name:[3,3,1,""],X509_Stack:[3,3,1,""],X509_Extension:[3,3,1,""]},"M2Crypto.PGP.PublicKeyRing":{load_pubring:[4,2,1,""],PublicKeyRing:[4,3,1,""]},"M2Crypto.DSA.DSA_pub":{sign_asn1:[3,1,1,""],save_key:[3,1,1,""],save_key_bio:[3,1,1,""],check_key:[3,1,1,""],sign:[3,1,1,""]},"M2Crypto.RC4":{RC4:[3,3,1,""]},"M2Crypto.RSA.RSA":{private_decrypt:[3,1,1,""],sign_rsassa_pss:[3,1,1,""],m2_rsa_free:[3,1,1,""],save_key_der_bio:[3,1,1,""],private_encrypt:[3,1,1,""],verify:[3,1,1,""],verify_rsassa_pss:[3,1,1,""],save_key:[3,1,1,""],save_key_bio:[3,1,1,""],pub:[3,1,1,""],check_key:[3,1,1,""],save_pem:[3,1,1,""],save_pub_key:[3,1,1,""],public_decrypt:[3,1,1,""],save_key_der:[3,1,1,""],save_pub_key_bio:[3,1,1,""],public_encrypt:[3,1,1,""],as_pem:[3,1,1,""],sign:[3,1,1,""]},"M2Crypto.m2urllib2.HTTPSHandler":{https_request:[3,1,1,""],https_open:[3,1,1,""]},"M2Crypto.X509.X509_Extension":{get_critical:[3,1,1,""],get_value:[3,1,1,""],set_critical:[3,1,1,""],m2_x509_extension_free:[3,1,1,""],get_name:[3,1,1,""]},"M2Crypto.BIO.CipherStream":{m2_bio_free:[3,1,1,""],m2_bio_pop:[3,1,1,""],set_cipher:[3,1,1,""],write_close:[3,1,1,""],close:[3,1,1,""],SALT_LEN:[3,4,1,""]},"M2Crypto.ASN1.ASN1_String":{m2_asn1_string_free:[3,1,1,""],as_text:[3,1,1,""]},"M2Crypto.ASN1.LocalTimezone":{utcoffset:[3,1,1,""],tzname:[3,1,1,""],dst:[3,1,1,""]},"M2Crypto.X509.Request":{as_text:[3,1,1,""],get_pubkey:[3,1,1,""],get_version:[3,1,1,""],get_subject:[3,1,1,""],as_der:[3,1,1,""],sign:[3,1,1,""],save_pem:[3,1,1,""],set_pubkey:[3,1,1,""],add_extensions:[3,1,1,""],set_version:[3,1,1,""],set_subject:[3,1,1,""],verify:[3,1,1,""],set_subject_name:[3,1,1,""],m2_x509_req_free:[3,1,1,""],save:[3,1,1,""],as_pem:[3,1,1,""]},"M2Crypto.m2xmlrpclib.SSL_Transport":{request:[3,1,1,""],user_agent:[3,4,1,""]},"M2Crypto.DH":{gen_params:[3,2,1,""],DH:[3,3,1,""],DHError:[3,5,1,""],load_params:[3,2,1,""],set_params:[3,2,1,""],load_params_bio:[3,2,1,""]},"M2Crypto.DSA":{pub_key_from_params:[3,2,1,""],gen_params:[3,2,1,""],load_pub_key:[3,2,1,""],DSA_pub:[3,3,1,""],load_params:[3,2,1,""],load_key:[3,2,1,""],set_params:[3,2,1,""],DSAError:[3,5,1,""],load_pub_key_bio:[3,2,1,""],DSA:[3,3,1,""],load_params_bio:[3,2,1,""],load_key_bio:[3,2,1,""]},"M2Crypto.m2crypto.stack_st_OPENSSL_STRING":{"this":[3,4,1,""],thisown:[3,4,1,""],stack:[3,4,1,""]},"M2Crypto.SSL.Cipher":{Cipher:[6,3,1,""],Cipher_Stack:[6,3,1,""]},"M2Crypto.AuthCookie.AuthCookie":{headerValue:[3,1,1,""],value:[3,1,1,""],expiry:[3,1,1,""],mac:[3,1,1,""],output:[3,1,1,""],isExpired:[3,1,1,""],data:[3,1,1,""],name:[3,1,1,""]},"M2Crypto.SSL.timeout":{struct_to_timeout:[6,2,1,""],struct_size:[6,2,1,""],timeout:[6,3,1,""]},"M2Crypto.PGP.PublicKey":{PublicKey:[4,3,1,""]},"M2Crypto.RSA":{new_pub_key:[3,2,1,""],gen_key:[3,2,1,""],load_key:[3,2,1,""],rsa_error:[3,2,1,""],RSA:[3,3,1,""],RSA_pub:[3,3,1,""],load_pub_key:[3,2,1,""],keygen_callback:[3,2,1,""],load_pub_key_bio:[3,2,1,""],load_key_bio:[3,2,1,""],RSAError:[3,5,1,""],load_key_string:[3,2,1,""]},"M2Crypto.PGP.packet.CommentPacket":{pack:[4,1,1,""]},"M2Crypto.AuthCookie.AuthCookieJar":{isGoodCookie:[3,1,1,""],makeCookie:[3,1,1,""],isGoodCookieString:[3,1,1,""]},"M2Crypto.ftpslib.FTP_TLS":{prot_p:[3,1,1,""],ntransfercmd:[3,1,1,""],prot_c:[3,1,1,""],auth_ssl:[3,1,1,""],auth_tls:[3,1,1,""]},"M2Crypto.ASN1.ASN1_TIME":{get_datetime:[3,1,1,""],set_time:[3,1,1,""],set_string:[3,1,1,""],set_datetime:[3,1,1,""],m2_asn1_time_free:[3,1,1,""]},"M2Crypto.ASN1.ASN1_Object":{m2_asn1_object_free:[3,1,1,""]},"M2Crypto.ftpslib":{FTP_TLS:[3,3,1,""]},"M2Crypto.ASN1":{ASN1_Object:[3,3,1,""],ASN1_Integer:[3,3,1,""],ASN1_TIME:[3,3,1,""],ASN1_UTCTIME:[3,4,1,""],LocalTimezone:[3,3,1,""],ASN1_String:[3,3,1,""]},"M2Crypto.SSL.Connection":{Connection:[6,3,1,""]},"M2Crypto.SSL.Cipher.Cipher":{version:[6,1,1,""],name:[6,1,1,""]},"M2Crypto.SSL.Context.Context":{set_tmp_dh_callback:[6,1,1,""],set_session_id_ctx:[6,1,1,""],set_verify:[6,1,1,""],set_session_timeout:[6,1,1,""],close:[6,1,1,""],set_tmp_rsa_callback:[6,1,1,""],get_session_timeout:[6,1,1,""],set_tmp_dh:[6,1,1,""],load_cert:[6,1,1,""],remove_session:[6,1,1,""],get_verify_depth:[6,1,1,""],get_verify_mode:[6,1,1,""],set_tmp_rsa:[6,1,1,""],load_client_CA:[6,1,1,""],set_cipher_list:[6,1,1,""],add_session:[6,1,1,""],set_default_verify_paths:[6,1,1,""],set_client_CA_list_from_file:[6,1,1,""],load_verify_locations:[6,1,1,""],set_session_cache_mode:[6,1,1,""],load_cert_chain:[6,1,1,""],set_options:[6,1,1,""],get_cert_store:[6,1,1,""],get_allow_unknown_ca:[6,1,1,""],set_allow_unknown_ca:[6,1,1,""],m2_ssl_ctx_free:[6,1,1,""],set_info_callback:[6,1,1,""],load_client_ca:[6,1,1,""],load_verify_info:[6,1,1,""],get_session_cache_mode:[6,1,1,""]},"M2Crypto.SSL.TwistedProtocolWrapper":{connectSSL:[6,2,1,""],TLSProtocolWrapper:[6,3,1,""],listenTCP:[6,2,1,""],listenSSL:[6,2,1,""],connectTCP:[6,2,1,""]},"M2Crypto.EC.EC":{verify_dsa_asn1:[3,1,1,""],verify_dsa:[3,1,1,""],gen_key:[3,1,1,""],save_key:[3,1,1,""],save_key_bio:[3,1,1,""],pub:[3,1,1,""],as_pem:[3,1,1,""],compute_dh_key:[3,1,1,""],sign_dsa:[3,1,1,""],m2_ec_key_free:[3,1,1,""],save_pub_key_bio:[3,1,1,""],save_pub_key:[3,1,1,""],check_key:[3,1,1,""],sign_dsa_asn1:[3,1,1,""]},"M2Crypto.SSL.Context":{map:[6,2,1,""],ctxmap:[6,2,1,""],Context:[6,3,1,""]},"M2Crypto.Engine":{Engine:[3,3,1,""],load_dynamic_engine:[3,2,1,""],load_openssl:[3,2,1,""],EngineError:[3,5,1,""],load_dynamic:[3,2,1,""],cleanup:[3,2,1,""]},"M2Crypto.BIO":{BIO:[3,3,1,""],openfile:[3,2,1,""],SSLBio:[3,3,1,""],BIOError:[3,5,1,""],IOBuffer:[3,3,1,""],File:[3,3,1,""],CipherStream:[3,3,1,""],MemoryBuffer:[3,3,1,""]},"M2Crypto.X509.CRL":{m2_x509_crl_free:[3,1,1,""],as_text:[3,1,1,""]},"M2Crypto.Engine.Engine":{ctrl_cmd_string:[3,1,1,""],finish:[3,1,1,""],load_public_key:[3,1,1,""],m2_engine_free:[3,1,1,""],load_certificate:[3,1,1,""],init:[3,1,1,""],get_name:[3,1,1,""],get_id:[3,1,1,""],set_default:[3,1,1,""],load_private_key:[3,1,1,""]},"M2Crypto.X509.X509_Store":{set_verify_cb:[3,1,1,""],add_x509:[3,1,1,""],load_locations:[3,1,1,""],load_info:[3,1,1,""],add_cert:[3,1,1,""],m2_x509_store_free:[3,1,1,""]},"M2Crypto.SMIME.PKCS7":{get0_signers:[3,1,1,""],type:[3,1,1,""],write:[3,1,1,""],m2_pkcs7_free:[3,1,1,""],write_der:[3,1,1,""]},"M2Crypto.X509.X509_Extension_Stack":{push:[3,1,1,""],m2_sk_x509_extension_free:[3,1,1,""],pop:[3,1,1,""]},"M2Crypto.X509.X509_Stack":{push:[3,1,1,""],pop:[3,1,1,""],m2_sk_x509_free:[3,1,1,""],as_der:[3,1,1,""]},"M2Crypto.PGP.PublicKeyRing.PublicKeyRing":{spurious:[4,1,1,""],load:[4,1,1,""],save:[4,1,1,""]},"M2Crypto.DH.DH":{compute_key:[3,1,1,""],print_params:[3,1,1,""],gen_key:[3,1,1,""],check_params:[3,1,1,""],m2_dh_free:[3,1,1,""]},"M2Crypto.PGP.RSA":{new_pub_key:[4,2,1,""]},"M2Crypto.RSA.RSA_pub":{private_encrypt:[3,1,1,""],private_decrypt:[3,1,1,""],save_key_bio:[3,1,1,""],check_key:[3,1,1,""],save_key:[3,1,1,""]},"M2Crypto.Rand":{rand_pseudo_bytes:[3,2,1,""],save_file:[3,2,1,""],rand_seed:[3,2,1,""],rand_bytes:[3,2,1,""],rand_add:[3,2,1,""],load_file:[3,2,1,""],rand_status:[3,2,1,""],rand_file_name:[3,2,1,""]},"M2Crypto.BIO.File":{reset:[3,1,1,""],close:[3,1,1,""]},M2Crypto:{DH:[3,0,1,""],BN:[3,0,1,""],m2urllib2:[3,0,1,""],ASN1:[3,0,1,""],EVP:[3,0,1,""],"__init__":[3,0,1,""],Engine:[3,0,1,""],BIO:[3,0,1,""],callback:[3,0,1,""],X509:[3,0,1,""],PGP:[4,0,1,""],m2:[3,0,1,""],Err:[3,0,1,""],m2xmlrpclib:[3,0,1,""],httpslib:[3,0,1,""],EC:[3,0,1,""],util:[3,0,1,""],m2crypto:[3,0,1,""],ftpslib:[3,0,1,""],SMIME:[3,0,1,""],SSL:[6,0,1,""],DSA:[3,0,1,""],Rand:[3,0,1,""],RC4:[3,0,1,""],RSA:[3,0,1,""],threading:[3,0,1,""],m2urllib:[3,0,1,""],AuthCookie:[3,0,1,""]},"M2Crypto.PGP.packet.PacketStream":{read:[4,1,1,""],close:[4,1,1,""],count:[4,1,1,""]},"M2Crypto.util":{no_passphrase_callback:[3,2,1,""],py3str:[3,2,1,""],quiet_genparam_callback:[3,2,1,""],pkcs7_pad:[3,2,1,""],genparam_callback:[3,2,1,""],passphrase_callback:[3,2,1,""],UtilError:[3,5,1,""],octx_to_num:[3,2,1,""],py3bytes:[3,2,1,""],bin_to_hex:[3,2,1,""],pkcs5_pad:[3,2,1,""]},"M2Crypto.SSL":{SSLServer:[6,0,1,""],Context:[6,0,1,""],Session:[6,0,1,""],cb:[6,0,1,""],Checker:[6,0,1,""],ssl_dispatcher:[6,0,1,""],SSLTimeoutError:[6,5,1,""],Connection:[6,0,1,""],Cipher:[6,0,1,""],timeout:[6,0,1,""],SSLError:[6,5,1,""],TwistedProtocolWrapper:[6,0,1,""]},"M2Crypto.EVP.MessageDigest":{m2_md_ctx_free:[3,1,1,""],update:[3,1,1,""],digest:[3,1,1,""],"final":[3,1,1,""]},"M2Crypto.EC":{pub_key_from_der:[3,2,1,""],pub_key_from_params:[3,2,1,""],gen_params:[3,2,1,""],EC_pub:[3,3,1,""],load_pub_key:[3,2,1,""],EC:[3,3,1,""],ec_error:[3,2,1,""],ECError:[3,5,1,""],load_key_bio:[3,2,1,""],load_pub_key_bio:[3,2,1,""],get_builtin_curves:[3,2,1,""],load_key_string:[3,2,1,""],load_key:[3,2,1,""],load_key_string_pubkey:[3,2,1,""]},"M2Crypto.m2crypto":{stack_st_OPENSSL_STRING:[3,3,1,""],stack_st_OPENSSL_BLOCK:[3,3,1,""]},"M2Crypto.SSL.SSLServer.SSLServer":{handle_request:[6,1,1,""],handle_error:[6,1,1,""]},"M2Crypto.httpslib":{HTTPSConnection:[3,3,1,""],ProxyHTTPSConnection:[3,3,1,""]},"M2Crypto.DSA.DSA":{sign_asn1:[3,1,1,""],gen_key:[3,1,1,""],save_params_bio:[3,1,1,""],verify:[3,1,1,""],save_key_bio:[3,1,1,""],sign:[3,1,1,""],set_params:[3,1,1,""],m2_dsa_free:[3,1,1,""],save_params:[3,1,1,""],save_key:[3,1,1,""],save_pub_key_bio:[3,1,1,""],save_pub_key:[3,1,1,""],check_key:[3,1,1,""],verify_asn1:[3,1,1,""]},"M2Crypto.PGP.packet.PublicKeyPacket":{pubkey:[4,1,1,""],pack:[4,1,1,""]},"M2Crypto.BIO.BIO":{m2_bio_free:[3,1,1,""],writeable:[3,1,1,""],fileno:[3,1,1,""],read:[3,1,1,""],readable:[3,1,1,""],flush:[3,1,1,""],readlines:[3,1,1,""],should_retry:[3,1,1,""],reset:[3,1,1,""],readline:[3,1,1,""],write:[3,1,1,""],should_write:[3,1,1,""],write_close:[3,1,1,""],close:[3,1,1,""],bio_ptr:[3,1,1,""],should_read:[3,1,1,""],seek:[3,1,1,""],tell:[3,1,1,""]},"M2Crypto.PGP.packet.PrivateKeyPacket":{is_encrypted:[4,1,1,""]}},terms:{represent:3,get_object:3,saver:7,"1g9epovswhpqr":7,load_cert_der_str:3,prefix:3,dirnam:[5,7],makecooki:3,"8tsi3wo5enkg4qwbnarqc3vgcv":7,whose:3,ssl_dispatch:[1,3,6],set_param:3,ecdh:3,wdigqewjl:5,v_asn1_ia5str:3,under:7,save_pub_key_bio:3,sha256:3,untrust:2,bgkqhkig9w0bbwewfayikozihvcnawcecmn:7,digit:7,dherror:3,toivonen:[0,6],govern:5,readbio:6,msg_bio:7,i2d_ssl_sess:6,four:6,qlen:6,cmd:3,zsyncer:2,correct:[6,7],multipurpos:7,verif:[3,6,7],initialis:[3,6],set_accept_st:6,sizehint:3,second:[0,3,6],follow:[0,3,7,5,2],wmbgsclvwsfzcccjhavw9nhfmucnrdwxaymvetnuon:7,xgffb0okilylmwv2bf6:7,even:3,get_stat:6,bioerror:3,neg:3,m2_asn1_time_fre:3,load_openssl:3,ssl_transport:[3,2],"new":[3,7,5,6,2],symmetr:[0,3,7],set_opt:6,eoq9wfscnii4:5,here:[3,5,7],text_crlf:3,lamy57gkw4ondmrtqvq2ojqlvosbllpxzh:7,path:3,peercertdigest:6,m2_x509_name_fre:3,set_session_cache_mod:6,fcgiserv:2,datetim:3,bitmask:6,"9rsqkrc9urv9mrbisredgnyecnerak5r1yzpoowninxc":5,aka:3,set_connect_st:6,q1z7g:5,readlin:3,unix:6,certbio:3,org:[0,7,5,2],cqydvqqgewjtrzerma8ga1uechmittjdcnlwdg8xfjaubgnvbamtdvmvtulnrsbt:7,txt:0,abstracthttphandl:3,subjectaltnam:[0,3],get_der:3,describ:[3,6],would:[3,6,7],emailaddress:[3,5],getpeernam:6,recommend:[0,3],type:[3,7,5,6,2],until:[5,6],skip_accept_encod:3,set_default_verify_path:6,warn:[3,2,6],hold:3,unpack:2,must:[0,3,6],join:7,err:[1,3,7],work:[0,2,3,5,6,7],"2bconvert":6,standard_error_messag:2,rn9vpy0suy8:5,root:0,could:[0,3,6],overrid:6,give:5,smtp:7,indic:[1,6,7],rsassa:3,under_bio:3,end:[3,5,6],load_cert_bio:3,duqhj2ygkkwdqq9v0xscjkgiyw:5,how:[0,3,6,7],hot:7,conn:3,pgp2:4,verifi:[3,7,5,6,2],bio_f_ciph:3,updat:[3,5],x509:[0,1,3,5,7],after:[0,3,5,6,7],dw0boozhj8tc7co7lmyb0ye271b6:5,befor:[0,3,5,6,7],httpconnect:[0,3],serialnumb:3,gen_param:3,demonstr:[0,5,7],xlyg6hhzzgbfyyngj2y7ymz1rl1m8snrnmkcyskgtrudenf6wt9:7,set_verify_cb:3,attempt:[0,3],third:0,ntransfercmd:3,perform:[0,3],maintain:6,environ:6,incorpor:[5,7],enter:[3,7,5,2],struct_to_timeout:6,asn1obj:3,oper:[3,2,6,7],sslserver:[1,3,6],composit:[4,3],feedback:3,private_encrypt:3,b9zjffauqtwzdnjgrkkyikhwjdojaac:7,over:[0,3,2,6],failur:[3,6,7],becaus:[3,6,7],wbal2p:7,affect:6,medusa:2,digest:[0,3,7],standard_html_head:2,cngeq1qxtyduiguda2nbgcl:7,imc:7,img:2,better:3,set_socket_write_timeout:6,them:[0,7],thei:[0,3,6,7],proce:6,safe:3,"break":2,pkcs7_error:3,getvalu:3,timeout:[1,3,6],each:[3,6,7],complet:[3,6],side:[0,3,6],mean:3,zw5kzxixitafbgkqhkig9w0bcqewennlbmrlckblegftcgxllmrvbtcbnzanbgkq:7,zserverssl:[1,2],bio_clos:6,kozihvcnaqebbqaegycbaxz:7,pgp:[1,3,4],save_params_bio:3,extract:6,proxyhttpsconnect:3,qtm0ddmm:5,network:[0,7],goe:[3,6],open:[0,3,2,6,7],dst:3,content:[1,3,2,6,7],public_decrypt:3,keyr:4,size:[3,6],dsa:[0,1,3,7],multilin:3,navig:7,wherea:[0,3],situat:5,renegoti:6,ireactortcp:6,fixm:6,md5:3,pubr:4,instal:[2,7],traceback:7,openssl:[0,1,2,3,4,5,6,7],unknown:[3,6],onto:3,niqfytycdl9i5sk:7,wjtpvp0yobmju4vmkezi405r7o8oewi:5,rand:[1,3,2,7],rang:3,render:7,load_pkcs7_bio:3,hook:6,instruct:2,alreadi:6,wrapper:[0,3,6],primari:0,set_client_ca_list_from_context:6,top:[3,2,7],noout:[5,7],master:5,too:0,"4mpgg20wd633d4z4dtlddz":5,john:0,listen:6,zssl:2,pkepacket:4,tool:5,privaci:7,get_cipher_list:6,sync:3,get_datetim:3,b4law8g59vtg6dykeetrg0rubx4bggc7pkbfuin423yjjodwchvvgnpozxmqt:5,md5withrsaencrypt:[5,7],keyid:[4,5,7],target:[3,2,7],provid:[0,3,2,6,7],project:[0,7],tzname:3,get_not_aft:3,fashion:2,seed:[2,7],lg4q5yezr1ejaw:7,seek:3,minu:3,p7_bio:[3,7],getsocknam:6,recreat:7,latter:6,nerx9zjgvrwuscqqcu:5,genparam_callback:3,set_tmp_rsa:6,set_datetim:3,unset_x509_stack:3,"0x2057cf8":6,unknow:3,shall:[2,7],add_x509:3,object:[0,4,3,6,7],regular:3,verify_fail_if_no_peer_cert:[0,6],letter:[5,6,7],geturl:3,x509_extension_stack:3,don:3,dom:[5,7],dog:7,doe:[0,3,6],commonnam:[0,3,5,6],freewar:7,"1tcaqbmq":7,jcyhx9vw4xvja7:7,listentcp:6,x509_store_default_cb:3,set_issu:3,random:[3,7],privkei:7,pkcs7_text:7,pkc:[4,7],set_info_callback:6,pkg:[5,7],protocol:[0,3,2,6,7],load_loc:3,bmrlckblegftcgxllmrvbqibadajbgurdgmcgguaoigxmbggcsqgsib3dqejazel:7,absolut:3,acquir:3,"059600270x":0,m2_ssl_session_fre:6,explain:7,configur:[5,7],apach:2,gymga1udiwr8mhqaffzsqjs9bei2gcgrutozevjws81kov:7,tzinfo:3,peek_error_cod:3,get_vers:[3,6],xekaxcmzegp0b6camwfmuqrbvgxbbncqkc:7,test_ssl:0,stop:2,ssldump:0,net:5,bat:2,ietf:7,stack_st_openssl_str:3,"public":[4,3,5,7],twice:6,bad:6,u4j2f34u0xktwcp:7,keylen:3,fieldnam:6,format_format_d:3,yqor8jggsuzroyjqhj:7,result:[3,6,7],utilerror:3,fail:[3,6],best:0,subject:[3,5,7],newkey2:5,said:[3,7],databas:5,z04ovaeue4x0swm17hlbm2kvt:5,urllib:2,ssl_verify_callback:6,mua:7,awai:[3,6],approach:7,attribut:[3,5,7],accord:[3,6],manpag:[3,6],ssl_cert_fil:6,weak:0,extens:[3,5,6,7],ywmxnjz8:7,zbq:5,memorybuff:[3,7],protect:[3,6,7],howev:6,coz:7,against:3,logic:6,bio_f_buff:3,browser:2,sre_pattern:[3,6],ctxt:4,"509v3":2,height:2,"19973a9dbbb601ba":5,load_kei:[3,7],trust:7,assum:[2,6,7],strong:3,awihma0gccqgsib3dqmcageoma0gcsqgsib3dqebaquabigaqpu8hfutlcf6ho2t:7,recipient_kei:7,verify_ok:6,been:[3,6,7],skip_host:3,interpret:[0,3,6],interest:6,basic:[5,7],ext_stack:3,sendsmim:7,get_verify_result:6,argument:3,load_cert_chain:6,j6wo9dzltioz3znvr3ljsskib4tip4ugqnjaluw7m3ftz3magxn68hbbjs8tz8tl:7,rand_pseudo_byt:3,emploi:0,ident:[0,2,6,7],servic:[6,7],commerci:7,calcul:3,p7file:3,kef21pgguqpf14gkgfwx3sv4bjc1vbrrwq6zlg3nmuyqr5mtjjy9eq:5,printabl:5,get_verify_mod:6,zopebutton:2,need:[0,3,5,6,7],kwarg:3,sever:[3,5,6],credit:2,receiv:[6,7],suggest:3,make:[0,3,5,6,7],thusli:[2,7],cipher_stack:6,sopath:3,should_writ:3,get1_chain:3,key_as_byt:3,zsmime:7,nid:3,"1t8luishhn9899imp2vyg0ub67fqfypymm2cm2":7,rais:[0,3,6,7],portal:2,errdepth:6,get_verify_depth:6,thu:[3,7],inherit:[3,6],client:[0,3,6,7],thi:[0,2,3,5,6,7],pubkey_pkt:4,programm:[0,7],settimeout:6,left:[5,7],countrynam:5,identifi:[0,3,5,7],just:[0,6],salt_length:3,xisnot:7,kkst1mcj:5,yet:6,previous:6,wrappedprotocol:6,els:[3,5,6,7],ffffff:2,save:[4,3,7],applic:[0,3,5,6,7],blwegdqhonaiwbk5z1l:7,disposit:7,verify_dsa_asn1:3,"_close_cb":3,"0x4996190":6,hihsrgwtnd7lnxuucpx8yv1id0dlmp0hz:7,get_allow_unknown_ca:6,x509_store:[3,7],viega:0,specif:[0,5,6],filenam:[4,3,5,6,7],client_addr:3,manual:[0,3],modulu:[3,5,7],miiiwwyjkozihvcnaqcdoiiitdccclacaqaxggeamih9ageamgywytelmakga1u:7,underli:[0,3,6],openfil:3,right:[4,6,7],old:[0,5],famili:6,propertymap:2,intern:[3,6],"1hxxfyo88m":5,load_pub_key_bio:3,successfulli:6,startpassthrough:6,requesthandlerclass:6,trace:3,temp_fold:2,subclass:3,cnf:[5,7],unit:[5,7],condit:3,localhost:[7,5,2],plu:6,uncompress:4,save_key_d:3,pkcs7_detach:7,kxtbbmqswcqydvqqg:7,"2aglpogdcfdioqblb2dcscohmbbvr":5,post:3,rwniyh0aw4xyyhhit:7,unsaf:3,ireactorssl:6,m2_asn1_integer_fre:3,ctxmap:6,from_kei:7,produc:3,"float":3,encod:[3,2,6,7],www:[3,2,7],ditto:3,"9ij5z6mja7rm7ttbsjup":7,pair:[3,7,5,6,2],tmp_bio:7,getproto:6,netscap:[5,7],wrap:7,od2m3lp7jbwjqbrtndhimqul2s4yu:7,sign_asn1:3,wai:[6,7],sfl_home:7,support:[0,3,6],frill:3,transform:7,load_key_string_pubkei:3,avail:[0,2,6,7],width:2,reli:[3,6],set_not_aft:3,call:[0,3,5,6,7],x509_ext_ptr:3,"0x1faa758":3,so_:6,gqnveov:5,head:2,form:[0,3,6],micalg:7,write_bio:6,refcount:[3,6],"0x1ec24a0":3,"4oxll0bi":5,"true":[3,6,7],pub_key_from_d:3,reset:3,absent:6,duhrqiml1tyi:5,py3str:3,maximum:6,dcwd:7,tell:[0,3],featur:0,fv4sgm3jkr:7,"abstract":[3,7],decrypt:[0,4,3,7],exist:[5,2],x509_store_ctx:3,localtimezon:3,p7m:7,check:[0,3,5,6,2],ec9eyj:7,encrypt:[4,3,5,6,7],kdjqodst7ovu62motgf3arcduppwuztfxolyone5nioo1apvhbrinqwcplkpotqr:5,when:[0,3,5,6,7],https_open:3,test:[0,3,2,7],jvy5cif:7,node:7,add_ext:3,intend:7,determin:3,stringio:[0,7],notwithstand:7,consid:6,useridpacket:4,longer:3,"1dr9dy8l0naqh21y5fgss8b1wd":7,pbkdf2:3,bottom:[3,7],pseudo:7,pathnam:2,time:[0,3,2,6,7],push:[3,7],bio_ptr:3,chain:[0,3,6],u7rqbwpc9hr34saprs3ubbculet748kecbx247imbtidctzxcc1o86:7,"41b2874df3d02dd4":5,consum:7,cadav:2,from_cert:7,cacert:[5,6],signific:[3,6],emmarsgyedf5h1afl1smkomskbqxe1d2jg:7,ztf6mpxjsixi6l4zyxebs6yhf:7,vsgprqx2:7,llf:4,should_retri:3,decid:[5,6],depend:[3,2,6,7],"5efdvbet":5,get_crit:3,readabl:3,post1:[7,5,2],decis:5,multivalu:3,sourc:[0,3,4,2,6,7],string:[4,3,2,6,7],load_param:3,ftpserver:2,word:7,brows:2,m2_x509_store_fre:3,pub_key_from_param:3,administr:7,level:[2,6],did:[5,6],iter:3,item:3,cooki:3,authcooki:[1,3],upper:3,ssl_verify_callback_stub:6,unmix:3,set_client_ca_list_from_fil:6,htm:7,sign:[3,5,7],port:[3,2,6],load_key_bio_pubkei:3,addr:6,repli:2,current:[3,6,7],eovbgs7ezalvvkdj4hnl:7,m2_engine_fre:3,deriv:3,gener:[3,5,6,7],swigpyobject:3,ckepacket:4,nconnect:2,get_serial_numb:3,m2_dh_free:3,along:3,kdfqdmtfzqkymhp1laq1ihbq1rhwsbh5n3ekq:5,wait:6,m2_bio_pop:3,m2_sk_x509_free:3,load_sess:6,behav:6,http_class:3,load_fil:[3,7],commonli:7,dqehaaavbbnhihnpz24gb2ygb3vyihrpbwvzoiic5zccaumwggjmoamcaqicaqaw:7,extra:5,modul:[0,1,3,4,6,7],keyfil:[3,6],peer:6,bio_noclos:6,asn1:[1,3],regex:3,memori:[3,7],msu:3,rsa_error:3,perl:5,rc4:[1,3],bio_s_pyfd:3,handler:[3,6],msg:7,scope:7,msb:3,cipher_list:6,tb7k3chfgw5wagwnll8lb:5,keep_tri:4,enhanc:0,visual:3,ioy0bdijcyn1jimohj:7,nueymfjdm0uvntg0icxgnufsfnjkntthpagykgetric3kgjz:5,signer_kei:7,commentpacket:4,prepar:2,pretend:7,mpint:3,bxwxkuuvt81vbjwdn9jst6:7,setblock:6,can:[0,2,3,5,6,7],save_param:3,purpos:[3,7],cookie_str:3,m2_pkey_fre:3,claim:0,stream:[4,3],add_extens:3,agent:2,topic:5,critic:3,kv95ymtgbisuwkj93grbvqoj:7,occur:[3,6],alwai:[3,7],close_pyfil:3,qppdzt3ykfmg2lzytaam1czvb6rbnrjjp2zrpbwn:5,rand_add:3,write:[4,3,5,6,7],anyon:7,fourth:0,m2urllib:[1,3,2],map:[6,7],product:7,mar:[5,7],as_text:[3,6],sni:6,sol_tcp:6,mac:3,commit:5,mai:[0,3,7,5,2],data:[0,2,3,5,6,7],aes_128_cbc:3,practic:[0,3,7],newkei:[5,7],democa:5,"7pvwhtszeyhn3oa9dhlmv9uqc4wy5md7j":5,inform:[0,7,5,6,2],combin:6,callabl:[3,6],zhttps_server:2,optnam:6,eawm5avuv7hnptt5zr:7,load_crl:3,coll:2,nbsp:2,print_param:3,get_error_depth:3,still:6,pointer:3,xmtdg:7,dynam:3,verify_dsa:3,polici:[5,6,7],is_encrypt:4,ma0gcsqgsib3dqebbauaa4gbaho3drchr86fstvavfixdsswwqktcehuhrdc:7,window:[2,7],mail:7,keyout:5,non:[3,6,7],within:[0,5,6],recal:7,ssl_verify_callback_allow_unknown_ca:6,reject:6,initi:[3,6],bound:6,pavel:3,aggtjgplibexlzalhpwlz9laqyrqpvcvjywaovfmmvrav4nafnoz2:7,now:[5,7],negoti:6,nor:[6,7],introduct:[0,7,5,2],pfl1k5dyxrgtzlb36uljd:7,down:6,zwxy:7,name:[0,3,5,6,7],verify_fin:3,h7nmicymi2wkz8h:7,ssl_connect:6,bufsiz:6,compil:3,set_sess:[3,6],https_srv:7,continu:6,egftcgxllmrvbtcbnzanbgkqhkig9w0baqefaaobjqawgykcgyear1nyy1qrll1r:5,lkmac1dwb3dqgjt5xk4wjesinfdxecnegacyteagyztpiapu:5,fi1wdpphywke97pojizvqesfzopty5hjiyzux4u:5,keypair:3,year:[5,7],happen:0,newcert:5,dispos:6,subjectnam:3,asn1_utctim:3,shown:[0,2],space:3,ahporp5ys55czpi:5,"_pyfree_x509":3,load_verify_loc:[0,6],internet:[5,6,7],text_nam:3,factori:[4,3,6],get_error_func:3,sc51hkebgckl1:7,fakesocket:0,state:[3,5,6,7],argv:3,mime:[0,1,5,7],plen:3,"byte":[4,3,6],tzsznk2qwgvsspos9mhuaepbnjmnbffbrulhrutsglm:7,ax96lvs0:5,get_pubkei:3,first:[0,3,7],origin:[3,7],directli:[0,6],onc:[3,6],save_pub_kei:3,amyxludrk45acua:5,"long":[0,6],sztm5jrp2zw:7,wronghost:6,zhttps_handler:2,publickeypacket:4,given:[3,6],bio_f_ssl:3,engineerror:3,"8levy0cllw":5,cgyikozihvcnawcwdgyikozihvcnawicagcama0gccqgsib3dqmcagfamacgbsso:7,citi:[5,7],checker:[0,1,3,6],ssl_:6,conveni:6,zovnycmv1cintpalaw4bwtxnhcdvthavdy34okhemzncg:5,provinc:[5,7],copi:[5,6,2],rsa_pub:[4,3],specifi:[3,6],ecerror:3,get_ext_at:3,than:[0,3,6],serv:2,ddlzqbacuxwtv5xy8plmx7widaqab:5,sha224:3,zw50msqwigyjkozihvcnaqkbfhvyzwnpcgllbnrazxhhbxbszs5kb20caqawdqyj:7,dyman:3,were:6,seri:7,sai:7,smime_load_pkcs7_bio:[3,7],ani:[0,3,6],ly4tpl5:5,load_params_bio:3,sat:[5,2],add_entry_by_txt:3,bitwis:3,engin:[1,3,6],inkei:7,note:[0,3,6,7],addhead:2,take:6,bgbyj1dubkhzsc7dgxzdtuclgnxqnnsg:5,cipherstream:3,"0x3f0bc68":6,noth:3,channel:[2,6],begin:[0,5,7],sure:3,makebuf:7,normal:[0,6],buffer:[0,3,6,7],add_userid:4,"0qjhp6hut7fso":7,set_mod:6,icon:7,renam:[5,7],contextfactori:6,messier:0,ftp_tl:3,link:[0,2],salt:3,hmac:[0,3,7],recipi:7,cheap:7,connectssl:6,hack:2,corner:7,m2_sk_x509_extension_fre:3,gqzcvnzzcmx8uvrjqr8drwdsmpj0vxg1:7,fifth:0,onli:[3,5,6],explicitli:6,get_error_reason:3,load_certif:3,lwpbxzf2k3fuudnkrlfbakeampxoybuifr2s5bma:5,engine_method_:3,set_x509_stor:[3,7],algorigthm:3,shramov:3,analys:0,get_fingerprint:3,verify_upd:3,variou:[0,6],get:[3,2,6],ssl_ptr:6,ssl:[0,1,2,3,5,6,7],sslbio:3,requir:[0,3,6],prime:[4,3],fileno:[3,6],save_kei:3,l6kn27mwzhe331vjttjsgl4:5,seldom:3,verify_init:3,error_log:2,through:[3,5,6,7],where:[3,5,6],e_n:[4,3],pkcs7_verifi:7,rand_byt:3,br77:5,set_tmp_rsa_callback:6,sport:0,m2_x509_req_fre:3,load_request_str:3,asn1int:3,between:0,"import":[3,2,6,7],create_socket:6,gratefulli:7,screen:[2,7],rsaencrypt:[5,7],set_data:3,sslverificationerror:6,come:[0,5],tue:2,"76h5jiznpbdsf2fjghwqvvdgyw4owy3mu739lhvnblicn":5,load_cert_str:3,evp_ciph:3,set_socket_read_timeout:6,mani:[3,2,7],ewjtrzerma8ga1uechmittjdcnlwdg8xfjaubgnvbamtdvmvtulnrsbtzw5kzxix:7,period:5,pop:[3,7],set_pad:3,b6ugcsqgsib3dqehataubggqhkig9w0dbwqirf525ufwszaaggea85rmx6axqmxb:7,bo2w7ei6iejbazk:5,mark:[3,7],zserver:2,certifi:[5,7],valueerror:3,get_rsa:3,get_id:3,standard:[3,7],"case":[0,6,7],interoper:7,heikki:[0,6],eaydvqqdewlsb2nhbghvc3qxjzalbgkqhkig9w0bcqewggfkbwluqhnlcnzlci5l:5,invok:[3,2,6,7],sol_socket:6,stdout:[0,3],set_session_id_ctx:6,henc:5,dsaerror:3,clutter:2,get_session_timeout:6,m2xmlrpclib:[1,3,2],httpserver:2,develop:5,author:[0,3,7,5,2],j9ftv3di:5,same:[0,3,6],binari:[4,3,6],epoch:3,html:[2,7],pad:3,document:[0,1,2,5,6,7],load_dynam:3,finish:[3,6],companion:7,"_mode_":6,extern:6,wrylp3:7,sign_dsa_asn1:3,appropri:[0,3,6],x509_name:[3,6],set_subject_nam:3,s0ovoc041cerazqfm2tl:7,"0x822012c":7,sfqo6lc9mtsj7fjydq:7,x509_stack:[3,7],model:[5,7],execut:[5,7],t6lqehb32wfyxqbkfxfjsxzsxox3r:7,m2urllib2:[1,3],auth_ssl:3,rest:3,addinfourl:3,q7s4tn1z:7,get_cert_stor:6,struct:6,m2_x509_free:3,except:[0,4,3,6],param:3,desktop:2,catop:5,blob:[3,7],struct_siz:6,real:3,stack_st_openssl_block:3,"2bdqvfpffx5lsmitkzaobldssjfr6rojxoqrsgia2az":7,read:[0,2,3,4,5,6,7],hkig9w0baqefaaobjqawgykcgyea5c5tj1chtsoxa1q2q0fyiwmwyhptjpjcvtzm:7,httplib:[0,3],traffic:0,dispatch:6,world:6,integ:6,server:[0,7,5,6,2],either:[3,6],smime:[1,3,7],output:[3,7],manag:2,set_tmp_dh:6,handshak:[3,6],pythonwar:3,nonzero:3,mbstring_asc:3,tvtk:7,freebsd:2,save_key_der_bio:3,legal:3,exit:3,"9znlfejkjj67vembxbj":7,freed:6,power:2,to_addr:7,urllib2:3,set_ciph:[3,7],passphrase_callback:[3,6],asn1_str:3,gvyvi:7,src:2,mg611eovkleoostv:5,eozfol5i20ykiv6j:7,pkcs5_pad:3,ssl_info_callback:6,other:[0,3,5,6],routin:[6,7],outlook:7,wsluvo:5,"0jwuq":7,awfqq4jcc:7,build_open:3,get_issu:3,ju4:5,your:[1,3,7,5,2],loc:3,buffer_s:6,hex:3,overwrit:2,start:[7,5,6,2],interfac:[0,3,6,7],ipv4:6,ipv6:6,premis:7,handle_request:6,load_pkcs7:3,tupl:[4,3,6],bundl:[7,5,2],dqyjkozihvcnaqeebqawwzelmakga1uebhmcu0cxetapbgnvbaotce0yq3j5chrv:7,jun:2,add_signatur:4,cryptograph:[3,7],miicxgibaakbgqcvwdhjvcuwxwu4h8wqujguvm:5,conclus:[5,2],tripl:7,immedi:6,get_not_befor:3,possibl:[3,6],"default":[0,2,3,5,6,7],mbstring_utf8:3,format_d:3,set_timeout:6,expect:3,cbc:[5,7],hellman:[3,2],creat:[0,1,2,3,5,6,7],certain:[5,6],w81xodtq2ecjxc8fn2wpa9y5vd1lt7ojksoul1:5,mhf6rqar:7,stack_of:6,file:[0,2,3,5,6,7],again:[3,5,7],fqlcrrr5nvupdin:5,get_data:3,tcpserver:6,field:[0,3,5,7],cleanup:3,ignor:3,you:[0,2,3,5,6,7],private_decrypt:3,ssl_sess_cache_:6,yubj33ylmpjgngijlnolfy0hnw7tmwqr:7,symbol:6,publickeyr:[1,3,4],blklen:3,set_pubkei:3,nyndufwi0qm92qlk0ui:5,directori:[0,5,6,2],bindaddress:6,newli:3,ngp:[0,7,5,2],pemfil:6,all:[0,4,3,5,6],ssl_cert_dir:6,alg:3,pty:[5,7],iqwxllnj:7,m2_x509_name_entry_fre:3,alt:2,"7zjt2r5cpikgkwofamduxeltx":5,osafound:0,init:3,program:[0,1,5,7],those:0,h9diul:5,octx_to_num:3,get_peer_cert_chain:6,global:7,fals:[3,5,6],mpi:3,util:[0,1,3],zpecllwhxd4b1auaiaargkl935u:7,get_kei:3,veri:[3,6],gucrblvd7n3ofnx5ujmpmcw9zwbu:7,load_cert:[3,6,7],list:[3,2,6],stderr:6,default_port:3,open_http:3,webdav:2,get_peer_cert:6,zero:3,pass:[3,5,6],further:6,b4txejzriyc8f3:7,"6l0g37faxur3xm28rchzvhu":5,what:[3,5,7],sun:2,section:[5,7],abl:7,overload:6,delet:3,version:[0,3,4,5,6,7],method:[3,6],"9gul1bxbckrtedtxenqtem7spzomtswd2lhb8z65grx90cyt":7,expon:[4,3,5,7],set_ssl:3,full:[5,7],hash:3,sophist:0,"3dizhtxigepfztiuyutxs3i2gnmx2pee3chtllywd3jneakz0iozpdphif2xhllq":7,behaviour:6,get_entries_by_nid:3,rudimentari:0,modifi:[3,2,7],valu:[4,3,5,6,7],search:1,sender:7,reason:[3,6],ccvkzzl:5,starttl:6,pick:7,action:6,diffi:[3,2],via:[3,6,7],literalpacket:4,nhost:2,cafil:6,wkat:7,href:2,s_pkt:4,signaturepacket:4,establish:[0,3,6],handle_error:6,select:[2,6,7],fcmspp3auq1:7,recv:6,two:[0,3,6],as_der:[3,6],organizationnam:[3,5],tlsprotocolwrapp:6,ede3:[5,7],more:[0,3,5,6],prot_p:3,epollreactor:6,mozilla:[2,7],flag:[0,3,6,7],prot_c:3,"1czdztgk7h9cdgx2qjsivymyytcfi3zsuzmjs8":5,known:0,compani:[5,7],cach:6,ensu:7,none:[4,3,6,7],"56vrpgppgut40hv8xqfbwiz2whwwlkpfahj8b79ztfuzuru6z2rnpvv8inhc":7,der:[3,7],m2_asn1_string_fre:3,dev:2,histori:0,dek:5,dec:2,def:7,randfnam:3,prompt:7,m2crypto_xmlrpc:3,expectedhost:6,share:3,accept:[0,7,5,6,2],explor:7,phrase:5,add_cert:3,cours:[5,7],get_socket_read_timeout:6,secur:[0,3,5,6,7],rather:6,anoth:[5,6],kiy8jkpv8dr5po1ikaxjfudbygdenjwybsrspsk3p:5,lnzqowadmol:7,"__init__":2,m2_x509_extension_fre:3,simpl:[0,3,6],css:2,get_tim:6,resourc:7,check_purpos:3,catalog:2,load_pkcs7_bio_d:3,"1bc9f3q":7,associ:6,set_serial_numb:3,cenfqfwc:7,caus:3,callback:[1,3,6],ssl_ctx_flush_sess:6,"8yhspd0caweaaaobtjcbszadbgnvhq4efgquxoyoll1t4jabwzfrm7ms8nblzuow":7,"0x3f0b3f8":6,u4dmyq9uxs421en3v2hkvhvdy8ut2ot29:7,dough:3,untouch:6,paramet:[0,3,2,6,7],getronicsgov:7,style:6,get_valu:3,sc3lsmhugu9xc26ogstjmkquiah:5,pend:6,set_x509_stack:[3,7],bjq5hnxbouslq0rwbrkoxv64i:7,assign_rsa:3,might:6,rwb:3,good:3,"return":[0,3,6,7],rgwnkxpj:7,timestamp:4,x509_purpose_:3,entry_count:3,qbcrdaoxdj0ulwytauev:7,vihhfc1zzp:5,mkwcbi1nfvohcv3xdq2ela:7,userid:4,authent:7,mysteri:3,chandra:0,man:6,found:6,nocertif:6,text_crlf_bio:3,format_pem:3,hard:3,hrg6sai33usk8xpokjqa:5,procedur:5,connect:[0,1,3,2,6,7],y3klvhk09yl6d:7,beyond:7,hostnam:6,ftp:[3,2],grcgzeb9ymfcedxahtdufhjrkpdpsxzzvvgksbncbqu92obyqvnrq8m:7,zbxscvldasmckg:5,etag:2,print:[3,7,5,6,2],"3wf7q915tveqoc74bnu6b8ibbgrmhzdzmvq4szffveaum":5,get_sess:[3,6],rand_rang:3,proxi:3,advanc:5,rm2htgotm2lmore4geotypi5f1fbi:5,pub:3,m2_cipher_ctx_fre:3,base:[0,2,3,4,5,6,7],connecttcp:6,eopzyno4mi:7,ask:[3,5,7],get_default_session_timeout:6,refer:[3,2],basi:6,messagedigest:3,thread:[1,3],pub_kei:3,threat:[5,7],pkcs7_pad:3,lifetim:6,python3:6,assign:[3,6],feed:3,certfil:[3,6],notifi:6,exchang:[0,3],set_tmp_dh_callback:6,number:[4,3,5,6,7],ec_error:3,urbfke2mocdxvdzxbmd:7,done:[2,6],blank:[5,7],miss:6,differ:[0,6],script:0,uweuasngtkpjv2jyumd3hwqox2q3cd4zgqvjj6gf3exa5126ckf:5,least:6,m2_ssl_free:6,bdclcn8a:7,buf_len:3,"0x1fe7dd0":6,store:[3,6],option:[3,5,6],create_by_txt:3,tob:7,part:7,check_ca:3,kind:6,grew:0,asyncor:[2,6],whenev:6,remot:6,remov:6,ecdsa:3,reus:6,str:6,comput:3,fmt7a120s3gd2jixgh06l:7,evperror:3,packag:[1,3,6,4],m2_pkcs7_free:3,expir:[3,5,6],"null":[3,6],x509error:3,vsxc7xx7xo:7,built:6,equival:6,self:[3,5,6,7],also:[0,2,3,5,6,7],unset_kei:3,load_client_ca:6,useless:0,puthead:3,distribut:[0,2],previou:3,most:[0,3,6,7],user_ag:3,dai:[5,7],appear:2,m2_x509_store_ctx_fre:3,clear:[3,5,6,7],cover:5,ext:3,exp:3,microsoft:7,des_ede3_cbc:7,load_key_str:3,remove_userid:4,microsec:6,find:6,access:[2,7],"0x1faa848":[3,6],post_connection_check:6,copyright:[0,2,4,5,6,7],unattend:5,putrequest:3,smtplib:7,writebio:6,localitynam:3,get_current_cert:3,thisown:3,verify_p:[0,6],m2_x509_crl_free:3,utcoffset:3,rfc:[3,7],no_passphrase_callback:3,common:[0,5,7],should_read:3,crl:3,certif:[0,2,3,5,6,7],add_sess:6,set:[0,3,5,6,7],netmemet:0,see:[0,3,2,6],sec:6,arg:[3,6],reserv:[4,6],set_not_befor:3,passphras:[3,5,6,7],set_vers:3,altern:[2,6],signatur:[3,5,7],web:[2,7],numer:2,ssl_sent_shutdown:6,numericipmatch:6,peercerthash:6,succeed:[3,2,6],"0x49948c0":6,distinguish:[5,6,7],acl_us:2,read_al:3,both:[3,2,6],last:[0,5,6,7],bhmcu0cxetapbgnvbaotce0yq3j5chrvmrkwfwydvqqdexbtl01jtuugumvjaxbp:7,kozihvcnaqebbqaegyblzlgupfphwhsgtiapvdexn61qisz3oem88xoxkuw0szor:7,get_error:[3,6,7],forgotten:5,prng:[2,7],load:[0,3,4,2,6,7],simpli:3,ec_pub:3,point:3,instanti:[4,3,7],address:[0,5,6,7],header:[3,2],littl:[0,2],shutdown:6,suppli:[3,6],cakei:5,surnam:3,stamp:7,due:6,bgcolor:2,secret:5,vi4roin:5,box:[2,7],buflen:6,append:3,understand:7,"2zz2g7x1hxrwh95a":7,imap:7,look:[5,7],get0_sign:3,ypfxy:5,index_html:2,"while":[3,2,6,7],abov:[0,2,6,7],error:[3,6,7],asn1_string_print_ex:3,pack:[4,6],propag:3,readi:[5,6,7],itself:[3,7],uwrgu5shra8oncm0cdxej0kpf3cfnjhffb8hwmzi4uegnmfxqnsxogz:7,set_tim:[3,6],around:2,setup_addr:6,"_ptr":3,close_flag:3,decod:[0,5,6],zope:[2,7],qya6adywgbghr9jkhwn5gsdu7bwx:7,obio:3,jddsk:7,uifxaf6s4n2uihvp6tqxthejtpzoc7pc:7,alert:6,temporari:[6,7],user:7,stack:[3,6],recent:7,subpackag:[1,3],sha1:[3,6,7],set_allow_unknown_ca:6,entri:[3,5],without:3,"0x7fc7ebc63150":3,set_kei:3,bio_fre:6,explan:6,predetermin:3,utifsh4jkkm:7,load_request_bio:3,pss:3,set_object:3,m2_asn1_object_fre:3,pubkei:[4,3],fancyurlopen:2,browser_id_manag:2,"_sre":[3,6],sslerror:[3,6],input:[0,4,6],subsequ:0,certdata2pem:0,bio:[0,1,3,6,7],march:7,format:[0,4,3,6,7],rc4_free:3,big:[4,3],wdd1ar2k4k3gai7kkgobwt0:7,intuit:5,bio_in:3,etwitreft1heupnar:7,gd58p4mpmhu5iknz4yh4nlhnaitevcs85tzuaxze9g:7,bit:[0,3,5,6,7],bin_to_hex:3,pdlrrliknknfmhkiacktlrcu59sca6adeiwuzqmuzp5cs6jrsro3nkfg1bd09d1k:5,signal:3,resolv:2,cw8kzzwh:7,collect:[0,2],princip:3,get_socket_write_timeout:6,givennam:3,popular:7,ssl_ctx_set_timeout:6,creation:[5,6],some:[5,6,7],sampl:0,control_panel:2,m2_bio_fre:[3,6],nqxlmgj3jwq7x9:7,endhead:3,pltnni25spyrcwfl6erd25u:7,per:[3,2,6],pem:[0,2,3,5,6,7],substitut:7,prog:7,stateorprovincenam:3,proc:5,privatekeypacket:4,asn1_object:3,run:[3,2,7],do_handshak:3,clientpostconnectioncheck:6,jyvbd7acn35p5yx7ktqvqerwdijxycanbcnvmrtmysanw9kv1ujtxc5vx7ylwipk:5,step:[0,5,7],loseconnect:6,ftpslib:[1,3],jy5rd:5,load_key_bio:3,"3pjiyfhaxk64iutmpsy393rhmeb4kn":7,is_ctb:4,idx:6,constraint:[5,7],materi:[0,2],new_pub_kei:[4,3],keybio:3,dialog:[2,7],smtpd:7,block:6,https_server:2,compute_kei:3,chang:[3,6],nss:[0,7],enabl:[6,7],sock:6,textual:0,custom:6,includ:[3,5],sslv3:[0,6],suit:6,set_cipher_list:6,yl9qevh1pp2zvswq12p7gjt3t:7,properli:7,bio_s_mem:3,skip:7,newer:3,line:[0,3,7],aqh:7,info:[3,5,7],concaten:6,consist:[3,7],caller:6,protocolwrapp:6,sign_rsassa_pss:3,unlock:3,py3byt:3,akbr4il1nkq8ecsmcr3wpa0i9n0ehi7zvpvahxc0sqapfl8ygdfhq:5,similar:[7,5,6,2],curv:3,constant:[1,3,6,4],retriev:[3,7],doesn:6,repres:[3,6],m2_ec_key_fre:3,get_ciph:6,compressedpacket:4,yrpzcwq3gxahuj:5,titl:2,invalid:3,public_encrypt:3,librari:[6,7],clean:[3,6],hanson:5,m2_md_ctx_free:3,ago:5,ccrt2tfwkbbfleuifl7mb:5,twistedprotocolwrapp:[1,3,6],algorithm:[3,5,7],pkei:3,ubowzitegtyli52:7,rand_se:3,"1vsrcid":5,depth:[0,3,6],algo:3,get_subject:3,lbow6ssdir6:7,asyncio:6,load_request_der_str:3,code:[0,3,5,6,7],queri:6,der_str:3,steve:5,urandom:2,ssltimeouterror:6,issuer:[3,5,7],privat:[3,5,6,7],"_debug":3,base64:7,reset_context:3,friendli:7,send:[0,2,6,7],flowinfo:6,ahau6kwk:7,sens:6,fatal:6,ripemd160:3,sent:[3,5,6,7],get_error_cod:3,mutheybpq5th7ydrtnizkkxobnqe2kyux9x22a1kh49sojjfg6kpb9mugizbimlv:5,electron:7,b877j9wbpbl:5,get_shutdown:6,tri:[0,6],iobuff:[0,3],newreq:5,get_timeout:6,m2_ssl_ctx_free:6,certdata:0,session:[1,3,6],evp:[1,3],uryvak7vfoldaz6z3nosoi6nonnehpr:7,pleas:5,x509v3:[5,7],dasmytmpc4ztytv06n07afbjl:5,"0x2":[5,7],"0x1":5,"0x0":[5,7],pkcs12:7,oiqto:7,download:[0,2,7],write_clos:3,cat:5,odd:3,click:[2,7],client_address:6,compat:0,index:[1,3],"974aklcjnk1gzigarz":7,compar:0,henceforth:2,weak_crypto:6,make_ctb:4,ssl_ctx_set_opt:6,mimetool:3,pep484:6,len:3,vkwwecqqdkeu:5,ssl_received_shutdown:6,kebfzs8asq7uc9axw6ti0eapj8evhtwhsbgzqrwekfbxs6hbbhmidc4n0m7oq:7,let:[0,5,7],threadingsslserv:6,relativedistinguishednam:3,sinc:[0,3,5],kilroi:3,convert:[0,3],iihwd6gtv1uodf7urbxtl3hq9:7,pretti:0,"1qk53c":5,ctx:[0,3,6],later:6,cert:[0,3,6,7],ctb:4,pheng:[0,2,4,5,6,7],typic:[0,6,7],rdn:3,revoc:3,ggarfmmj4yuhewkys9jo1h8k4bdxugmauwni5:5,appli:[3,5,2],foundat:[0,6],api:[3,6],set_subject:3,clbwev3ryfrlp4x8j9mdte0ykok3t0wqohqrettsifdtjnfp:5,from:[0,2,3,4,5,6,7],getsockopt:6,zip:2,commun:[3,6],check_kei:3,next:[3,5,7],prompt1:3,few:[5,7],prompt2:3,usr:[5,7],get_nam:3,pfi:5,socketserv:6,about:[5,6,7],forkingsslserv:6,load_info:[3,7],ctrl_cmd_string:3,m2_rsa_fre:3,tunnel:3,alia:3,bmvnwbppufzpiaivalycjt6pyextbbszs7:5,set_tlsext_host_nam:6,b6gr5s8:7,endian:[4,3],serverpostconnectioncheck:6,get_ext_count:3,aliv:6,control:[0,3,6],process:[5,6,7],lock:7,rescorla:0,m2_hmac_ctx_fre:3,httpsconnect:[0,3],serial:[3,5,7],hvcnaqkemryefooerud8exiyxfqq8btfukwrsp3imfigcsqgsib3dqejdzffmemw:7,gknqqdblotqt06f3oissdjetm2itllyhgzv:5,load_verify_info:6,ssl_get_default_timeout:6,bgkqhkig9w0bbwewhayjkozihvcnaqkfmq8xdtaxmdmzmtexnduwmlowiwyjkozi:7,rand_file_nam:3,scopeid:6,hcyiukxujtaqtxboh:7,m1je:5,pkcs7:[3,7],imqqiiw:7,m1awhen3vir2zlaw:5,qjpbezwdp7gjfzfatqitesymwo3i:7,farm:2,zxhhbxbszs5kb20whhcnmdewmzmxmte0mdmzwhcnmdiwmzmxmte0mdmzwjbbmqsw:7,pyfil:3,sign_init:3,load_pub_kei:3,nuser:2,connectionmad:6,"3c93156fc7b4ebf49fe9c7db7f503087":7,bind:6,correspond:7,issu:[2,6,7],l5trm4x6zjxwuxxmijcehmmd8tc8ybwwo4ao19b3ebffetvsugxsga:5,packetstream:4,allow:[0,3,5,6],sendal:6,https_request:3,ir9fggophatzzq:7,get_builtin_curv:3,dnli0rvuvxiwt:5,load_pubr:4,mutt:7,siong:[0,2,4,5,6,7],chosen:0,request_bodi:3,therefor:6,"217mrhyx2nswgrpkqndu3gespovml3jeqiaxuponbwq7rj42":5,crash:3,ktgtcixjl2nmw7j:5,dh1024:2,python:[0,1,2,3,5,6,7],handi:5,auth:3,dat:[2,7],"8czydsolmyibujccabycaqewydbbmqswcqydvqqgewjtrzerma8ga1uechmittjd":7,dav:2,facilit:5,instead:[2,7],"0x1ffa410":3,spoofer:7,miie8ayjkozihvcnaqccoiie4tccbn0caqexczajbgurdgmcgguamcigcsqgsib3:7,wrongcertif:6,anyth:0,capath:6,mode:[3,2,6,7],organizationunitnam:3,postconnectioncheck:6,get_x509_verify_error:3,x509_store_context:3,vhgdittnelgthbaezu5rhdswgdelvbp:7,portal0:2,"7ay4jsdhyibcmgsq":5,jbt3ltgf743utyaas7hnguouobhoyt:5,usernam:3,our:7,patch:[5,2],b75:5,variabl:6,matt:0,req:[3,5,7],xc9dtimuutxtxlgytb0ujkbnsoaenolm:7,ret:[5,6],as_pem:3,suitabl:0,binstr:6,get_context:6,"2dnyol50zu0sdzst1":5,shut:6,sendmail:7,manipul:[3,6],save_key_bio:3,releas:3,as_hash:3,get_modulu:3,indent:3,accept_ssl:6,c6fi3n03rgfmkectijc:5,keep:5,dhpfile:6,length:[3,2,6],timeo:6,ltd:[5,7],datareceiv:6,organiz:[5,7],softwar:7,isbn:0,pk7_smime:7,"_timeout_":6,smartcard:3,date:[0,3,2],"1ezn9zmlryqzbtxnnrmp3dhj":7,rand_statu:3,utc:3,publickei:[1,3,4],strict:3,ssl_ctx_ptr:6,system:[7,5,6,2],messag:[0,3,7],asn1_integ:3,attach:7,ssl_ctx_set_session_cache_mod:6,termin:6,"0x10001":[5,7],"final":[3,7],xlcqyvk1tzhd:7,tws5k:5,"__del__":6,"4ju6":7,rsa:[0,1,2,3,4,5,6,7],load_pkcs7_der:3,nqaodq3aobzpafp9l:5,structur:[3,6],charact:3,unset_ciph:3,headervalu:3,unencrypt:[5,7],iwq3n6j1suzs3uw6abq8bivynoucmkjaqqjbanqxfalu4b:5,httpshandler:3,quarante:0,authcookiejar:3,set_str:3,have:[5,6,7],tabl:1,close:[4,3,2,6,7],border:2,automat:[0,6],widgit:[5,7],messeng:7,arm:7,mix:3,builtin:3,connectionlost:6,which:[0,3,5,6,7],sign_upd:3,singl:3,newca:5,repudi:7,actualhost:6,who:7,flndpcnkrtvqdx3rt6x6vbttcyom:7,aogabaku8w3w1qu15hle1bjsl7gmreoreqeblobmmazz4by0l6sxzxjpjwxo86f:5,ljecgc3rqu1uwisbkmquis1s46ebbm5np75izpnujokj2hv:7,cipher:[0,1,3,6,7],deploi:5,aetir4v7sgxmepx7thq1pv:7,why:7,afresh:5,url:[3,2],request:[3,5,6,7],quvxinaxygqco9lzdw6hudk8:7,unmix3:3,get_ext:3,constrain:5,skunk:2,itafbgkqhkig9w0bcqewennlbmrlckblegftcgxllmrvbyibadambgnvhrmebtad:7,z6ebh:5,text:[3,7,5,2],get_error_lib:3,verbos:3,bring:7,empir:3,zpqqqzkq:5,miibvwyjkozihvcnaqcdoiibsdccauqcaqaxggeamih9ageamgywytelmakga1u:7,sjai4kpfvt00xfnvgluywyeks9sygto7hihnqkcf44f5lyv6ntfwmfqb11daty9v:7,setup_ssl:6,locat:[2,6],set_issuer_nam:3,should:[3,5,6],jan:2,suppos:7,ebdz:7,"2iwrpascbeid8saraql3ddcli":5,local:[7,5,2],trustpacket:4,meant:5,load_private_kei:3,autom:7,g3bgsmvlxkefztfjkxo6xnjcbnf5i:7,dsa_pub:3,cstringio:3,write_d:3,ukidkhst60v2q9kegpzgfpoztskm:7,organ:[5,7],sha:3,integr:7,contain:[3,2,6,7],challeng:5,hpysvh:7,ftplib:3,ssl_ctx:3,x509_name_entri:3,packet:[1,3,4],malfunct:6,sign_dsa:3,x509_store_set_verify_cb:3,listenssl:6,multipart:7,h99suto:5,mrywfaydvqqdew1tl01jtuugu2vuzgvymsewhwyjkozihvcnaqkbfhjzzw5kzxja:7,statu:[3,6],isgoodcooki:3,correctli:7,boundari:7,below:2,randpool:[2,7],written:[0,3,5],exiy8geir:7,m2cryptoerror:3,limit:3,neither:6,reactor:6,email:[3,5,7],verisign:7,kei:[0,2,3,5,6,7],sign_fin:3,get_session_cache_mod:6,group:7,cvzrxakeaxno80arbgxpumr11ghg:5,salt_len:3,problem:3,addit:[0,3,6],d2i_ssl_sess:6,g7ppoo:5,admin:5,sipba4ik5xcrlt9e0s2qjgrvo9gyfaqz:7,standard_templ:2,etc:6,pgpmime:7,instanc:[0,3,6,7],gen_kei:3,freeli:7,mh2pz4lverxa:7,nbbba2yl0n5gs1tyiy9z:5,comment:5,ssl_get_error:6,"8caweaaaaama0gcsqgsib3dqebbauaa4gb":5,walk:5,respect:[3,6],bio_push:3,quit:[7,5,2],compos:2,out_bio:3,treat:6,pcgiserv:2,"2cjcbfzokmijci03kbtqxofiqglstwxgzknf":5,u_pkt:4,set_post_connection_check_callback:6,z6uxrm:7,setsockopt:6,ptxt:4,save_pem:3,hyswpz1xvlprmv4:5,aaiavb8w:7,togeth:6,openpgp:7,present:[2,6],connect_ssl:6,plain:7,permit:0,noncrit:3,defin:6,isgoodcookiestr:3,"0ipy80":7,smime_load_pkcs7:[3,7],session_data_manag:2,set_ssl_close_flag:6,bind_and_activ:6,almost:3,demo:[0,7,5,2],site:5,set_session_timeout:6,forkingmixin:6,load_public_kei:3,"_alwayssucceedspostconnectioncheck":6,save_fil:[3,7],welcom:1,began:5,x509_ext:3,handl:7,keygen_callback:3,set_verifi:[0,6],m2_dsa_fre:3,http:[0,3,2,7],context:[0,1,3,6],pystack:3,effect:7,ssl_context:[3,6],tlfgl4hdk2gyzxafuqzwiurz:7,miibntccaqycaqawxtelmakga1uebhmcu0cxetapbgnvbaotce0yq3j5chrvmriw:5,m2crypto:[0,1,2,3,4,5,6,7],asn1str:3,countri:[5,7],y9mh7efw:7,off:3,com:[0,3,7,5,2],well:[3,2,6,7],p12:7,exampl:[0,2,3,5,6,7],command:[0,5],choos:[5,7],usual:[0,3],less:3,bhdelbr5jbpjcj5aid76mfr8:7,fingerprint:3,asn1_tim:3,obtain:[3,7],tcp:[0,6],a4mgiy2kwwfie73qiyv7yyg8flrvr1iib:5,load_dynamic_engin:3,outform:7,smime_error:[3,7],makefil:[3,6],discuss:5,"_top":2,add:[3,2,6],valid:[0,3,4,5,6,7],crack:7,bool:6,logger:2,match:[3,5,7],gmt:[7,5,2],threadingmixin:6,xmlrpc:2,wyhfg8g3biehurpj2v:7,howto:[0,1,7,5,2],imec:3,realiz:6,set_bio:6,know:7,password:[3,5,7],rsaerror:3,verify_asn1:3,insert:3,x509_extens:3,resid:6,like:[3,5,7],success:[3,6],set_shutdown:6,nihuwgujn:5,ieucourgcxpyd1j65vt7ob3ziypu2f2nluicynqpg1sd:7,necessari:3,vuzalydffdfutiqqzys4z:7,page:[1,2,6],backlog:6,zhttp_handler:2,captur:3,linux:0,"export":[6,7],flush:3,proper:6,home:[2,7],transport:3,tmp:7,lead:[3,6],quiet_genparam_callback:3,leak:3,avoid:2,octet:[3,6],overlap:7,leav:[5,7],new_stack_from_d:3,nkasxekr8auhjsbvumrqrl6r0nnsfpzdr1w7pv:7,to_cert:7,httpslib:[0,1,3],standard_html_foot:2,usag:7,isexpir:3,host:[0,3,6],although:0,offset:3,"0x202cf50":6,expiri:3,err_get_error:3,actual:[0,3,6,7],socket:[0,3,6],certchainfil:6,discard:5,vtajp:5,disabl:6,w4d1nnwu8agcpyshsexhc:5,own:[1,2,3,5,6,7],auth_tl:3,ull4d2cldx9ovynykwdezb5dyv0r:7,cnlwdg8xfjaubgnvbamtdvmvtulnrsbtzw5kzxixitafbgkqhkig9w0bcqewennl:7,automag:[3,7],x509_ptr:6,sid_ctx:6,qin7ujpkou61cn7h8dvhr8yw9:7,transfer:[3,7],cqzkt9:5,certmast:5,"function":[0,3,4,2,6,7],set_crit:3,errnum:6,check_param:3,"_pyfre":[3,6],bodi:[4,2],new_extens:3,gain:0,spuriou:4,naccept:2,buf:7,compute_dh_kei:3,count:[4,3,2],ia5str:5,made:0,whether:[3,7],wish:[7,5,2],writeabl:3,displai:[0,7],record:0,gpmpndsyvvceufpluwydim0vkwhgc2:7,data_bio:3,ensur:6,signer:7,otherwis:3,server_address:[0,6],engine_ctrl_cmd_str:3,pin:3,"int":[3,6],dure:[0,3,6],twist:[0,6],ephemer:6,implement:[0,3,7],unset_x509_stor:3,eric:0,cxo23r9wwrnzem:7,probabl:[0,7],e9kybgki7vpojwbz27:5,from_addr:7,xxxerror:4,book:0,pravir:0,load_request:3,set_default:3,out:[3,7,5,6,2],writesequ:6,hu3qdmtcwjd:5,"class":[0,4,3,6,7],counterpan:7,verify_rsassa_pss:3,zhttp_server:2,xmlrpclib:3,indirectli:3,portion:[0,3],sntelhcawulwtifz:7,remove_sess:6},objtypes:{"0":"py:module","1":"py:method","2":"py:function","3":"py:class","4":"py:attribute","5":"py:exception"},titles:["HOWTO: Programming SSL in Python with M2Crypto","Welcome to M2Crypto&#8217;s documentation!","1.&nbsp;&nbsp;&nbsp;ZServerSSL-HOWTO","M2Crypto Package","PGP Package","HOWTO: Creating your own CA with OpenSSL","SSL Package","HOWTO: Programming S/MIME in Python with M2Crypto"],objnames:{"0":["py","module","Python module"],"1":["py","method","Python method"],"2":["py","function","Python function"],"3":["py","class","Python class"],"4":["py","attribute","Python attribute"],"5":["py","exception","Python exception"]},filenames:["howto.ssl","index","ZServerSSL-HOWTO","M2Crypto","M2Crypto.PGP","howto.ca","M2Crypto.SSL","howto.smime"]}) \ No newline at end of file
+Search.setIndex({docnames:["M2Crypto","M2Crypto.SSL","ZServerSSL-HOWTO","howto.ca","howto.smime","howto.ssl","index"],envversion:52,filenames:["M2Crypto.rst","M2Crypto.SSL.rst","ZServerSSL-HOWTO.rst","howto.ca.rst","howto.smime.rst","howto.ssl.rst","index.rst"],objects:{"M2Crypto.ASN1":{ASN1_Integer:[0,1,1,""],ASN1_Object:[0,1,1,""],ASN1_String:[0,1,1,""],ASN1_TIME:[0,1,1,""],ASN1_UTCTIME:[0,3,1,""],LocalTimezone:[0,1,1,""]},"M2Crypto.ASN1.ASN1_Integer":{m2_asn1_integer_free:[0,2,1,""]},"M2Crypto.ASN1.ASN1_Object":{m2_asn1_object_free:[0,2,1,""]},"M2Crypto.ASN1.ASN1_String":{as_text:[0,2,1,""],m2_asn1_string_free:[0,2,1,""]},"M2Crypto.ASN1.ASN1_TIME":{get_datetime:[0,2,1,""],m2_asn1_time_free:[0,2,1,""],set_datetime:[0,2,1,""],set_string:[0,2,1,""],set_time:[0,2,1,""]},"M2Crypto.ASN1.LocalTimezone":{dst:[0,2,1,""],tzname:[0,2,1,""],utcoffset:[0,2,1,""]},"M2Crypto.AuthCookie":{AuthCookie:[0,1,1,""],AuthCookieJar:[0,1,1,""],mix:[0,4,1,""],unmix3:[0,4,1,""],unmix:[0,4,1,""]},"M2Crypto.AuthCookie.AuthCookie":{data:[0,2,1,""],expiry:[0,2,1,""],headerValue:[0,2,1,""],isExpired:[0,2,1,""],mac:[0,2,1,""],name:[0,2,1,""],output:[0,2,1,""],value:[0,2,1,""]},"M2Crypto.AuthCookie.AuthCookieJar":{isGoodCookie:[0,2,1,""],isGoodCookieString:[0,2,1,""],makeCookie:[0,2,1,""]},"M2Crypto.BIO":{BIO:[0,1,1,""],BIOError:[0,5,1,""],CipherStream:[0,1,1,""],File:[0,1,1,""],IOBuffer:[0,1,1,""],MemoryBuffer:[0,1,1,""],SSLBio:[0,1,1,""],openfile:[0,4,1,""]},"M2Crypto.BIO.BIO":{bio_ptr:[0,2,1,""],close:[0,2,1,""],fileno:[0,2,1,""],flush:[0,2,1,""],m2_bio_free:[0,2,1,""],read:[0,2,1,""],readable:[0,2,1,""],readline:[0,2,1,""],readlines:[0,2,1,""],reset:[0,2,1,""],seek:[0,2,1,""],should_read:[0,2,1,""],should_retry:[0,2,1,""],should_write:[0,2,1,""],tell:[0,2,1,""],write:[0,2,1,""],write_close:[0,2,1,""],writeable:[0,2,1,""]},"M2Crypto.BIO.CipherStream":{SALT_LEN:[0,3,1,""],close:[0,2,1,""],m2_bio_free:[0,2,1,""],m2_bio_pop:[0,2,1,""],set_cipher:[0,2,1,""],write_close:[0,2,1,""]},"M2Crypto.BIO.File":{close:[0,2,1,""],flush:[0,2,1,""],reset:[0,2,1,""]},"M2Crypto.BIO.IOBuffer":{close:[0,2,1,""],m2_bio_free:[0,2,1,""],m2_bio_pop:[0,2,1,""]},"M2Crypto.BIO.MemoryBuffer":{close:[0,2,1,""],getvalue:[0,2,1,""],read:[0,2,1,""],read_all:[0,2,1,""],write_close:[0,2,1,""]},"M2Crypto.BIO.SSLBio":{do_handshake:[0,2,1,""],set_ssl:[0,2,1,""]},"M2Crypto.BN":{rand:[0,4,1,""],rand_range:[0,4,1,""],randfname:[0,4,1,""]},"M2Crypto.DH":{DH:[0,1,1,""],DHError:[0,5,1,""],gen_params:[0,4,1,""],load_params:[0,4,1,""],load_params_bio:[0,4,1,""],set_params:[0,4,1,""]},"M2Crypto.DH.DH":{check_params:[0,2,1,""],compute_key:[0,2,1,""],gen_key:[0,2,1,""],m2_dh_free:[0,2,1,""],print_params:[0,2,1,""]},"M2Crypto.DSA":{DSA:[0,1,1,""],DSAError:[0,5,1,""],DSA_pub:[0,1,1,""],gen_params:[0,4,1,""],load_key:[0,4,1,""],load_key_bio:[0,4,1,""],load_params:[0,4,1,""],load_params_bio:[0,4,1,""],load_pub_key:[0,4,1,""],load_pub_key_bio:[0,4,1,""],pub_key_from_params:[0,4,1,""],set_params:[0,4,1,""]},"M2Crypto.DSA.DSA":{check_key:[0,2,1,""],gen_key:[0,2,1,""],m2_dsa_free:[0,2,1,""],save_key:[0,2,1,""],save_key_bio:[0,2,1,""],save_params:[0,2,1,""],save_params_bio:[0,2,1,""],save_pub_key:[0,2,1,""],save_pub_key_bio:[0,2,1,""],set_params:[0,2,1,""],sign:[0,2,1,""],sign_asn1:[0,2,1,""],verify:[0,2,1,""],verify_asn1:[0,2,1,""]},"M2Crypto.DSA.DSA_pub":{check_key:[0,2,1,""],save_key:[0,2,1,""],save_key_bio:[0,2,1,""],sign:[0,2,1,""],sign_asn1:[0,2,1,""]},"M2Crypto.EC":{EC:[0,1,1,""],ECError:[0,5,1,""],EC_pub:[0,1,1,""],ec_error:[0,4,1,""],gen_params:[0,4,1,""],get_builtin_curves:[0,4,1,""],load_key:[0,4,1,""],load_key_bio:[0,4,1,""],load_key_string:[0,4,1,""],load_key_string_pubkey:[0,4,1,""],load_pub_key:[0,4,1,""],load_pub_key_bio:[0,4,1,""],pub_key_from_der:[0,4,1,""],pub_key_from_params:[0,4,1,""]},"M2Crypto.EC.EC":{as_pem:[0,2,1,""],check_key:[0,2,1,""],compute_dh_key:[0,2,1,""],gen_key:[0,2,1,""],m2_ec_key_free:[0,2,1,""],pub:[0,2,1,""],save_key:[0,2,1,""],save_key_bio:[0,2,1,""],save_pub_key:[0,2,1,""],save_pub_key_bio:[0,2,1,""],sign_dsa:[0,2,1,""],sign_dsa_asn1:[0,2,1,""],verify_dsa:[0,2,1,""],verify_dsa_asn1:[0,2,1,""]},"M2Crypto.EC.EC_pub":{get_der:[0,2,1,""],get_key:[0,2,1,""],save_key:[0,2,1,""],save_key_bio:[0,2,1,""]},"M2Crypto.EVP":{Cipher:[0,1,1,""],EVPError:[0,5,1,""],HMAC:[0,1,1,""],MessageDigest:[0,1,1,""],PKey:[0,1,1,""],hmac:[0,4,1,""],load_key:[0,4,1,""],load_key_bio:[0,4,1,""],load_key_bio_pubkey:[0,4,1,""],load_key_string:[0,4,1,""],load_key_string_pubkey:[0,4,1,""],pbkdf2:[0,4,1,""]},"M2Crypto.EVP.Cipher":{"final":[0,2,1,""],m2_cipher_ctx_free:[0,2,1,""],set_padding:[0,2,1,""],update:[0,2,1,""]},"M2Crypto.EVP.HMAC":{"final":[0,2,1,""],digest:[0,2,1,""],m2_hmac_ctx_free:[0,2,1,""],reset:[0,2,1,""],update:[0,2,1,""]},"M2Crypto.EVP.MessageDigest":{"final":[0,2,1,""],digest:[0,2,1,""],m2_md_ctx_free:[0,2,1,""],update:[0,2,1,""]},"M2Crypto.EVP.PKey":{"final":[0,2,1,""],as_der:[0,2,1,""],as_pem:[0,2,1,""],assign_rsa:[0,2,1,""],get_modulus:[0,2,1,""],get_rsa:[0,2,1,""],m2_md_ctx_free:[0,2,1,""],m2_pkey_free:[0,2,1,""],reset_context:[0,2,1,""],save_key:[0,2,1,""],save_key_bio:[0,2,1,""],sign_final:[0,2,1,""],sign_init:[0,2,1,""],sign_update:[0,2,1,""],size:[0,2,1,""],update:[0,2,1,""],verify_final:[0,2,1,""],verify_init:[0,2,1,""],verify_update:[0,2,1,""]},"M2Crypto.Engine":{Engine:[0,1,1,""],EngineError:[0,5,1,""],cleanup:[0,4,1,""],load_dynamic:[0,4,1,""],load_dynamic_engine:[0,4,1,""],load_openssl:[0,4,1,""]},"M2Crypto.Engine.Engine":{ctrl_cmd_string:[0,2,1,""],finish:[0,2,1,""],get_id:[0,2,1,""],get_name:[0,2,1,""],init:[0,2,1,""],load_certificate:[0,2,1,""],load_private_key:[0,2,1,""],load_public_key:[0,2,1,""],m2_engine_free:[0,2,1,""],set_default:[0,2,1,""]},"M2Crypto.Err":{M2CryptoError:[0,5,1,""],SSLError:[0,5,1,""],get_error:[0,4,1,""],get_error_code:[0,4,1,""],get_error_func:[0,4,1,""],get_error_lib:[0,4,1,""],get_error_message:[0,4,1,""],get_error_reason:[0,4,1,""],get_x509_verify_error:[0,4,1,""],peek_error_code:[0,4,1,""]},"M2Crypto.RC4":{RC4:[0,1,1,""]},"M2Crypto.RC4.RC4":{"final":[0,2,1,""],rc4_free:[0,2,1,""],set_key:[0,2,1,""],update:[0,2,1,""]},"M2Crypto.RSA":{RSA:[0,1,1,""],RSAError:[0,5,1,""],RSA_pub:[0,1,1,""],gen_key:[0,4,1,""],keygen_callback:[0,4,1,""],load_key:[0,4,1,""],load_key_bio:[0,4,1,""],load_key_string:[0,4,1,""],load_pub_key:[0,4,1,""],load_pub_key_bio:[0,4,1,""],new_pub_key:[0,4,1,""],rsa_error:[0,4,1,""]},"M2Crypto.RSA.RSA":{as_pem:[0,2,1,""],check_key:[0,2,1,""],m2_rsa_free:[0,2,1,""],private_decrypt:[0,2,1,""],private_encrypt:[0,2,1,""],pub:[0,2,1,""],public_decrypt:[0,2,1,""],public_encrypt:[0,2,1,""],save_key:[0,2,1,""],save_key_bio:[0,2,1,""],save_key_der:[0,2,1,""],save_key_der_bio:[0,2,1,""],save_pem:[0,2,1,""],save_pub_key:[0,2,1,""],save_pub_key_bio:[0,2,1,""],sign:[0,2,1,""],sign_rsassa_pss:[0,2,1,""],verify:[0,2,1,""],verify_rsassa_pss:[0,2,1,""]},"M2Crypto.RSA.RSA_pub":{check_key:[0,2,1,""],private_decrypt:[0,2,1,""],private_encrypt:[0,2,1,""],save_key:[0,2,1,""],save_key_bio:[0,2,1,""]},"M2Crypto.Rand":{load_file:[0,4,1,""],rand_add:[0,4,1,""],rand_bytes:[0,4,1,""],rand_file_name:[0,4,1,""],rand_pseudo_bytes:[0,4,1,""],rand_seed:[0,4,1,""],rand_status:[0,4,1,""],save_file:[0,4,1,""]},"M2Crypto.SMIME":{Cipher:[0,1,1,""],PKCS7:[0,1,1,""],PKCS7_Error:[0,5,1,""],SMIME:[0,1,1,""],SMIME_Error:[0,5,1,""],load_pkcs7:[0,4,1,""],load_pkcs7_bio:[0,4,1,""],load_pkcs7_bio_der:[0,4,1,""],load_pkcs7_der:[0,4,1,""],smime_load_pkcs7:[0,4,1,""],smime_load_pkcs7_bio:[0,4,1,""],text_crlf:[0,4,1,""],text_crlf_bio:[0,4,1,""]},"M2Crypto.SMIME.PKCS7":{get0_signers:[0,2,1,""],m2_pkcs7_free:[0,2,1,""],type:[0,2,1,""],write:[0,2,1,""],write_der:[0,2,1,""]},"M2Crypto.SMIME.SMIME":{decrypt:[0,2,1,""],encrypt:[0,2,1,""],load_key:[0,2,1,""],load_key_bio:[0,2,1,""],set_cipher:[0,2,1,""],set_x509_stack:[0,2,1,""],set_x509_store:[0,2,1,""],sign:[0,2,1,""],unset_cipher:[0,2,1,""],unset_key:[0,2,1,""],unset_x509_stack:[0,2,1,""],unset_x509_store:[0,2,1,""],verify:[0,2,1,""],write:[0,2,1,""]},"M2Crypto.SSL":{Checker:[1,0,0,"-"],Cipher:[1,0,0,"-"],Connection:[1,0,0,"-"],Context:[1,0,0,"-"],SSLError:[1,5,1,""],SSLServer:[1,0,0,"-"],SSLTimeoutError:[1,5,1,""],Session:[1,0,0,"-"],TwistedProtocolWrapper:[1,0,0,"-"],cb:[1,0,0,"-"],ssl_dispatcher:[1,0,0,"-"],timeout:[1,0,0,"-"]},"M2Crypto.SSL.Checker":{Checker:[1,1,1,""],NoCertificate:[1,5,1,""],SSLVerificationError:[1,5,1,""],WrongCertificate:[1,5,1,""],WrongHost:[1,5,1,""]},"M2Crypto.SSL.Checker.Checker":{numericIpMatch:[1,3,1,""]},"M2Crypto.SSL.Cipher":{Cipher:[1,1,1,""],Cipher_Stack:[1,1,1,""]},"M2Crypto.SSL.Cipher.Cipher":{name:[1,2,1,""],version:[1,2,1,""]},"M2Crypto.SSL.Connection":{Connection:[1,1,1,""]},"M2Crypto.SSL.Connection.Connection":{accept:[1,2,1,""],accept_ssl:[1,2,1,""],bind:[1,2,1,""],clear:[1,2,1,""],clientPostConnectionCheck:[1,3,1,""],close:[1,2,1,""],connect:[1,2,1,""],connect_ssl:[1,2,1,""],fileno:[1,2,1,""],get_cipher:[1,2,1,""],get_cipher_list:[1,2,1,""],get_ciphers:[1,2,1,""],get_context:[1,2,1,""],get_default_session_timeout:[1,2,1,""],get_peer_cert:[1,2,1,""],get_peer_cert_chain:[1,2,1,""],get_session:[1,2,1,""],get_shutdown:[1,2,1,""],get_socket_read_timeout:[1,2,1,""],get_socket_write_timeout:[1,2,1,""],get_state:[1,2,1,""],get_verify_depth:[1,2,1,""],get_verify_mode:[1,2,1,""],get_verify_result:[1,2,1,""],get_version:[1,2,1,""],getpeername:[1,2,1,""],getsockname:[1,2,1,""],getsockopt:[1,2,1,""],listen:[1,2,1,""],m2_bio_free:[1,2,1,""],m2_ssl_free:[1,2,1,""],makefile:[1,2,1,""],pending:[1,2,1,""],read:[1,2,1,""],recv:[1,2,1,""],recv_into:[1,2,1,""],renegotiate:[1,2,1,""],send:[1,2,1,""],sendall:[1,2,1,""],serverPostConnectionCheck:[1,2,1,""],set_accept_state:[1,2,1,""],set_bio:[1,2,1,""],set_cipher_list:[1,2,1,""],set_client_CA_list_from_context:[1,2,1,""],set_client_CA_list_from_file:[1,2,1,""],set_connect_state:[1,2,1,""],set_post_connection_check_callback:[1,2,1,""],set_session:[1,2,1,""],set_session_id_ctx:[1,2,1,""],set_shutdown:[1,2,1,""],set_socket_read_timeout:[1,2,1,""],set_socket_write_timeout:[1,2,1,""],set_ssl_close_flag:[1,2,1,""],set_tlsext_host_name:[1,2,1,""],setblocking:[1,2,1,""],setsockopt:[1,2,1,""],settimeout:[1,2,1,""],setup_addr:[1,2,1,""],setup_ssl:[1,2,1,""],shutdown:[1,2,1,""],ssl_get_error:[1,2,1,""],verify_ok:[1,2,1,""],write:[1,2,1,""]},"M2Crypto.SSL.Context":{Context:[1,1,1,""],ctxmap:[1,4,1,""],map:[1,4,1,""]},"M2Crypto.SSL.Context.Context":{add_session:[1,2,1,""],close:[1,2,1,""],get_allow_unknown_ca:[1,2,1,""],get_cert_store:[1,2,1,""],get_session_cache_mode:[1,2,1,""],get_session_timeout:[1,2,1,""],get_verify_depth:[1,2,1,""],get_verify_mode:[1,2,1,""],load_cert:[1,2,1,""],load_cert_chain:[1,2,1,""],load_client_CA:[1,2,1,""],load_client_ca:[1,2,1,""],load_verify_info:[1,2,1,""],load_verify_locations:[1,2,1,""],m2_ssl_ctx_free:[1,2,1,""],remove_session:[1,2,1,""],set_allow_unknown_ca:[1,2,1,""],set_cipher_list:[1,2,1,""],set_client_CA_list_from_file:[1,2,1,""],set_default_verify_paths:[1,2,1,""],set_info_callback:[1,2,1,""],set_options:[1,2,1,""],set_session_cache_mode:[1,2,1,""],set_session_id_ctx:[1,2,1,""],set_session_timeout:[1,2,1,""],set_tmp_dh:[1,2,1,""],set_tmp_dh_callback:[1,2,1,""],set_tmp_rsa:[1,2,1,""],set_tmp_rsa_callback:[1,2,1,""],set_verify:[1,2,1,""]},"M2Crypto.SSL.SSLServer":{ForkingSSLServer:[1,1,1,""],SSLServer:[1,1,1,""],ThreadingSSLServer:[1,1,1,""]},"M2Crypto.SSL.SSLServer.SSLServer":{handle_error:[1,2,1,""],handle_request:[1,2,1,""]},"M2Crypto.SSL.Session":{Session:[1,1,1,""],load_session:[1,4,1,""]},"M2Crypto.SSL.Session.Session":{as_der:[1,2,1,""],as_text:[1,2,1,""],get_time:[1,2,1,""],get_timeout:[1,2,1,""],m2_ssl_session_free:[1,2,1,""],set_time:[1,2,1,""],set_timeout:[1,2,1,""],write_bio:[1,2,1,""]},"M2Crypto.SSL.TwistedProtocolWrapper":{TLSProtocolWrapper:[1,1,1,""],connectSSL:[1,4,1,""],connectTCP:[1,4,1,""],listenSSL:[1,4,1,""],listenTCP:[1,4,1,""]},"M2Crypto.SSL.TwistedProtocolWrapper.TLSProtocolWrapper":{clear:[1,2,1,""],connectionLost:[1,2,1,""],connectionMade:[1,2,1,""],dataReceived:[1,2,1,""],loseConnection:[1,2,1,""],startTLS:[1,2,1,""],write:[1,2,1,""],writeSequence:[1,2,1,""]},"M2Crypto.SSL.cb":{ssl_info_callback:[1,4,1,""],ssl_verify_callback:[1,4,1,""],ssl_verify_callback_allow_unknown_ca:[1,4,1,""],ssl_verify_callback_stub:[1,4,1,""]},"M2Crypto.SSL.ssl_dispatcher":{ssl_dispatcher:[1,1,1,""]},"M2Crypto.SSL.ssl_dispatcher.ssl_dispatcher":{connect:[1,2,1,""],create_socket:[1,2,1,""],recv:[1,2,1,""],send:[1,2,1,""]},"M2Crypto.SSL.timeout":{struct_size:[1,4,1,""],struct_to_timeout:[1,4,1,""],timeout:[1,1,1,""]},"M2Crypto.SSL.timeout.timeout":{pack:[1,2,1,""]},"M2Crypto.X509":{CRL:[0,1,1,""],Request:[0,1,1,""],X509:[0,1,1,""],X509Error:[0,5,1,""],X509_Extension:[0,1,1,""],X509_Extension_Stack:[0,1,1,""],X509_Name:[0,1,1,""],X509_Name_Entry:[0,1,1,""],X509_Stack:[0,1,1,""],X509_Store:[0,1,1,""],X509_Store_Context:[0,1,1,""],load_cert:[0,4,1,""],load_cert_bio:[0,4,1,""],load_cert_der_string:[0,4,1,""],load_cert_string:[0,4,1,""],load_crl:[0,4,1,""],load_request:[0,4,1,""],load_request_bio:[0,4,1,""],load_request_der_string:[0,4,1,""],load_request_string:[0,4,1,""],new_extension:[0,4,1,""],new_stack_from_der:[0,4,1,""],x509_store_default_cb:[0,4,1,""]},"M2Crypto.X509.CRL":{as_text:[0,2,1,""],m2_x509_crl_free:[0,2,1,""]},"M2Crypto.X509.Request":{add_extensions:[0,2,1,""],as_der:[0,2,1,""],as_pem:[0,2,1,""],as_text:[0,2,1,""],get_pubkey:[0,2,1,""],get_subject:[0,2,1,""],get_version:[0,2,1,""],m2_x509_req_free:[0,2,1,""],save:[0,2,1,""],save_pem:[0,2,1,""],set_pubkey:[0,2,1,""],set_subject:[0,2,1,""],set_subject_name:[0,2,1,""],set_version:[0,2,1,""],sign:[0,2,1,""],verify:[0,2,1,""]},"M2Crypto.X509.X509":{add_ext:[0,2,1,""],as_der:[0,2,1,""],as_pem:[0,2,1,""],as_text:[0,2,1,""],check_ca:[0,2,1,""],check_purpose:[0,2,1,""],get_ext:[0,2,1,""],get_ext_at:[0,2,1,""],get_ext_count:[0,2,1,""],get_fingerprint:[0,2,1,""],get_issuer:[0,2,1,""],get_not_after:[0,2,1,""],get_not_before:[0,2,1,""],get_pubkey:[0,2,1,""],get_serial_number:[0,2,1,""],get_subject:[0,2,1,""],get_version:[0,2,1,""],m2_x509_free:[0,2,1,""],save:[0,2,1,""],save_pem:[0,2,1,""],set_issuer:[0,2,1,""],set_issuer_name:[0,2,1,""],set_not_after:[0,2,1,""],set_not_before:[0,2,1,""],set_pubkey:[0,2,1,""],set_serial_number:[0,2,1,""],set_subject:[0,2,1,""],set_subject_name:[0,2,1,""],set_version:[0,2,1,""],sign:[0,2,1,""],verify:[0,2,1,""]},"M2Crypto.X509.X509_Extension":{get_critical:[0,2,1,""],get_name:[0,2,1,""],get_value:[0,2,1,""],m2_x509_extension_free:[0,2,1,""],set_critical:[0,2,1,""]},"M2Crypto.X509.X509_Extension_Stack":{m2_sk_x509_extension_free:[0,2,1,""],pop:[0,2,1,""],push:[0,2,1,""]},"M2Crypto.X509.X509_Name":{add_entry_by_txt:[0,2,1,""],as_der:[0,2,1,""],as_hash:[0,2,1,""],as_text:[0,2,1,""],entry_count:[0,2,1,""],get_entries_by_nid:[0,2,1,""],m2_x509_name_free:[0,2,1,""],nid:[0,3,1,""]},"M2Crypto.X509.X509_Name_Entry":{create_by_txt:[0,2,1,""],get_data:[0,2,1,""],get_object:[0,2,1,""],m2_x509_name_entry_free:[0,2,1,""],set_data:[0,2,1,""],set_object:[0,2,1,""]},"M2Crypto.X509.X509_Stack":{as_der:[0,2,1,""],m2_sk_x509_free:[0,2,1,""],pop:[0,2,1,""],push:[0,2,1,""]},"M2Crypto.X509.X509_Store":{add_cert:[0,2,1,""],add_x509:[0,2,1,""],load_info:[0,2,1,""],load_locations:[0,2,1,""],m2_x509_store_free:[0,2,1,""],set_verify_cb:[0,2,1,""]},"M2Crypto.X509.X509_Store_Context":{get1_chain:[0,2,1,""],get_current_cert:[0,2,1,""],get_error:[0,2,1,""],get_error_depth:[0,2,1,""],m2_x509_store_ctx_free:[0,2,1,""]},"M2Crypto.ftpslib":{FTP_TLS:[0,1,1,""]},"M2Crypto.ftpslib.FTP_TLS":{auth_ssl:[0,2,1,""],auth_tls:[0,2,1,""],ntransfercmd:[0,2,1,""],prot_c:[0,2,1,""],prot_p:[0,2,1,""]},"M2Crypto.httpslib":{HTTPSConnection:[0,1,1,""],ProxyHTTPSConnection:[0,1,1,""]},"M2Crypto.httpslib.HTTPSConnection":{close:[0,2,1,""],connect:[0,2,1,""],default_port:[0,3,1,""],get_session:[0,2,1,""],set_session:[0,2,1,""]},"M2Crypto.httpslib.ProxyHTTPSConnection":{connect:[0,2,1,""],endheaders:[0,2,1,""],putheader:[0,2,1,""],putrequest:[0,2,1,""]},"M2Crypto.m2urllib":{open_https:[0,4,1,""]},"M2Crypto.m2urllib2":{HTTPSHandler:[0,1,1,""],build_opener:[0,4,1,""]},"M2Crypto.m2urllib2.HTTPSHandler":{https_open:[0,2,1,""],https_request:[0,2,1,""]},"M2Crypto.m2xmlrpclib":{SSL_Transport:[0,1,1,""]},"M2Crypto.m2xmlrpclib.SSL_Transport":{request:[0,2,1,""],user_agent:[0,3,1,""]},"M2Crypto.threading":{cleanup:[0,4,1,""],init:[0,4,1,""]},"M2Crypto.util":{UtilError:[0,5,1,""],bin_to_hex:[0,4,1,""],genparam_callback:[0,4,1,""],no_passphrase_callback:[0,4,1,""],octx_to_num:[0,4,1,""],passphrase_callback:[0,4,1,""],pkcs5_pad:[0,4,1,""],pkcs7_pad:[0,4,1,""],py3bytes:[0,4,1,""],py3str:[0,4,1,""],quiet_genparam_callback:[0,4,1,""]},M2Crypto:{ASN1:[0,0,0,"-"],AuthCookie:[0,0,0,"-"],BIO:[0,0,0,"-"],BN:[0,0,0,"-"],DH:[0,0,0,"-"],DSA:[0,0,0,"-"],EC:[0,0,0,"-"],EVP:[0,0,0,"-"],Engine:[0,0,0,"-"],Err:[0,0,0,"-"],RC4:[0,0,0,"-"],RSA:[0,0,0,"-"],Rand:[0,0,0,"-"],SMIME:[0,0,0,"-"],SSL:[1,0,0,"-"],X509:[0,0,0,"-"],__init__:[0,0,0,"-"],callback:[0,0,0,"-"],ftpslib:[0,0,0,"-"],httpslib:[0,0,0,"-"],m2:[0,0,0,"-"],m2crypto:[0,0,0,"-"],m2urllib2:[0,0,0,"-"],m2urllib:[0,0,0,"-"],m2xmlrpclib:[0,0,0,"-"],threading:[0,0,0,"-"],util:[0,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","attribute","Python attribute"],"4":["py","function","Python function"],"5":["py","exception","Python exception"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:attribute","4":"py:function","5":"py:exception"},terms:{"059600270x":5,"0ipy80":4,"0jwuq":4,"0qjhp6hut7fso":4,"0x0":[3,4],"0x1":3,"0x10001":[3,4],"0x2":[3,4],"0x822012c":4,"19973a9dbbb601ba":3,"1bc9f3q":4,"1czdztgk7h9cdgx2qjsivymyytcfi3zsuzmjs8":3,"1dr9dy8l0naqh21y5fgss8b1wd":4,"1ezn9zmlryqzbtxnnrmp3dhj":4,"1g9epovswhpqr":4,"1hxxfyo88m":3,"1qk53c":3,"1t8luishhn9899imp2vyg0ub67fqfypymm2cm2":4,"1tcaqbmq":4,"1vsrcid":3,"217mrhyx2nswgrpkqndu3gespovml3jeqiaxuponbwq7rj42":3,"2aglpogdcfdioqblb2dcscohmbbvr":3,"2bconvert":1,"2bdqvfpffx5lsmitkzaobldssjfr6rojxoqrsgia2az":4,"2cjcbfzokmijci03kbtqxofiqglstwxgzknf":3,"2dnyol50zu0sdzst1":3,"2iwrpascbeid8saraql3ddcli":3,"2zz2g7x1hxrwh95a":4,"3c93156fc7b4ebf49fe9c7db7f503087":4,"3dizhtxigepfztiuyutxs3i2gnmx2pee3chtllywd3jneakz0iozpdphif2xhllq":4,"3pjiyfhaxk64iutmpsy393rhmeb4kn":4,"3wf7q915tveqoc74bnu6b8ibbgrmhzdzmvq4szffveaum":3,"41b2874df3d02dd4":3,"4ju6":4,"4mpgg20wd633d4z4dtlddz":3,"4oxll0bi":3,"509v3":2,"56vrpgppgut40hv8xqfbwiz2whwwlkpfahj8b79ztfuzuru6z2rnpvv8inhc":4,"5efdvbet":3,"6l0g37faxur3xm28rchzvhu":3,"76h5jiznpbdsf2fjghwqvvdgyw4owy3mu739lhvnblicn":3,"7ay4jsdhyibcmgsq":3,"7pvwhtszeyhn3oa9dhlmv9uqc4wy5md7j":3,"7zjt2r5cpikgkwofamduxeltx":3,"8caweaaaaama0gcsqgsib3dqebbauaa4gb":3,"8czydsolmyibujccabycaqewydbbmqswcqydvqqgewjtrzerma8ga1uechmittjd":4,"8levy0cllw":3,"8tsi3wo5enkg4qwbnarqc3vgcv":4,"8yhspd0caweaaaobtjcbszadbgnvhq4efgquxoyoll1t4jabwzfrm7ms8nblzuow":4,"974aklcjnk1gzigarz":4,"9gul1bxbckrtedtxenqtem7spzomtswd2lhb8z65grx90cyt":4,"9ij5z6mja7rm7ttbsjup":4,"9rsqkrc9urv9mrbisredgnyecnerak5r1yzpoowninxc":3,"9znlfejkjj67vembxbj":4,"abstract":[0,4],"break":2,"byte":[0,1],"case":[1,4,5],"class":[0,1,4,5],"default":[0,1,2,3,4,5],"export":[1,4],"final":[0,4],"float":0,"function":[0,1,2,4,5],"import":[0,1,2,4],"int":[0,1],"long":[1,5],"new":[0,1,2,3,4],"null":[0,1],"public":[0,3,4],"return":[0,1,4,5],"true":[0,1,4],"while":[0,1,2,4],AND:1,CAs:1,DES:[3,4],DNS:[0,5],Doing:0,For:[0,1,2,3,4],HAS:1,Its:0,NOT:[0,1],Not:[3,4],THE:1,TLS:[0,1,5],That:[3,4],The:[0,1,2,4,5],There:[1,3,4,5],These:[1,2],Use:[0,1,5],Using:[3,4,5],WILL:1,With:2,__del__:1,__init__:2,_alwayssucceedspostconnectioncheck:1,_close_cb:0,_debug:0,_mode_:1,_ptr:0,_pyfre:[0,1],_pyfree_x509:0,_sre:[0,1],_timeout_:1,_top:2,a4mgiy2kwwfie73qiyv7yyg8flrvr1iib:3,aaiavb8w:4,abl:4,about:[0,1,3,4],abov:[0,1,2,4,5],absent:1,absolut:0,abstracthttphandl:0,accept:[1,2,3,4,5],accept_ssl:1,access:[2,4],accord:[0,1],acl_us:2,acquir:0,action:1,actual:[0,1,4,5],actualhost:1,add:[0,1,2],add_cert:0,add_entry_by_txt:0,add_ext:0,add_extens:0,add_sess:1,add_x509:0,added:[0,1],addhead:2,addinfourl:0,adding:1,addit:[0,1,5],addr:1,address:[1,3,4,5],admin:3,administr:4,advanc:3,adversari:0,aes_128_cbc:0,aetir4v7sgxmepx7thq1pv:4,affect:1,afresh:3,after:[0,1,3,4,5],again:[0,3,4],against:0,agent:2,aggtjgplibexlzalhpwlz9laqyrqpvcvjywaovfmmvrav4nafnoz2:4,ago:3,ahau6kwk:4,ahporp5ys55czpi:3,aka:0,akbr4il1nkq8ecsmcr3wpa0i9n0ehi7zvpvahxc0sqapfl8ygdfhq:3,alert:1,alg:0,algo:0,algorigthm:0,algorithm:[0,3,4],alia:0,aliv:1,all:[0,1,3,5],allow:[0,1,3,5],almost:0,along:0,alreadi:1,also:[0,1,2,3,4,5],alt:2,altern:[1,2],although:5,alwai:[0,4],amyxludrk45acua:3,analys:5,ani:[0,1,5],anoth:[1,3],anyon:4,anyth:5,aogabaku8w3w1qu15hle1bjsl7gmreoreqeblobmmazz4by0l6sxzxjpjwxo86f:3,apach:2,api:[0,1],appear:2,append:0,appli:[0,2,3],applic:[0,1,3,4,5],approach:4,appropri:[0,1,5],aqh:4,arg:[0,1],argument:0,argv:0,arm:4,around:2,as_der:[0,1],as_hash:0,as_pem:0,as_text:[0,1],ask:[0,3,4],asn1:6,asn1_integ:0,asn1_object:0,asn1_str:0,asn1_string_print_ex:0,asn1_tim:0,asn1_utctim:0,asn1int:0,asn1obj:0,asn1str:0,assign:[0,1],assign_rsa:0,associ:1,assum:[1,2,4],asyncio:1,asyncor:[1,2],attach:4,attempt:[0,5],attribut:[0,3,4],auth:0,auth_ssl:0,auth_tl:0,authcooki:6,authcookiejar:0,authent:4,author:[0,2,3,4,5],autom:4,automag:[0,4],automat:[1,5],avail:[1,2,4,5],avoid:2,awai:[0,1],awfqq4jcc:4,awihma0gccqgsib3dqmcageoma0gcsqgsib3dqebaquabigaqpu8hfutlcf6ho2t:4,ax96lvs0:3,b4law8g59vtg6dykeetrg0rubx4bggc7pkbfuin423yjjodwchvvgnpozxmqt:3,b4txejzriyc8f3:4,b6gr5s8:4,b6ugcsqgsib3dqehataubggqhkig9w0dbwqirf525ufwszaaggea85rmx6axqmxb:4,b75:3,b877j9wbpbl:3,b9zjffauqtwzdnjgrkkyikhwjdojaac:4,backlog:1,bad:1,base64:4,base:[0,1,2,3,4,5],basi:1,basic:[3,4],bat:2,bdclcn8a:4,becaus:[0,1,4],been:[0,1,4],befor:[0,1,3,4,5],began:3,begin:[3,4,5],behav:1,behaviour:1,being:[0,1,4],below:2,best:5,better:0,between:5,beyond:4,bgbyj1dubkhzsc7dgxzdtuclgnxqnnsg:3,bgcolor:2,bgkqhkig9w0bbwewfayikozihvcnawcecmn:4,bgkqhkig9w0bbwewhayjkozihvcnaqkfmq8xdtaxmdmzmtexnduwmlowiwyjkozi:4,bhdelbr5jbpjcj5aid76mfr8:4,bhmcu0cxetapbgnvbaotce0yq3j5chrvmrkwfwydvqqdexbtl01jtuugumvjaxbp:4,big:0,bin_to_hex:0,binari:[0,1],bind:1,bind_and_activ:1,bindaddress:1,binstr:1,bio:[1,4,5,6],bio_clos:1,bio_f_buff:0,bio_f_ciph:0,bio_f_ssl:0,bio_fre:1,bio_in:0,bio_noclos:1,bio_ptr:0,bio_push:0,bio_s_mem:0,bio_s_pyfd:0,bioerror:0,bit:[0,1,3,4],bitmask:1,bitwis:0,bjq5hnxbouslq0rwbrkoxv64i:4,blank:[3,4],blklen:0,blob:[0,4],block:1,blwegdqhonaiwbk5z1l:4,bmrlckblegftcgxllmrvbqibadajbgurdgmcgguaoigxmbggcsqgsib3dqejazel:4,bmvnwbppufzpiaivalycjt6pyextbbszs7:3,bo2w7ei6iejbazk:3,bodi:2,book:5,bool:1,border:2,both:[0,1,2],bottom:[0,4],bound:[0,1],boundari:4,box:[2,4],br77:3,bring:4,brows:2,browser:2,browser_id_manag:2,buf:[0,4],buf_len:0,buff:1,buffer:[0,1,4,5],buffer_s:1,buffers:1,buflen:1,bufsiz:1,build_open:0,built:1,builtin:0,bundl:[2,3,4],bxwxkuuvt81vbjwdn9jst6:4,c6fi3n03rgfmkectijc:3,cacert:[1,3],cach:1,cadav:2,cafil:1,cakei:3,calcul:0,call:[0,1,3,4,5],callabl:[0,1],callback:[1,6],caller:1,can:[0,1,2,3,4,5],capath:1,captur:0,cat:3,catalog:2,catop:3,cbc:[3,4],ccrt2tfwkbbfleuifl7mb:3,ccvkzzl:3,cenfqfwc:4,cepl:0,cert:[0,1,4,5],certain:[0,1,3],certbio:0,certchainfil:1,certdata2pem:5,certdata:5,certfil:[0,1],certif:[0,1,2,3,5],certifi:[3,4],certmast:3,cgyikozihvcnawcwdgyikozihvcnawicagcama0gccqgsib3dqmcagfamacgbsso:4,chain:[0,1,5],challeng:3,chandra:5,chang:[0,1],channel:[1,2],charact:0,cheap:4,check:[0,1,2,3,5],check_ca:0,check_kei:0,check_param:0,check_purpos:0,checker:[0,5,6],choos:[3,4],chosen:5,cipher:[0,4,5,6],cipher_list:1,cipher_stack:1,cipherstream:0,citi:[3,4],claim:5,clbwev3ryfrlp4x8j9mdte0ykok3t0wqohqrettsifdtjnfp:3,clean:[0,1],cleanup:0,clear:[0,1,3,4],click:[2,4],client:[0,1,4,5],client_addr:0,client_address:1,clientpostconnectioncheck:1,close:[0,1,2,4],close_flag:0,close_pyfil:0,clutter:2,cmd:0,cnf:[3,4],cngeq1qxtyduiguda2nbgcl:4,cnlwdg8xfjaubgnvbamtdvmvtulnrsbtzw5kzxixitafbgkqhkig9w0bcqewennl:4,code:[0,1,3,4],coll:2,collect:[2,5],com:[0,2,3,4,5],combin:1,come:[0,3,5],command:[3,5],comment:3,commerci:4,commit:3,common:[3,4,5],commonli:4,commonnam:[0,1,3,5],commun:[0,1],compani:[3,4],companion:4,compar:5,compat:5,compil:0,complet:[0,1],compos:2,composit:0,comput:0,compute_dh_kei:0,compute_kei:0,concaten:1,configur:[3,4],conn:0,connect:[0,2,4,5,6],connect_ssl:1,connectionlost:1,connectionmad:1,connectssl:1,connecttcp:1,consid:1,consist:[0,4],constant:[0,1],constrain:3,constraint:[3,4],consum:4,contain:[0,1,2,4],content:[0,1,4,6],context:[0,5,6],contextfactori:1,continu:1,control:[0,1,5],control_panel:2,conveni:1,convert:[0,5],cooki:0,cookie_str:0,copi:[1,2,3],copyright:[0,1,2,3,4,5],corner:4,correct:[1,4],correctli:4,correspond:4,could:[0,1,5],count:[0,2],counterpan:4,countri:[3,4],countrynam:3,cours:[3,4],cover:3,coz:4,cqydvqqgewjtrzerma8ga1uechmittjdcnlwdg8xfjaubgnvbamtdvmvtulnrsbt:4,cqzkt9:3,crack:4,crash:0,creat:[0,1,2,4,5,6],create_by_txt:0,create_socket:1,creation:[1,3],credit:2,critic:0,crl:0,cryptograph:[0,4],css:2,cstringio:0,ctrl_cmd_string:0,ctx:[0,1,5],ctxmap:1,current:[0,1,4],curv:0,custom:1,cvzrxakeaxno80arbgxpumr11ghg:3,cw8kzzwh:4,cxo23r9wwrnzem:4,d2i_ssl_sess:1,dai:[3,4],dasmytmpc4ztytv06n07afbjl:3,dat:[2,4],data:[0,1,2,3,4,5],data_bio:0,databas:3,datareceiv:1,date:[0,2,5],datetim:0,dav:2,dcwd:4,ddlzqbacuxwtv5xy8plmx7widaqab:3,dec:2,decid:[1,3],decis:3,decod:[1,3,5],decrypt:[0,5],def:4,default_port:0,defin:1,dek:3,delet:0,demo:[2,3,4,5],democa:3,demonstr:[3,4,5],depend:[0,1,2,4],deploi:3,depth:[0,1,5],der:[0,4],der_str:0,deriv:0,des_ede3_cbc:4,describ:[0,1],descript:0,desktop:2,detail:0,determin:0,dev:2,develop:3,dh1024:2,dherror:0,dhpfile:1,dialog:[2,4],did:[1,3],differ:[1,5],diffi:[0,2],digest:[0,4,5],digit:4,directli:[1,5],directori:[1,2,3,5],dirnam:[3,4],disabl:[0,1],discard:3,discuss:3,dispatch:1,displai:[4,5],dispos:1,disposit:4,distinguish:[1,3,4],distribut:[2,5],ditto:0,dnli0rvuvxiwt:3,do_handshak:0,document:[1,2,3,4,5],doe:[0,1,5],doesn:1,dog:4,dom:[3,4],don:0,done:[1,2],dough:0,down:1,download:[2,4,5],dqehaaavbbnhihnpz24gb2ygb3vyihrpbwvzoiic5zccaumwggjmoamcaqicaqaw:4,dqyjkozihvcnaqeebqawwzelmakga1uebhmcu0cxetapbgnvbaotce0yq3j5chrv:4,dsa:[4,5,6],dsa_pub:0,dsaerror:0,dst:0,due:1,duhrqiml1tyi:3,duqhj2ygkkwdqq9v0xscjkgiyw:3,dure:[0,1,5],dw0boozhj8tc7co7lmyb0ye271b6:3,dyman:0,dynam:0,e9kybgki7vpojwbz27:3,e_n:0,each:[0,1,4],eawm5avuv7hnptt5zr:4,eaydvqqdewlsb2nhbghvc3qxjzalbgkqhkig9w0bcqewggfkbwluqhnlcnzlci5l:3,ebdz:4,ec9eyj:4,ec_error:0,ec_pub:0,ecdh:0,ecdsa:0,ecerror:0,ede3:[3,4],effect:4,egftcgxllmrvbtcbnzanbgkqhkig9w0baqefaaobjqawgykcgyear1nyy1qrll1r:3,either:[0,1],electron:4,els:[0,1,3,4],email:[0,3,4],emailaddress:[0,3],emmarsgyedf5h1afl1smkomskbqxe1d2jg:4,empir:0,emploi:5,enabl:[1,4],encod:[0,1,2,4],encrypt:[0,1,3],end:[0,1,3],endhead:0,endian:0,engin:[1,6],engine_ctrl_cmd_str:0,engine_method_:0,engineerror:0,enhanc:5,enough:0,ensu:4,ensur:[0,1],enter:[0,2,3,4],entri:[0,3],entropi:0,entry_count:0,environ:[0,1],eopzyno4mi:4,eoq9wfscnii4:3,eovbgs7ezalvvkdj4hnl:4,eozfol5i20ykiv6j:4,ephemer:1,epoch:0,epollreactor:1,equival:[0,1],eric:5,err:[4,6],err_get_error:0,errdepth:1,errnum:1,error:[0,1,4],error_log:2,establish:[0,1,5],estim:0,etag:2,etc:[0,1],etwitreft1heupnar:4,even:0,event:0,evp:6,evp_ciph:0,evperror:0,ewjtrzerma8ga1uechmittjdcnlwdg8xfjaubgnvbamtdvmvtulnrsbtzw5kzxix:4,exampl:[0,1,2,3,4,5],except:[0,1,5],exchang:[0,5],execut:[3,4],exist:[2,3],exit:0,exiy8geir:4,exp:0,expect:0,expectedhost:1,expir:[0,1,3],expiri:0,explain:4,explan:1,explicitli:1,explor:4,expon:[0,3,4],ext:0,ext_stack:0,extens:[0,1,3,4],extern:1,extra:3,extract:1,facilit:3,factori:[0,1],fail:[0,1],failur:[0,1,4],fakesocket:5,fals:[0,1,3],famili:1,fancyurlopen:2,faq:0,farm:2,fashion:2,fatal:1,fcgiserv:2,fcmspp3auq1:4,featur:5,feed:0,feedback:0,few:[3,4],ffffff:2,fi1wdpphywke97pojizvqesfzopty5hjiyzux4u:3,field:[0,3,4,5],fieldnam:1,fifth:5,file:[0,1,2,3,4,5],filenam:[0,1,3,4],fileno:[0,1],find:1,fingerprint:0,finish:[0,1],first:[0,4,5],fixm:1,flag:[0,1,4,5],flndpcnkrtvqdx3rt6x6vbttcyom:4,flowinfo:1,flush:0,fmt7a120s3gd2jixgh06l:4,follow:[0,2,3,4,5],forgotten:3,forkingmixin:1,forkingsslserv:1,form:[0,1,5],format:[0,1,4,5],format_d:0,format_format_d:0,format_pem:0,found:[0,1],foundat:[1,5],four:1,fourth:5,fqlcrrr5nvupdin:3,freebsd:2,freed:1,freeli:4,freewar:4,friendli:4,frill:0,from:[0,1,2,3,4,5],from_addr:4,from_cert:4,from_kei:4,ftp:[0,2],ftp_tl:0,ftplib:0,ftpserver:2,ftpslib:6,full:[3,4],further:1,fv4sgm3jkr:4,g3bgsmvlxkefztfjkxo6xnjcbnf5i:4,g7ppoo:3,gain:5,gd58p4mpmhu5iknz4yh4nlhnaitevcs85tzuaxze9g:4,gen_kei:0,gen_param:0,gener:[0,1,3,4],genparam_callback:0,get0_sign:0,get1_chain:0,get:[0,1,2],get_allow_unknown_ca:1,get_builtin_curv:0,get_cert_stor:1,get_ciph:1,get_cipher_list:1,get_context:1,get_crit:0,get_current_cert:0,get_data:0,get_datetim:0,get_default_session_timeout:1,get_der:0,get_entries_by_nid:0,get_error:[0,1,4],get_error_cod:0,get_error_depth:0,get_error_func:0,get_error_lib:0,get_error_messag:0,get_error_reason:0,get_ext:0,get_ext_at:0,get_ext_count:0,get_fingerprint:0,get_id:0,get_issu:0,get_kei:0,get_modulu:0,get_nam:0,get_not_aft:0,get_not_befor:0,get_object:0,get_peer_cert:1,get_peer_cert_chain:1,get_pubkei:0,get_rsa:0,get_serial_numb:0,get_sess:[0,1],get_session_cache_mod:1,get_session_timeout:1,get_shutdown:1,get_socket_read_timeout:1,get_socket_write_timeout:1,get_stat:1,get_subject:0,get_tim:1,get_timeout:1,get_valu:0,get_verify_depth:1,get_verify_mod:1,get_verify_result:1,get_vers:[0,1],get_x509_verify_error:0,getpeernam:1,getproto:1,getronicsgov:4,getsocknam:1,getsockopt:1,geturl:0,getvalu:0,ggarfmmj4yuhewkys9jo1h8k4bdxugmauwni5:3,give:3,given:[0,1],givennam:0,gknqqdblotqt06f3oissdjetm2itllyhgzv:3,global:4,gmt:[2,3,4],goe:[0,1],good:0,govern:3,gpmpndsyvvceufpluwydim0vkwhgc2:4,gqnveov:3,gqzcvnzzcmx8uvrjqr8drwdsmpj0vxg1:4,gratefulli:4,grcgzeb9ymfcedxahtdufhjrkpdpsxzzvvgksbncbqu92obyqvnrq8m:4,grew:5,group:4,gucrblvd7n3ofnx5ujmpmcw9zwbu:4,gvyvi:4,gymga1udiwr8mhqaffzsqjs9bei2gcgrutozevjws81kov:4,h7nmicymi2wkz8h:4,h99suto:3,h9diul:3,hack:2,handi:3,handl:4,handle_error:1,handle_request:1,handler:[0,1],handshak:[0,1],hanson:3,happen:5,hard:0,hardwar:0,has:[0,1,4,5],hash:0,have:[1,3,4],hcyiukxujtaqtxboh:4,head:2,header:[0,2],headervalu:0,height:2,heikki:[1,5],hellman:[0,2],henc:3,henceforth:2,here:[0,3,4],hex:0,hihsrgwtnd7lnxuucpx8yv1id0dlmp0hz:4,his:4,hkig9w0baqefaaobjqawgykcgyea5c5tj1chtsoxa1q2q0fyiwmwyhptjpjcvtzm:4,hmac:[0,4,5],hold:0,home:[0,2,4],hook:1,host:[0,1,5],hostnam:1,hot:4,how:[0,1,4,5],howev:1,hpysvh:4,href:2,hrg6sai33usk8xpokjqa:3,htm:4,html:[2,4],http:[0,4,5],http_class:0,httpconnect:[0,5],httplib:[0,5],https_open:0,https_request:0,https_server:2,https_srv:4,httpsconnect:[0,5],httpserver:2,httpshandler:0,httpslib:[5,6],hu3qdmtcwjd:3,hvcnaqkemryefooerud8exiyxfqq8btfukwrsp3imfigcsqgsib3dqejdzffmemw:4,hyswpz1xvlprmv4:3,i2d_ssl_sess:1,ia5str:3,icon:4,ident:[1,2,4,5],identifi:[0,3,4,5],idx:1,ietf:4,ieucourgcxpyd1j65vt7ob3ziypu2f2nluicynqpg1sd:4,ignor:0,iihwd6gtv1uodf7urbxtl3hq9:4,imap:4,imc:4,imec:0,img:2,immedi:1,implement:[0,4,5],imqqiiw:4,includ:[0,3],incorpor:[3,4],increas:0,indent:0,index:[0,6],index_html:2,indic:[1,4],indirectli:0,info:[0,3,4],inform:[0,1,2,3,4,5],inherit:[0,1],init:0,initi:[0,1],initialis:[0,1],inkei:4,input:[0,1,5],insert:0,instal:4,instanc:[0,1,4,5],instanti:[0,4],instead:[2,4],instruct:2,integ:1,integr:4,intend:4,interact:0,interest:1,interfac:[0,1,4,5],intern:[0,1],internet:[1,3,4],interpret:[0,1,5],intuit:3,invalid:0,invok:[0,1,2,4],iobuff:[0,5],ioy0bdijcyn1jimohj:4,ipv4:1,ipv6:1,iqwxllnj:4,ir9fggophatzzq:4,ireactorssl:1,ireactortcp:1,isbn:5,isexpir:0,isgoodcooki:0,isgoodcookiestr:0,issu:[1,2,4],issuer:[0,3,4],itafbgkqhkig9w0bcqewennlbmrlckblegftcgxllmrvbyibadambgnvhrmebtad:4,item:0,iter:0,its:[0,1,2,3,4],itself:[0,4],iwq3n6j1suzs3uw6abq8bivynoucmkjaqqjbanqxfalu4b:3,j6wo9dzltioz3znvr3ljsskib4tip4ugqnjaluw7m3ftz3magxn68hbbjs8tz8tl:4,j9ftv3di:3,jan:2,jbt3ltgf743utyaas7hnguouobhoyt:3,jcyhx9vw4xvja7:4,jddsk:4,john:5,join:4,ju4:3,jun:2,just:[1,5],jvy5cif:4,jy5rd:3,jyvbd7acn35p5yx7ktqvqerwdijxycanbcnvmrtmysanw9kv1ujtxc5vx7ylwipk:3,kdfqdmtfzqkymhp1laq1ihbq1rhwsbh5n3ekq:3,kdjqodst7ovu62motgf3arcduppwuztfxolyone5nioo1apvhbrinqwcplkpotqr:3,kebfzs8asq7uc9axw6ti0eapj8evhtwhsbgzqrwekfbxs6hbbhmidc4n0m7oq:4,keep:3,kef21pgguqpf14gkgfwx3sv4bjc1vbrrwq6zlg3nmuyqr5mtjjy9eq:3,kei:[0,1,2,3,5],key_as_byt:0,keybio:0,keyfil:[0,1],keygen_callback:0,keyid:[3,4],keylen:0,keyout:3,keypair:0,kilroi:0,kind:1,kiy8jkpv8dr5po1ikaxjfudbygdenjwybsrspsk3p:3,kkst1mcj:3,know:4,known:5,kozihvcnaqebbqaegyblzlgupfphwhsgtiapvdexn61qisz3oem88xoxkuw0szor:4,kozihvcnaqebbqaegycbaxz:4,ktgtcixjl2nmw7j:3,kv95ymtgbisuwkj93grbvqoj:4,kwarg:0,kxtbbmqswcqydvqqg:4,l5trm4x6zjxwuxxmijcehmmd8tc8ybwwo4ao19b3ebffetvsugxsga:3,l6kn27mwzhe331vjttjsgl4:3,lamy57gkw4ondmrtqvq2ojqlvosbllpxzh:4,last:[1,3,4,5],later:[0,1],latter:1,lbow6ssdir6:4,lead:[0,1],leak:0,least:1,leav:[3,4],left:[3,4],legal:0,len:0,length:[0,1,2],less:0,let:[3,4,5],letter:[1,3,4],level:[1,2],lg4q5yezr1ejaw:4,librari:[1,4],licenc:0,licens:0,lifetim:1,like:[0,3,4],limit:0,line:[0,4,5],link:[2,5],linux:5,list:[0,1,2],listen:1,listenssl:1,listentcp:1,literatur:0,littl:[2,5],ljecgc3rqu1uwisbkmquis1s46ebbm5np75izpnujokj2hv:4,lkmac1dwb3dqgjt5xk4wjesinfdxecnegacyteagyztpiapu:3,lnzqowadmol:4,load:[0,1,2,4,5],load_cert:[0,1,4],load_cert_bio:0,load_cert_chain:1,load_cert_der_str:0,load_cert_str:0,load_certif:0,load_client_ca:1,load_crl:0,load_dynam:0,load_dynamic_engin:0,load_fil:[0,4],load_info:[0,4],load_kei:[0,4],load_key_bio:0,load_key_bio_pubkei:0,load_key_str:0,load_key_string_pubkei:0,load_loc:0,load_openssl:0,load_param:0,load_params_bio:0,load_pkcs7:0,load_pkcs7_bio:0,load_pkcs7_bio_d:0,load_pkcs7_der:0,load_private_kei:0,load_pub_kei:0,load_pub_key_bio:0,load_public_kei:0,load_request:0,load_request_bio:0,load_request_der_str:0,load_request_str:0,load_sess:1,load_verify_info:1,load_verify_loc:[1,5],loc:0,local:[2,3,4],localhost:[2,3,4],localitynam:0,localtimezon:0,locat:[1,2],lock:4,logger:2,logic:1,longer:0,look:[3,4],loseconnect:1,lower:0,ltd:[3,4],lwpbxzf2k3fuudnkrlfbakeampxoybuifr2s5bma:3,ly4tpl5:3,m1awhen3vir2zlaw:3,m1je:3,m2_asn1_integer_fre:0,m2_asn1_object_fre:0,m2_asn1_string_fre:0,m2_asn1_time_fre:0,m2_bio_fre:[0,1],m2_bio_pop:0,m2_cipher_ctx_fre:0,m2_dh_free:0,m2_dsa_fre:0,m2_ec_key_fre:0,m2_engine_fre:0,m2_hmac_ctx_fre:0,m2_md_ctx_free:0,m2_pkcs7_free:0,m2_pkey_fre:0,m2_rsa_fre:0,m2_sk_x509_extension_fre:0,m2_sk_x509_free:0,m2_ssl_ctx_free:1,m2_ssl_free:1,m2_ssl_session_fre:1,m2_x509_crl_free:0,m2_x509_extension_fre:0,m2_x509_free:0,m2_x509_name_entry_fre:0,m2_x509_name_fre:0,m2_x509_req_fre:0,m2_x509_store_ctx_fre:0,m2_x509_store_fre:0,m2crypto:[1,3],m2crypto_xmlrpc:0,m2cryptoerror:0,m2urllib2:6,m2urllib:[2,6],m2xmlrpclib:[2,6],ma0gcsqgsib3dqebbauaa4gbaho3drchr86fstvavfixdsswwqktcehuhrdc:4,mac:0,made:5,mai:[0,2,3,4,5],mail:4,maintain:1,make:[0,1,3,4,5],makebuf:4,makecooki:0,makefil:[0,1],malfunct:1,man:1,manag:2,mani:[0,2,4],manipul:[0,1],manpag:[0,1],manual:[0,5],map:[1,4],mar:[3,4],march:4,mark:[0,4],master:3,match:[0,3,4],matej:0,materi:[2,5],matt:5,max_byt:0,maximum:1,mbstring_asc:0,mbstring_utf8:0,md5:0,md5withrsaencrypt:[3,4],mean:0,meant:3,measur:0,medusa:2,memori:[0,4],memorybuff:[0,4],messag:[0,5],messagedigest:0,messier:5,method:[0,1],mg611eovkleoostv:3,mh2pz4lverxa:4,mhf6rqar:4,micalg:4,microsec:1,might:1,miibntccaqycaqawxtelmakga1uebhmcu0cxetapbgnvbaotce0yq3j5chrvmriw:3,miibvwyjkozihvcnaqcdoiibsdccauqcaqaxggeamih9ageamgywytelmakga1u:4,miicxgibaakbgqcvwdhjvcuwxwu4h8wqujguvm:3,miie8ayjkozihvcnaqccoiie4tccbn0caqexczajbgurdgmcgguamcigcsqgsib3:4,miiiwwyjkozihvcnaqcdoiiitdccclacaqaxggeamih9ageamgywytelmakga1u:4,mime:[3,5,6],mimetool:0,minu:0,miss:1,mix:0,mkwcbi1nfvohcv3xdq2ela:4,mode:[0,1,2,4],model:[3,4],modifi:[0,2,4],modul:[4,5,6],modulu:[0,3,4],more:[0,1,3,5],most:[0,1,4,5],mous:0,movement:0,mozilla:[2,4],mpi:0,mpint:0,mrywfaydvqqdew1tl01jtuugu2vuzgvymsewhwyjkozihvcnaqkbfhjzzw5kzxja:4,msb:0,msg:4,msg_bio:4,msu:0,mua:4,much:0,multilin:0,multipart:4,multipurpos:4,multivalu:0,must:[0,1,5],mutheybpq5th7ydrtnizkkxobnqe2kyux9x22a1kh49sojjfg6kpb9mugizbimlv:3,mutt:4,mysteri:0,naccept:2,name:[0,1,3,4,5],navig:4,nbbba2yl0n5gs1tyiy9z:3,nbsp:2,nbyte:1,nconnect:2,necessari:0,necessarili:0,need:[0,1,3,4,5],neg:0,negoti:1,neither:1,nerx9zjgvrwuscqqcu:3,net:3,netmemet:5,netscap:3,network:[4,5],new_extens:0,new_pub_kei:0,new_stack_from_d:0,newca:3,newcert:3,newer:0,newkei:[3,4],newkey2:3,newli:0,newreq:3,next:[0,3,4],ngp:[2,3,4,5],nhost:2,nid:0,nihuwgujn:3,niqfytycdl9i5sk:4,nkasxekr8auhjsbvumrqrl6r0nnsfpzdr1w7pv:4,no_passphrase_callback:0,nocertif:1,node:4,non:[0,1,4],noncrit:0,none:[0,1,4],nonzero:0,noout:[3,4],nor:[1,4],normal:[1,5],note:[0,1,4,5],noth:0,notifi:1,notwithstand:4,now:[3,4],nqaodq3aobzpafp9l:3,nqxlmgj3jwq7x9:4,nss:[4,5],ntransfercmd:0,nueymfjdm0uvntg0icxgnufsfnjkntthpagykgetric3kgjz:3,num:0,number:[0,1,3,4],numer:2,numericipmatch:1,nuser:2,nyndufwi0qm92qlk0ui:3,obio:0,object:[0,1,4,5],obtain:[0,4],occur:[0,1],octet:[0,1],octx_to_num:0,od2m3lp7jbwjqbrtndhimqul2s4yu:4,odd:0,off:0,offset:0,oiqto:4,old:[3,5],onc:[0,1],one:[1,2,3],ones:5,onli:[0,1,3],onto:0,open:[0,1,2,4,5],open_http:0,openfil:0,openpgp:4,openssl:[0,1,2,4,5,6],oper:[0,1,2,4],option:[0,1,3],optnam:1,org:[2,3,4,5],organ:[3,4],organiz:[3,4],organizationnam:[0,3],organizationunitnam:0,origin:0,osafound:5,other:[0,1,3,5],otherwis:0,our:4,out:[0,1,2,3,4],out_bio:0,outform:4,output:[0,4],over:[0,1,5],overlap:4,overload:1,overrid:1,overwrit:2,own:[0,1,2,4,6],p12:4,p7_bio:[0,4],p7file:0,p7m:4,p7s:4,pack:1,packag:6,pad:0,page:[1,2,6],pair:[0,1,2,3,4],param:[0,1],paramet:[0,1,2,4,5],part:4,pass:[0,1,3],passphras:[0,1,3,4],passphrase_callback:[0,1],password:[0,3,4],patch:[2,3],path:0,pathnam:2,pavel:0,pbkdf2:0,pcgiserv:2,pdlrrliknknfmhkiacktlrcu59sca6adeiwuzqmuzp5cs6jrsro3nkfg1bd09d1k:3,peek_error_cod:0,peer:1,peercertdigest:1,peercerthash:1,pem:[0,1,2,3,4,5],pemfil:1,pend:1,pep484:1,per:[0,1,2],perform:[0,5],period:3,perl:3,permit:5,pfi:3,pfl1k5dyxrgtzlb36uljd:4,pgpmime:4,pheng:[0,1,2,3,4,5],phrase:3,pick:4,pin:0,pk7_smime:4,pkc:4,pkcs12:4,pkcs5_pad:0,pkcs7:[0,4],pkcs7_detach:4,pkcs7_error:0,pkcs7_pad:0,pkcs7_text:4,pkcs7_verifi:4,pkei:0,pkg:[3,4],plain:4,pleas:3,plen:0,pltnni25spyrcwfl6erd25u:4,plu:1,point:0,pointer:0,polici:[1,3,4],pool:0,pop:[0,4],popular:4,port:[0,1,2],portal0:2,portal:2,portion:[0,5],possibl:[0,1],post1:[2,3,4],post:0,post_connection_check:1,postconnectioncheck:1,power:2,practic:[0,4,5],pravir:5,predetermin:0,predict:0,prefix:0,premis:4,present:[1,2],press:0,pretend:4,pretti:5,previou:0,previous:1,primari:5,prime:0,princip:0,print:[0,1,2,3,4],print_param:0,printabl:3,privaci:4,privat:[0,1,3,4],private_decrypt:0,private_encrypt:0,privkei:4,prng:[0,2,4],probabl:[4,5],problem:0,proc:3,proce:1,process:[1,3,4],produc:0,product:4,prog:4,program:[3,6],programm:[4,5],project:[4,5],prompt1:0,prompt2:0,prompt:4,propag:0,proper:1,properli:4,propertymap:2,prot_c:0,prot_p:0,protect:[0,1,4],protocol:[0,1,2,4,5],protocolwrapp:1,provid:[0,1,2,4,5],provinc:[3,4],proxi:0,proxyhttpsconnect:0,pseudo:[0,4],pss:0,pty:[3,4],pub:0,pub_kei:0,pub_key_from_d:0,pub_key_from_param:0,pubkei:0,public_decrypt:0,public_encrypt:0,purpos:[0,4],push:[0,4],puthead:0,putrequest:0,py3byt:0,py3str:0,pyfil:0,pystack:0,python3:1,python:[0,1,3,6],pythonwar:0,q1z7g:3,q7s4tn1z:4,qbcrdaoxdj0ulwytauev:4,qin7ujpkou61cn7h8dvhr8yw9:4,qjpbezwdp7gjfzfatqitesymwo3i:4,qlen:1,qppdzt3ykfmg2lzytaam1czvb6rbnrjjp2zrpbwn:3,qtm0ddmm:3,quarante:5,queri:1,quiet_genparam_callback:0,quit:[2,3,4],quvxinaxygqco9lzdw6hudk8:4,qya6adywgbghr9jkhwn5gsdu7bwx:4,rais:[0,1,4,5],rand:[2,4,6],rand_add:0,rand_byt:0,rand_file_nam:0,rand_pseudo_byt:0,rand_rang:0,rand_se:0,rand_statu:0,randfil:0,randfnam:0,random:[0,4],randpool:[2,4],rang:0,rather:1,rc4:6,rc4_free:0,rdn:0,reactor:1,read:[0,1,2,3,4,5],read_al:0,readabl:0,readbio:1,readi:[1,3,4],readlin:0,real:0,realiz:1,reason:[0,1],recal:4,receiv:[1,4],recent:4,recipi:4,recipient_kei:4,recommend:[0,5],record:5,recreat:4,recv:1,recv_into:1,refcount:[0,1],refer:[0,2],regex:0,regular:0,reject:1,relativedistinguishednam:0,releas:0,reli:[0,1],remot:1,remov:1,remove_sess:1,renam:[3,4],render:4,renegoti:1,repli:2,repres:[0,1],represent:0,repudi:4,req:[0,3,4],request:[0,1,3,4],request_bodi:0,requesthandlerclass:1,requir:[0,1,5],rescorla:5,reserv:[0,1],reset:0,reset_context:0,resid:1,resolv:2,respect:[0,1],rest:0,result:[0,1,4],ret:[1,3],retriev:[0,4],reus:1,revoc:0,rfc:[0,4],rgwnkxpj:4,right:[0,1,4],ripemd160:0,rm2htgotm2lmore4geotypi5f1fbi:3,rn9vpy0suy8:3,rnd:0,root:5,routin:[1,4],rsa:[1,2,3,4,5,6],rsa_error:0,rsa_pub:0,rsaencrypt:[3,4],rsaerror:0,rsassa:0,rudimentari:5,run:[0,2,4],rwb:0,rwniyh0aw4xyyhhit:4,s0ovoc041cerazqfm2tl:4,safe:0,sai:4,said:[0,4],salt:0,salt_len:0,salt_length:0,same:[0,1,5],sat:[2,3],save:[0,4],save_fil:[0,4],save_kei:0,save_key_bio:0,save_key_d:0,save_key_der_bio:0,save_param:0,save_params_bio:0,save_pem:0,save_pub_kei:0,save_pub_key_bio:0,saver:4,sc3lsmhugu9xc26ogstjmkquiah:3,sc51hkebgckl1:4,scope:4,scopeid:1,screen:[2,4],script:5,search:6,sec:1,second:[0,1,5],secret:3,section:[3,4],secur:[0,1,3,4],see:[0,1,2,5],seed:[0,2,4],seek:0,seldom:0,select:[1,2,4],self:[0,1,3,4],send:[1,2,5],sendal:1,sender:4,sendmail:4,sendsmim:4,sens:1,sent:[0,1,3,4],sequenc:0,seri:4,serial:[0,3,4],serialnumb:0,serv:2,server:[1,2,3,4,5],server_address:[1,5],serverpostconnectioncheck:1,servic:[1,4],session:[0,6],session_data_manag:2,set:[0,1,3,4,5],set_accept_st:1,set_allow_unknown_ca:1,set_bio:1,set_ciph:[0,4],set_cipher_list:1,set_client_ca_list_from_context:1,set_client_ca_list_from_fil:1,set_connect_st:1,set_crit:0,set_data:0,set_datetim:0,set_default:0,set_default_verify_path:1,set_info_callback:1,set_issu:0,set_issuer_nam:0,set_kei:0,set_mod:1,set_not_aft:0,set_not_befor:0,set_object:0,set_opt:1,set_pad:0,set_param:0,set_post_connection_check_callback:1,set_pubkei:0,set_serial_numb:0,set_sess:[0,1],set_session_cache_mod:1,set_session_id_ctx:1,set_session_timeout:1,set_shutdown:1,set_socket_read_timeout:1,set_socket_write_timeout:1,set_ssl:0,set_ssl_close_flag:1,set_str:0,set_subject:0,set_subject_nam:0,set_tim:[0,1],set_timeout:1,set_tlsext_host_nam:1,set_tmp_dh:1,set_tmp_dh_callback:1,set_tmp_rsa:1,set_tmp_rsa_callback:1,set_verifi:[1,5],set_verify_cb:0,set_vers:0,set_x509_stack:[0,4],set_x509_stor:[0,4],setblock:1,setsockopt:1,settimeout:1,setup_addr:1,setup_ssl:1,sever:[0,1,3],sfl_home:4,sfqo6lc9mtsj7fjydq:4,sha1:[0,1,4],sha224:0,sha256:0,sha:0,shall:[2,4],share:0,should:[0,1,3],should_read:0,should_retri:0,should_writ:0,shown:[2,5],shramov:0,shut:1,shutdown:1,sid_ctx:1,side:[0,1,5],sign:[0,3],sign_asn1:0,sign_dsa:0,sign_dsa_asn1:0,sign_fin:0,sign_init:0,sign_rsassa_pss:0,sign_upd:0,signal:0,signatur:[0,3,4],signer:4,signer_kei:4,signific:[0,1],similar:[1,2,3,4],simpl:[0,1,5],simpli:0,sinc:[0,3,5],singl:0,siong:[0,1,2,3,4,5],sipba4ik5xcrlt9e0s2qjgrvo9gyfaqz:4,site:3,situat:3,size:[0,1],sizehint:0,sjai4kpfvt00xfnvgluywyeks9sygto7hihnqkcf44f5lyv6ntfwmfqb11daty9v:4,skip:4,skip_accept_encod:0,skip_host:0,skunk:2,smartcard:0,smime:6,smime_error:[0,4],smime_load_pkcs7:[0,4],smime_load_pkcs7_bio:[0,4],smtpd:4,smtplib:4,sni:1,sntelhcawulwtifz:4,so_:1,sock:1,socket:[0,1,5],socketserv:1,softwar:4,sol_socket:1,sol_tcp:1,some:[1,3,4],sopath:0,sophist:5,sourc:[0,1,4,5],space:0,specif:[1,3,5],specifi:[0,1],spoofer:4,sport:5,src:2,sre_pattern:[0,1],ssl:[0,2,3,4,6],ssl_:1,ssl_cert_dir:1,ssl_cert_fil:1,ssl_connect:1,ssl_context:[0,1],ssl_ctx:0,ssl_ctx_flush_sess:1,ssl_ctx_ptr:1,ssl_ctx_set_opt:1,ssl_ctx_set_session_cache_mod:1,ssl_ctx_set_timeout:1,ssl_dispatch:[0,6],ssl_get_default_timeout:1,ssl_get_error:1,ssl_info_callback:1,ssl_ptr:1,ssl_received_shutdown:1,ssl_sent_shutdown:1,ssl_sess_cache_:1,ssl_transport:[0,2],ssl_verify_callback:1,ssl_verify_callback_allow_unknown_ca:1,ssl_verify_callback_stub:1,sslbio:0,sslerror:[0,1],sslserver:[0,6],ssltimeouterror:1,sslv3:[1,5],sslverificationerror:1,stack:[0,1],stack_of:1,stamp:4,standard:[0,4],standard_error_messag:2,standard_html_foot:2,standard_html_head:2,standard_templ:2,start:[0,1,2,3,4],startpassthrough:1,starttl:1,state:[0,1,3,4],stateorprovincenam:0,statu:[0,1],stderr:1,stdout:[0,5],step:[3,4,5],steve:3,still:1,stop:2,store:[0,1],str:1,stream:0,strict:0,string:[0,1,2,4],stringio:[4,5],strong:0,struct:1,struct_siz:1,struct_to_timeout:1,structur:[0,1],style:1,subclass:0,subject:[0,3,4],subjectaltnam:[0,5],subjectnam:0,subpackag:6,subsequ:5,substitut:4,succeed:[0,1,2],success:[0,1],successfulli:1,suffici:0,suggest:0,suit:1,suitabl:[0,5],sun:2,suppli:[0,1],support:[0,1,5],suppos:4,sure:0,surnam:0,symbol:1,symmetr:[0,4,5],sync:0,sys:4,system:[1,2,3,4],sztm5jrp2zw:4,t6lqehb32wfyxqbkfxfjsxzsxox3r:4,take:1,target:[0,2,4],tb7k3chfgw5wagwnll8lb:3,tcp:[1,5],tcpserver:1,tell:[0,5],temp_fold:2,temporari:[1,4],termin:1,test:[0,4,5],test_ssl:5,text:[0,2,3,4],text_crlf:0,text_crlf_bio:0,text_nam:0,textual:5,than:[0,1,5],thei:[0,1,4,5],them:[0,4,5],therefor:1,thi:[0,1,2,3,4,5],third:5,those:5,thread:6,threadingmixin:1,threadingsslserv:1,threat:[3,4],through:[0,1,3,4],thu:[0,4],thusli:[2,4],time:[0,1,2,4,5],timeo:1,timeout:[0,6],titl:2,tlfgl4hdk2gyzxafuqzwiurz:4,tls:1,tlsprotocolwrapp:1,tmp:4,tmp_bio:4,to_addr:4,to_cert:4,tob:4,togeth:1,toivonen:[1,5],too:5,tool:3,top:[0,2,4],topic:3,trace:0,traceback:4,traffic:5,transfer:[0,4],transform:4,transport:0,treat:1,tri:[1,5],tripl:4,trust:4,tue:2,tunnel:0,tupl:[0,1],tvtk:4,twice:1,twist:[1,5],twistedprotocolwrapp:[0,6],two:[0,1,5],tws5k:3,txt:5,type:[0,1,2,3,4],typic:[1,4,5],tzinfo:0,tzname:0,tzsznk2qwgvsspos9mhuaepbnjmnbffbrulhrutsglm:4,u4dmyq9uxs421en3v2hkvhvdy8ut2ot29:4,u4j2f34u0xktwcp:4,u7rqbwpc9hr34saprs3ubbculet748kecbx247imbtidctzxcc1o86:4,ubowzitegtyli52:4,uifxaf6s4n2uihvp6tqxthejtpzoc7pc:4,ukidkhst60v2q9kegpzgfpoztskm:4,ull4d2cldx9ovynykwdezb5dyv0r:4,unattend:3,uncertainti:0,under:4,under_bio:0,underli:[0,1,5],understand:4,unencrypt:[3,4],uniqu:0,unit:[3,4],unix:1,unknow:0,unknown:[0,1],unless:0,unlock:0,unmix3:0,unmix:0,unpack:2,unpredict:0,unsaf:0,unset_ciph:0,unset_kei:0,unset_x509_stack:0,unset_x509_stor:0,until:[1,3],untouch:1,untrust:2,updat:[0,3],upper:0,urandom:2,urbfke2mocdxvdzxbmd:4,url:[0,2],urllib2:0,urllib:2,uryvak7vfoldaz6z3nosoi6nonnehpr:4,usag:4,use:[0,1,2,3,4,5],used:[0,1,3,4],useful:1,useless:5,user:[0,4],user_ag:0,usernam:0,uses:[0,4,5],using:[0,1,3,4],usr:[3,4],usual:[0,5],utc:0,utcoffset:0,utifsh4jkkm:4,util:[5,6],utilerror:0,uweuasngtkpjv2jyumd3hwqox2q3cd4zgqvjj6gf3exa5126ckf:3,uwrgu5shra8oncm0cdxej0kpf3cfnjhffb8hwmzi4uegnmfxqnsxogz:4,v_asn1_ia5str:0,valid:[0,1,3,4,5],valu:[0,1,3,4],valueerror:0,variabl:[0,1],variou:[1,5],verbos:0,veri:[0,1],verif:[0,1,4],verifi:[0,1,2,3],verify_asn1:0,verify_dsa:0,verify_dsa_asn1:0,verify_fail_if_no_peer_cert:[1,5],verify_fin:0,verify_init:0,verify_ok:1,verify_p:[1,5],verify_rsassa_pss:0,verify_upd:0,verisign:4,version:[0,1,3,4,5],vhgdittnelgthbaezu5rhdswgdelvbp:4,vi4roin:3,via:[0,1],viega:5,vihhfc1zzp:3,visual:0,vkwwecqqdkeu:3,vsgprqx2:4,vsxc7xx7xo:4,vtajp:3,vuzalydffdfutiqqzys4z:4,w4d1nnwu8agcpyshsexhc:3,w81xodtq2ecjxc8fn2wpa9y5vd1lt7ojksoul1:3,wai:[1,4],wait:1,walk:3,warn:[0,1,2],wbal2p:4,wdd1ar2k4k3gai7kkgobwt0:4,wdigqewjl:3,weak:5,weak_crypto:1,web:[2,4],well:[0,1,2,4],were:[0,1],what:[0,3,4],when:[0,1,3,4,5],whenev:1,where:[0,1,3],wherea:[0,5],whether:[0,4],which:[0,1,3,4,5],who:4,whose:0,why:4,widgit:[3,4],width:2,window:[2,4],wish:[2,3,4],within:[1,3,5],without:0,wjtpvp0yobmju4vmkezi405r7o8oewi:3,wkat:4,wmbgsclvwsfzcccjhavw9nhfmucnrdwxaymvetnuon:4,word:4,work:[0,1,2,3,4,5],world:1,would:[0,1,4],wrap:4,wrappedprotocol:1,wrapper:[0,1,5],write:[0,1,3,4],write_bio:1,write_clos:0,write_d:0,writeabl:0,writebio:1,writesequ:1,written:[0,3,5],wrongcertif:1,wronghost:1,wrylp3:4,wsluvo:3,www:[0,2,4],wyhfg8g3biehurpj2v:4,x509:[3,4,5,6],x509_ext:0,x509_ext_ptr:0,x509_extens:0,x509_extension_stack:0,x509_name:[0,1],x509_name_entri:0,x509_ptr:1,x509_purpose_:0,x509_stack:[0,4],x509_store:[0,4],x509_store_context:0,x509_store_ctx:0,x509_store_default_cb:0,x509_store_set_verify_cb:0,x509error:0,x509v3:[3,4],xc9dtimuutxtxlgytb0ujkbnsoaenolm:4,xekaxcmzegp0b6camwfmuqrbvgxbbncqkc:4,xgffb0okilylmwv2bf6:4,xisnot:4,xlcqyvk1tzhd:4,xlyg6hhzzgbfyyngj2y7ymz1rl1m8snrnmkcyskgtrudenf6wt9:4,xmlrpclib:0,xmtdg:4,y3klvhk09yl6d:4,y9mh7efw:4,year:[3,4],yet:1,yl9qevh1pp2zvswq12p7gjt3t:4,you:[0,1,2,3,4,5],your:[0,2,4,6],ypfxy:3,yqor8jggsuzroyjqhj:4,yrpzcwq3gxahuj:3,yubj33ylmpjgngijlnolfy0hnw7tmwqr:4,ywmxnjz8:4,z04ovaeue4x0swm17hlbm2kvt:3,z2s:2,z6ebh:3,z6uxrm:4,zbq:3,zbxscvldasmckg:3,zero:0,zhttp_handler:2,zhttp_server:2,zhttps_handler:2,zhttps_server:2,zip:2,zope:[2,4],zopebutton:2,zovnycmv1cintpalaw4bwtxnhcdvthavdy34okhemzncg:3,zpecllwhxd4b1auaiaargkl935u:4,zpqqqzkq:3,zserver:2,zserverssl:6,zssl:2,zsyncer:2,ztf6mpxjsixi6l4zyxebs6yhf:4,zw50msqwigyjkozihvcnaqkbfhvyzwnpcgllbnrazxhhbxbszs5kb20caqawdqyj:4,zw5kzxixitafbgkqhkig9w0bcqewennlbmrlckblegftcgxllmrvbtcbnzanbgkq:4,zwxy:4,zxhhbxbszs5kb20whhcnmdewmzmxmte0mdmzwhcnmdiwmzmxmte0mdmzwjbbmqsw:4},titles:["M2Crypto Package","SSL Package","1.&nbsp;&nbsp;&nbsp;ZServerSSL-HOWTO","HOWTO: Creating your own CA with OpenSSL","HOWTO: Programming S/MIME in Python with M2Crypto","HOWTO: Programming SSL in Python with M2Crypto","Welcome to M2Crypto\u2019s documentation!"],titleterms:{The:3,asn1:0,authcooki:0,bio:0,bit:5,callback:0,certif:4,checker:1,cipher:1,code:5,conclus:[2,3],connect:1,content:2,context:1,creat:3,decrypt:4,document:6,dsa:0,encrypt:4,engin:0,err:0,evp:0,ftpslib:0,histori:5,howto:[2,3,4,5,6],http:2,httpslib:0,indic:6,instal:2,interoper:4,introduct:[2,3,4,5],kei:4,m2crypto:[0,2,4,5,6],m2urllib2:0,m2urllib:0,m2xmlrpclib:0,messag:4,messeng:4,microsoft:4,mime:4,modul:[0,1],netscap:4,openssl:3,origin:4,outlook:4,over:2,own:3,packag:[0,1],prepar:2,procedur:3,program:[4,5],python:[2,4,5],rand:0,rc4:0,resourc:4,rsa:0,sampl:5,secur:5,send:4,session:1,sign:4,smime:[0,4],smtp:4,sourc:2,ssl:[1,5],ssl_dispatch:1,ssldump:5,sslserver:1,subpackag:0,tabl:6,test:2,thread:0,timeout:1,twistedprotocolwrapp:1,util:0,verifi:4,via:4,webdav:2,welcom:6,x509:0,xmlrpc:2,your:3,zserverssl:2,zsmime:4}}) \ No newline at end of file