📄 bcrypt.h
字号:
NTSTATUS
WINAPI
BCryptSignHash(
__in BCRYPT_KEY_HANDLE hKey,
__in_opt VOID *pPaddingInfo,
__in_bcount(cbInput) PUCHAR pbInput,
__in ULONG cbInput,
__out_bcount_part_opt(cbOutput, *pcbResult) PUCHAR pbOutput,
__in ULONG cbOutput,
__out ULONG *pcbResult,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptSignHashFn)(
__in BCRYPT_KEY_HANDLE hKey,
__in_opt VOID *pPaddingInfo,
__in_bcount(cbInput) PUCHAR pbInput,
__in ULONG cbInput,
__out_bcount_part_opt(cbOutput, *pcbResult) PUCHAR pbOutput,
__in ULONG cbOutput,
__out ULONG *pcbResult,
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptVerifySignature(
__in BCRYPT_KEY_HANDLE hKey,
__in_opt VOID *pPaddingInfo,
__in_bcount(cbHash) PUCHAR pbHash,
__in ULONG cbHash,
__in_bcount(cbSignature) PUCHAR pbSignature,
__in ULONG cbSignature,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptVerifySignatureFn)(
__in BCRYPT_KEY_HANDLE hKey,
__in_opt VOID *pPaddingInfo,
__in_bcount(cbHash) PUCHAR pbHash,
__in ULONG cbHash,
__in_bcount(cbSignature) PUCHAR pbSignature,
__in ULONG cbSignature,
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptSecretAgreement(
__in BCRYPT_KEY_HANDLE hPrivKey,
__in BCRYPT_KEY_HANDLE hPubKey,
__out BCRYPT_SECRET_HANDLE *phAgreedSecret,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptSecretAgreementFn)(
__in BCRYPT_KEY_HANDLE hPrivKey,
__in BCRYPT_KEY_HANDLE hPubKey,
__out BCRYPT_SECRET_HANDLE *phAgreedSecret,
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptDeriveKey(
__in BCRYPT_SECRET_HANDLE hSharedSecret,
__in LPCWSTR pwszKDF,
__in_opt BCryptBufferDesc *pParameterList,
__out_bcount_part_opt(cbDerivedKey, *pcbResult) PUCHAR pbDerivedKey,
__in ULONG cbDerivedKey,
__out ULONG *pcbResult,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptDeriveKeyFn)(
__in BCRYPT_SECRET_HANDLE hSharedSecret,
__in LPCWSTR pwszKDF,
__in_opt BCryptBufferDesc *pParameterList,
__out_bcount_part_opt(cbDerivedKey, *pcbResult) PUCHAR pbDerivedKey,
__in ULONG cbDerivedKey,
__out ULONG *pcbResult,
__in ULONG dwFlags);
// @@END_DDKSPLIT
//
// Primitive hashing functions.
//
NTSTATUS
WINAPI
BCryptCreateHash(
__inout BCRYPT_ALG_HANDLE hAlgorithm,
__out BCRYPT_HASH_HANDLE *phHash,
__out_bcount_full(cbHashObject) PUCHAR pbHashObject,
__in ULONG cbHashObject,
__in_bcount_opt(cbSecret) PUCHAR pbSecret, // optional
__in ULONG cbSecret, // optional
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptCreateHashFn)(
__inout BCRYPT_ALG_HANDLE hAlgorithm,
__out BCRYPT_HASH_HANDLE *phHash,
__out_bcount_full(cbHashObject) PUCHAR pbHashObject,
__in ULONG cbHashObject,
__in_bcount_opt(cbSecret) PUCHAR pbSecret, // optional
__in ULONG cbSecret, // optional
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptHashData(
__inout BCRYPT_HASH_HANDLE hHash,
__in_bcount(cbInput) PUCHAR pbInput,
__in ULONG cbInput,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptHashDataFn)(
__inout BCRYPT_HASH_HANDLE hHash,
__in_bcount(cbInput) PUCHAR pbInput,
__in ULONG cbInput,
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptFinishHash(
__inout BCRYPT_HASH_HANDLE hHash,
__out_bcount_full(cbOutput) PUCHAR pbOutput,
__in ULONG cbOutput,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptFinishHashFn)(
__inout BCRYPT_HASH_HANDLE hHash,
__out_bcount_full(cbOutput) PUCHAR pbOutput,
__in ULONG cbOutput,
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptDuplicateHash(
__in BCRYPT_HASH_HANDLE hHash,
__out BCRYPT_HASH_HANDLE *phNewHash,
__out_bcount_full(cbHashObject) PUCHAR pbHashObject,
__in ULONG cbHashObject,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptDuplicateHashFn)(
__in BCRYPT_HASH_HANDLE hHash,
__out BCRYPT_HASH_HANDLE * phNewHash,
__out_bcount_full(cbHashObject) PUCHAR pbHashObject,
__in ULONG cbHashObject,
__in ULONG dwFlags);
// @@END_DDKSPLIT
NTSTATUS
WINAPI
BCryptDestroyHash(
__inout BCRYPT_HASH_HANDLE hHash);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptDestroyHashFn)(
__inout BCRYPT_HASH_HANDLE hHash);
// @@END_DDKSPLIT
//
// Primitive random number generation.
//
// Flags to BCryptGenRandom
#define BCRYPT_RNG_USE_ENTROPY_IN_BUFFER 0x00000001
#define BCRYPT_USE_SYSTEM_PREFERRED_RNG 0x00000002
NTSTATUS
WINAPI
BCryptGenRandom(
__inout BCRYPT_ALG_HANDLE hAlgorithm,
__inout_bcount_full(cbBuffer) PUCHAR pbBuffer,
__in ULONG cbBuffer,
__in ULONG dwFlags);
// @@BEGIN_DDKSPLIT
typedef NTSTATUS
(WINAPI * BCryptGenRandomFn)(
__inout BCRYPT_ALG_HANDLE hAlgorithm,
__inout_bcount_full(cbBuffer) PUCHAR pbBuffer,
__in ULONG cbBuffer,
__in ULONG dwFlags);
// @@END_DDKSPLIT
//
// Interface version control...
//
typedef struct _BCRYPT_INTERFACE_VERSION
{
USHORT MajorVersion;
USHORT MinorVersion;
} BCRYPT_INTERFACE_VERSION, *PBCRYPT_INTERFACE_VERSION;
#define BCRYPT_MAKE_INTERFACE_VERSION(major,minor) {(USHORT)major, (USHORT)minor}
#define BCRYPT_IS_INTERFACE_VERSION_COMPATIBLE(loader, provider) \
((loader).MajorVersion <= (provider).MajorVersion)
//
// Primitive provider interfaces.
//
#define BCRYPT_CIPHER_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION(1,0)
// @@BEGIN_DDKSPLIT
typedef struct _BCRYPT_CIPHER_FUNCTION_TABLE
{
BCRYPT_INTERFACE_VERSION Version;
BCryptOpenAlgorithmProviderFn OpenAlgorithmProvider;
BCryptGetPropertyFn GetProperty;
BCryptSetPropertyFn SetProperty;
BCryptCloseAlgorithmProviderFn CloseAlgorithmProvider;
BCryptGenerateSymmetricKeyFn GenerateKey;
BCryptEncryptFn Encrypt;
BCryptDecryptFn Decrypt;
BCryptImportKeyFn ImportKey;
BCryptExportKeyFn ExportKey;
BCryptDuplicateKeyFn DuplicateKey;
BCryptDestroyKeyFn DestroyKey;
} BCRYPT_CIPHER_FUNCTION_TABLE;
NTSTATUS
WINAPI
GetCipherInterface(
__in LPCWSTR pszProviderName,
__in LPCWSTR pszAlgId,
__out BCRYPT_CIPHER_FUNCTION_TABLE **ppFunctionTable,
__in ULONG dwFlags);
typedef NTSTATUS
(WINAPI * GetCipherInterfaceFn)(
__in LPCWSTR pszProviderName,
__in LPCWSTR pszAlgId,
__out BCRYPT_CIPHER_FUNCTION_TABLE **ppFunctionTable,
__in ULONG dwFlags);
// @@END_DDKSPLIT
#define BCRYPT_HASH_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION(1,0)
// @@BEGIN_DDKSPLIT
typedef struct _BCRYPT_HASH_FUNCTION_TABLE
{
BCRYPT_INTERFACE_VERSION Version;
BCryptOpenAlgorithmProviderFn OpenAlgorithmProvider;
BCryptGetPropertyFn GetProperty;
BCryptSetPropertyFn SetProperty;
BCryptCloseAlgorithmProviderFn CloseAlgorithmProvider;
BCryptCreateHashFn CreateHash;
BCryptHashDataFn HashData;
BCryptFinishHashFn FinishHash;
BCryptDuplicateHashFn DuplicateHash;
BCryptDestroyHashFn DestroyHash;
} BCRYPT_HASH_FUNCTION_TABLE;
NTSTATUS
WINAPI
GetHashInterface(
__in LPCWSTR pszProviderName,
__in LPCWSTR pszAlgId,
__out BCRYPT_HASH_FUNCTION_TABLE **ppFunctionTable,
__in ULONG dwFlags);
typedef NTSTATUS
(WINAPI * GetHashInterfaceFn)(
__in LPCWSTR pszProviderName,
__in LPCWSTR pszAlgId,
__out BCRYPT_HASH_FUNCTION_TABLE **ppFunctionTable,
__in ULONG dwFlags);
// @@END_DDKSPLIT
#define BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION(1,0)
// @@BEGIN_DDKSPLIT
typedef struct _BCRYPT_ASYMMETRIC_ENCRYPTION_FUNCTION_TABLE
{
BCRYPT_INTERFACE_VERSION Version;
BCryptOpenAlgorithmProviderFn OpenAlgorithmProvider;
BCryptGetPropertyFn GetProperty;
BCryptSetPropertyFn SetProperty;
BCryptCloseAlgorithmProviderFn CloseAlgorithmProvider;
BCryptGenerateKeyPairFn GenerateKeyPair;
BCryptFinalizeKeyPairFn FinalizeKeyPair;
BCryptEncryptFn Encrypt;
BCryptDecryptFn Decrypt;
BCryptImportKeyPairFn ImportKeyPair;
BCryptExportKeyFn ExportKey;
BCryptDestroyKeyFn DestroyKey;
BCryptSignHashFn SignHash;
BCryptVerifySignatureFn VerifySignature;
} BCRYPT_ASYMMETRIC_ENCRYPTION_FUNCTION_TABLE;
NTSTATUS
WINAPI
GetAsymmetricEncryptionInterface(
__in LPCWSTR pszProviderName,
__in LPCWSTR pszAlgId,
__out BCRYPT_ASYMMETRIC_ENCRYPTION_FUNCTION_TABLE **ppFunctionTable,
__in ULONG dwFlags);
typedef NTSTATUS
(WINAPI * GetAsymmetricEncryptionInterfaceFn)(
__in LPCWSTR pszProviderName,
__in LPCWSTR pszAlgId,
__out BCRYPT_ASYMMETRIC_ENCRYPTION_FUNCTION_TABLE **ppFunctionTable,
__in ULONG dwFlags);
// @@END_DDKSPLIT
#define BCRYPT_SECRET_AGREEMENT_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION(1,0)
// @@BEGIN_DDKSPLIT
typedef struct _BCRYPT_SECRET_AGREEMENT_FUNCTION_TABLE
{
BCRYPT_INTERFACE_VERSION Version;
BCryptOpenAlgorithmProviderFn OpenAlgorithmProvider;
BCryptGetPropertyFn GetProperty;
BCryptSetPropertyFn SetProperty;
BCryptCloseAlgorithmProviderFn CloseAlgorithmProvider;
BCryptSecretAgreementFn SecretAgreement;
BCryptDeriveKeyFn DeriveKey;
BCryptDestroySecretFn DestroySecret;
BCryptGenerateKeyPairFn GenerateKeyPair;
BCryptFinalizeKeyPairFn FinalizeKeyPair;
BCryptImportKeyPairFn ImportKeyPair;
BCryptExportKeyFn ExportKey;
BCryptDestroyKeyFn DestroyKey;
} BCRYPT_SECRET_AGREEMENT_FUNCTION_TABLE;
NTSTATUS
WINAPI
GetSecretAgreementInterface(
__in LPCWSTR pszProviderName,
__in LPCWSTR pszAlgId,
__out BCRYPT_SECRET_AGREEMENT_FUNCTION_TABLE **ppFunctionTable,
__in ULONG dwFlags);
typedef NTSTATUS
(WINAPI * GetSecretAgreementInterfaceFn)(
__in LPCWSTR pszProviderName,
__in LPCWSTR pszAlgId,
__out BCRYPT_SECRET_AGREEMENT_FUNCTION_TABLE **ppFunctionTable,
__in ULONG dwFlags);
// @@END_DDKSPLIT
#define BCRYPT_SIGNATURE_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION(1,0)
// @@BEGIN_DDKSPLIT
typedef struct _BCRYPT_SIGNATURE_FUNCTION_TABLE
{
BCRYPT_INTERFACE_VERSION Version;
BCryptOpenAlgorithmProviderFn OpenAlgorithmProvider;
BCryptGetPropertyFn GetProperty;
BCryptSetPropertyFn SetProperty;
BCryptCloseAlgorithmProviderFn CloseAlgorithmProvider;
BCryptGenerateKeyPairFn GenerateKeyPair;
BCryptFinalizeKeyPairFn FinalizeKeyPair;
BCryptSignHashFn SignHash;
BCryptVerifySignatureFn VerifySignature;
BCryptImportKeyPairFn ImportKeyPair;
BCryptExportKeyFn ExportKey;
BCryptDestroyKeyFn DestroyKey;
} BCRYPT_SIGNATURE_FUNCTION_TABLE;
NTSTATUS
WINAPI
GetSignatureInterface(
__in LPCWSTR pszProviderName,
__in LPCWSTR pszAlgId,
__out BCRYPT_SIGNATURE_FUNCTION_TABLE **ppFunctionTable,
__in ULONG dwFlags);
typedef NTSTATUS
(WINAPI * GetSignatureInterfaceFn)(
__in LPCWSTR pszProviderName,
__in LPCWSTR pszAlgId,
__out BCRYPT_SIGNATURE_FUNCTION_TABLE **ppFunctionTable,
__in ULONG dwFlags);
// @@END_DDKSPLIT
#define BCRYPT_RNG_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION(1,0)
// @@BEGIN_DDKSPLIT
typedef struct _BCRYPT_RNG_FUNCTION_TABLE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -