Files
hakril-PythonForWindows/docs/build/html/crypto.html
T
2025-01-07 18:29:36 +01:00

786 lines
72 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>
<html lang="en" data-content_root="./">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>11. windows.crypto CryptoAPI &#8212; PythonForWindows 1.0.3 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.css?v=957880af" />
<script src="_static/documentation_options.js?v=baaebd52"></script>
<script src="_static/doctools.js?v=9a2dae69"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="12. windows.alpc Advanced Local Procedure Call" href="alpc.html" />
<link rel="prev" title="10. windows.com - Component Object Model" href="com.html" />
</head><body>
<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="alpc.html" title="12. windows.alpc Advanced Local Procedure Call"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="com.html" title="10. windows.com - Component Object Model"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.3 documentation</a> &#187;</li>
<li class="nav-item nav-item-this"><a href=""><span class="section-number">11. </span><code class="docutils literal notranslate"><span class="pre">windows.crypto</span></code> CryptoAPI</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-windows.crypto">
<span id="windows-crypto-cryptoapi"></span><h1><span class="section-number">11. </span><code class="docutils literal notranslate"><span class="pre">windows.crypto</span></code> CryptoAPI<a class="headerlink" href="#module-windows.crypto" title="Link to this heading"></a></h1>
<p>The <a class="reference internal" href="#module-windows.crypto" title="windows.crypto"><code class="xref py py-mod docutils literal notranslate"><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>
<section id="encryption">
<h2><span class="section-number">11.1. </span>Encryption<a class="headerlink" href="#encryption" title="Link to this heading"></a></h2>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>See sample <a class="reference internal" href="sample.html#sample-crypto-encryption"><span class="std std-ref">Encryption demo</span></a></p>
</div>
<section id="encrypt">
<h3><span class="section-number">11.1.1. </span>encrypt<a class="headerlink" href="#encrypt" title="Link to this heading"></a></h3>
<dl class="py function">
<dt class="sig sig-object py" id="windows.crypto.encrypt">
<span class="sig-prename descclassname"><span class="pre">windows.crypto.</span></span><span class="sig-name descname"><span class="pre">encrypt</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cert_or_certlist</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">msg</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">algo</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">szOID_NIST_AES256_CBC('2.16.840.1.101.3.4.1.42')</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">initvector</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">GenerateInitVector()</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/encrypt_decrypt.html#encrypt"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.encrypt" title="Link to this definition"></a></dt>
<dd><p>Encrypt <code class="docutils literal notranslate"><span class="pre">msg</span></code> one or many <a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a> using <code class="docutils literal notranslate"><span class="pre">algo</span></code> with the initial
vector <code class="docutils literal notranslate"><span class="pre">initvector</span></code>.</p>
<p>If <code class="docutils literal notranslate"><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 notranslate"><span class="pre">GenerateInitVector</span></code> are:</p>
<blockquote>
<div><ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">szOID_OIWSEC_desCBC</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">szOID_RSA_DES_EDE3_CBC</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">szOID_NIST_AES128_CBC</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">szOID_NIST_AES192_CBC</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">szOID_NIST_AES256_CBC</span></code></p></li>
</ul>
</div></blockquote>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>cert_or_certlist</strong> (<a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a> | [<a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a>]) One or many <a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a> used to encrypt the msg</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">bytearray</span></code>: The encrypted message</p>
</dd>
</dl>
</dd></dl>
</section>
<section id="decrypt">
<h3><span class="section-number">11.1.2. </span>decrypt<a class="headerlink" href="#decrypt" title="Link to this heading"></a></h3>
<dl class="py function">
<dt class="sig sig-object py" id="windows.crypto.decrypt">
<span class="sig-prename descclassname"><span class="pre">windows.crypto.</span></span><span class="sig-name descname"><span class="pre">decrypt</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cert_store</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encrypted</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/encrypt_decrypt.html#decrypt"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.decrypt" title="Link to this definition"></a></dt>
<dd><p>Try to decrypt the <code class="docutils literal notranslate"><span class="pre">encrypted</span></code> msg with any certificate in <code class="docutils literal notranslate"><span class="pre">cert_store</span></code>.</p>
<p>If there is no certificate able to decrypt the message <code class="docutils literal notranslate"><span class="pre">WinproxyError(winerror=0x8009200c)</span></code> is raised.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>cert_store</strong> (<a class="reference internal" href="#windows.crypto.CertificateStore" title="windows.crypto.CertificateStore"><code class="xref py py-class docutils literal notranslate"><span class="pre">CertificateStore</span></code></a>)</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>: The decrypted message</p>
</dd>
</dl>
</dd></dl>
</section>
<section id="import-pfx">
<h3><span class="section-number">11.1.3. </span>import_pfx<a class="headerlink" href="#import-pfx" title="Link to this heading"></a></h3>
<dl class="py function">
<dt class="sig sig-object py" id="windows.crypto.import_pfx">
<span class="sig-prename descclassname"><span class="pre">windows.crypto.</span></span><span class="sig-name descname"><span class="pre">import_pfx</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pfx</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">password</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">flags</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">37376</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#import_pfx"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.import_pfx" title="Link to this definition"></a></dt>
<dd><p>Import the file <code class="docutils literal notranslate"><span class="pre">pfx</span></code> with the <code class="docutils literal notranslate"><span class="pre">password</span></code>.</p>
<p><code class="docutils literal notranslate"><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 notranslate"><span class="pre">PKCS12_NO_PERSIST_KEY</span></code> tells <code class="docutils literal notranslate"><span class="pre">CryptoAPI</span></code> to NOT save the keys in a on-disk container.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="#windows.crypto.CertificateStore" title="windows.crypto.CertificateStore"><code class="xref py py-class docutils literal notranslate"><span class="pre">CertificateStore</span></code></a></p>
</dd>
</dl>
</dd></dl>
</section>
</section>
<section id="certificate">
<h2><span class="section-number">11.2. </span>Certificate<a class="headerlink" href="#certificate" title="Link to this heading"></a></h2>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>See sample <a class="reference internal" href="sample.html#sample-crypto-certificate"><span class="std std-ref">Certificate demo</span></a></p>
</div>
<section id="id1">
<h3><span class="section-number">11.2.1. </span>Certificate<a class="headerlink" href="#id1" title="Link to this heading"></a></h3>
<dl class="py class">
<dt class="sig sig-object py" id="windows.crypto.Certificate">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">windows.crypto.</span></span><span class="sig-name descname"><span class="pre">Certificate</span></span><a class="reference internal" href="_modules/windows/crypto/certificate.html#Certificate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.Certificate" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs._CERT_CONTEXT" title="windows.generated_def.winstructs._CERT_CONTEXT"><code class="xref py py-class docutils literal notranslate"><span class="pre">_CERT_CONTEXT</span></code></a></p>
<p>Represent a Certificate</p>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.Certificate.chains">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">chains</span></span><a class="headerlink" href="#windows.crypto.Certificate.chains" title="Link 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 notranslate"><span class="pre">Certificate</span></code> that should
go from the <code class="docutils literal notranslate"><span class="pre">self</span></code> certificate to a trusted certificate.</p>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p>[[<a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a>]] A list of chain (list) of <a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a></p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.Certificate.distinguished_name">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">distinguished_name</span></span><a class="headerlink" href="#windows.crypto.Certificate.distinguished_name" title="Link to this definition"></a></dt>
<dd><p>The distinguished name (DN) of the certificate.</p>
<p>Example:</p>
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">x</span>
<span class="go">&lt;Certificate &quot;Microsoft Windows Production PCA 2011&quot; serial=&quot;61 07 76 56 00 00 00 00 00 08&quot;&gt;</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span><span class="o">.</span><span class="n">distinguished_name</span>
<span class="go">&#39;C=US, S=Washington, L=Redmond, O=Microsoft Corporation, CN=Microsoft Windows Production PCA 2011&#39;</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="windows.crypto.Certificate.duplicate">
<span class="sig-name descname"><span class="pre">duplicate</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#Certificate.duplicate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.Certificate.duplicate" title="Link to this definition"></a></dt>
<dd><p>Duplicate the certificate by incrementing the internal refcount. (see <a class="reference external" href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa376045(v=vs.85).aspx">CertDuplicateCertificateContext</a>)</p>
<p>note: The object returned is <code class="docutils literal notranslate"><span class="pre">self</span></code></p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a></p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.Certificate.encoded">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">encoded</span></span><a class="headerlink" href="#windows.crypto.Certificate.encoded" title="Link to this definition"></a></dt>
<dd><p>The encoded certificate.</p>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">bytearray</span></code></p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="windows.crypto.Certificate.from_buffer">
<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_buffer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#Certificate.from_buffer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.Certificate.from_buffer" title="Link to this definition"></a></dt>
<dd><p>Create a <a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a> from the buffer <code class="docutils literal notranslate"><span class="pre">data</span></code></p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a></p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="windows.crypto.Certificate.from_file">
<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#Certificate.from_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.Certificate.from_file" title="Link to this definition"></a></dt>
<dd><p>Create a <a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a> from the file <code class="docutils literal notranslate"><span class="pre">filename</span></code></p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a></p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="windows.crypto.Certificate.get_name">
<span class="sig-name descname"><span class="pre">get_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">nametype</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">CERT_NAME_SIMPLE_DISPLAY_TYPE(0x4)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">param_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">flags</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#Certificate.get_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.Certificate.get_name" title="Link to this definition"></a></dt>
<dd><p>Retrieve the subject or issuer name of the certificate.
See <a class="reference external" href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa376086(v=vs.85).aspx">CertGetNameStringA</a></p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="windows.crypto.Certificate.get_property">
<span class="sig-name descname"><span class="pre">get_property</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">prop</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#Certificate.get_property"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.Certificate.get_property" title="Link to this definition"></a></dt>
<dd><p>TODO: DOC :D + auto-type ?</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.Certificate.issuer">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">issuer</span></span><a class="headerlink" href="#windows.crypto.Certificate.issuer" title="Link to this definition"></a></dt>
<dd><p>The name of the certificates issuer.</p>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.Certificate.name">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">name</span></span><a class="headerlink" href="#windows.crypto.Certificate.name" title="Link to this definition"></a></dt>
<dd><p>The name of the certificate.</p>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.Certificate.properties">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">properties</span></span><a class="headerlink" href="#windows.crypto.Certificate.properties" title="Link to this definition"></a></dt>
<dd><p>The properties of the certificate</p>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p>[<code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code> or <a class="reference internal" href="generated.html#windows.generated_def.Flag" title="windows.generated_def.Flag"><code class="xref py py-class docutils literal notranslate"><span class="pre">Flag</span></code></a>] A list of property ID</p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.Certificate.raw_serial">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">raw_serial</span></span><a class="headerlink" href="#windows.crypto.Certificate.raw_serial" title="Link to this definition"></a></dt>
<dd><p>The raw serial number of the certificate.</p>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p>[<code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code>]: A list of int <code class="docutils literal notranslate"><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></p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.Certificate.serial">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">serial</span></span><a class="headerlink" href="#windows.crypto.Certificate.serial" title="Link to this definition"></a></dt>
<dd><p>The string representation of the certificates serial.</p>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.Certificate.store">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">store</span></span><a class="headerlink" href="#windows.crypto.Certificate.store" title="Link to this definition"></a></dt>
<dd><p>The certificate store that contains the certificate</p>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="#windows.crypto.CertificateStore" title="windows.crypto.CertificateStore"><code class="xref py py-class docutils literal notranslate"><span class="pre">CertificateStore</span></code></a></p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.Certificate.thumbprint">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">thumbprint</span></span><a class="headerlink" href="#windows.crypto.Certificate.thumbprint" title="Link to this definition"></a></dt>
<dd><p>The thumbprint of the certificate (which is the sha1 of the encoded cert).</p>
<p>Example:</p>
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">x</span>
<span class="go">&lt;Certificate &quot;YOLO2&quot; serial=&quot;6f 1d 3e 7d d9 77 59 a9 4c 1c 53 dc 80 db 0c fe&quot;&gt;</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span><span class="o">.</span><span class="n">thumbprint</span>
<span class="go">&#39;E2 A2 DB 76 A1 DD 8E 70 0D C6 9F CB 71 CF 29 12 C6 D9 78 97&#39;</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.Certificate.version">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">version</span></span><a class="headerlink" href="#windows.crypto.Certificate.version" title="Link to this definition"></a></dt>
<dd><p>The version number of the certificate</p>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</section>
<section id="certificatestore">
<h3><span class="section-number">11.2.2. </span>CertificateStore<a class="headerlink" href="#certificatestore" title="Link to this heading"></a></h3>
<dl class="py class">
<dt class="sig sig-object py" id="windows.crypto.CertificateStore">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">windows.crypto.</span></span><span class="sig-name descname"><span class="pre">CertificateStore</span></span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CertificateStore"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.CertificateStore" title="Link to this definition"></a></dt>
<dd><p>A certificate store</p>
<dl class="py method">
<dt class="sig sig-object py" id="windows.crypto.CertificateStore.add_certificate">
<span class="sig-name descname"><span class="pre">add_certificate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">certificate</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CertificateStore.add_certificate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.CertificateStore.add_certificate" title="Link to this definition"></a></dt>
<dd><p>Add a certificate to the store</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.CertificateStore.certs">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">certs</span></span><a class="headerlink" href="#windows.crypto.CertificateStore.certs" title="Link to this definition"></a></dt>
<dd><p>The list of certificates in the store</p>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p>[<a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a>] A list of certificate</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="windows.crypto.CertificateStore.find">
<span class="sig-name descname"><span class="pre">find</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">issuer</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">serialnumber</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CertificateStore.find"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.CertificateStore.find" title="Link to this definition"></a></dt>
<dd><p>Return the certificate that match <cite>issuer</cite> and <cite>serialnumber</cite></p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a> <code class="docutils literal notranslate"><span class="pre">None</span></code> if certificate is not found</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="windows.crypto.CertificateStore.from_file">
<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CertificateStore.from_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.CertificateStore.from_file" title="Link to this definition"></a></dt>
<dd><p>Create a new <a class="reference internal" href="#windows.crypto.CertificateStore" title="windows.crypto.CertificateStore"><code class="xref py py-class docutils literal notranslate"><span class="pre">CertificateStore</span></code></a> from <code class="docutils literal notranslate"><span class="pre">filename</span></code></p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="windows.crypto.CertificateStore.from_param">
<span class="sig-name descname"><span class="pre">from_param</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#windows.crypto.CertificateStore.from_param" title="Link to this definition"></a></dt>
<dd><p>Convert a Python object into a function call parameter.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="windows.crypto.CertificateStore.from_system_store">
<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_system_store</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">store_name</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CertificateStore.from_system_store"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.CertificateStore.from_system_store" title="Link to this definition"></a></dt>
<dd><p>Create a new <a class="reference internal" href="#windows.crypto.CertificateStore" title="windows.crypto.CertificateStore"><code class="xref py py-class docutils literal notranslate"><span class="pre">CertificateStore</span></code></a> from system store <code class="docutils literal notranslate"><span class="pre">store_name</span></code>
(see <a class="reference external" href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa388136(v=vs.85).aspx">System Store Locations</a>)</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="windows.crypto.CertificateStore.new_in_memory">
<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">new_in_memory</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CertificateStore.new_in_memory"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.CertificateStore.new_in_memory" title="Link to this definition"></a></dt>
<dd><p>Create a new temporary <a class="reference internal" href="#windows.crypto.CertificateStore" title="windows.crypto.CertificateStore"><code class="xref py py-class docutils literal notranslate"><span class="pre">CertificateStore</span></code></a> in memory</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="windows.crypto.CertificateStore.value">
<span class="sig-name descname"><span class="pre">value</span></span><a class="headerlink" href="#windows.crypto.CertificateStore.value" title="Link to this definition"></a></dt>
<dd><p>current value</p>
</dd></dl>
</dd></dl>
</section>
<section id="cryptobject">
<h3><span class="section-number">11.2.3. </span>CryptObject<a class="headerlink" href="#cryptobject" title="Link to this heading"></a></h3>
<dl class="py class">
<dt class="sig sig-object py" id="windows.crypto.CryptObject">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">windows.crypto.</span></span><span class="sig-name descname"><span class="pre">CryptObject</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">content_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">CERT_QUERY_CONTENT_FLAG_ALL(0x3ffe)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CryptObject"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.CryptObject" title="Link to this definition"></a></dt>
<dd><p>Extract information from an CryptoAPI object.
(see <a class="reference external" href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa380264(v=vs.85).aspx">CryptQueryObject</a>)</p>
<p>Current main use is extracting the signers certificates from a PE file.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="windows.crypto.CryptObject.cert_store">
<span class="sig-name descname"><span class="pre">cert_store</span></span><a class="headerlink" href="#windows.crypto.CryptObject.cert_store" title="Link to this definition"></a></dt>
<dd><p>The <a class="reference internal" href="#windows.crypto.CertificateStore" title="windows.crypto.CertificateStore"><code class="xref py py-class docutils literal notranslate"><span class="pre">CertificateStore</span></code></a> that includes all of the certificates, CRLs, and CTLs in the object</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="windows.crypto.CryptObject.content_type">
<span class="sig-name descname"><span class="pre">content_type</span></span><a class="headerlink" href="#windows.crypto.CryptObject.content_type" title="Link to this definition"></a></dt>
<dd><p>The type of the opened message</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="windows.crypto.CryptObject.crypt_msg">
<span class="sig-name descname"><span class="pre">crypt_msg</span></span><a class="headerlink" href="#windows.crypto.CryptObject.crypt_msg" title="Link to this definition"></a></dt>
<dd><p>The <a class="reference internal" href="#windows.crypto.CryptMessage" title="windows.crypto.CryptMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">CryptMessage</span></code></a> for any <code class="docutils literal notranslate"><span class="pre">PKCS7</span></code> content in the object</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.CryptObject.signers_and_certs">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">signers_and_certs</span></span><a class="headerlink" href="#windows.crypto.CryptObject.signers_and_certs" title="Link to this definition"></a></dt>
<dd><p>The list of signer info and certificates signing the object.</p>
<dl class="field-list simple">
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>[(<a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs.CMSG_SIGNER_INFO" title="windows.generated_def.winstructs.CMSG_SIGNER_INFO"><code class="xref py py-class docutils literal notranslate"><span class="pre">CMSG_SIGNER_INFO</span></code></a>, <a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a>)]</p>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p><a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs.CMSG_SIGNER_INFO" title="windows.generated_def.winstructs.CMSG_SIGNER_INFO"><code class="xref py py-class docutils literal notranslate"><span class="pre">CMSG_SIGNER_INFO</span></code></a> might be changed to a wrapping-subclass.</p>
</div>
</dd></dl>
</dd></dl>
</section>
<section id="cryptmessage">
<h3><span class="section-number">11.2.4. </span>CryptMessage<a class="headerlink" href="#cryptmessage" title="Link to this heading"></a></h3>
<dl class="py class">
<dt class="sig sig-object py" id="windows.crypto.CryptMessage">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">windows.crypto.</span></span><span class="sig-name descname"><span class="pre">CryptMessage</span></span><a class="reference internal" href="_modules/windows/crypto/cryptmsg.html#CryptMessage"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.CryptMessage" title="Link to this definition"></a></dt>
<dd><p>Represent a PKCS #7 message
(see <a class="reference external" href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa380252(v=vs.85).aspx#low_level_message_functions">Low-level Message Functions</a>)</p>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.CryptMessage.certs">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">certs</span></span><a class="headerlink" href="#windows.crypto.CryptMessage.certs" title="Link to this definition"></a></dt>
<dd><p>The list of <a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a> embded in the message</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="windows.crypto.CryptMessage.from_buffer">
<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_buffer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">object</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">offset</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">C</span> <span class="pre">instance</span></span></span><a class="reference internal" href="_modules/windows/crypto/cryptmsg.html#CryptMessage.from_buffer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.CryptMessage.from_buffer" title="Link to this definition"></a></dt>
<dd><p>create a C instance from a writeable buffer</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="windows.crypto.CryptMessage.from_param">
<span class="sig-name descname"><span class="pre">from_param</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#windows.crypto.CryptMessage.from_param" title="Link to this definition"></a></dt>
<dd><p>Convert a Python object into a function call parameter.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="windows.crypto.CryptMessage.get_cert">
<span class="sig-name descname"><span class="pre">get_cert</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">index</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/cryptmsg.html#CryptMessage.get_cert"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.CryptMessage.get_cert" title="Link to this definition"></a></dt>
<dd><p>Return embded <a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a> number <code class="docutils literal notranslate"><span class="pre">index</span></code>.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>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 notranslate"><span class="pre">CryptObject</span></code></a>.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="windows.crypto.CryptMessage.get_recipient_data">
<span class="sig-name descname"><span class="pre">get_recipient_data</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">index</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/cryptmsg.html#CryptMessage.get_recipient_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.CryptMessage.get_recipient_data" title="Link to this definition"></a></dt>
<dd><p>TODO: DOC</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="windows.crypto.CryptMessage.get_signer_data">
<span class="sig-name descname"><span class="pre">get_signer_data</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">index</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/cryptmsg.html#CryptMessage.get_signer_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.CryptMessage.get_signer_data" title="Link to this definition"></a></dt>
<dd><p>Returns the signer informations for signer nb <code class="docutils literal notranslate"><span class="pre">index</span></code></p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs.CMSG_SIGNER_INFO" title="windows.generated_def.winstructs.CMSG_SIGNER_INFO"><code class="xref py py-class docutils literal notranslate"><span class="pre">CMSG_SIGNER_INFO</span></code></a></p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.CryptMessage.nb_cert">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">nb_cert</span></span><a class="headerlink" href="#windows.crypto.CryptMessage.nb_cert" title="Link 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 notranslate"><span class="pre">CryptObject</span></code></a></p>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.CryptMessage.nb_recipient">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">nb_recipient</span></span><a class="headerlink" href="#windows.crypto.CryptMessage.nb_recipient" title="Link to this definition"></a></dt>
<dd><p>TODO: DOC</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.CryptMessage.nb_signer">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">nb_signer</span></span><a class="headerlink" href="#windows.crypto.CryptMessage.nb_signer" title="Link to this definition"></a></dt>
<dd><p>The number of signers for the CryptObject</p>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.CryptMessage.recipients">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">recipients</span></span><a class="headerlink" href="#windows.crypto.CryptMessage.recipients" title="Link to this definition"></a></dt>
<dd><p>TODO: DOC</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="windows.crypto.CryptMessage.signers">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">signers</span></span><a class="headerlink" href="#windows.crypto.CryptMessage.signers" title="Link to this definition"></a></dt>
<dd><p>The list of <a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs.CMSG_SIGNER_INFO" title="windows.generated_def.winstructs.CMSG_SIGNER_INFO"><code class="xref py py-class docutils literal notranslate"><span class="pre">CMSG_SIGNER_INFO</span></code></a> embed in the message</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="windows.crypto.CryptMessage.value">
<span class="sig-name descname"><span class="pre">value</span></span><a class="headerlink" href="#windows.crypto.CryptMessage.value" title="Link to this definition"></a></dt>
<dd><p>current value</p>
</dd></dl>
</dd></dl>
</section>
<section id="cryptcontext">
<h3><span class="section-number">11.2.5. </span>CryptContext<a class="headerlink" href="#cryptcontext" title="Link to this heading"></a></h3>
<dl class="py class">
<dt class="sig sig-object py" id="windows.crypto.CryptContext">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">windows.crypto.</span></span><span class="sig-name descname"><span class="pre">CryptContext</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pszContainer</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pszProvider</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dwProvType</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">dwFlags</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">retrycreate</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/certificate.html#CryptContext"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.CryptContext" title="Link to this definition"></a></dt>
<dd><p>A context manager arround <code class="docutils literal notranslate"><span class="pre">CryptAcquireContextW</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">CryptReleaseContext</span></code></p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>see usage in sample <a class="reference internal" href="sample.html#sample-crypto-encryption"><span class="std std-ref">Encryption demo</span></a> (function <code class="docutils literal notranslate"><span class="pre">genkeys</span></code>)</p>
</div>
<dl class="py attribute">
<dt class="sig sig-object py" id="windows.crypto.CryptContext.contents">
<span class="sig-name descname"><span class="pre">contents</span></span><a class="headerlink" href="#windows.crypto.CryptContext.contents" title="Link to this definition"></a></dt>
<dd><p>the object this pointer points to (read-write)</p>
</dd></dl>
</dd></dl>
</section>
</section>
<section id="module-windows.crypto.generation">
<span id="generating-componants"></span><h2><span class="section-number">11.3. </span>Generating componants<a class="headerlink" href="#module-windows.crypto.generation" title="Link to this heading"></a></h2>
<p>This module is used to generate selfsigned-certificates / keypair and pfx file.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>See <code class="docutils literal notranslate"><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>
<section id="generate-selfsigned-certificate">
<h3><span class="section-number">11.3.1. </span>generate_selfsigned_certificate<a class="headerlink" href="#generate-selfsigned-certificate" title="Link to this heading"></a></h3>
<dl class="py function">
<dt class="sig sig-object py" id="windows.crypto.generation.generate_selfsigned_certificate">
<span class="sig-prename descclassname"><span class="pre">windows.crypto.generation.</span></span><span class="sig-name descname"><span class="pre">generate_selfsigned_certificate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'CN=DEFAULT'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">prov</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key_info</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">flags</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">signature_algo</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/generation.html#generate_selfsigned_certificate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.generation.generate_selfsigned_certificate" title="Link 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">CertCreateSelfSignCertificate</a></p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">windows.crypto.Certificate</span></code></a></p>
</dd>
</dl>
</dd></dl>
</section>
<section id="generate-key">
<h3><span class="section-number">11.3.2. </span>generate_key<a class="headerlink" href="#generate-key" title="Link to this heading"></a></h3>
<dl class="py function">
<dt class="sig sig-object py" id="windows.crypto.generation.generate_key">
<span class="sig-prename descclassname"><span class="pre">windows.crypto.generation.</span></span><span class="sig-name descname"><span class="pre">generate_key</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">prov</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">keytype</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">AT_KEYEXCHANGE(0x1)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">flags</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">CRYPT_EXPORTABLE(0x1)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/generation.html#generate_key"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.generation.generate_key" title="Link to this definition"></a></dt>
<dd><p>Generate a keypair if type <code class="docutils literal notranslate"><span class="pre">keytype</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">HCRYPTKEY</span></code></p>
</dd>
</dl>
</dd></dl>
</section>
<section id="generate-pfx">
<h3><span class="section-number">11.3.3. </span>generate_pfx<a class="headerlink" href="#generate-pfx" title="Link to this heading"></a></h3>
<dl class="py function">
<dt class="sig sig-object py" id="windows.crypto.generation.generate_pfx">
<span class="sig-prename descclassname"><span class="pre">windows.crypto.generation.</span></span><span class="sig-name descname"><span class="pre">generate_pfx</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">hstore</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">password</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/generation.html#generate_pfx"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.crypto.generation.generate_pfx" title="Link to this definition"></a></dt>
<dd><p>Generate a pfx protected by <code class="docutils literal notranslate"><span class="pre">password</span></code> contaning the certificates in <code class="docutils literal notranslate"><span class="pre">hstore</span></code></p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><code class="xref py py-class docutils literal notranslate"><span class="pre">bytearray</span></code> The raw PFX</p>
</dd>
</dl>
</dd></dl>
</section>
</section>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<div>
<h3><a href="index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">11. <code class="docutils literal notranslate"><span class="pre">windows.crypto</span></code> CryptoAPI</a><ul>
<li><a class="reference internal" href="#encryption">11.1. Encryption</a><ul>
<li><a class="reference internal" href="#encrypt">11.1.1. encrypt</a><ul>
<li><a class="reference internal" href="#windows.crypto.encrypt"><code class="docutils literal notranslate"><span class="pre">encrypt()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#decrypt">11.1.2. decrypt</a><ul>
<li><a class="reference internal" href="#windows.crypto.decrypt"><code class="docutils literal notranslate"><span class="pre">decrypt()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#import-pfx">11.1.3. import_pfx</a><ul>
<li><a class="reference internal" href="#windows.crypto.import_pfx"><code class="docutils literal notranslate"><span class="pre">import_pfx()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#certificate">11.2. Certificate</a><ul>
<li><a class="reference internal" href="#id1">11.2.1. Certificate</a><ul>
<li><a class="reference internal" href="#windows.crypto.Certificate"><code class="docutils literal notranslate"><span class="pre">Certificate</span></code></a><ul>
<li><a class="reference internal" href="#windows.crypto.Certificate.chains"><code class="docutils literal notranslate"><span class="pre">chains</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.Certificate.distinguished_name"><code class="docutils literal notranslate"><span class="pre">distinguished_name</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.Certificate.duplicate"><code class="docutils literal notranslate"><span class="pre">duplicate()</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.Certificate.encoded"><code class="docutils literal notranslate"><span class="pre">encoded</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.Certificate.from_buffer"><code class="docutils literal notranslate"><span class="pre">from_buffer()</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.Certificate.from_file"><code class="docutils literal notranslate"><span class="pre">from_file()</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.Certificate.get_name"><code class="docutils literal notranslate"><span class="pre">get_name()</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.Certificate.get_property"><code class="docutils literal notranslate"><span class="pre">get_property()</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.Certificate.issuer"><code class="docutils literal notranslate"><span class="pre">issuer</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.Certificate.name"><code class="docutils literal notranslate"><span class="pre">name</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.Certificate.properties"><code class="docutils literal notranslate"><span class="pre">properties</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.Certificate.raw_serial"><code class="docutils literal notranslate"><span class="pre">raw_serial</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.Certificate.serial"><code class="docutils literal notranslate"><span class="pre">serial</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.Certificate.store"><code class="docutils literal notranslate"><span class="pre">store</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.Certificate.thumbprint"><code class="docutils literal notranslate"><span class="pre">thumbprint</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.Certificate.version"><code class="docutils literal notranslate"><span class="pre">version</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#certificatestore">11.2.2. CertificateStore</a><ul>
<li><a class="reference internal" href="#windows.crypto.CertificateStore"><code class="docutils literal notranslate"><span class="pre">CertificateStore</span></code></a><ul>
<li><a class="reference internal" href="#windows.crypto.CertificateStore.add_certificate"><code class="docutils literal notranslate"><span class="pre">add_certificate()</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CertificateStore.certs"><code class="docutils literal notranslate"><span class="pre">certs</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CertificateStore.find"><code class="docutils literal notranslate"><span class="pre">find()</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CertificateStore.from_file"><code class="docutils literal notranslate"><span class="pre">from_file()</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CertificateStore.from_param"><code class="docutils literal notranslate"><span class="pre">from_param()</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CertificateStore.from_system_store"><code class="docutils literal notranslate"><span class="pre">from_system_store()</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CertificateStore.new_in_memory"><code class="docutils literal notranslate"><span class="pre">new_in_memory()</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CertificateStore.value"><code class="docutils literal notranslate"><span class="pre">value</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#cryptobject">11.2.3. CryptObject</a><ul>
<li><a class="reference internal" href="#windows.crypto.CryptObject"><code class="docutils literal notranslate"><span class="pre">CryptObject</span></code></a><ul>
<li><a class="reference internal" href="#windows.crypto.CryptObject.cert_store"><code class="docutils literal notranslate"><span class="pre">cert_store</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CryptObject.content_type"><code class="docutils literal notranslate"><span class="pre">content_type</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CryptObject.crypt_msg"><code class="docutils literal notranslate"><span class="pre">crypt_msg</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CryptObject.signers_and_certs"><code class="docutils literal notranslate"><span class="pre">signers_and_certs</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#cryptmessage">11.2.4. CryptMessage</a><ul>
<li><a class="reference internal" href="#windows.crypto.CryptMessage"><code class="docutils literal notranslate"><span class="pre">CryptMessage</span></code></a><ul>
<li><a class="reference internal" href="#windows.crypto.CryptMessage.certs"><code class="docutils literal notranslate"><span class="pre">certs</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CryptMessage.from_buffer"><code class="docutils literal notranslate"><span class="pre">from_buffer()</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CryptMessage.from_param"><code class="docutils literal notranslate"><span class="pre">from_param()</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CryptMessage.get_cert"><code class="docutils literal notranslate"><span class="pre">get_cert()</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CryptMessage.get_recipient_data"><code class="docutils literal notranslate"><span class="pre">get_recipient_data()</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CryptMessage.get_signer_data"><code class="docutils literal notranslate"><span class="pre">get_signer_data()</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CryptMessage.nb_cert"><code class="docutils literal notranslate"><span class="pre">nb_cert</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CryptMessage.nb_recipient"><code class="docutils literal notranslate"><span class="pre">nb_recipient</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CryptMessage.nb_signer"><code class="docutils literal notranslate"><span class="pre">nb_signer</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CryptMessage.recipients"><code class="docutils literal notranslate"><span class="pre">recipients</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CryptMessage.signers"><code class="docutils literal notranslate"><span class="pre">signers</span></code></a></li>
<li><a class="reference internal" href="#windows.crypto.CryptMessage.value"><code class="docutils literal notranslate"><span class="pre">value</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#cryptcontext">11.2.5. CryptContext</a><ul>
<li><a class="reference internal" href="#windows.crypto.CryptContext"><code class="docutils literal notranslate"><span class="pre">CryptContext</span></code></a><ul>
<li><a class="reference internal" href="#windows.crypto.CryptContext.contents"><code class="docutils literal notranslate"><span class="pre">contents</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#module-windows.crypto.generation">11.3. Generating componants</a><ul>
<li><a class="reference internal" href="#generate-selfsigned-certificate">11.3.1. generate_selfsigned_certificate</a><ul>
<li><a class="reference internal" href="#windows.crypto.generation.generate_selfsigned_certificate"><code class="docutils literal notranslate"><span class="pre">generate_selfsigned_certificate()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#generate-key">11.3.2. generate_key</a><ul>
<li><a class="reference internal" href="#windows.crypto.generation.generate_key"><code class="docutils literal notranslate"><span class="pre">generate_key()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#generate-pfx">11.3.3. generate_pfx</a><ul>
<li><a class="reference internal" href="#windows.crypto.generation.generate_pfx"><code class="docutils literal notranslate"><span class="pre">generate_pfx()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div>
<h4>Previous topic</h4>
<p class="topless"><a href="com.html"
title="previous chapter"><span class="section-number">10. </span><code class="xref py py-mod docutils literal notranslate"><span class="pre">windows.com</span></code> - Component Object Model</a></p>
</div>
<div>
<h4>Next topic</h4>
<p class="topless"><a href="alpc.html"
title="next chapter"><span class="section-number">12. </span><code class="docutils literal notranslate"><span class="pre">windows.alpc</span></code> Advanced Local Procedure Call</a></p>
</div>
<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>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</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="alpc.html" title="12. windows.alpc Advanced Local Procedure Call"
>next</a> |</li>
<li class="right" >
<a href="com.html" title="10. windows.com - Component Object Model"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.3 documentation</a> &#187;</li>
<li class="nav-item nav-item-this"><a href=""><span class="section-number">11. </span><code class="docutils literal notranslate"><span class="pre">windows.crypto</span></code> CryptoAPI</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2015-2020, Clement Rouault.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
</div>
</body>
</html>