📄 bcrypt.h
字号:
{
BCRYPT_INTERFACE_VERSION Version;
BCryptOpenAlgorithmProviderFn OpenAlgorithmProvider;
BCryptGetPropertyFn GetProperty;
BCryptSetPropertyFn SetProperty;
BCryptCloseAlgorithmProviderFn CloseAlgorithmProvider;
BCryptGenRandomFn GenRandom;
} BCRYPT_RNG_FUNCTION_TABLE;
NTSTATUS
WINAPI
GetRngInterface(
__in LPCWSTR pszProviderName,
__out BCRYPT_RNG_FUNCTION_TABLE **ppFunctionTable,
__in ULONG dwFlags);
typedef NTSTATUS
(WINAPI * GetRngInterfaceFn)(
__in LPCWSTR pszProviderName,
__out BCRYPT_RNG_FUNCTION_TABLE **ppFunctionTable,
__in ULONG dwFlags);
// @@END_DDKSPLIT
//////////////////////////////////////////////////////////////////////////////
// CryptoConfig Definitions //////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// Interface registration flags
#define CRYPT_MIN_DEPENDENCIES (0x00000001)
#define CRYPT_PROCESS_ISOLATE (0x00010000) // User-mode only
// Processor modes supported by a provider
//
// (Valid for BCryptQueryProviderRegistration and BCryptResolveProviders):
//
#define CRYPT_UM (0x00000001) // User mode only
#define CRYPT_KM (0x00000002) // Kernel mode only
#define CRYPT_MM (0x00000003) // Multi-mode: Must support BOTH UM and KM
//
// (Valid only for BCryptQueryProviderRegistration):
//
#define CRYPT_ANY (0x00000004) // Wildcard: Either UM, or KM, or both
// Write behavior flags
#define CRYPT_OVERWRITE (0x00000001)
// Configuration tables
#define CRYPT_LOCAL (0x00000001)
#define CRYPT_DOMAIN (0x00000002)
// Context configuration flags
#define CRYPT_EXCLUSIVE (0x00000001)
#define CRYPT_OVERRIDE (0x00010000) // Enterprise table only
// Resolution and enumeration flags
#define CRYPT_ALL_FUNCTIONS (0x00000001)
#define CRYPT_ALL_PROVIDERS (0x00000002)
// Priority list positions
#define CRYPT_PRIORITY_TOP (0x00000000)
#define CRYPT_PRIORITY_BOTTOM (0xFFFFFFFF)
// Default system-wide context
#define CRYPT_DEFAULT_CONTEXT L"Default"
//////////////////////////////////////////////////////////////////////////////
// CryptoConfig Structures ///////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
// Provider Registration Structures
//
typedef struct _CRYPT_INTERFACE_REG
{
ULONG dwInterface;
ULONG dwFlags;
ULONG cFunctions;
PWSTR *rgpszFunctions;
}
CRYPT_INTERFACE_REG, *PCRYPT_INTERFACE_REG;
typedef struct _CRYPT_IMAGE_REG
{
PWSTR pszImage;
ULONG cInterfaces;
PCRYPT_INTERFACE_REG *rgpInterfaces;
}
CRYPT_IMAGE_REG, *PCRYPT_IMAGE_REG;
typedef struct _CRYPT_PROVIDER_REG
{
ULONG cAliases;
PWSTR *rgpszAliases;
PCRYPT_IMAGE_REG pUM;
PCRYPT_IMAGE_REG pKM;
}
CRYPT_PROVIDER_REG, *PCRYPT_PROVIDER_REG;
typedef struct _CRYPT_PROVIDERS
{
ULONG cProviders;
PWSTR *rgpszProviders;
}
CRYPT_PROVIDERS, *PCRYPT_PROVIDERS;
//
// Context Configuration Structures
//
typedef struct _CRYPT_CONTEXT_CONFIG
{
ULONG dwFlags;
ULONG dwReserved;
}
CRYPT_CONTEXT_CONFIG, *PCRYPT_CONTEXT_CONFIG;
typedef struct _CRYPT_CONTEXT_FUNCTION_CONFIG
{
ULONG dwFlags;
ULONG dwReserved;
}
CRYPT_CONTEXT_FUNCTION_CONFIG, *PCRYPT_CONTEXT_FUNCTION_CONFIG;
typedef struct _CRYPT_CONTEXTS
{
ULONG cContexts;
PWSTR *rgpszContexts;
}
CRYPT_CONTEXTS, *PCRYPT_CONTEXTS;
typedef struct _CRYPT_CONTEXT_FUNCTIONS
{
ULONG cFunctions;
PWSTR *rgpszFunctions;
}
CRYPT_CONTEXT_FUNCTIONS, *PCRYPT_CONTEXT_FUNCTIONS;
typedef struct _CRYPT_CONTEXT_FUNCTION_PROVIDERS
{
ULONG cProviders;
PWSTR *rgpszProviders;
}
CRYPT_CONTEXT_FUNCTION_PROVIDERS, *PCRYPT_CONTEXT_FUNCTION_PROVIDERS;
//
// Provider Resolution Structures
//
typedef struct _CRYPT_PROPERTY_REF
{
PWSTR pszProperty;
ULONG cbValue;
PUCHAR pbValue;
}
CRYPT_PROPERTY_REF, *PCRYPT_PROPERTY_REF;
typedef struct _CRYPT_IMAGE_REF
{
PWSTR pszImage;
ULONG dwFlags;
}
CRYPT_IMAGE_REF, *PCRYPT_IMAGE_REF;
typedef struct _CRYPT_PROVIDER_REF
{
ULONG dwInterface;
PWSTR pszFunction;
PWSTR pszProvider;
ULONG cProperties;
PCRYPT_PROPERTY_REF *rgpProperties;
PCRYPT_IMAGE_REF pUM;
PCRYPT_IMAGE_REF pKM;
}
CRYPT_PROVIDER_REF, *PCRYPT_PROVIDER_REF;
typedef struct _CRYPT_PROVIDER_REFS
{
ULONG cProviders;
PCRYPT_PROVIDER_REF *rgpProviders;
}
CRYPT_PROVIDER_REFS, *PCRYPT_PROVIDER_REFS;
//////////////////////////////////////////////////////////////////////////////
// CryptoConfig Functions ////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#ifndef KERNEL_MODE_CNG
// @@BEGIN_DDKSPLIT
//
// Provider Registration Functions
//
NTSTATUS
WINAPI
BCryptRegisterProvider(
__in LPCWSTR pszProvider,
__in ULONG dwFlags,
__in PCRYPT_PROVIDER_REG pReg);
NTSTATUS
WINAPI
BCryptUnregisterProvider(
__in LPCWSTR pszProvider);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptQueryProviderRegistration(
__in LPCWSTR pszProvider,
__in ULONG dwMode,
__in ULONG dwInterface,
__inout ULONG* pcbBuffer,
__deref_opt_inout_bcount_part_opt(*pcbBuffer, *pcbBuffer) PCRYPT_PROVIDER_REG *ppBuffer);
NTSTATUS
WINAPI
BCryptEnumRegisteredProviders(
__inout ULONG* pcbBuffer,
__deref_opt_inout_bcount_part_opt(*pcbBuffer, *pcbBuffer) PCRYPT_PROVIDERS *ppBuffer);
//
// Context Configuration Functions
//
NTSTATUS
WINAPI
BCryptCreateContext(
__in ULONG dwTable,
__in LPCWSTR pszContext,
__in_opt PCRYPT_CONTEXT_CONFIG pConfig); // Optional
NTSTATUS
WINAPI
BCryptDeleteContext(
__in ULONG dwTable,
__in LPCWSTR pszContext);
NTSTATUS
WINAPI
BCryptEnumContexts(
__in ULONG dwTable,
__inout ULONG* pcbBuffer,
__deref_opt_inout_bcount_part_opt(*pcbBuffer, *pcbBuffer) PCRYPT_CONTEXTS *ppBuffer);
NTSTATUS
WINAPI
BCryptConfigureContext(
__in ULONG dwTable,
__in LPCWSTR pszContext,
__in PCRYPT_CONTEXT_CONFIG pConfig);
NTSTATUS
WINAPI
BCryptQueryContextConfiguration(
__in ULONG dwTable,
__in LPCWSTR pszContext,
__inout ULONG* pcbBuffer,
__deref_opt_inout_bcount_part_opt(*pcbBuffer, *pcbBuffer) PCRYPT_CONTEXT_CONFIG *ppBuffer);
NTSTATUS
WINAPI
BCryptAddContextFunction(
__in ULONG dwTable,
__in LPCWSTR pszContext,
__in ULONG dwInterface,
__in LPCWSTR pszFunction,
__in ULONG dwPosition);
NTSTATUS
WINAPI
BCryptRemoveContextFunction(
__in ULONG dwTable,
__in LPCWSTR pszContext,
__in ULONG dwInterface,
__in LPCWSTR pszFunction);
NTSTATUS
WINAPI
BCryptEnumContextFunctions(
__in ULONG dwTable,
__in LPCWSTR pszContext,
__in ULONG dwInterface,
__inout ULONG* pcbBuffer,
__deref_opt_inout_bcount_part_opt(*pcbBuffer, *pcbBuffer) PCRYPT_CONTEXT_FUNCTIONS *ppBuffer);
NTSTATUS
WINAPI
BCryptConfigureContextFunction(
__in ULONG dwTable,
__in LPCWSTR pszContext,
__in ULONG dwInterface,
__in LPCWSTR pszFunction,
__in PCRYPT_CONTEXT_FUNCTION_CONFIG pConfig);
NTSTATUS
WINAPI
BCryptQueryContextFunctionConfiguration(
__in ULONG dwTable,
__in LPCWSTR pszContext,
__in ULONG dwInterface,
__in LPCWSTR pszFunction,
__inout ULONG* pcbBuffer,
__deref_opt_inout_bcount_part_opt(*pcbBuffer, *pcbBuffer) PCRYPT_CONTEXT_FUNCTION_CONFIG *ppBuffer);
// @@BEGIN_DDKSPLIT
NTSTATUS
WINAPI
BCryptAddContextFunctionProvider(
__in ULONG dwTable,
__in LPCWSTR pszContext,
__in ULONG dwInterface,
__in LPCWSTR pszFunction,
__in LPCWSTR pszProvider,
__in ULONG dwPosition);
NTSTATUS
WINAPI
BCryptRemoveContextFunctionProvider(
__in ULONG dwTable,
__in LPCWSTR pszContext,
__in ULONG dwInterface,
__in LPCWSTR pszFunction,
__in LPCWSTR pszProvider);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptEnumContextFunctionProviders(
__in ULONG dwTable,
__in LPCWSTR pszContext,
__in ULONG dwInterface,
__in LPCWSTR pszFunction,
__inout ULONG* pcbBuffer,
__deref_opt_inout_bcount_part_opt(*pcbBuffer, *pcbBuffer) PCRYPT_CONTEXT_FUNCTION_PROVIDERS *ppBuffer);
NTSTATUS
WINAPI
BCryptSetContextFunctionProperty(
__in ULONG dwTable,
__in LPCWSTR pszContext,
__in ULONG dwInterface,
__in LPCWSTR pszFunction,
__in LPCWSTR pszProperty,
__in ULONG cbValue,
__in_bcount_opt(cbValue) PUCHAR pbValue);
NTSTATUS
WINAPI
BCryptQueryContextFunctionProperty(
__in ULONG dwTable,
__in LPCWSTR pszContext,
__in ULONG dwInterface,
__in LPCWSTR pszFunction,
__in LPCWSTR pszProperty,
__inout ULONG* pcbValue,
__deref_opt_inout_bcount_part_opt(*pcbValue, *pcbValue) PUCHAR *ppbValue);
#endif //#ifndef KERNEL_MODE_CNG
//
// Configuration Change Notification Functions
//
#ifdef KERNEL_MODE_CNG
NTSTATUS
WINAPI
BCryptRegisterConfigChangeNotify(
__in PRKEVENT pEvent);
#else
NTSTATUS
WINAPI
BCryptRegisterConfigChangeNotify(
__out HANDLE *phEvent);
#endif
#ifdef KERNEL_MODE_CNG
NTSTATUS
WINAPI
BCryptUnregisterConfigChangeNotify(
__in PRKEVENT pEvent);
#else
NTSTATUS
WINAPI
BCryptUnregisterConfigChangeNotify(
__in HANDLE hEvent);
#endif
//
// Provider Resolution Functions
//
NTSTATUS WINAPI
BCryptResolveProviders(
__in_opt LPCWSTR pszContext,
__in_opt ULONG dwInterface,
__in_opt LPCWSTR pszFunction,
__in_opt LPCWSTR pszProvider,
__in ULONG dwMode,
__in ULONG dwFlags,
__inout ULONG* pcbBuffer,
__deref_opt_inout_bcount_part_opt(*pcbBuffer, *pcbBuffer) PCRYPT_PROVIDER_REFS *ppBuffer);
//
// Miscellaneous queries about the crypto environment
//
NTSTATUS
WINAPI
BCryptGetFipsAlgorithmMode(
__out BOOLEAN *pfEnabled
);
#ifdef __cplusplus
}
#endif
#endif // __BCRYPT_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -