Skip to content

Commit e4ca049

Browse files
authored
Merge pull request #80 from hakril/updates
Updates
2 parents 87eace2 + 5da940a commit e4ca049

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+32205
-26187
lines changed

ctypes_generation/definitions/defines/wintrust_crypt_def.txt

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,38 @@
387387
#define CRYPT_ARCHIVABLE 0x00004000
388388
#define CRYPT_FORCE_KEY_PROTECTION_HIGH 0x00008000
389389

390+
#define CERT_RDN_ANY_TYPE 0
391+
#define CERT_RDN_ENCODED_BLOB 1
392+
#define CERT_RDN_OCTET_STRING 2
393+
#define CERT_RDN_NUMERIC_STRING 3
394+
#define CERT_RDN_PRINTABLE_STRING 4
395+
#define CERT_RDN_TELETEX_STRING 5
396+
#define CERT_RDN_T61_STRING 5
397+
#define CERT_RDN_VIDEOTEX_STRING 6
398+
#define CERT_RDN_IA5_STRING 7
399+
#define CERT_RDN_GRAPHIC_STRING 8
400+
#define CERT_RDN_VISIBLE_STRING 9
401+
#define CERT_RDN_ISO646_STRING 9
402+
#define CERT_RDN_GENERAL_STRING 10
403+
#define CERT_RDN_UNIVERSAL_STRING 11
404+
#define CERT_RDN_INT4_STRING 11
405+
#define CERT_RDN_BMP_STRING 12
406+
#define CERT_RDN_UNICODE_STRING 12
407+
#define CERT_RDN_UTF8_STRING 13
408+
#define CERT_RDN_TYPE_MASK 0xff
409+
#define CERT_RDN_FLAGS_MASK 0xff000000
410+
#define CERT_RDN_ENABLE_T61_UNICODE_FLAG 0x80000000
411+
#define CERT_RDN_ENABLE_UTF8_UNICODE_FLAG 0x20000000
412+
#define CERT_RDN_FORCE_UTF8_UNICODE_FLAG 0x10000000
413+
#define CERT_RDN_DISABLE_CHECK_TYPE_FLAG 0x40000000
414+
#define CERT_RDN_DISABLE_IE4_UTF8_FLAG 0x1000000
415+
416+
#define CRYPT_DECODE_NOCOPY_FLAG 0x1
417+
#define CRYPT_DECODE_TO_BE_SIGNED_FLAG 0x2
418+
#define CRYPT_DECODE_SHARE_OID_STRING_FLAG 0x4
419+
#define CRYPT_DECODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG 0x8
420+
#define CRYPT_DECODE_ALLOC_FLAG 0x8000
421+
#define CRYPT_UNICODE_NAME_DECODE_DISABLE_IE4_UTF8_FLAG CERT_RDN_DISABLE_IE4_UTF8_FLAG
390422

391423
#define CRYPT_ENCODE_DECODE_NONE 0
392424
#define X509_CERT (1)
@@ -582,4 +614,23 @@
582614
#define CMSG_CTRL_MAIL_LIST_DECRYPT 18
583615
#define CMSG_CTRL_VERIFY_SIGNATURE_EX 19
584616
#define CMSG_CTRL_ADD_CMS_SIGNER_INFO 20
585-
#define CMSG_CTRL_ENABLE_STRONG_SIGNATURE 21
617+
#define CMSG_CTRL_ENABLE_STRONG_SIGNATURE 21
618+
619+
620+
//+-------------------------------------------------------------------------
621+
// The following flag should be set in the above dwFlags to enable
622+
// a CertSetCertificateContextProperty(CERT_KEY_CONTEXT_PROP_ID) after a
623+
// CryptAcquireContext is done in the Sign or Decrypt Message functions.
624+
//
625+
// The following define must not collide with any of the
626+
// CryptAcquireContext dwFlag defines.
627+
//--------------------------------------------------------------------------
628+
#define CERT_SET_KEY_PROV_HANDLE_PROP_ID 0x00000001
629+
#define CERT_SET_KEY_CONTEXT_PROP_ID 0x00000001
630+
631+
// Special dwKeySpec indicating a CNG NCRYPT_KEY_HANDLE instead of a CAPI1
632+
// HCRYPTPROV
633+
#define CERT_NCRYPT_KEY_SPEC 0xFFFFFFFF
634+
635+
636+
#define CERT_REQUEST_V1 0

ctypes_generation/definitions/functions/crypto_wintrust.txt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -617,4 +617,28 @@ BOOL CryptGetOIDFunctionValue(
617617
BOOL CertCloseStore(
618618
HCERTSTORE hCertStore,
619619
DWORD dwFlags
620+
);
621+
622+
BOOL CryptSignAndEncodeCertificate(
623+
[in] BCRYPT_KEY_HANDLE hBCryptKey,
624+
[in] DWORD dwKeySpec,
625+
[in] DWORD dwCertEncodingType,
626+
[in] LPCSTR lpszStructType,
627+
[in] PVOID pvStructInfo,
628+
[in] PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
629+
[in] PVOID pvHashAuxInfo,
630+
[out] BYTE *pbEncoded,
631+
[in, out] DWORD *pcbEncoded
632+
);
633+
634+
BOOL CryptSignCertificate(
635+
[in] BCRYPT_KEY_HANDLE hBCryptKey,
636+
[in] DWORD dwKeySpec,
637+
[in] DWORD dwCertEncodingType,
638+
[in] BYTE *pbEncodedToBeSigned,
639+
[in] DWORD cbEncodedToBeSigned,
640+
[in] PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
641+
[in] PVOID pvHashAuxInfo,
642+
[out] BYTE *pbSignature,
643+
[in, out] DWORD *pcbSignature
620644
);
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
SECURITY_STATUS NCryptOpenKey(
2+
[in] NCRYPT_PROV_HANDLE hProvider,
3+
[out] NCRYPT_KEY_HANDLE *phKey,
4+
[in] LPCWSTR pszKeyName,
5+
[in] DWORD dwLegacyKeySpec,
6+
[in] DWORD dwFlags
7+
);
8+
9+
10+
SECURITY_STATUS NCryptOpenStorageProvider(
11+
[out] NCRYPT_PROV_HANDLE *phProvider,
12+
[in, optional] LPCWSTR pszProviderName,
13+
[in] DWORD dwFlags
14+
);

ctypes_generation/definitions/simple_types.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ PWINDBG_EXTENSION_APIS32 = PVOID
8686
PWINDBG_EXTENSION_APIS64 = PVOID
8787
FILEOP_FLAGS = WORD
8888
NET_API_STATUS = DWORD
89+
SECURITY_STATUS = LONG // Return type of ncrypt functions
8990

9091

9192
// 2 custom PFW defintions for bitness-forces structures
@@ -94,6 +95,7 @@ PVOID64 = DWORD64
9495

9596
NCRYPT_HANDLE = ULONG_PTR
9697
NCRYPT_PROV_HANDLE = ULONG_PTR
98+
BCRYPT_KEY_HANDLE = ULONG_PTR
9799
NCRYPT_KEY_HANDLE = ULONG_PTR
98100
NCRYPT_HASH_HANDLE = ULONG_PTR
99101
NCRYPT_SECRET_HANDLE = ULONG_PTR

ctypes_generation/definitions/structures/crypto.txt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,4 +715,12 @@ typedef struct _STRUCT_PLAINTEXTKEYBLOB {
715715
BLOBHEADER hdr;
716716
DWORD dwKeySize;
717717
BYTE rgbKeyData[0];
718-
} STRUCT_PLAINTEXTKEYBLOB, *PSTRUCT_PLAINTEXTKEYBLOB;
718+
} STRUCT_PLAINTEXTKEYBLOB, *PSTRUCT_PLAINTEXTKEYBLOB;
719+
720+
typedef struct _CERT_REQUEST_INFO {
721+
DWORD dwVersion;
722+
CERT_NAME_BLOB Subject;
723+
CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;
724+
DWORD cAttribute;
725+
PCRYPT_ATTRIBUTE rgAttribute;
726+
} CERT_REQUEST_INFO, *PCERT_REQUEST_INFO;

docs/build/html/_modules/windows/com.html

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
<head>
55
<meta charset="utf-8" />
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7-
<title>windows.com &#8212; PythonForWindows 1.0.2 documentation</title>
7+
<title>windows.com &#8212; PythonForWindows 1.0.3 documentation</title>
88
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
99
<link rel="stylesheet" type="text/css" href="../../_static/classic.css?v=def86cc0" />
1010
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.css?v=957880af" />
1111

12-
<script src="../../_static/documentation_options.js?v=1ed6394b"></script>
12+
<script src="../../_static/documentation_options.js?v=baaebd52"></script>
1313
<script src="../../_static/doctools.js?v=9a2dae69"></script>
1414
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
1515

@@ -25,7 +25,7 @@ <h3>Navigation</h3>
2525
<li class="right" >
2626
<a href="../../py-modindex.html" title="Python Module Index"
2727
>modules</a> |</li>
28-
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.2 documentation</a> &#187;</li>
28+
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.3 documentation</a> &#187;</li>
2929
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
3030
<li class="nav-item nav-item-this"><a href="">windows.com</a></li>
3131
</ul>
@@ -75,7 +75,13 @@ <h1>Source code for windows.com</h1><div class="highlight"><pre>
7575

7676

7777
<span class="k">def</span> <span class="nf">initsecurity</span><span class="p">():</span> <span class="c1"># Should take some parameters..</span>
78-
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">CoInitializeSecurity</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">RPC_C_IMP_LEVEL_IMPERSONATE</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
78+
<span class="k">try</span><span class="p">:</span>
79+
<span class="n">winproxy</span><span class="o">.</span><span class="n">CoInitializeSecurity</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">RPC_C_IMP_LEVEL_IMPERSONATE</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
80+
<span class="k">except</span> <span class="ne">OSError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
81+
<span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">&amp;</span> <span class="mh">0xFFFFFFFF</span> <span class="o">!=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">RPC_E_TOO_LATE</span><span class="p">:</span>
82+
<span class="c1"># RPC_E_TOO_LATE can happen when the python environment invokes CoInitializeSecurity before we get to it</span>
83+
<span class="c1"># mspython builds do this consistently.</span>
84+
<span class="k">raise</span> <span class="n">e</span>
7985

8086

8187
<span class="k">class</span> <span class="nc">Dispatch</span><span class="p">(</span><span class="n">interfaces</span><span class="o">.</span><span class="n">IDispatch</span><span class="p">):</span>
@@ -489,7 +495,7 @@ <h3>Navigation</h3>
489495
<li class="right" >
490496
<a href="../../py-modindex.html" title="Python Module Index"
491497
>modules</a> |</li>
492-
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.2 documentation</a> &#187;</li>
498+
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 1.0.3 documentation</a> &#187;</li>
493499
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
494500
<li class="nav-item nav-item-this"><a href="">windows.com</a></li>
495501
</ul>

docs/build/html/_modules/windows/crypto/certificate.html

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
<head>
55
<meta charset="utf-8" />
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7-
<title>windows.crypto.certificate &#8212; PythonForWindows 1.0.2 documentation</title>
7+
<title>windows.crypto.certificate &#8212; PythonForWindows 1.0.3 documentation</title>
88
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
99
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
1010
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
1111

12-
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
12+
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
1313
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
1414
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
1515

@@ -25,7 +25,7 @@ <h3>Navigation</h3>
2525
<li class="right" >
2626
<a href="../../../py-modindex.html" title="Python Module Index"
2727
>modules</a> |</li>
28-
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> &#187;</li>
28+
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> &#187;</li>
2929
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> &#187;</li>
3030
<li class="nav-item nav-item-this"><a href="">windows.crypto.certificate</a></li>
3131
</ul>
@@ -205,6 +205,17 @@ <h1>Source code for windows.crypto.certificate</h1><div class="highlight"><pre>
205205
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="bp">cls</span><span class="p">)</span></div>
206206

207207

208+
<div class="viewcode-block" id="CertificateStore.from_user_store">
209+
<a class="viewcode-back" href="../../../crypto.html#windows.crypto.CertificateStore.from_user_store">[docs]</a>
210+
<span class="nd">@classmethod</span>
211+
<span class="k">def</span> <span class="nf">from_user_store</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">store_name</span><span class="p">,</span> <span class="n">user</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
212+
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Create a new :class:`CertificateStore` from system store ``store_name``</span>
213+
<span class="sd"> (see `System Store Locations &lt;https://msdn.microsoft.com/en-us/library/windows/desktop/aa388136(v=vs.85).aspx&gt;`_)</span>
214+
<span class="sd"> &quot;&quot;&quot;</span>
215+
<span class="n">res</span> <span class="o">=</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">CertOpenStore</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">CERT_STORE_PROV_SYSTEM_A</span><span class="p">,</span> <span class="n">DEFAULT_ENCODING</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CERT_SYSTEM_STORE_CURRENT_USER</span> <span class="o">|</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CERT_STORE_READONLY_FLAG</span><span class="p">,</span> <span class="n">store_name</span><span class="p">)</span>
216+
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="bp">cls</span><span class="p">)</span></div>
217+
218+
208219
<div class="viewcode-block" id="CertificateStore.new_in_memory">
209220
<a class="viewcode-back" href="../../../crypto.html#windows.crypto.CertificateStore.new_in_memory">[docs]</a>
210221
<span class="nd">@classmethod</span>
@@ -697,7 +708,7 @@ <h3>Navigation</h3>
697708
<li class="right" >
698709
<a href="../../../py-modindex.html" title="Python Module Index"
699710
>modules</a> |</li>
700-
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> &#187;</li>
711+
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> &#187;</li>
701712
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> &#187;</li>
702713
<li class="nav-item nav-item-this"><a href="">windows.crypto.certificate</a></li>
703714
</ul>

docs/build/html/_modules/windows/debug/breakpoints.html

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
<head>
55
<meta charset="utf-8" />
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7-
<title>windows.debug.breakpoints &#8212; PythonForWindows 1.0.2 documentation</title>
7+
<title>windows.debug.breakpoints &#8212; PythonForWindows 1.0.3 documentation</title>
88
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
99
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
1010
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
1111

12-
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
12+
<script src="../../../_static/documentation_options.js?v=baaebd52"></script>
1313
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
1414
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
1515

@@ -25,7 +25,7 @@ <h3>Navigation</h3>
2525
<li class="right" >
2626
<a href="../../../py-modindex.html" title="Python Module Index"
2727
>modules</a> |</li>
28-
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> &#187;</li>
28+
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> &#187;</li>
2929
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> &#187;</li>
3030
<li class="nav-item nav-item-this"><a href="">windows.debug.breakpoints</a></li>
3131
</ul>
@@ -190,17 +190,11 @@ <h1>Source code for windows.debug.breakpoints</h1><div class="highlight"><pre>
190190
<span class="n">t</span> <span class="o">=</span> <span class="n">rt</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">cproc</span><span class="p">)</span>
191191
<span class="k">else</span><span class="p">:</span>
192192
<span class="n">t</span> <span class="o">=</span> <span class="n">rt</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
193-
194-
<span class="n">content</span> <span class="o">=</span> <span class="kc">None</span>
195-
<span class="k">try</span><span class="p">:</span>
196-
<span class="n">content</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">contents</span>
197-
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
198-
<span class="c1"># contents will fail on basic type</span>
199-
<span class="c1"># Not really an expected behavior</span>
200-
<span class="c1"># But it works for now.. (and since a while)</span>
201-
<span class="k">pass</span>
202-
<span class="k">if</span> <span class="n">content</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
203-
<span class="n">t</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">value</span>
193+
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">t</span><span class="p">,</span> <span class="s2">&quot;contents&quot;</span><span class="p">):</span>
194+
<span class="k">try</span><span class="p">:</span>
195+
<span class="n">t</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">value</span>
196+
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
197+
<span class="k">pass</span>
204198
<span class="n">res</span><span class="p">[</span><span class="n">name</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">t</span>
205199
<span class="k">return</span> <span class="n">res</span>
206200

@@ -365,7 +359,7 @@ <h3>Navigation</h3>
365359
<li class="right" >
366360
<a href="../../../py-modindex.html" title="Python Module Index"
367361
>modules</a> |</li>
368-
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> &#187;</li>
362+
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.3 documentation</a> &#187;</li>
369363
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> &#187;</li>
370364
<li class="nav-item nav-item-this"><a href="">windows.debug.breakpoints</a></li>
371365
</ul>

0 commit comments

Comments
 (0)