winapi_ui_automation/um/
dpapi.rs1use shared::minwindef::{BOOL, BYTE, DWORD, LPVOID};
8use shared::windef::HWND;
9use um::wincrypt::DATA_BLOB;
10use um::winnt::{LPCWSTR, LPWSTR, PSID, PVOID};
11pub const szFORCE_KEY_PROTECTION: &'static str = "ForceKeyProtection";
12pub const dwFORCE_KEY_PROTECTION_DISABLED: DWORD = 0x0;
13pub const dwFORCE_KEY_PROTECTION_USER_SELECT: DWORD = 0x1;
14pub const dwFORCE_KEY_PROTECTION_HIGH: DWORD = 0x2;
15STRUCT!{struct CRYPTPROTECT_PROMPTSTRUCT {
16 cbSize: DWORD,
17 dwPromptFlags: DWORD,
18 hwndApp: HWND,
19 szPrompt: LPCWSTR,
20}}
21pub type PCRYPTPROTECT_PROMPTSTRUCT = *mut CRYPTPROTECT_PROMPTSTRUCT;
22pub const CRYPTPROTECT_PROMPT_ON_UNPROTECT: DWORD = 0x1;
23pub const CRYPTPROTECT_PROMPT_ON_PROTECT: DWORD = 0x2;
24pub const CRYPTPROTECT_PROMPT_RESERVED: DWORD = 0x04;
25pub const CRYPTPROTECT_PROMPT_STRONG: DWORD = 0x08;
26pub const CRYPTPROTECT_PROMPT_REQUIRE_STRONG: DWORD = 0x10;
27pub const CRYPTPROTECT_UI_FORBIDDEN: DWORD = 0x1;
28pub const CRYPTPROTECT_LOCAL_MACHINE: DWORD = 0x4;
29pub const CRYPTPROTECT_CRED_SYNC: DWORD = 0x8;
30pub const CRYPTPROTECT_AUDIT: DWORD = 0x10;
31pub const CRYPTPROTECT_NO_RECOVERY: DWORD = 0x20;
32pub const CRYPTPROTECT_VERIFY_PROTECTION: DWORD = 0x40;
33pub const CRYPTPROTECT_CRED_REGENERATE: DWORD = 0x80;
34pub const CRYPTPROTECT_FIRST_RESERVED_FLAGVAL: DWORD = 0x0FFFFFFF;
35pub const CRYPTPROTECT_LAST_RESERVED_FLAGVAL: DWORD = 0xFFFFFFFF;
36extern "system" {
37 pub fn CryptProtectData(
38 pDataIn: *mut DATA_BLOB,
39 szDataDescr: LPCWSTR,
40 pOptionalEntropy: *mut DATA_BLOB,
41 pvReserved: PVOID,
42 pPromptStruct: *mut CRYPTPROTECT_PROMPTSTRUCT,
43 dwFlags: DWORD,
44 pDataOut: *mut DATA_BLOB,
45 ) -> BOOL;
46 pub fn CryptUnprotectData(
47 pDataIn: *mut DATA_BLOB,
48 ppszDataDescr: *mut LPWSTR,
49 pOptionalEntropy: *mut DATA_BLOB,
50 pvReserved: PVOID,
51 pPromptStruct: *mut CRYPTPROTECT_PROMPTSTRUCT,
52 dwFlags: DWORD,
53 pDataOut: *mut DATA_BLOB,
54 ) -> BOOL;
55 pub fn CryptProtectDataNoUI(
56 pDataIn: *mut DATA_BLOB,
57 szDataDescr: LPCWSTR,
58 pOptionalEntropy: *mut DATA_BLOB,
59 pvReserved: PVOID,
60 pPromptStruct: *mut CRYPTPROTECT_PROMPTSTRUCT,
61 dwFlags: DWORD,
62 pbOptionalPassword: *const BYTE,
63 cbOptionalPassword: DWORD,
64 pDataOut: *mut DATA_BLOB,
65 ) -> BOOL;
66 pub fn CryptUnprotectDataNoUI(
67 pDataIn: *mut DATA_BLOB,
68 ppszDataDescr: *mut LPWSTR,
69 pOptionalEntropy: *mut DATA_BLOB,
70 pvReserved: PVOID,
71 pPromptStruct: *mut CRYPTPROTECT_PROMPTSTRUCT,
72 dwFlags: DWORD,
73 pbOptionalPassword: *const BYTE,
74 cbOptionalPassword: DWORD,
75 pDataOut: *mut DATA_BLOB,
76 ) -> BOOL;
77 pub fn CryptUpdateProtectedState(
78 pOldSid: PSID,
79 pwszOldPassword: LPCWSTR,
80 dwFlags: DWORD,
81 pdwSuccessCount: *mut DWORD,
82 pdwFailureCount: *mut DWORD,
83 ) -> BOOL;
84}
85pub const CRYPTPROTECTMEMORY_BLOCK_SIZE: DWORD = 16;
86pub const CRYPTPROTECTMEMORY_SAME_PROCESS: DWORD = 0x00;
87pub const CRYPTPROTECTMEMORY_CROSS_PROCESS: DWORD = 0x01;
88pub const CRYPTPROTECTMEMORY_SAME_LOGON: DWORD = 0x02;
89extern "system" {
90 pub fn CryptProtectMemory(
91 pDataIn: LPVOID,
92 cbDataIn: DWORD,
93 dwFlags: DWORD,
94 ) -> BOOL;
95 pub fn CryptUnprotectMemory(
96 pDataIn: LPVOID,
97 cbDataIn: DWORD,
98 dwFlags: DWORD,
99 ) -> BOOL;
100}