diff --git a/ctypes_generation/definitions/windef.txt b/ctypes_generation/definitions/windef.txt index caeff2c..57a0853 100644 --- a/ctypes_generation/definitions/windef.txt +++ b/ctypes_generation/definitions/windef.txt @@ -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 \ No newline at end of file diff --git a/docs/source/windef_generated.rst b/docs/source/windef_generated.rst index 96c385f..264ecb4 100644 --- a/docs/source/windef_generated.rst +++ b/docs/source/windef_generated.rst @@ -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 diff --git a/tests/test_wintrust.py b/tests/test_wintrust.py new file mode 100644 index 0000000..58a67c1 --- /dev/null +++ b/tests/test_wintrust.py @@ -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 \ No newline at end of file diff --git a/windows/generated_def/windef.py b/windows/generated_def/windef.py index 09006d1..db41fd9 100644 --- a/windows/generated_def/windef.py +++ b/windows/generated_def/windef.py @@ -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) diff --git a/windows/wintrust.py b/windows/wintrust.py index 8abf97c..93c9f95 100644 --- a/windows/wintrust.py +++ b/windows/wintrust.py @@ -7,42 +7,10 @@ import windows.generated_def as gdef from windows.generated_def.winstructs import * -IID_PACK = "