1 use shared::guiddef::GUID; 2 use shared::minwindef::{BYTE, DWORD, LPVOID}; 3 use shared::ntdef::{HANDLE, LONG, LPCWSTR, LPWSTR, WCHAR}; 4 use shared::windef::HWND; 5 use um::wincrypt::{CRYPT_DATA_BLOB, PCERT_STRONG_SIGN_PARA}; 6 //90 7 pub const WTD_UI_ALL: DWORD = 1; 8 pub const WTD_UI_NONE: DWORD = 2; 9 pub const WTD_UI_NOBAD: DWORD = 3; 10 pub const WTD_UI_NOGOOD: DWORD = 4; 11 pub const WTD_REVOKE_NONE: DWORD = 0x00000000; 12 pub const WTD_REVOKE_WHOLECHAIN: DWORD = 0x00000001; 13 pub const WTD_CHOICE_FILE: DWORD = 1; 14 pub const WTD_CHOICE_CATALOG: DWORD = 2; 15 pub const WTD_CHOICE_BLOB: DWORD = 3; 16 pub const WTD_CHOICE_SIGNER: DWORD = 4; 17 pub const WTD_CHOICE_CERT: DWORD = 5; 18 pub const WTD_STATEACTION_IGNORE: DWORD = 0x00000000; 19 pub const WTD_STATEACTION_VERIFY: DWORD = 0x00000001; 20 pub const WTD_STATEACTION_CLOSE: DWORD = 0x00000002; 21 pub const WTD_STATEACTION_AUTO_CACHE: DWORD = 0x00000003; 22 pub const WTD_STATEACTION_AUTO_CACHE_FLUSH: DWORD = 0x00000004; 23 pub const WTD_PROV_FLAGS_MASK: DWORD = 0x0000FFFF; 24 pub const WTD_USE_IE4_TRUST_FLAG: DWORD = 0x00000001; 25 pub const WTD_NO_IE4_CHAIN_FLAG: DWORD = 0x00000002; 26 pub const WTD_NO_POLICY_USAGE_FLAG: DWORD = 0x00000004; 27 pub const WTD_REVOCATION_CHECK_NONE: DWORD = 0x00000010; 28 pub const WTD_REVOCATION_CHECK_END_CERT: DWORD = 0x00000020; 29 pub const WTD_REVOCATION_CHECK_CHAIN: DWORD = 0x00000040; 30 pub const WTD_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT: DWORD = 0x00000080; 31 pub const WTD_SAFER_FLAG: DWORD = 0x00000100; 32 pub const WTD_HASH_ONLY_FLAG: DWORD = 0x00000200; 33 pub const WTD_USE_DEFAULT_OSVER_CHECK: DWORD = 0x00000400; 34 pub const WTD_LIFETIME_SIGNING_FLAG: DWORD = 0x00000800; 35 pub const WTD_CACHE_ONLY_URL_RETRIEVAL: DWORD = 0x00001000; 36 pub const WTD_DISABLE_MD2_MD4: DWORD = 0x00002000; 37 pub const WTD_MOTW: DWORD = 0x00004000; 38 pub const WTD_CODE_INTEGRITY_DRIVER_MODE: DWORD = 0x00008000; 39 pub const WTD_UICONTEXT_EXECUTE: DWORD = 0; 40 pub const WTD_UICONTEXT_INSTALL: DWORD = 1; 41 STRUCT!{struct WINTRUST_DATA { 42 cbStruct: DWORD, 43 pPolicyCallbackData: LPVOID, 44 pSIPClientData: LPVOID, 45 dwUIChoice: DWORD, 46 fdwRevocationChecks: DWORD, 47 dwUnionChoice: DWORD, 48 u: WINTRUST_DATA_u, 49 dwStateAction: DWORD, 50 hWVTStateData: HANDLE, 51 pwszURLReference: *mut WCHAR, 52 dwProvFlags: DWORD, 53 dwUIContext: DWORD, 54 pSignatureSettings: *mut WINTRUST_SIGNATURE_SETTINGS, 55 }} 56 UNION!{union WINTRUST_DATA_u { 57 [usize; 1], 58 pFile pFile_mut: *mut WINTRUST_FILE_INFO, 59 // pCatalog pCatalog_mut: *mut WINTRUST_CATALOG_INFO, 60 // pBlob pBlob_mut: *mut WINTRUST_BLOB_INFO, 61 // pSgnr pSgnr_mut: *mut WINTRUST_SGNR_INFO, 62 // pCert pCert_mut: *mut WINTRUST_CERT_INFO, 63 }} 64 pub type PWINTRUST_DATA = *mut WINTRUST_DATA; 65 STRUCT!{struct WINTRUST_SIGNATURE_SETTINGS { 66 cbStruct: DWORD, 67 dwIndex: DWORD, 68 dwFlags: DWORD, 69 cSecondarySigs: DWORD, 70 dwVerifiedSigIndex: DWORD, 71 pCryptoPolicy: PCERT_STRONG_SIGN_PARA, 72 }} 73 pub type PWINTRUST_SIGNATURE_SETTINGS = *mut WINTRUST_SIGNATURE_SETTINGS; 74 //217 75 STRUCT! {struct WINTRUST_FILE_INFO { 76 cbStruct: DWORD, 77 pcwszFilePath: LPCWSTR, 78 hFile: HANDLE, 79 pgKnownSubject: *const GUID, 80 }} 81 //414 82 extern "system" { WinVerifyTrust(hwnd: HWND, pgActionID: *mut GUID, pWVTData: LPVOID) -> LONG83 pub fn WinVerifyTrust(hwnd: HWND, pgActionID: *mut GUID, pWVTData: LPVOID) -> LONG; 84 } 85 //1246 86 pub const SPC_UUID_LENGTH: usize = 16; 87 pub type SPC_UUID = [BYTE; SPC_UUID_LENGTH]; 88 //SpcSerializedObjectAttributesClassId 89 STRUCT!{struct SPC_SERIALIZED_OBJECT { 90 ClassId: SPC_UUID, 91 SerializedData: CRYPT_DATA_BLOB, 92 }} 93 pub type PSPC_SERIALIZED_OBJECT = *mut SPC_SERIALIZED_OBJECT; 94 STRUCT!{struct SPC_SIGINFO { 95 dwSipVersion: DWORD, 96 gSIPGuid: GUID, 97 dwReserved1: DWORD, 98 dwReserved2: DWORD, 99 dwReserved3: DWORD, 100 dwReserved4: DWORD, 101 dwReserved5: DWORD, 102 }} 103 pub type PSPC_SIGINFO = *mut SPC_SIGINFO; 104 pub const SPC_URL_LINK_CHOICE: DWORD = 1; 105 pub const SPC_MONIKER_LINK_CHOICE: DWORD = 2; 106 pub const SPC_FILE_LINK_CHOICE: DWORD = 3; 107 STRUCT!{struct SPC_LINK { 108 dwLinkChoice: DWORD, 109 u: SPC_LINK_u, 110 }} 111 UNION!{union SPC_LINK_u { 112 [u32; 6] [u64; 4], 113 pwszUrl pwszUrl_mut: LPWSTR, 114 Moniker Moniker_mut: SPC_SERIALIZED_OBJECT, 115 pwszFile pwszFile_mut: LPWSTR, 116 }} 117 pub type PSPC_LINK = *mut SPC_LINK; 118 //1337 119 STRUCT!{struct SPC_SP_OPUS_INFO { 120 pwszProgramName: LPCWSTR, 121 pMoreInfo: *mut SPC_LINK, 122 pPublisherInfo: *mut SPC_LINK, 123 }} 124