📄 bcrypt.h
字号:
#define BCRYPT_SHA1_ALGORITHM L"SHA1"
#define BCRYPT_SHA256_ALGORITHM L"SHA256"
#define BCRYPT_SHA384_ALGORITHM L"SHA384"
#define BCRYPT_SHA512_ALGORITHM L"SHA512"
#define BCRYPT_AES_GMAC_ALGORITHM L"AES-GMAC"
#define BCRYPT_ECDSA_P256_ALGORITHM L"ECDSA_P256"
#define BCRYPT_ECDSA_P384_ALGORITHM L"ECDSA_P384"
#define BCRYPT_ECDSA_P521_ALGORITHM L"ECDSA_P521"
#define BCRYPT_ECDH_P256_ALGORITHM L"ECDH_P256"
#define BCRYPT_ECDH_P384_ALGORITHM L"ECDH_P384"
#define BCRYPT_ECDH_P521_ALGORITHM L"ECDH_P521"
#define BCRYPT_RNG_ALGORITHM L"RNG"
#define BCRYPT_RNG_FIPS186_DSA_ALGORITHM L"FIPS186DSARNG"
#define BCRYPT_RNG_DUAL_EC_ALGORITHM L"DUALECRNG"
//
// Interfaces
//
#define BCRYPT_CIPHER_INTERFACE 0x00000001
#define BCRYPT_HASH_INTERFACE 0x00000002
#define BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE 0x00000003
#define BCRYPT_SECRET_AGREEMENT_INTERFACE 0x00000004
#define BCRYPT_SIGNATURE_INTERFACE 0x00000005
#define BCRYPT_RNG_INTERFACE 0x00000006
//
// Primitive algorithm provider functions.
//
#define BCRYPT_ALG_HANDLE_HMAC_FLAG 0x00000008
NTSTATUS
WINAPI
BCryptOpenAlgorithmProvider(
__out BCRYPT_ALG_HANDLE *phAlgorithm,
__in LPCWSTR pszAlgId,
__in_opt LPCWSTR pszImplementation,
__in ULONG dwFlags);
typedef NTSTATUS
(WINAPI * BCryptOpenAlgorithmProviderFn)(
__out BCRYPT_ALG_HANDLE *phAlgorithm,
__in LPCWSTR pszAlgId,
__in ULONG dwFlags);
// AlgOperations flags for use with BCryptEnumAlgorithms()
#define BCRYPT_CIPHER_OPERATION 0x00000001
#define BCRYPT_HASH_OPERATION 0x00000002
#define BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION 0x00000004
#define BCRYPT_SECRET_AGREEMENT_OPERATION 0x00000008
#define BCRYPT_SIGNATURE_OPERATION 0x00000010
#define BCRYPT_RNG_OPERATION 0x00000020
// USE EXTREME CAUTION: editing comments that contain "certenrolls_*" tokens
// could break building CertEnroll idl files:
// certenrolls_begin -- BCRYPT_ALGORITHM_IDENTIFIER
typedef struct _BCRYPT_ALGORITHM_IDENTIFIER
{
LPWSTR pszName;
ULONG dwClass;
ULONG dwFlags;
} BCRYPT_ALGORITHM_IDENTIFIER;
// certenrolls_end
NTSTATUS
WINAPI
BCryptEnumAlgorithms(
__in ULONG dwAlgOperations,
__out ULONG *pAlgCount,
__out BCRYPT_ALGORITHM_IDENTIFIER **ppAlgList,
__in ULONG dwFlags);
typedef struct _BCRYPT_PROVIDER_NAME
{
LPWSTR pszProviderName;
} BCRYPT_PROVIDER_NAME;
NTSTATUS
WINAPI
BCryptEnumProviders(
__in LPCWSTR pszAlgId,
__out ULONG *pImplCount,
__out BCRYPT_PROVIDER_NAME **ppImplList,
__in ULONG dwFlags);
// Flags for use with BCryptGetProperty and BCryptSetProperty
#define BCRYPT_PUBLIC_KEY_FLAG 0x00000001
#define BCRYPT_PRIVATE_KEY_FLAG 0x00000002
NTSTATUS
WINAPI
BCryptGetProperty(
__in BCRYPT_HANDLE hObject,
__in LPCWSTR pszProperty,
__out_bcount_part_opt(cbOutput, *pcbResult) PUCHAR pbOutput,
__in ULONG cbOutput,
__out ULONG *pcbResult,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptGetPropertyFn)(
__in BCRYPT_HANDLE hObject,
__in LPCWSTR pszProperty,
__out_bcount_part_opt(cbOutput, *pcbResult) PUCHAR pbOutput,
__in ULONG cbOutput,
__out ULONG *pcbResult,
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptSetProperty(
__inout BCRYPT_HANDLE hObject,
__in LPCWSTR pszProperty,
__in_bcount(cbInput) PUCHAR pbInput,
__in ULONG cbInput,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptSetPropertyFn)(
__inout BCRYPT_HANDLE hObject,
__in LPCWSTR pszProperty,
__in_bcount(cbInput) PUCHAR pbInput,
__in ULONG cbInput,
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptCloseAlgorithmProvider(
__inout BCRYPT_ALG_HANDLE hAlgorithm,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptCloseAlgorithmProviderFn)(
__inout BCRYPT_ALG_HANDLE hAlgorithm,
__in ULONG dwFlags);
// @@END_DDKSPLIT
VOID
WINAPI
BCryptFreeBuffer(
__deref PVOID pvBuffer);
// @@BEGIN_DDKSPLIT
typedef VOID
(WINAPI * BCryptFreeBufferFn)(
__deref PVOID pvBuffer);
// @@END_DDKSPLIT
//
// Primitive encryption functions.
//
NTSTATUS
WINAPI
BCryptGenerateSymmetricKey(
__inout BCRYPT_ALG_HANDLE hAlgorithm,
__out BCRYPT_KEY_HANDLE *phKey,
__out_bcount_full(cbKeyObject) PUCHAR pbKeyObject,
__in ULONG cbKeyObject,
__in_bcount(cbSecret) PUCHAR pbSecret,
__in ULONG cbSecret,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptGenerateSymmetricKeyFn)(
__inout BCRYPT_ALG_HANDLE hAlgorithm,
__out BCRYPT_KEY_HANDLE *phKey,
__out_bcount_full(cbKeyObject) PUCHAR pbKeyObject,
__in ULONG cbKeyObject,
__in_bcount(cbSecret) PUCHAR pbSecret,
__in ULONG cbSecret,
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptGenerateKeyPair(
__inout BCRYPT_ALG_HANDLE hAlgorithm,
__out BCRYPT_KEY_HANDLE *phKey,
__in ULONG dwLength,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptGenerateKeyPairFn)(
__inout BCRYPT_ALG_HANDLE hAlgorithm,
__out BCRYPT_KEY_HANDLE *phKey,
__in ULONG dwLength,
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptEncrypt(
__inout BCRYPT_KEY_HANDLE hKey,
__in_bcount(cbInput) PUCHAR pbInput,
__in ULONG cbInput,
__in_opt VOID *pPaddingInfo,
__inout_bcount_opt(cbIV) PUCHAR pbIV,
__in ULONG cbIV,
__out_bcount_part_opt(cbOutput, *pcbResult) PUCHAR pbOutput,
__in ULONG cbOutput,
__out ULONG *pcbResult,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptEncryptFn)(
__inout BCRYPT_KEY_HANDLE hKey,
__in_bcount(cbInput) PUCHAR pbInput,
__in ULONG cbInput,
__in_opt VOID *pPaddingInfo,
__inout_bcount_opt(cbIV) PUCHAR pbIV,
__in ULONG cbIV,
__out_bcount_part_opt(cbOutput, *pcbResult) PUCHAR pbOutput,
__in ULONG cbOutput,
__out ULONG *pcbResult,
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptDecrypt(
__inout BCRYPT_KEY_HANDLE hKey,
__in_bcount(cbInput) PUCHAR pbInput,
__in ULONG cbInput,
__in_opt VOID *pPaddingInfo,
__inout_bcount_opt(cbIV) PUCHAR pbIV,
__in ULONG cbIV,
__out_bcount_part_opt(cbOutput, *pcbResult) PUCHAR pbOutput,
__in ULONG cbOutput,
__out ULONG *pcbResult,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptDecryptFn)(
__inout BCRYPT_KEY_HANDLE hKey,
__in_bcount(cbInput) PUCHAR pbInput,
__in ULONG cbInput,
__in_opt VOID *pPaddingInfo,
__inout_bcount_opt(cbIV) PUCHAR pbIV,
__in ULONG cbIV,
__out_bcount_part_opt(cbOutput, *pcbResult) PUCHAR pbOutput,
__in ULONG cbOutput,
__out ULONG *pcbResult,
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptExportKey(
__in BCRYPT_KEY_HANDLE hKey,
__in_opt BCRYPT_KEY_HANDLE hExportKey,
__in LPCWSTR pszBlobType,
__out_bcount_part_opt(cbOutput, *pcbResult) PUCHAR pbOutput,
__in ULONG cbOutput,
__out ULONG *pcbResult,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptExportKeyFn)(
__in BCRYPT_KEY_HANDLE hKey,
__in_opt BCRYPT_KEY_HANDLE hExportKey,
__in LPCWSTR pszBlobType,
__out_bcount_part_opt(cbOutput, *pcbResult) PUCHAR pbOutput,
__in ULONG cbOutput,
__out ULONG *pcbResult,
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptImportKey(
__in BCRYPT_ALG_HANDLE hAlgorithm,
__in_opt BCRYPT_KEY_HANDLE hImportKey,
__in LPCWSTR pszBlobType,
__out BCRYPT_KEY_HANDLE *phKey,
__out_bcount_full(cbKeyObject) PUCHAR pbKeyObject,
__in ULONG cbKeyObject,
__in_bcount(cbInput) PUCHAR pbInput,
__in ULONG cbInput,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptImportKeyFn)(
__in BCRYPT_ALG_HANDLE hAlgorithm,
__in_opt BCRYPT_KEY_HANDLE hImportKey,
__in LPCWSTR pszBlobType,
__out BCRYPT_KEY_HANDLE *phKey,
__out_bcount_full(cbKeyObject) PUCHAR pbKeyObject,
__in ULONG cbKeyObject,
__in_bcount(cbInput) PUCHAR pbInput,
__in ULONG cbInput,
__in ULONG dwFlags);
// @@END_DDKSPLIT
#define BCRYPT_NO_KEY_VALIDATION 0x00000008
NTSTATUS
WINAPI
BCryptImportKeyPair(
__in BCRYPT_ALG_HANDLE hAlgorithm,
__in_opt BCRYPT_KEY_HANDLE hImportKey,
__in LPCWSTR pszBlobType,
__out BCRYPT_KEY_HANDLE *phKey,
__in_bcount(cbInput) PUCHAR pbInput,
__in ULONG cbInput,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptImportKeyPairFn)(
__in BCRYPT_ALG_HANDLE hAlgorithm,
__in_opt BCRYPT_KEY_HANDLE hImportKey,
__in LPCWSTR pszBlobType,
__out BCRYPT_KEY_HANDLE *phKey,
__in_bcount(cbInput) PUCHAR pbInput,
__in ULONG cbInput,
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptDuplicateKey(
__in BCRYPT_KEY_HANDLE hKey,
__out BCRYPT_KEY_HANDLE *phNewKey,
__out_bcount_full(cbKeyObject) PUCHAR pbKeyObject,
__in ULONG cbKeyObject,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptDuplicateKeyFn)(
__in BCRYPT_KEY_HANDLE hKey,
__out BCRYPT_KEY_HANDLE *phNewKey,
__out_bcount_full(cbKeyObject) PUCHAR pbKeyObject,
__in ULONG cbKeyObject,
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptFinalizeKeyPair(
__inout BCRYPT_KEY_HANDLE hKey,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptFinalizeKeyPairFn)(
__inout BCRYPT_KEY_HANDLE hKey,
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptDestroyKey(
__inout BCRYPT_KEY_HANDLE hKey);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptDestroyKeyFn)(
__inout BCRYPT_KEY_HANDLE hKey);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptDestroySecret(
__inout BCRYPT_SECRET_HANDLE hSecret);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptDestroySecretFn)(
__inout BCRYPT_SECRET_HANDLE hSecret);
// @@END_DDKSPLIT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -