clean wintrust.py: add def to generated_ctypes + use gdef.IID for wintrust IID

This commit is contained in:
Clement Rouault
2017-11-10 14:40:16 +01:00
parent 4e5733c2c5
commit 7929a31bf7
5 changed files with 79 additions and 35 deletions
+21
View File
@@ -950,3 +950,24 @@
#define CERT_STORE_CERTIFICATE_CONTEXT 1
#define CERT_STORE_CRL_CONTEXT 2
#define CERT_STORE_CTL_CONTEXT 3
#define WTD_UI_ALL 1
#define WTD_UI_NONE 2
#define WTD_UI_NOBAD 3
#define WTD_UI_NOGOOD 4
#define WTD_REVOKE_NONE 0x00000000
#define WTD_REVOKE_WHOLECHAIN 0x00000001
#define WTD_CHOICE_FILE 1
#define WTD_CHOICE_CATALOG 2
#define WTD_CHOICE_BLOB 3
#define WTD_CHOICE_SIGNER 4
#define WTD_CHOICE_CERT 5
#define WTD_STATEACTION_IGNORE 0x00000000
#define WTD_STATEACTION_VERIFY 0x00000001
#define WTD_STATEACTION_CLOSE 0x00000002
#define WTD_STATEACTION_AUTO_CACHE 0x00000003
#define WTD_STATEACTION_AUTO_CACHE_FLUSH 0x00000004
+16
View File
@@ -817,6 +817,22 @@ Windef
.. autodata:: CERT_STORE_CERTIFICATE_CONTEXT
.. autodata:: CERT_STORE_CRL_CONTEXT
.. autodata:: CERT_STORE_CTL_CONTEXT
.. autodata:: WTD_UI_ALL
.. autodata:: WTD_UI_NONE
.. autodata:: WTD_UI_NOBAD
.. autodata:: WTD_UI_NOGOOD
.. autodata:: WTD_REVOKE_NONE
.. autodata:: WTD_REVOKE_WHOLECHAIN
.. autodata:: WTD_CHOICE_FILE
.. autodata:: WTD_CHOICE_CATALOG
.. autodata:: WTD_CHOICE_BLOB
.. autodata:: WTD_CHOICE_SIGNER
.. autodata:: WTD_CHOICE_CERT
.. autodata:: WTD_STATEACTION_IGNORE
.. autodata:: WTD_STATEACTION_VERIFY
.. autodata:: WTD_STATEACTION_CLOSE
.. autodata:: WTD_STATEACTION_AUTO_CACHE
.. autodata:: WTD_STATEACTION_AUTO_CACHE_FLUSH
.. autodata:: CERT_QUERY_OBJECT_FILE
.. autodata:: CERT_QUERY_OBJECT_BLOB
.. autodata:: CERT_QUERY_CONTENT_CERT
+23
View File
@@ -0,0 +1,23 @@
import sys
import pytest
import windows
import windows.generated_def as gdef
from pfwtest import *
pytestmark = pytest.mark.usefixtures('check_for_gc_garbage')
def test_script_file_not_signed():
assert not windows.wintrust.is_signed(__file__)
assert windows.wintrust.check_signature(__file__) == gdef.TRUST_E_SUBJECT_FORM_UNKNOWN
def test_python_not_signed():
python_path = sys.executable
assert not windows.wintrust.is_signed(python_path)
assert windows.wintrust.check_signature(python_path) == gdef.TRUST_E_NOSIGNATURE
def test_kernel32_signed():
k32_path = r"C:\windows\system32\kernel32.dll"
assert windows.wintrust.is_signed(k32_path)
assert windows.wintrust.check_signature(k32_path) == 0
+16
View File
@@ -873,6 +873,22 @@ MAXIMUM_ALLOWED = make_flag("MAXIMUM_ALLOWED", ( 0x02000000 ))
CERT_STORE_CERTIFICATE_CONTEXT = make_flag("CERT_STORE_CERTIFICATE_CONTEXT", 1)
CERT_STORE_CRL_CONTEXT = make_flag("CERT_STORE_CRL_CONTEXT", 2)
CERT_STORE_CTL_CONTEXT = make_flag("CERT_STORE_CTL_CONTEXT", 3)
WTD_UI_ALL = make_flag("WTD_UI_ALL", 1)
WTD_UI_NONE = make_flag("WTD_UI_NONE", 2)
WTD_UI_NOBAD = make_flag("WTD_UI_NOBAD", 3)
WTD_UI_NOGOOD = make_flag("WTD_UI_NOGOOD", 4)
WTD_REVOKE_NONE = make_flag("WTD_REVOKE_NONE", 0x00000000)
WTD_REVOKE_WHOLECHAIN = make_flag("WTD_REVOKE_WHOLECHAIN", 0x00000001)
WTD_CHOICE_FILE = make_flag("WTD_CHOICE_FILE", 1)
WTD_CHOICE_CATALOG = make_flag("WTD_CHOICE_CATALOG", 2)
WTD_CHOICE_BLOB = make_flag("WTD_CHOICE_BLOB", 3)
WTD_CHOICE_SIGNER = make_flag("WTD_CHOICE_SIGNER", 4)
WTD_CHOICE_CERT = make_flag("WTD_CHOICE_CERT", 5)
WTD_STATEACTION_IGNORE = make_flag("WTD_STATEACTION_IGNORE", 0x00000000)
WTD_STATEACTION_VERIFY = make_flag("WTD_STATEACTION_VERIFY", 0x00000001)
WTD_STATEACTION_CLOSE = make_flag("WTD_STATEACTION_CLOSE", 0x00000002)
WTD_STATEACTION_AUTO_CACHE = make_flag("WTD_STATEACTION_AUTO_CACHE", 0x00000003)
WTD_STATEACTION_AUTO_CACHE_FLUSH = make_flag("WTD_STATEACTION_AUTO_CACHE_FLUSH", 0x00000004)
CERT_QUERY_OBJECT_FILE = make_flag("CERT_QUERY_OBJECT_FILE", 0x00000001)
CERT_QUERY_OBJECT_BLOB = make_flag("CERT_QUERY_OBJECT_BLOB", 0x00000002)
CERT_QUERY_CONTENT_CERT = make_flag("CERT_QUERY_CONTENT_CERT", 1)
+3 -35
View File
@@ -7,42 +7,10 @@ import windows.generated_def as gdef
from windows.generated_def.winstructs import *
IID_PACK = "<I", "<H", "<H", "<B", "<B", "<B", "<B", "<B", "<B", "<B", "<B"
def get_IID_from_raw(raw):
s = "".join([struct.pack(i, j) for i, j in zip(IID_PACK, raw)])
return ctypes.create_string_buffer(s)
WINTRUST_ACTION_GENERIC_VERIFY_V2_RAW = (0xaac56b, 0xcd44, 0x11d0,
0x8c, 0xc2, 0x0, 0xc0, 0x4f, 0xc2, 0x95, 0xee)
WINTRUST_ACTION_GENERIC_VERIFY_V2_STR = get_IID_from_raw(WINTRUST_ACTION_GENERIC_VERIFY_V2_RAW)
# Otherwise there is a problem with `Data4` of `type c_char_Array_8` containing 0x00 (0x8c, 0xc2, 0x0, 0xc0, 0x4f, 0xc2, 0x95, 0xee)
WINTRUST_ACTION_GENERIC_VERIFY_V2 = GUID.from_address(ctypes.addressof(WINTRUST_ACTION_GENERIC_VERIFY_V2_STR))
DRIVER_ACTION_VERIFY_RAW = 0xf750e6c3, 0x38ee, 0x11d1, 0x85, 0xe5, 0x0, 0xc0, 0x4f, 0xc2, 0x95, 0xee
DRIVER_ACTION_VERIFY_STR = get_IID_from_raw(DRIVER_ACTION_VERIFY_RAW)
DRIVER_ACTION_VERIFY = GUID.from_address(ctypes.addressof(DRIVER_ACTION_VERIFY_STR))
WTD_UI_ALL = 1
WTD_UI_NONE = 2
WTD_UI_NOBAD = 3
WTD_UI_NOGOOD = 4
WTD_REVOKE_NONE = 0x00000000
WTD_REVOKE_WHOLECHAIN = 0x00000001
WTD_CHOICE_FILE = 1
WTD_CHOICE_CATALOG = 2
WTD_CHOICE_BLOB = 3
WTD_CHOICE_SIGNER = 4
WTD_CHOICE_CERT = 5
WTD_STATEACTION_IGNORE = 0x00000000
WTD_STATEACTION_VERIFY = 0x00000001
WTD_STATEACTION_CLOSE = 0x00000002
WTD_STATEACTION_AUTO_CACHE = 0x00000003
WTD_STATEACTION_AUTO_CACHE_FLUSH = 0x00000004
# From: um/SoftPub.h
WINTRUST_ACTION_GENERIC_VERIFY_V2 = gdef.IID.from_string("00AAC56B-CD44-11d0-8CC2-00C04FC295EE")
DRIVER_ACTION_VERIFY = gdef.IID.from_string("F750E6C3-38EE-11d1-85E5-00C04FC295EE")
wintrust_know_return_value = [
TRUST_E_PROVIDER_UNKNOWN,