Files
hakril-PythonForWindows/docs/build/html/crypto.html
T
2017-04-13 13:11:35 +02:00

627 lines
42 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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>9. windows.crypto CryptoAPI &#8212; PythonForWindows 0.2 documentation</title>
<link rel="stylesheet" href="_static/classic.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '0.2',
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="next" title="10. IAT hooking" href="iat_hook.html" />
<link rel="prev" title="8. windows.com - Component Object Model" href="com.html" />
</head>
<body role="document">
<div class="related" role="navigation" aria-label="related navigation">
<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="iat_hook.html" title="10. IAT hooking"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="com.html" title="8. windows.com - Component Object Model"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.2 documentation</a> &#187;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="module-windows.crypto">
<span id="windows-crypto-cryptoapi"></span><h1>9. <code class="docutils literal"><span class="pre">windows.crypto</span></code> &#8211; CryptoAPI<a class="headerlink" href="#module-windows.crypto" title="Permalink to this headline"></a></h1>
<p>The <a class="reference internal" href="#module-windows.crypto" title="windows.crypto"><code class="xref py py-mod docutils literal"><span class="pre">windows.crypto</span></code></a> module offers some wrappers arround the <a class="reference external" href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa380252(v=vs.85).aspx">CryptoAPI</a>.</p>
<p>The main goal of this module (for now) is providing simple encryption/decryption methods.</p>
<div class="section" id="encryption">
<h2>9.1. Encryption<a class="headerlink" href="#encryption" title="Permalink to this headline"></a></h2>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">See sample <a class="reference internal" href="sample.html#sample-crypto-encryption"><span class="std std-ref">Encryption demo</span></a></p>
</div>
<div class="section" id="encrypt">
<h3>9.1.1. encrypt<a class="headerlink" href="#encrypt" title="Permalink to this headline"></a></h3>
<dl class="function">
<dt id="windows.crypto.encrypt">
<code class="descclassname">windows.crypto.</code><code class="descname">encrypt</code><span class="sig-paren">(</span><em>cert_or_certlist</em>, <em>msg</em>, <em>algo=szOID_RSA_DES_EDE3_CBC('1.2.840.113549.3.7')</em>, <em>initvector=GenerateInitVector()</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/encrypt_decrypt.html#encrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.encrypt" title="Permalink to this definition"></a></dt>
<dd><p>Encrypt <code class="docutils literal"><span class="pre">msg</span></code> with the certificate(s) in <code class="docutils literal"><span class="pre">cert_or_certlist</span></code> using <code class="docutils literal"><span class="pre">algo</span></code> with the initial
vector <code class="docutils literal"><span class="pre">initvector</span></code>.</p>
<p>If <code class="docutils literal"><span class="pre">geninitvector</span></code> is left as it is, it will generate a random one.</p>
<p>Algorithms supported by <code class="docutils literal"><span class="pre">GenerateInitVector</span></code> are:</p>
<blockquote>
<div><ul class="simple">
<li><code class="docutils literal"><span class="pre">szOID_OIWSEC_desCBC</span></code></li>
<li><code class="docutils literal"><span class="pre">szOID_RSA_DES_EDE3_CBC</span></code></li>
<li><code class="docutils literal"><span class="pre">szOID_NIST_AES128_CBC</span></code></li>
<li><code class="docutils literal"><span class="pre">szOID_NIST_AES192_CBC</span></code></li>
<li><code class="docutils literal"><span class="pre">szOID_NIST_AES256_CBC</span></code></li>
</ul>
</div></blockquote>
<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"><a class="reference external" href="https://docs.python.org/2/library/functions.html#bytearray" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bytearray</span></code></a>: The encrypted message</td>
</tr>
</tbody>
</table>
</dd></dl>
</div>
<div class="section" id="decrypt">
<h3>9.1.2. decrypt<a class="headerlink" href="#decrypt" title="Permalink to this headline"></a></h3>
<dl class="function">
<dt id="windows.crypto.decrypt">
<code class="descclassname">windows.crypto.</code><code class="descname">decrypt</code><span class="sig-paren">(</span><em>cert_store</em>, <em>encrypted</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/encrypt_decrypt.html#decrypt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.decrypt" title="Permalink to this definition"></a></dt>
<dd><p>Try to decrypt the <code class="docutils literal"><span class="pre">encrypted</span></code> msg with any certificate in <code class="docutils literal"><span class="pre">cert_store</span></code>.</p>
<p>If there is no certificate able to decrypt the message <code class="docutils literal"><span class="pre">Kernel32Error(winerror=0x8009200c)</span></code> is raised.</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"><a class="reference external" href="https://docs.python.org/2/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a>: The decrypted message</td>
</tr>
</tbody>
</table>
</dd></dl>
</div>
<div class="section" id="import-pfx">
<h3>9.1.3. import_pfx<a class="headerlink" href="#import-pfx" title="Permalink to this headline"></a></h3>
<dl class="function">
<dt id="windows.crypto.import_pfx">
<code class="descclassname">windows.crypto.</code><code class="descname">import_pfx</code><span class="sig-paren">(</span><em>pfx</em>, <em>password=None</em>, <em>flags=36864L</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#import_pfx"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.import_pfx" title="Permalink to this definition"></a></dt>
<dd><p>Import the file <code class="docutils literal"><span class="pre">pfx</span></code> with the <code class="docutils literal"><span class="pre">password</span></code>.</p>
<p><code class="docutils literal"><span class="pre">default</span> <span class="pre">flags</span> <span class="pre">=</span> <span class="pre">PKCS12_NO_PERSIST_KEY</span> <span class="pre">|</span> <span class="pre">CRYPT_USER_KEYSET</span></code>.</p>
<p><code class="docutils literal"><span class="pre">PKCS12_NO_PERSIST_KEY</span></code> tells <code class="docutils literal"><span class="pre">CryptoAPI</span></code> to NOT save the keys in a on-disk container.</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"><a class="reference internal" href="#windows.crypto.EHCERTSTORE" title="windows.crypto.EHCERTSTORE"><code class="xref py py-class docutils literal"><span class="pre">EHCERTSTORE</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
</div>
</div>
<div class="section" id="certificate">
<h2>9.2. Certificate<a class="headerlink" href="#certificate" title="Permalink to this headline"></a></h2>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">See sample <a class="reference internal" href="sample.html#sample-crypto-certificate"><span class="std std-ref">Certificate demo</span></a></p>
</div>
<div class="section" id="certificatecontext">
<h3>9.2.1. CertificateContext<a class="headerlink" href="#certificatecontext" title="Permalink to this headline"></a></h3>
<dl class="class">
<dt id="windows.crypto.CertificateContext">
<em class="property">class </em><code class="descclassname">windows.crypto.</code><code class="descname">CertificateContext</code><a class="reference internal" href="_modules/windows/crypto/certificate.html#CertificateContext"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.CertificateContext" title="Permalink to this definition"></a></dt>
<dd><p>Represent a Certificate.</p>
<p>note: It is a pointer ctypes structure (<code class="docutils literal"><span class="pre">PCCERT_CONTEXT</span></code>)</p>
<dl class="attribute">
<dt id="windows.crypto.CertificateContext.chains">
<code class="descname">chains</code><a class="headerlink" href="#windows.crypto.CertificateContext.chains" title="Permalink to this definition"></a></dt>
<dd><p>The list of chain context available for this certificate. Each elements of this list is a list of <code class="docutils literal"><span class="pre">CertificateContext</span></code> that should
go from the <code class="docutils literal"><span class="pre">self</span></code> certificate to a trusted 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">Type:</th><td class="field-body">[[<a class="reference internal" href="#windows.crypto.CertificateContext" title="windows.crypto.CertificateContext"><code class="xref py py-class docutils literal"><span class="pre">CertificateContext</span></code></a>]] &#8211; A list of chain (list) of <a class="reference internal" href="#windows.crypto.CertificateContext" title="windows.crypto.CertificateContext"><code class="xref py py-class docutils literal"><span class="pre">CertificateContext</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="attribute">
<dt id="windows.crypto.CertificateContext.contents">
<code class="descname">contents</code><a class="headerlink" href="#windows.crypto.CertificateContext.contents" title="Permalink to this definition"></a></dt>
<dd><p>the object this pointer points to (read-write)</p>
</dd></dl>
<dl class="method">
<dt id="windows.crypto.CertificateContext.duplicate">
<code class="descname">duplicate</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CertificateContext.duplicate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.CertificateContext.duplicate" title="Permalink to this definition"></a></dt>
<dd><p>Duplicate the certificate by incrementing the internal refcount. (see <code class="docutils literal"><span class="pre">CertDuplicateCertificateContext</span></code>)</p>
<p>note: The object returned is <code class="docutils literal"><span class="pre">self</span></code></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"><a class="reference internal" href="#windows.crypto.CertificateContext" title="windows.crypto.CertificateContext"><code class="xref py py-class docutils literal"><span class="pre">CertificateContext</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="attribute">
<dt id="windows.crypto.CertificateContext.encoded">
<code class="descname">encoded</code><a class="headerlink" href="#windows.crypto.CertificateContext.encoded" title="Permalink to this definition"></a></dt>
<dd><p>The encoded 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">Type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2/library/functions.html#bytearray" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bytearray</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="classmethod">
<dt id="windows.crypto.CertificateContext.from_buffer">
<em class="property">classmethod </em><code class="descname">from_buffer</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CertificateContext.from_buffer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.CertificateContext.from_buffer" title="Permalink to this definition"></a></dt>
<dd><p>Create a <a class="reference internal" href="#windows.crypto.CertificateContext" title="windows.crypto.CertificateContext"><code class="xref py py-class docutils literal"><span class="pre">CertificateContext</span></code></a> from the buffer <code class="docutils literal"><span class="pre">data</span></code></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"><a class="reference internal" href="#windows.crypto.CertificateContext" title="windows.crypto.CertificateContext"><code class="xref py py-class docutils literal"><span class="pre">CertificateContext</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="classmethod">
<dt id="windows.crypto.CertificateContext.from_file">
<em class="property">classmethod </em><code class="descname">from_file</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CertificateContext.from_file"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.CertificateContext.from_file" title="Permalink to this definition"></a></dt>
<dd><p>Create a <a class="reference internal" href="#windows.crypto.CertificateContext" title="windows.crypto.CertificateContext"><code class="xref py py-class docutils literal"><span class="pre">CertificateContext</span></code></a> from the file <code class="docutils literal"><span class="pre">filename</span></code></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"><a class="reference internal" href="#windows.crypto.CertificateContext" title="windows.crypto.CertificateContext"><code class="xref py py-class docutils literal"><span class="pre">CertificateContext</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="windows.crypto.CertificateContext.get_name">
<code class="descname">get_name</code><span class="sig-paren">(</span><em>nametype=CERT_NAME_SIMPLE_DISPLAY_TYPE(0x4L)</em>, <em>flags=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CertificateContext.get_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.CertificateContext.get_name" title="Permalink to this definition"></a></dt>
<dd><p>Retrieve the subject or issuer name of the certificate. See <code class="docutils literal"><span class="pre">CertGetNameStringA</span></code></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"><a class="reference external" href="https://docs.python.org/2/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="attribute">
<dt id="windows.crypto.CertificateContext.issuer">
<code class="descname">issuer</code><a class="headerlink" href="#windows.crypto.CertificateContext.issuer" title="Permalink to this definition"></a></dt>
<dd><p>The name of the certificate&#8217;s issuer.</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">Type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="attribute">
<dt id="windows.crypto.CertificateContext.name">
<code class="descname">name</code><a class="headerlink" href="#windows.crypto.CertificateContext.name" title="Permalink to this definition"></a></dt>
<dd><p>The name 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">Type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="attribute">
<dt id="windows.crypto.CertificateContext.raw_serial">
<code class="descname">raw_serial</code><a class="headerlink" href="#windows.crypto.CertificateContext.raw_serial" title="Permalink to this definition"></a></dt>
<dd><p>The raw serial number 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">Type:</th><td class="field-body">[<a class="reference external" href="https://docs.python.org/2/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a>]: A list of int <code class="docutils literal"><span class="pre">0</span> <span class="pre">&lt;=</span> <span class="pre">x</span> <span class="pre">&lt;=</span> <span class="pre">255</span></code></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="attribute">
<dt id="windows.crypto.CertificateContext.serial">
<code class="descname">serial</code><a class="headerlink" href="#windows.crypto.CertificateContext.serial" title="Permalink to this definition"></a></dt>
<dd><p>The string representation of the certificate&#8217;s serial.</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">Type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">str</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="attribute">
<dt id="windows.crypto.CertificateContext.store">
<code class="descname">store</code><a class="headerlink" href="#windows.crypto.CertificateContext.store" title="Permalink to this definition"></a></dt>
<dd><p>The certificate store that contains 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">Type:</th><td class="field-body"><a class="reference internal" href="#windows.crypto.EHCERTSTORE" title="windows.crypto.EHCERTSTORE"><code class="xref py py-class docutils literal"><span class="pre">EHCERTSTORE</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
</dd></dl>
</div>
<div class="section" id="ehcertstore">
<h3>9.2.2. EHCERTSTORE<a class="headerlink" href="#ehcertstore" title="Permalink to this headline"></a></h3>
<dl class="class">
<dt id="windows.crypto.EHCERTSTORE">
<em class="property">class </em><code class="descclassname">windows.crypto.</code><code class="descname">EHCERTSTORE</code><a class="reference internal" href="_modules/windows/crypto/certificate.html#EHCERTSTORE"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.EHCERTSTORE" title="Permalink to this definition"></a></dt>
<dd><p>A certificate store</p>
<dl class="method">
<dt id="windows.crypto.EHCERTSTORE.add_certificate">
<code class="descname">add_certificate</code><span class="sig-paren">(</span><em>certificate</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#EHCERTSTORE.add_certificate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.EHCERTSTORE.add_certificate" title="Permalink to this definition"></a></dt>
<dd><p>Add a certificate to the store</p>
</dd></dl>
<dl class="attribute">
<dt id="windows.crypto.EHCERTSTORE.certs">
<code class="descname">certs</code><a class="headerlink" href="#windows.crypto.EHCERTSTORE.certs" title="Permalink to this definition"></a></dt>
<dd><p>The certificates in the store</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">Type:</th><td class="field-body">[<a class="reference internal" href="#windows.crypto.CertificateContext" title="windows.crypto.CertificateContext"><code class="xref py py-class docutils literal"><span class="pre">CertificateContext</span></code></a>] &#8211; A list of Certificate</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="classmethod">
<dt id="windows.crypto.EHCERTSTORE.from_file">
<em class="property">classmethod </em><code class="descname">from_file</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#EHCERTSTORE.from_file"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.EHCERTSTORE.from_file" title="Permalink to this definition"></a></dt>
<dd><p>Create a new <a class="reference internal" href="#windows.crypto.EHCERTSTORE" title="windows.crypto.EHCERTSTORE"><code class="xref py py-class docutils literal"><span class="pre">EHCERTSTORE</span></code></a> from <code class="docutils literal"><span class="pre">filename</span></code></p>
</dd></dl>
<dl class="classmethod">
<dt id="windows.crypto.EHCERTSTORE.from_system_store">
<em class="property">classmethod </em><code class="descname">from_system_store</code><span class="sig-paren">(</span><em>store_name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#EHCERTSTORE.from_system_store"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.EHCERTSTORE.from_system_store" title="Permalink to this definition"></a></dt>
<dd><p>Create a new <a class="reference internal" href="#windows.crypto.EHCERTSTORE" title="windows.crypto.EHCERTSTORE"><code class="xref py py-class docutils literal"><span class="pre">EHCERTSTORE</span></code></a> from system store``store_name``
(see <a class="reference external" href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa388136(v=vs.85).aspx">https://msdn.microsoft.com/en-us/library/windows/desktop/aa388136(v=vs.85).aspx</a>)</p>
</dd></dl>
<dl class="classmethod">
<dt id="windows.crypto.EHCERTSTORE.new_in_memory">
<em class="property">classmethod </em><code class="descname">new_in_memory</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#EHCERTSTORE.new_in_memory"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.EHCERTSTORE.new_in_memory" title="Permalink to this definition"></a></dt>
<dd><p>Create a new temporary <a class="reference internal" href="#windows.crypto.EHCERTSTORE" title="windows.crypto.EHCERTSTORE"><code class="xref py py-class docutils literal"><span class="pre">EHCERTSTORE</span></code></a> in memory</p>
</dd></dl>
<dl class="attribute">
<dt id="windows.crypto.EHCERTSTORE.value">
<code class="descname">value</code><a class="headerlink" href="#windows.crypto.EHCERTSTORE.value" title="Permalink to this definition"></a></dt>
<dd><p>current value</p>
</dd></dl>
</dd></dl>
</div>
<div class="section" id="cryptobject">
<h3>9.2.3. CryptObject<a class="headerlink" href="#cryptobject" title="Permalink to this headline"></a></h3>
<dl class="class">
<dt id="windows.crypto.CryptObject">
<em class="property">class </em><code class="descclassname">windows.crypto.</code><code class="descname">CryptObject</code><span class="sig-paren">(</span><em>filename</em>, <em>content_type=CERT_QUERY_CONTENT_FLAG_ALL(0x3ffeL)</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CryptObject"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.CryptObject" title="Permalink to this definition"></a></dt>
<dd><p>Extract information from an CryptoAPI object.</p>
<p>Current main use is extracting the signers certificates from a PE file.</p>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">The methods and property of this class will problably change as I haven&#8217;t yet had the time
to try it out in real cases.</p>
</div>
<dl class="attribute">
<dt id="windows.crypto.CryptObject.cert">
<code class="descname">cert</code><a class="headerlink" href="#windows.crypto.CryptObject.cert" title="Permalink to this definition"></a></dt>
<dd><p>Return embded certificate number <code class="docutils literal"><span class="pre">index</span></code>.</p>
<p>note: not all embded certificate are directly used to sign the <a class="reference internal" href="#windows.crypto.CryptObject" title="windows.crypto.CryptObject"><code class="xref py py-class docutils literal"><span class="pre">CryptObject</span></code></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">Returns:</th><td class="field-body"><a class="reference internal" href="#windows.crypto.CertificateContext" title="windows.crypto.CertificateContext"><code class="xref py py-class docutils literal"><span class="pre">CertificateContext</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="windows.crypto.CryptObject.get_cert">
<code class="descname">get_cert</code><span class="sig-paren">(</span><em>index=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CryptObject.get_cert"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.CryptObject.get_cert" title="Permalink to this definition"></a></dt>
<dd><p>Return embded certificate number <code class="docutils literal"><span class="pre">index</span></code>.</p>
<p>note: not all embded certificate are directly used to sign the <a class="reference internal" href="#windows.crypto.CryptObject" title="windows.crypto.CryptObject"><code class="xref py py-class docutils literal"><span class="pre">CryptObject</span></code></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">Returns:</th><td class="field-body"><a class="reference internal" href="#windows.crypto.CertificateContext" title="windows.crypto.CertificateContext"><code class="xref py py-class docutils literal"><span class="pre">CertificateContext</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="windows.crypto.CryptObject.get_signer_certificate">
<code class="descname">get_signer_certificate</code><span class="sig-paren">(</span><em>index=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CryptObject.get_signer_certificate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.CryptObject.get_signer_certificate" title="Permalink to this definition"></a></dt>
<dd><p>Return the certificate used for signer nb <code class="docutils literal"><span class="pre">index</span></code></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"><a class="reference internal" href="#windows.crypto.CertificateContext" title="windows.crypto.CertificateContext"><code class="xref py py-class docutils literal"><span class="pre">CertificateContext</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="windows.crypto.CryptObject.get_signer_data">
<code class="descname">get_signer_data</code><span class="sig-paren">(</span><em>index=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CryptObject.get_signer_data"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.CryptObject.get_signer_data" title="Permalink to this definition"></a></dt>
<dd><p>Returns the signer informations for signer nb <code class="docutils literal"><span class="pre">index</span></code></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"><code class="xref py py-class docutils literal"><span class="pre">CMSG_SIGNER_INFO</span></code></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="attribute">
<dt id="windows.crypto.CryptObject.nb_cert">
<code class="descname">nb_cert</code><a class="headerlink" href="#windows.crypto.CryptObject.nb_cert" title="Permalink to this definition"></a></dt>
<dd><p>The number of certificate embded in the <a class="reference internal" href="#windows.crypto.CryptObject" title="windows.crypto.CryptObject"><code class="xref py py-class docutils literal"><span class="pre">CryptObject</span></code></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">Type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="attribute">
<dt id="windows.crypto.CryptObject.nb_signer">
<code class="descname">nb_signer</code><a class="headerlink" href="#windows.crypto.CryptObject.nb_signer" title="Permalink to this definition"></a></dt>
<dd><p>The number of signers for the CryptObject</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">Type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2/library/functions.html#int" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">int</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
</dd></dl>
</div>
<div class="section" id="cryptcontext">
<h3>9.2.4. CryptContext<a class="headerlink" href="#cryptcontext" title="Permalink to this headline"></a></h3>
<dl class="class">
<dt id="windows.crypto.CryptContext">
<em class="property">class </em><code class="descclassname">windows.crypto.</code><code class="descname">CryptContext</code><span class="sig-paren">(</span><em>pszContainer=None</em>, <em>pszProvider=None</em>, <em>dwProvType=0</em>, <em>dwFlags=0</em>, <em>retrycreate=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CryptContext"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.CryptContext" title="Permalink to this definition"></a></dt>
<dd><p>A context manager arround <code class="docutils literal"><span class="pre">CryptAcquireContextW</span></code> &amp; <code class="docutils literal"><span class="pre">CryptReleaseContext</span></code></p>
<dl class="attribute">
<dt id="windows.crypto.CryptContext.contents">
<code class="descname">contents</code><a class="headerlink" href="#windows.crypto.CryptContext.contents" title="Permalink to this definition"></a></dt>
<dd><p>the object this pointer points to (read-write)</p>
</dd></dl>
</dd></dl>
</div>
</div>
<div class="section" id="module-windows.crypto.generation">
<span id="generating-componants"></span><h2>9.3. Generating componants<a class="headerlink" href="#module-windows.crypto.generation" title="Permalink to this headline"></a></h2>
<p>This module is used to generate selfsigned-certificates / keypair and pfx file.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">See <code class="docutils literal"><span class="pre">genkeys()</span></code> in the sample <a class="reference internal" href="sample.html#sample-crypto-encryption"><span class="std std-ref">Encryption demo</span></a></p>
</div>
<div class="section" id="generate-selfsigned-certificate">
<h3>9.3.1. generate_selfsigned_certificate<a class="headerlink" href="#generate-selfsigned-certificate" title="Permalink to this headline"></a></h3>
<dl class="function">
<dt id="windows.crypto.generation.generate_selfsigned_certificate">
<code class="descclassname">windows.crypto.generation.</code><code class="descname">generate_selfsigned_certificate</code><span class="sig-paren">(</span><em>name='CN=DEFAULT'</em>, <em>prov=None</em>, <em>key_info=None</em>, <em>flags=0</em>, <em>signature_algo=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/generation.html#generate_selfsigned_certificate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.generation.generate_selfsigned_certificate" title="Permalink to this definition"></a></dt>
<dd><p>Generate a selfsigned certificate.</p>
<p>See <a class="reference external" href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa376039(v=vs.85).aspx">https://msdn.microsoft.com/en-us/library/windows/desktop/aa376039(v=vs.85).aspx</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">Returns:</th><td class="field-body"><a class="reference internal" href="#windows.crypto.CertificateContext" title="windows.crypto.CertificateContext"><code class="xref py py-class docutils literal"><span class="pre">windows.crypto.CertificateContext</span></code></a></td>
</tr>
</tbody>
</table>
</dd></dl>
</div>
<div class="section" id="generate-key">
<h3>9.3.2. generate_key<a class="headerlink" href="#generate-key" title="Permalink to this headline"></a></h3>
<dl class="function">
<dt id="windows.crypto.generation.generate_key">
<code class="descclassname">windows.crypto.generation.</code><code class="descname">generate_key</code><span class="sig-paren">(</span><em>prov</em>, <em>keytype=AT_KEYEXCHANGE(0x1L)</em>, <em>flags=CRYPT_EXPORTABLE(0x1L)</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/generation.html#generate_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.generation.generate_key" title="Permalink to this definition"></a></dt>
<dd><p>Generate a keypair if type <code class="docutils literal"><span class="pre">keytype</span></code>.</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"><code class="xref py py-class docutils literal"><span class="pre">HCRYPTKEY</span></code></td>
</tr>
</tbody>
</table>
</dd></dl>
</div>
<div class="section" id="generate-pfx">
<h3>9.3.3. generate_pfx<a class="headerlink" href="#generate-pfx" title="Permalink to this headline"></a></h3>
<dl class="function">
<dt id="windows.crypto.generation.generate_pfx">
<code class="descclassname">windows.crypto.generation.</code><code class="descname">generate_pfx</code><span class="sig-paren">(</span><em>hstore</em>, <em>password=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/generation.html#generate_pfx"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.generation.generate_pfx" title="Permalink to this definition"></a></dt>
<dd><p>Generate a pfx protected by <code class="docutils literal"><span class="pre">password</span></code> contaning the certificates in <code class="docutils literal"><span class="pre">hstore</span></code></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"><a class="reference external" href="https://docs.python.org/2/library/functions.html#bytearray" title="(in Python v2.7)"><code class="xref py py-class docutils literal"><span class="pre">bytearray</span></code></a> &#8211; The raw PFX</td>
</tr>
</tbody>
</table>
</dd></dl>
</div>
</div>
</div>
</div>
</div>
</div>
<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="#">9. <code class="docutils literal"><span class="pre">windows.crypto</span></code> &#8211; CryptoAPI</a><ul>
<li><a class="reference internal" href="#encryption">9.1. Encryption</a><ul>
<li><a class="reference internal" href="#encrypt">9.1.1. encrypt</a></li>
<li><a class="reference internal" href="#decrypt">9.1.2. decrypt</a></li>
<li><a class="reference internal" href="#import-pfx">9.1.3. import_pfx</a></li>
</ul>
</li>
<li><a class="reference internal" href="#certificate">9.2. Certificate</a><ul>
<li><a class="reference internal" href="#certificatecontext">9.2.1. CertificateContext</a></li>
<li><a class="reference internal" href="#ehcertstore">9.2.2. EHCERTSTORE</a></li>
<li><a class="reference internal" href="#cryptobject">9.2.3. CryptObject</a></li>
<li><a class="reference internal" href="#cryptcontext">9.2.4. CryptContext</a></li>
</ul>
</li>
<li><a class="reference internal" href="#module-windows.crypto.generation">9.3. Generating componants</a><ul>
<li><a class="reference internal" href="#generate-selfsigned-certificate">9.3.1. generate_selfsigned_certificate</a></li>
<li><a class="reference internal" href="#generate-key">9.3.2. generate_key</a></li>
<li><a class="reference internal" href="#generate-pfx">9.3.3. generate_pfx</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="com.html"
title="previous chapter">8. <code class="docutils literal"><span class="pre">windows.com</span></code> - Component Object Model</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="iat_hook.html"
title="next chapter">10. IAT hooking</a></p>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/crypto.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">
<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="related" role="navigation" aria-label="related navigation">
<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="iat_hook.html" title="10. IAT hooking"
>next</a> |</li>
<li class="right" >
<a href="com.html" title="8. windows.com - Component Object Model"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.2 documentation</a> &#187;</li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2015, Clement Rouault.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.5.5.
</div>
</body>
</html>