| /** | |
| * This file has no copyright assigned and is placed in the Public Domain. | |
| * This file is part of the w64 mingw-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*/ |