Home | History | Annotate | Download | only in include
      1 /**
      2  * This file is part of the mingw-w64 runtime package.
      3  * No warranty is given; refer to the file DISCLAIMER within this package.
      4  */
      5 
      6 #ifndef __DPAPI_H__
      7 #define __DPAPI_H__
      8 
      9 #ifndef DPAPI_IMP
     10 #define DPAPI_IMP DECLSPEC_IMPORT
     11 #endif
     12 
     13 #ifdef __cplusplus
     14 extern "C" {
     15 #endif
     16 
     17 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
     18 
     19 #define CRYPTPROTECT_DEFAULT_PROVIDER { 0xdf9d8cd0, 0x1501, 0x11d1,{ 0x8c, 0x7a, 0x00, 0xc0, 0x4f, 0xc2, 0x97, 0xeb } }
     20 
     21 #define szFORCE_KEY_PROTECTION "ForceKeyProtection"
     22 
     23 #define dwFORCE_KEY_PROTECTION_DISABLED 0x0
     24 #define dwFORCE_KEY_PROTECTION_USER_SELECT 0x1
     25 #define dwFORCE_KEY_PROTECTION_HIGH 0x2
     26 
     27 #define CRYPTPROTECT_PROMPT_ON_UNPROTECT 0x1
     28 #define CRYPTPROTECT_PROMPT_ON_PROTECT 0x2
     29 #define CRYPTPROTECT_PROMPT_RESERVED 0x04
     30 #define CRYPTPROTECT_PROMPT_STRONG 0x08
     31 #define CRYPTPROTECT_PROMPT_REQUIRE_STRONG 0x10
     32 
     33 #define CRYPTPROTECT_UI_FORBIDDEN 0x1
     34 #define CRYPTPROTECT_LOCAL_MACHINE 0x4
     35 #define CRYPTPROTECT_CRED_SYNC 0x8
     36 #define CRYPTPROTECT_AUDIT 0x10
     37 #define CRYPTPROTECT_NO_RECOVERY 0x20
     38 #define CRYPTPROTECT_VERIFY_PROTECTION 0x40
     39 #define CRYPTPROTECT_CRED_REGENERATE 0x80
     40 
     41 #define CRYPTPROTECT_FIRST_RESERVED_FLAGVAL 0x0fffffff
     42 #define CRYPTPROTECT_LAST_RESERVED_FLAGVAL 0xffffffff
     43 
     44 #define CRYPTPROTECTMEMORY_BLOCK_SIZE 16
     45 
     46 #define CRYPTPROTECTMEMORY_SAME_PROCESS 0x0
     47 #define CRYPTPROTECTMEMORY_CROSS_PROCESS 0x1
     48 #define CRYPTPROTECTMEMORY_SAME_LOGON 0x2
     49 
     50 #ifndef CRYPTO_BLOBS_DEFINED
     51 #define CRYPTO_BLOBS_DEFINED
     52   typedef struct _CRYPTOAPI_BLOB {
     53     DWORD cbData;
     54     BYTE *pbData;
     55   } CRYPT_INTEGER_BLOB,*PCRYPT_INTEGER_BLOB;
     56 
     57   typedef CRYPT_INTEGER_BLOB CERT_BLOB,*PCERT_BLOB;
     58   typedef CRYPT_INTEGER_BLOB CERT_NAME_BLOB,*PCERT_NAME_BLOB;
     59   typedef CRYPT_INTEGER_BLOB CERT_RDN_VALUE_BLOB,*PCERT_RDN_VALUE_BLOB;
     60   typedef CRYPT_INTEGER_BLOB CRL_BLOB,*PCRL_BLOB;
     61   typedef CRYPT_INTEGER_BLOB CRYPT_ATTR_BLOB,*PCRYPT_ATTR_BLOB;
     62   typedef CRYPT_INTEGER_BLOB CRYPT_DATA_BLOB,*PCRYPT_DATA_BLOB;
     63   typedef CRYPT_INTEGER_BLOB CRYPT_DER_BLOB,*PCRYPT_DER_BLOB;
     64   typedef CRYPT_INTEGER_BLOB CRYPT_DIGEST_BLOB,*PCRYPT_DIGEST_BLOB;
     65   typedef CRYPT_INTEGER_BLOB CRYPT_HASH_BLOB,*PCRYPT_HASH_BLOB;
     66   typedef CRYPT_INTEGER_BLOB CRYPT_OBJID_BLOB,*PCRYPT_OBJID_BLOB;
     67   typedef CRYPT_INTEGER_BLOB CRYPT_UINT_BLOB,*PCRYPT_UINT_BLOB;
     68   typedef CRYPT_INTEGER_BLOB DATA_BLOB,*PDATA_BLOB;
     69 #endif
     70 
     71   typedef struct _CRYPTPROTECT_PROMPTSTRUCT {
     72     DWORD cbSize;
     73     DWORD dwPromptFlags;
     74     HWND hwndApp;
     75     LPCWSTR szPrompt;
     76   } CRYPTPROTECT_PROMPTSTRUCT,*PCRYPTPROTECT_PROMPTSTRUCT;
     77 
     78   DPAPI_IMP WINBOOL WINAPI CryptProtectData (DATA_BLOB *pDataIn, LPCWSTR szDataDescr, DATA_BLOB *pOptionalEntropy, PVOID pvReserved, CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct, DWORD dwFlags, DATA_BLOB *pDataOut);
     79   DPAPI_IMP WINBOOL WINAPI CryptUnprotectData (DATA_BLOB *pDataIn, LPWSTR *ppszDataDescr, DATA_BLOB *pOptionalEntropy, PVOID pvReserved, CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct, DWORD dwFlags, DATA_BLOB *pDataOut);
     80   DPAPI_IMP WINBOOL WINAPI CryptProtectMemory (LPVOID pDataIn, DWORD cbDataIn, DWORD dwFlags);
     81   DPAPI_IMP WINBOOL WINAPI CryptUnprotectMemory (LPVOID pDataIn, DWORD cbDataIn, DWORD dwFlags);
     82 #if NTDDI_VERSION >= 0x06020000
     83   WINBOOL WINAPI CryptProtectDataNoUI (DATA_BLOB *pDataIn, LPCWSTR szDataDescr, DATA_BLOB *pOptionalEntropy, PVOID pvReserved, CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct, DWORD dwFlags, const BYTE *pbOptionalPassword, DWORD cbOptionalPassword, DATA_BLOB *pDataOut);
     84   WINBOOL WINAPI CryptUnprotectDataNoUI (DATA_BLOB *pDataIn, LPWSTR *ppszDataDescr, DATA_BLOB *pOptionalEntropy, PVOID pvReserved, CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct, DWORD dwFlags, const BYTE *pbOptionalPassword, DWORD cbOptionalPassword, DATA_BLOB *pDataOut);
     85 #endif
     86 #if NTDDI_VERSION >= 0x06000000
     87   DPAPI_IMP WINBOOL WINAPI CryptUpdateProtectedState (PSID pOldSid, LPCWSTR pwszOldPassword, DWORD dwFlags, DWORD *pdwSuccessCount, DWORD *pdwFailureCount);
     88 #endif
     89 
     90 #endif
     91 
     92 #ifdef __cplusplus
     93 }
     94 #endif
     95 
     96 #endif
     97