| // Licensed under the Apache License, Version 2.0 |
| // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
| // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. |
| // All files in the project carrying such notice may not be copied, modified, or distributed |
| // except according to those terms. |
| //! Data Protection API Prototypes and Definitions |
| use shared::minwindef::{BOOL, BYTE, DWORD, LPVOID}; |
| use shared::windef::HWND; |
| use um::wincrypt::DATA_BLOB; |
| use um::winnt::{LPCWSTR, LPWSTR, PSID, PVOID}; |
| pub const szFORCE_KEY_PROTECTION: &'static str = "ForceKeyProtection"; |
| pub const dwFORCE_KEY_PROTECTION_DISABLED: DWORD = 0x0; |
| pub const dwFORCE_KEY_PROTECTION_USER_SELECT: DWORD = 0x1; |
| pub const dwFORCE_KEY_PROTECTION_HIGH: DWORD = 0x2; |
| STRUCT!{struct CRYPTPROTECT_PROMPTSTRUCT { |
| cbSize: DWORD, |
| dwPromptFlags: DWORD, |
| hwndApp: HWND, |
| szPrompt: LPCWSTR, |
| }} |
| pub type PCRYPTPROTECT_PROMPTSTRUCT = *mut CRYPTPROTECT_PROMPTSTRUCT; |
| pub const CRYPTPROTECT_PROMPT_ON_UNPROTECT: DWORD = 0x1; |
| pub const CRYPTPROTECT_PROMPT_ON_PROTECT: DWORD = 0x2; |
| pub const CRYPTPROTECT_PROMPT_RESERVED: DWORD = 0x04; |
| pub const CRYPTPROTECT_PROMPT_STRONG: DWORD = 0x08; |
| pub const CRYPTPROTECT_PROMPT_REQUIRE_STRONG: DWORD = 0x10; |
| pub const CRYPTPROTECT_UI_FORBIDDEN: DWORD = 0x1; |
| pub const CRYPTPROTECT_LOCAL_MACHINE: DWORD = 0x4; |
| pub const CRYPTPROTECT_CRED_SYNC: DWORD = 0x8; |
| pub const CRYPTPROTECT_AUDIT: DWORD = 0x10; |
| pub const CRYPTPROTECT_NO_RECOVERY: DWORD = 0x20; |
| pub const CRYPTPROTECT_VERIFY_PROTECTION: DWORD = 0x40; |
| pub const CRYPTPROTECT_CRED_REGENERATE: DWORD = 0x80; |
| pub const CRYPTPROTECT_FIRST_RESERVED_FLAGVAL: DWORD = 0x0FFFFFFF; |
| pub const CRYPTPROTECT_LAST_RESERVED_FLAGVAL: DWORD = 0xFFFFFFFF; |
| extern "system" { |
| pub fn CryptProtectData( |
| pDataIn: *mut DATA_BLOB, |
| szDataDescr: LPCWSTR, |
| pOptionalEntropy: *mut DATA_BLOB, |
| pvReserved: PVOID, |
| pPromptStruct: *mut CRYPTPROTECT_PROMPTSTRUCT, |
| dwFlags: DWORD, |
| pDataOut: *mut DATA_BLOB, |
| ) -> BOOL; |
| pub fn CryptUnprotectData( |
| pDataIn: *mut DATA_BLOB, |
| ppszDataDescr: *mut LPWSTR, |
| pOptionalEntropy: *mut DATA_BLOB, |
| pvReserved: PVOID, |
| pPromptStruct: *mut CRYPTPROTECT_PROMPTSTRUCT, |
| dwFlags: DWORD, |
| pDataOut: *mut DATA_BLOB, |
| ) -> BOOL; |
| pub fn CryptProtectDataNoUI( |
| pDataIn: *mut DATA_BLOB, |
| szDataDescr: LPCWSTR, |
| pOptionalEntropy: *mut DATA_BLOB, |
| pvReserved: PVOID, |
| pPromptStruct: *mut CRYPTPROTECT_PROMPTSTRUCT, |
| dwFlags: DWORD, |
| pbOptionalPassword: *const BYTE, |
| cbOptionalPassword: DWORD, |
| pDataOut: *mut DATA_BLOB, |
| ) -> BOOL; |
| pub fn CryptUnprotectDataNoUI( |
| pDataIn: *mut DATA_BLOB, |
| ppszDataDescr: *mut LPWSTR, |
| pOptionalEntropy: *mut DATA_BLOB, |
| pvReserved: PVOID, |
| pPromptStruct: *mut CRYPTPROTECT_PROMPTSTRUCT, |
| dwFlags: DWORD, |
| pbOptionalPassword: *const BYTE, |
| cbOptionalPassword: DWORD, |
| pDataOut: *mut DATA_BLOB, |
| ) -> BOOL; |
| pub fn CryptUpdateProtectedState( |
| pOldSid: PSID, |
| pwszOldPassword: LPCWSTR, |
| dwFlags: DWORD, |
| pdwSuccessCount: *mut DWORD, |
| pdwFailureCount: *mut DWORD, |
| ) -> BOOL; |
| } |
| pub const CRYPTPROTECTMEMORY_BLOCK_SIZE: DWORD = 16; |
| pub const CRYPTPROTECTMEMORY_SAME_PROCESS: DWORD = 0x00; |
| pub const CRYPTPROTECTMEMORY_CROSS_PROCESS: DWORD = 0x01; |
| pub const CRYPTPROTECTMEMORY_SAME_LOGON: DWORD = 0x02; |
| extern "system" { |
| pub fn CryptProtectMemory( |
| pDataIn: LPVOID, |
| cbDataIn: DWORD, |
| dwFlags: DWORD, |
| ) -> BOOL; |
| pub fn CryptUnprotectMemory( |
| pDataIn: LPVOID, |
| cbDataIn: DWORD, |
| dwFlags: DWORD, |
| ) -> BOOL; |
| } |