| /** |
| * This file has no copyright assigned and is placed in the Public Domain. |
| * This file is part of the mingw-w64 runtime package. |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| */ |
| #ifndef _INC_NCRYPT |
| #define _INC_NCRYPT |
| #if (_WIN32_WINNT >= 0x0600) |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #define NCRYPTBUFFER_SSL_CLIENT_RANDOM 20 |
| #define NCRYPTBUFFER_SSL_SERVER_RANDOM 21 |
| #define NCRYPTBUFFER_SSL_HIGHEST_VERSION 22 |
| #define NCRYPTBUFFER_SSL_CLEAR_KEY 23 |
| #define NCRYPTBUFFER_SSL_KEY_ARG_DATA 24 |
| #define NCRYPTBUFFER_PKCS_OID 40 |
| #define NCRYPTBUFFER_PKCS_ALG_OID 41 |
| #define NCRYPTBUFFER_PKCS_ALG_PARAM 42 |
| #define NCRYPTBUFFER_PKCS_ALG_ID 43 |
| #define NCRYPTBUFFER_PKCS_ATTRS 44 |
| #define NCRYPTBUFFER_PKCS_KEY_NAME 45 |
| #define NCRYPTBUFFER_PKCS_SECRET 46 |
| #define NCRYPTBUFFER_CERT_BLOB 47 |
| |
| #ifndef __SECSTATUS_DEFINED__ |
| typedef LONG SECURITY_STATUS; |
| #define __SECSTATUS_DEFINED__ |
| #endif |
| |
| #ifndef __NCRYPT_KEY_HANDLE__ |
| #define __NCRYPT_KEY_HANDLE__ |
| /*in wincrypt.h too*/ |
| typedef ULONG_PTR NCRYPT_KEY_HANDLE; |
| #endif |
| |
| typedef ULONG_PTR NCRYPT_PROV_HANDLE; |
| typedef ULONG_PTR NCRYPT_SECRET_HANDLE; |
| typedef ULONG_PTR NCRYPT_HANDLE; |
| |
| #ifndef __HCRYPTKEY__ |
| #define __HCRYPTKEY__ |
| /* In wincrypt.h too */ |
| typedef ULONG_PTR HCRYPTPROV; |
| typedef ULONG_PTR HCRYPTKEY; |
| #endif |
| |
| typedef struct _NCryptBuffer { |
| ULONG cbBuffer; |
| ULONG BufferType; |
| PVOID pvBuffer; |
| } NCryptBuffer, *PNCryptBuffer; |
| |
| typedef struct _NCryptBufferDesc { |
| ULONG ulVersion; |
| ULONG cBuffers; |
| PNCryptBuffer pBuffers; |
| } NCryptBufferDesc, *PNCryptBufferDesc; |
| |
| typedef struct __NCRYPT_SUPPORTED_LENGTHS { |
| DWORD dwMinLength; |
| DWORD dwMaxLength; |
| DWORD dwIncrement; |
| DWORD dwDefaultLength; |
| } NCRYPT_SUPPORTED_LENGTHS; |
| |
| #define NCRYPT_UI_PROTECT_KEY_FLAG 0x00000001 |
| #define NCRYPT_UI_FORCE_HIGH_PROTECTION_FLAG 0x00000002 |
| |
| typedef struct __NCRYPT_UI_POLICY { |
| DWORD dwVersion; |
| DWORD dwFlags; |
| LPCWSTR pszCreationTitle; |
| LPCWSTR pszFriendlyName; |
| LPCWSTR pszDescription; |
| } NCRYPT_UI_POLICY; |
| |
| typedef struct __NCRYPT_UI_POLICY_BLOB { |
| DWORD dwVersion; |
| DWORD dwFlags; |
| DWORD cbCreationTitle; |
| DWORD cbFriendlyName; |
| DWORD cbDescription; |
| } NCRYPT_UI_POLICY_BLOB; |
| |
| typedef struct NCryptKeyName { |
| LPWSTR pszName; |
| LPWSTR pszAlgid; |
| DWORD dwLegacyKeySpec; |
| DWORD dwFlags; |
| } NCryptKeyName; |
| |
| #define NCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE 0x00000003 |
| #define NCRYPT_SECRET_AGREEMENT_INTERFACE 0x00000004 |
| #define NCRYPT_SIGNATURE_INTERFACE 0x00000005 |
| |
| #define NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION 0x00000004 |
| #define NCRYPT_SECRET_AGREEMENT_OPERATION 0x00000008 |
| #define NCRYPT_SIGNATURE_OPERATION 0x00000010 |
| |
| typedef struct _NCryptAlgorithmName { |
| LPWSTR pszName; |
| DWORD dwClass; |
| DWORD dwAlgOperations; |
| DWORD dwFlags; |
| } NCryptAlgorithmName; |
| |
| typedef struct NCryptProviderName { |
| LPWSTR pszName; |
| LPWSTR pszComment; |
| } NCryptProviderName; |
| |
| SECURITY_STATUS WINAPI NCryptExportKey( |
| NCRYPT_KEY_HANDLE hKey, |
| NCRYPT_KEY_HANDLE hExportKey, |
| LPCWSTR pszBlobType, |
| NCryptBufferDesc *pParameterList, |
| PBYTE pbOutput, |
| DWORD cbOutput, |
| DWORD *pcbResult, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptCreatePersistedKey( |
| NCRYPT_PROV_HANDLE hProvider, |
| NCRYPT_KEY_HANDLE *phKey, |
| LPCWSTR pszAlgId, |
| LPCWSTR pszKeyName, |
| DWORD dwLegacyKeySpec, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptDecrypt( |
| NCRYPT_KEY_HANDLE hKey, |
| PBYTE pbInput, |
| DWORD cbInput, |
| VOID *pPaddingInfo, |
| PBYTE pbOutput, |
| DWORD cbOutput, |
| DWORD *pcbResult, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptDeleteKey( |
| NCRYPT_KEY_HANDLE hKey, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptDeriveKey( |
| NCRYPT_SECRET_HANDLE hSharedSecret, |
| LPCWSTR pwszKDF, |
| NCryptBufferDesc *pParameterList, |
| PBYTE pbDerivedKey, |
| DWORD cbDerivedKey, |
| DWORD *pcbResult, |
| ULONG dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptEncrypt( |
| NCRYPT_KEY_HANDLE hKey, |
| PBYTE pbInput, |
| DWORD cbInput, |
| VOID *pPaddingInfo, |
| PBYTE pbOutput, |
| DWORD cbOutput, |
| DWORD *pcbResult, |
| DWORD dwFlags |
| ); |
| |
| #define NCRYPT_CIPHER_OPERATION 0x00000001 |
| #define NCRYPT_HASH_OPERATION 0x00000002 |
| #define NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION 0x00000004 |
| #define NCRYPT_SECRET_AGREEMENT_OPERATION 0x00000008 |
| #define NCRYPT_SIGNATURE_OPERATION 0x00000010 |
| #define NCRYPT_RNG_OPERATION 0x00000020 |
| |
| SECURITY_STATUS WINAPI NCryptEnumAlgorithms( |
| NCRYPT_PROV_HANDLE hProvider, |
| DWORD dwAlgOperations, |
| DWORD *pdwAlgCount, |
| NCryptAlgorithmName **ppAlgList, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptEnumKeys( |
| NCRYPT_PROV_HANDLE hProvider, |
| LPCWSTR pszScope, |
| NCryptKeyName **ppKeyName, |
| PVOID *ppEnumState, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptEnumStorageProviders( |
| DWORD *pdwProviderCount, |
| NCryptProviderName **ppProviderList, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS NCryptFinalizeKey( |
| NCRYPT_KEY_HANDLE hKey, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptFreeBuffer( |
| PVOID pvInput |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptFreeObject( |
| NCRYPT_HANDLE hObject |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptGetProperty( |
| NCRYPT_HANDLE hObject, |
| LPCWSTR pszProperty, |
| PBYTE pbOutput, |
| DWORD cbOutput, |
| DWORD *pcbResult, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptImportKey( |
| NCRYPT_PROV_HANDLE hProvider, |
| NCRYPT_KEY_HANDLE hImportKey, |
| LPCWSTR pszBlobType, |
| NCryptBufferDesc *pParameterList, |
| NCRYPT_KEY_HANDLE *phKey, |
| PBYTE pbData, |
| DWORD cbData, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptIsAlgSupported( |
| NCRYPT_PROV_HANDLE hProvider, |
| LPCWSTR pszAlgId, |
| DWORD dwFlags |
| ); |
| |
| WINBOOL WINAPI NCryptIsKeyHandle( |
| NCRYPT_KEY_HANDLE hKey |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptNotifyChangeKey( |
| NCRYPT_PROV_HANDLE hProvider, |
| HANDLE *phEvent, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptOpenKey( |
| NCRYPT_PROV_HANDLE hProvider, |
| NCRYPT_KEY_HANDLE *phKey, |
| LPCWSTR pszKeyName, |
| DWORD dwLegacyKeySpec, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptOpenStorageProvider( |
| NCRYPT_PROV_HANDLE *phProvider, |
| LPCWSTR pszProviderName, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptSecretAgreement( |
| NCRYPT_KEY_HANDLE hPrivKey, |
| NCRYPT_KEY_HANDLE hPubKey, |
| NCRYPT_SECRET_HANDLE *phSecret, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptSetProperty( |
| NCRYPT_HANDLE hObject, |
| LPCWSTR pszProperty, |
| PBYTE pbInput, |
| DWORD cbInput, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptSignHash( |
| NCRYPT_KEY_HANDLE hKey, |
| VOID *pPaddingInfo, |
| PBYTE pbHashValue, |
| DWORD cbHashValue, |
| PBYTE pbSignature, |
| DWORD cbSignature, |
| DWORD *pcbResult, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptTranslateHandle( |
| NCRYPT_PROV_HANDLE *phProvider, |
| NCRYPT_KEY_HANDLE *phKey, |
| HCRYPTPROV hLegacyProv, |
| HCRYPTKEY hLegacyKey, |
| DWORD dwLegacyKeySpec, |
| DWORD dwFlags |
| ); |
| |
| SECURITY_STATUS WINAPI NCryptVerifySignature( |
| NCRYPT_KEY_HANDLE hKey, |
| VOID *pPaddingInfo, |
| PBYTE pbHashValue, |
| DWORD cbHashValue, |
| PBYTE pbSignature, |
| DWORD cbSignature, |
| DWORD dwFlags |
| ); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif /*(_WIN32_WINNT >= 0x0600)*/ |
| #endif /*_INC_NCRYPT*/ |