ReactOS 0.4.17-dev-804-g023d8af
bcrypt.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _BCRYPT_ALGORITHM_IDENTIFIER
 
struct  __BCRYPT_KEY_LENGTHS_STRUCT
 
struct  _BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO
 
struct  _BCRYPT_KEY_BLOB
 
struct  _BCRYPT_ECCKEY_BLOB
 
struct  _BCRYPT_RSAKEY_BLOB
 
struct  _BCRYPT_PKCS1_PADDING_INFO
 
struct  _BCRYPT_PSS_PADDING_INFO
 
struct  _BCRYPT_OAEP_PADDING_INFO
 
struct  _BCRYPT_DSA_KEY_BLOB
 
struct  _BCRYPT_DSA_KEY_BLOB_V2
 
struct  _BCRYPT_DH_KEY_BLOB
 
struct  _BCRYPT_DH_PARAMETER_HEADER
 
struct  _CRYPT_INTERFACE_REG
 
struct  _CRYPT_IMAGE_REG
 
struct  _CRYPT_PROVIDER_REG
 
struct  _BCRYPT_KEY_DATA_BLOB_HEADER
 
struct  _BCryptBuffer
 
struct  _BCryptBufferDesc
 
struct  _CRYPT_CONTEXT_FUNCTIONS
 

Macros

#define WINAPI   __stdcall
 
#define IN
 
#define OUT
 
#define OPTIONAL
 
#define BCRYPT_ALGORITHM_NAME   L"AlgorithmName"
 
#define BCRYPT_AUTH_TAG_LENGTH   L"AuthTagLength"
 
#define BCRYPT_BLOCK_LENGTH   L"BlockLength"
 
#define BCRYPT_BLOCK_SIZE_LIST   L"BlockSizeList"
 
#define BCRYPT_CHAINING_MODE   L"ChainingMode"
 
#define BCRYPT_EFFECTIVE_KEY_LENGTH   L"EffectiveKeyLength"
 
#define BCRYPT_HASH_BLOCK_LENGTH   L"HashBlockLength"
 
#define BCRYPT_HASH_LENGTH   L"HashDigestLength"
 
#define BCRYPT_HASH_OID_LIST   L"HashOIDList"
 
#define BCRYPT_KEY_LENGTH   L"KeyLength"
 
#define BCRYPT_KEY_LENGTHS   L"KeyLengths"
 
#define BCRYPT_KEY_OBJECT_LENGTH   L"KeyObjectLength"
 
#define BCRYPT_KEY_STRENGTH   L"KeyStrength"
 
#define BCRYPT_OBJECT_LENGTH   L"ObjectLength"
 
#define BCRYPT_PADDING_SCHEMES   L"PaddingSchemes"
 
#define BCRYPT_PROVIDER_HANDLE   L"ProviderHandle"
 
#define BCRYPT_SIGNATURE_LENGTH   L"SignatureLength"
 
#define BCRYPT_PUBLIC_KEY_LENGTH   L"PublicKeyLength"
 
#define BCRYPT_OPAQUE_KEY_BLOB   L"OpaqueKeyBlob"
 
#define BCRYPT_KEY_DATA_BLOB   L"KeyDataBlob"
 
#define BCRYPT_AES_WRAP_KEY_BLOB   L"Rfc3565KeyWrapBlob"
 
#define BCRYPT_ECCPUBLIC_BLOB   L"ECCPUBLICBLOB"
 
#define BCRYPT_ECCPRIVATE_BLOB   L"ECCPRIVATEBLOB"
 
#define BCRYPT_RSAPUBLIC_BLOB   L"RSAPUBLICBLOB"
 
#define BCRYPT_RSAPRIVATE_BLOB   L"RSAPRIVATEBLOB"
 
#define BCRYPT_RSAFULLPRIVATE_BLOB   L"RSAFULLPRIVATEBLOB"
 
#define BCRYPT_DSA_PUBLIC_BLOB   L"DSAPUBLICBLOB"
 
#define BCRYPT_DSA_PRIVATE_BLOB   L"DSAPRIVATEBLOB"
 
#define BCRYPT_PUBLIC_KEY_BLOB   L"PUBLICBLOB"
 
#define BCRYPT_PRIVATE_KEY_BLOB   L"PRIVATEBLOB"
 
#define BCRYPT_DH_PUBLIC_BLOB   L"DHPUBLICBLOB"
 
#define BCRYPT_DH_PRIVATE_BLOB   L"DHPRIVATEBLOB"
 
#define LEGACY_DSA_PUBLIC_BLOB   L"CAPIDSAPUBLICBLOB"
 
#define LEGACY_DSA_PRIVATE_BLOB   L"CAPIDSAPRIVATEBLOB"
 
#define LEGACY_DSA_V2_PUBLIC_BLOB   L"V2CAPIDSAPUBLICBLOB"
 
#define LEGACY_DSA_V2_PRIVATE_BLOB   L"V2CAPIDSAPRIVATEBLOB"
 
#define LEGACY_RSAPUBLIC_BLOB   L"CAPIPUBLICBLOB"
 
#define LEGACY_RSAPRIVATE_BLOB   L"CAPIPRIVATEBLOB"
 
#define MS_PRIMITIVE_PROVIDER   L"Microsoft Primitive Provider"
 
#define MS_PLATFORM_CRYPTO_PROVIDER   L"Microsoft Platform Crypto Provider"
 
#define BCRYPT_3DES_ALGORITHM   L"3DES"
 
#define BCRYPT_AES_ALGORITHM   L"AES"
 
#define BCRYPT_DES_ALGORITHM   L"DES"
 
#define BCRYPT_DH_ALGORITHM   L"DH"
 
#define BCRYPT_DSA_ALGORITHM   L"DSA"
 
#define BCRYPT_ECDH_P256_ALGORITHM   L"ECDH_P256"
 
#define BCRYPT_ECDH_P384_ALGORITHM   L"ECDH_P384"
 
#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_MD2_ALGORITHM   L"MD2"
 
#define BCRYPT_MD4_ALGORITHM   L"MD4"
 
#define BCRYPT_MD5_ALGORITHM   L"MD5"
 
#define BCRYPT_RC2_ALGORITHM   L"RC2"
 
#define BCRYPT_RC4_ALGORITHM   L"RC4"
 
#define BCRYPT_RNG_ALGORITHM   L"RNG"
 
#define BCRYPT_RSA_ALGORITHM   L"RSA"
 
#define BCRYPT_RSA_SIGN_ALGORITHM   L"RSA_SIGN"
 
#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_PBKDF2_ALGORITHM   L"PBKDF2"
 
#define BCRYPT_CHAIN_MODE_NA   L"ChainingModeN/A"
 
#define BCRYPT_CHAIN_MODE_CBC   L"ChainingModeCBC"
 
#define BCRYPT_CHAIN_MODE_ECB   L"ChainingModeECB"
 
#define BCRYPT_CHAIN_MODE_CFB   L"ChainingModeCFB"
 
#define BCRYPT_CHAIN_MODE_CCM   L"ChainingModeCCM"
 
#define BCRYPT_CHAIN_MODE_GCM   L"ChainingModeGCM"
 
#define BCRYPT_KDF_HASH   L"HASH"
 
#define BCRYPT_KDF_HMAC   L"HMAC"
 
#define BCRYPT_KDF_TLS_PRF   L"TLS_PRF"
 
#define BCRYPT_KDF_SP80056A_CONCAT   L"SP800_56A_CONCAT"
 
#define BCRYPT_KDF_RAW_SECRET   L"TRUNCATE"
 
#define BCRYPT_DH_PARAMETERS   L"DHParameters"
 
#define BCRYPT_ECDSA_PUBLIC_P256_MAGIC   0x31534345
 
#define BCRYPT_ECDSA_PRIVATE_P256_MAGIC   0x32534345
 
#define BCRYPT_ECDSA_PUBLIC_P384_MAGIC   0x33534345
 
#define BCRYPT_ECDSA_PRIVATE_P384_MAGIC   0x34534345
 
#define BCRYPT_ECDSA_PUBLIC_P521_MAGIC   0x35534345
 
#define BCRYPT_ECDSA_PRIVATE_P521_MAGIC   0x36534345
 
#define BCRYPT_ECDH_PUBLIC_P256_MAGIC   0x314b4345
 
#define BCRYPT_ECDH_PRIVATE_P256_MAGIC   0x324b4345
 
#define BCRYPT_ECDH_PUBLIC_P384_MAGIC   0x334b4345
 
#define BCRYPT_ECDH_PRIVATE_P384_MAGIC   0x344b4345
 
#define BCRYPT_ECDH_PUBLIC_P521_MAGIC   0x354b4345
 
#define BCRYPT_ECDH_PRIVATE_P521_MAGIC   0x364b4345
 
#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
 
#define BCRYPT_KEY_DERIVATION_OPERATION   0x00000040
 
#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
 
#define BCRYPT_KEY_DERIVATION_INTERFACE   0x00000007
 
#define BCRYPT_SUPPORTED_PAD_ROUTER   0x00000001
 
#define BCRYPT_SUPPORTED_PAD_PKCS1_ENC   0x00000002
 
#define BCRYPT_SUPPORTED_PAD_PKCS1_SIG   0x00000004
 
#define BCRYPT_SUPPORTED_PAD_OAEP   0x00000008
 
#define BCRYPT_SUPPORTED_PAD_PSS   0x00000010
 
#define BCRYPT_RSAPUBLIC_MAGIC   0x31415352
 
#define BCRYPT_RSAPRIVATE_MAGIC   0x32415352
 
#define BCRYPT_RSAFULLPRIVATE_MAGIC   0x33415352
 
#define BCRYPT_PAD_NONE   0x00000001
 
#define BCRYPT_PAD_PKCS1   0x00000002
 
#define BCRYPT_PAD_OAEP   0x00000004
 
#define BCRYPT_PAD_PSS   0x00000008
 
#define BCRYPT_PAD_PKCS1_OPTIONAL_HASH_OID   0x00000010
 
#define BCRYPT_DSA_PUBLIC_MAGIC   0x42505344
 
#define BCRYPT_DSA_PRIVATE_MAGIC   0x56505344
 
#define BCRYPT_DSA_PUBLIC_MAGIC_V2   0x32425044
 
#define BCRYPT_DSA_PRIVATE_MAGIC_V2   0x32565044
 
#define BCRYPT_DH_PUBLIC_MAGIC   0x42504844
 
#define BCRYPT_DH_PRIVATE_MAGIC   0x56504844
 
#define BCRYPT_DH_PARAMETERS_MAGIC   0x4d504844
 
#define BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION   1
 
#define BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG   0x00000001
 
#define BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG   0x00000002
 
#define KDF_HASH_ALGORITHM   0x00
 
#define KDF_SECRET_PREPEND   0x01
 
#define KDF_SECRET_APPEND   0x02
 
#define KDF_HMAC_KEY   0x03
 
#define KDF_TLS_PRF_LABEL   0x04
 
#define KDF_TLS_PRF_SEED   0x05
 
#define KDF_SECRET_HANDLE   0x06
 
#define KDF_TLS_PRF_PROTOCOL   0x07
 
#define KDF_ALGORITHMID   0x08
 
#define KDF_PARTYUINFO   0x09
 
#define KDF_PARTYVINFO   0x0a
 
#define KDF_SUPPPUBINFO   0x0b
 
#define KDF_SUPPPRIVINFO   0x0c
 
#define KDF_LABEL   0x0d
 
#define KDF_CONTEXT   0x0e
 
#define KDF_SALT   0x0f
 
#define KDF_ITERATION_COUNT   0x10
 
#define BCRYPTBUFFER_VERSION   0
 
#define BCRYPT_KEY_DATA_BLOB_MAGIC   0x4d42444b
 
#define BCRYPT_KEY_DATA_BLOB_VERSION1   1
 
#define BCRYPT_MD2_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000001)
 
#define BCRYPT_MD4_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000011)
 
#define BCRYPT_MD5_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000021)
 
#define BCRYPT_SHA1_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000031)
 
#define BCRYPT_SHA256_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000041)
 
#define BCRYPT_SHA384_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000051)
 
#define BCRYPT_SHA512_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000061)
 
#define BCRYPT_RC4_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000071)
 
#define BCRYPT_RNG_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000081)
 
#define BCRYPT_HMAC_MD5_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000091)
 
#define BCRYPT_HMAC_SHA1_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000a1)
 
#define BCRYPT_HMAC_SHA256_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000b1)
 
#define BCRYPT_HMAC_SHA384_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000c1)
 
#define BCRYPT_HMAC_SHA512_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000d1)
 
#define BCRYPT_RSA_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000e1)
 
#define BCRYPT_ECDSA_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000f1)
 
#define BCRYPT_AES_CMAC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000101)
 
#define BCRYPT_AES_GMAC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000111)
 
#define BCRYPT_HMAC_MD2_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000121)
 
#define BCRYPT_HMAC_MD4_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000131)
 
#define BCRYPT_3DES_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000141)
 
#define BCRYPT_3DES_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000151)
 
#define BCRYPT_3DES_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000161)
 
#define BCRYPT_3DES_112_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000171)
 
#define BCRYPT_3DES_112_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000181)
 
#define BCRYPT_3DES_112_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000191)
 
#define BCRYPT_AES_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001a1)
 
#define BCRYPT_AES_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001b1)
 
#define BCRYPT_AES_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001c1)
 
#define BCRYPT_AES_CCM_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001d1)
 
#define BCRYPT_AES_GCM_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001e1)
 
#define BCRYPT_DES_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001f1)
 
#define BCRYPT_DES_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000201)
 
#define BCRYPT_DES_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000211)
 
#define BCRYPT_DESX_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000221)
 
#define BCRYPT_DESX_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000231)
 
#define BCRYPT_DESX_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000241)
 
#define BCRYPT_RC2_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000251)
 
#define BCRYPT_RC2_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000261)
 
#define BCRYPT_RC2_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000271)
 
#define BCRYPT_DH_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000281)
 
#define BCRYPT_ECDH_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000291)
 
#define BCRYPT_ECDH_P256_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002a1)
 
#define BCRYPT_ECDH_P384_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002b1)
 
#define BCRYPT_ECDH_P521_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002c1)
 
#define BCRYPT_DSA_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002d1)
 
#define BCRYPT_ECDSA_P256_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002e1)
 
#define BCRYPT_ECDSA_P384_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002f1)
 
#define BCRYPT_ECDSA_P521_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000301)
 
#define BCRYPT_RSA_SIGN_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000311)
 
#define BCRYPT_CAPI_KDF_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000321)
 
#define BCRYPT_PBKDF2_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000331)
 
#define BCRYPT_SP800108_CTR_HMAC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000341)
 
#define BCRYPT_SP80056A_CONCAT_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000351)
 
#define BCRYPT_TLS1_1_KDF_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000361)
 
#define BCRYPT_TLS1_2_KDF_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000371)
 
#define BCRYPT_XTS_AES_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000381)
 
#define BCRYPT_HKDF_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000391)
 
#define BCRYPT_RNG_USE_ENTROPY_IN_BUFFER   0x00000001
 
#define BCRYPT_USE_SYSTEM_PREFERRED_RNG   0x00000002
 
#define BCRYPT_ALG_HANDLE_HMAC_FLAG   0x00000008
 
#define BCRYPT_BLOCK_PADDING   0x00000001
 
#define BCRYPT_HASH_REUSABLE_FLAG   0x00000020
 
#define CRYPT_LOCAL   0x00000001
 
#define CRYPT_DOMAIN   0x00000002
 

Typedefs

typedef NTSTATUSPNTSTATUS
 
typedef struct _BCRYPT_ALGORITHM_IDENTIFIER BCRYPT_ALGORITHM_IDENTIFIER
 
typedef struct __BCRYPT_KEY_LENGTHS_STRUCT BCRYPT_KEY_LENGTHS_STRUCT
 
typedef struct __BCRYPT_KEY_LENGTHS_STRUCT BCRYPT_AUTH_TAG_LENGTHS_STRUCT
 
typedef struct _BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO
 
typedef struct _BCRYPT_AUTHENTICATED_CIPHER_MODE_INFOPBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO
 
typedef struct _BCRYPT_KEY_BLOB BCRYPT_KEY_BLOB
 
typedef struct _BCRYPT_ECCKEY_BLOB BCRYPT_ECCKEY_BLOB
 
typedef struct _BCRYPT_ECCKEY_BLOBPBCRYPT_ECCKEY_BLOB
 
typedef struct _BCRYPT_RSAKEY_BLOB BCRYPT_RSAKEY_BLOB
 
typedef struct _BCRYPT_PKCS1_PADDING_INFO BCRYPT_PKCS1_PADDING_INFO
 
typedef struct _BCRYPT_PSS_PADDING_INFO BCRYPT_PSS_PADDING_INFO
 
typedef struct _BCRYPT_OAEP_PADDING_INFO BCRYPT_OAEP_PADDING_INFO
 
typedef struct _BCRYPT_DSA_KEY_BLOB BCRYPT_DSA_KEY_BLOB
 
typedef struct _BCRYPT_DSA_KEY_BLOBPBCRYPT_DSA_KEY_BLOB
 
typedef struct _BCRYPT_DSA_KEY_BLOB_V2 BCRYPT_DSA_KEY_BLOB_V2
 
typedef struct _BCRYPT_DSA_KEY_BLOB_V2PBCRYPT_DSA_KEY_BLOB_V2
 
typedef struct _BCRYPT_DH_KEY_BLOB BCRYPT_DH_KEY_BLOB
 
typedef struct _BCRYPT_DH_KEY_BLOBPBCRYPT_DH_KEY_BLOB
 
typedef struct _BCRYPT_DH_PARAMETER_HEADER BCRYPT_DH_PARAMETER_HEADER
 
typedef struct _CRYPT_INTERFACE_REG CRYPT_INTERFACE_REG
 
typedef struct _CRYPT_INTERFACE_REGPCRYPT_INTERFACE_REG
 
typedef struct _CRYPT_IMAGE_REG CRYPT_IMAGE_REG
 
typedef struct _CRYPT_IMAGE_REGPCRYPT_IMAGE_REG
 
typedef struct _CRYPT_PROVIDER_REG CRYPT_PROVIDER_REG
 
typedef struct _CRYPT_PROVIDER_REGPCRYPT_PROVIDER_REG
 
typedef struct _BCRYPT_KEY_DATA_BLOB_HEADER BCRYPT_KEY_DATA_BLOB_HEADER
 
typedef struct _BCRYPT_KEY_DATA_BLOB_HEADERPBCRYPT_KEY_DATA_BLOB_HEADER
 
typedef struct _BCryptBuffer BCryptBuffer
 
typedef struct _BCryptBufferPBCryptBuffer
 
typedef struct _BCryptBufferDesc BCryptBufferDesc
 
typedef struct _BCryptBufferDescPBCryptBufferDesc
 
typedef PVOID BCRYPT_ALG_HANDLE
 
typedef PVOID BCRYPT_KEY_HANDLE
 
typedef PVOID BCRYPT_HANDLE
 
typedef PVOID BCRYPT_HASH_HANDLE
 
typedef PVOID BCRYPT_SECRET_HANDLE
 
typedef struct _CRYPT_CONTEXT_FUNCTIONS CRYPT_CONTEXT_FUNCTIONS
 
typedef struct _CRYPT_CONTEXT_FUNCTIONSPCRYPT_CONTEXT_FUNCTIONS
 

Enumerations

enum  HASHALGORITHM_ENUM { DSA_HASH_ALGORITHM_SHA1 , DSA_HASH_ALGORITHM_SHA256 , DSA_HASH_ALGORITHM_SHA512 }
 
enum  DSAFIPSVERSION_ENUM { DSA_FIPS186_2 , DSA_FIPS186_3 }
 

Functions

typedef _Return_type_success_ (return >=0) LONG NTSTATUS
 
NTSTATUS WINAPI BCryptAddContextFunction (ULONG, LPCWSTR, ULONG, LPCWSTR, ULONG)
 
NTSTATUS WINAPI BCryptCloseAlgorithmProvider (BCRYPT_ALG_HANDLE, ULONG)
 
NTSTATUS WINAPI BCryptCreateHash (BCRYPT_ALG_HANDLE, BCRYPT_HASH_HANDLE *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG)
 
NTSTATUS WINAPI BCryptDecrypt (BCRYPT_KEY_HANDLE, PUCHAR, ULONG, VOID *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG *, ULONG)
 
NTSTATUS WINAPI BCryptDeriveKey (BCRYPT_SECRET_HANDLE, LPCWSTR, BCryptBufferDesc *, PUCHAR, ULONG, ULONG *, ULONG)
 
NTSTATUS WINAPI BCryptDeriveKeyCapi (BCRYPT_HASH_HANDLE, BCRYPT_ALG_HANDLE, PUCHAR, ULONG, ULONG)
 
NTSTATUS WINAPI BCryptDeriveKeyPBKDF2 (BCRYPT_ALG_HANDLE, PUCHAR, ULONG, PUCHAR, ULONG, ULONGLONG, PUCHAR, ULONG, ULONG)
 
NTSTATUS WINAPI BCryptDestroyHash (BCRYPT_HASH_HANDLE)
 
NTSTATUS WINAPI BCryptDestroyKey (BCRYPT_KEY_HANDLE)
 
NTSTATUS WINAPI BCryptDestroySecret (BCRYPT_SECRET_HANDLE)
 
NTSTATUS WINAPI BCryptDuplicateHash (BCRYPT_HASH_HANDLE, BCRYPT_HASH_HANDLE *, UCHAR *, ULONG, ULONG)
 
NTSTATUS WINAPI BCryptDuplicateKey (BCRYPT_KEY_HANDLE, BCRYPT_KEY_HANDLE *, PUCHAR, ULONG, ULONG)
 
NTSTATUS WINAPI BCryptEncrypt (BCRYPT_KEY_HANDLE, PUCHAR, ULONG, VOID *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG *, ULONG)
 
NTSTATUS WINAPI BCryptEnumAlgorithms (ULONG, ULONG *, BCRYPT_ALGORITHM_IDENTIFIER **, ULONG)
 
NTSTATUS WINAPI BCryptEnumContextFunctions (ULONG, const WCHAR *, ULONG, ULONG *, CRYPT_CONTEXT_FUNCTIONS **)
 
NTSTATUS WINAPI BCryptExportKey (BCRYPT_KEY_HANDLE, BCRYPT_KEY_HANDLE, LPCWSTR, PUCHAR, ULONG, ULONG *, ULONG)
 
NTSTATUS WINAPI BCryptFinalizeKeyPair (BCRYPT_KEY_HANDLE, ULONG)
 
NTSTATUS WINAPI BCryptFinishHash (BCRYPT_HASH_HANDLE, PUCHAR, ULONG, ULONG)
 
void WINAPI BCryptFreeBuffer (void *)
 
NTSTATUS WINAPI BCryptGenRandom (BCRYPT_ALG_HANDLE, PUCHAR, ULONG, ULONG)
 
NTSTATUS WINAPI BCryptGenerateKeyPair (BCRYPT_ALG_HANDLE, BCRYPT_KEY_HANDLE *, ULONG, ULONG)
 
NTSTATUS WINAPI BCryptGenerateSymmetricKey (BCRYPT_ALG_HANDLE, BCRYPT_KEY_HANDLE *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG)
 
NTSTATUS WINAPI BCryptGetFipsAlgorithmMode (BOOLEAN *)
 
NTSTATUS WINAPI BCryptGetProperty (BCRYPT_HANDLE, LPCWSTR, PUCHAR, ULONG, ULONG *, ULONG)
 
NTSTATUS WINAPI BCryptHash (BCRYPT_ALG_HANDLE, PUCHAR, ULONG, PUCHAR, ULONG, PUCHAR, ULONG)
 
NTSTATUS WINAPI BCryptHashData (BCRYPT_HASH_HANDLE, PUCHAR, ULONG, ULONG)
 
NTSTATUS WINAPI BCryptImportKey (BCRYPT_ALG_HANDLE, BCRYPT_KEY_HANDLE, LPCWSTR, BCRYPT_KEY_HANDLE *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG)
 
NTSTATUS WINAPI BCryptImportKeyPair (BCRYPT_ALG_HANDLE, BCRYPT_KEY_HANDLE, LPCWSTR, BCRYPT_KEY_HANDLE *, UCHAR *, ULONG, ULONG)
 
NTSTATUS WINAPI BCryptKeyDerivation (BCRYPT_KEY_HANDLE, BCryptBufferDesc *, UCHAR *, ULONG, ULONG *, ULONG)
 
NTSTATUS WINAPI BCryptOpenAlgorithmProvider (BCRYPT_ALG_HANDLE *, LPCWSTR, LPCWSTR, ULONG)
 
NTSTATUS WINAPI BCryptRemoveContextFunction (ULONG, LPCWSTR, ULONG, LPCWSTR)
 
NTSTATUS WINAPI BCryptSecretAgreement (BCRYPT_KEY_HANDLE, BCRYPT_KEY_HANDLE, BCRYPT_SECRET_HANDLE *, ULONG)
 
NTSTATUS WINAPI BCryptSetProperty (BCRYPT_HANDLE, LPCWSTR, PUCHAR, ULONG, ULONG)
 
NTSTATUS WINAPI BCryptSignHash (BCRYPT_KEY_HANDLE, void *, PUCHAR, ULONG, PUCHAR, ULONG, ULONG *, ULONG)
 
NTSTATUS WINAPI BCryptVerifySignature (BCRYPT_KEY_HANDLE, void *, UCHAR *, ULONG, UCHAR *, ULONG, ULONG)
 

Macro Definition Documentation

◆ BCRYPT_3DES_112_CBC_ALG_HANDLE

#define BCRYPT_3DES_112_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000171)

Definition at line 400 of file bcrypt.h.

◆ BCRYPT_3DES_112_CFB_ALG_HANDLE

#define BCRYPT_3DES_112_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000191)

Definition at line 402 of file bcrypt.h.

◆ BCRYPT_3DES_112_ECB_ALG_HANDLE

#define BCRYPT_3DES_112_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000181)

Definition at line 401 of file bcrypt.h.

◆ BCRYPT_3DES_ALGORITHM

#define BCRYPT_3DES_ALGORITHM   L"3DES"

Definition at line 86 of file bcrypt.h.

◆ BCRYPT_3DES_CBC_ALG_HANDLE

#define BCRYPT_3DES_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000141)

Definition at line 397 of file bcrypt.h.

◆ BCRYPT_3DES_CFB_ALG_HANDLE

#define BCRYPT_3DES_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000161)

Definition at line 399 of file bcrypt.h.

◆ BCRYPT_3DES_ECB_ALG_HANDLE

#define BCRYPT_3DES_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000151)

Definition at line 398 of file bcrypt.h.

◆ BCRYPT_AES_ALGORITHM

#define BCRYPT_AES_ALGORITHM   L"AES"

Definition at line 87 of file bcrypt.h.

◆ BCRYPT_AES_CBC_ALG_HANDLE

#define BCRYPT_AES_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001a1)

Definition at line 403 of file bcrypt.h.

◆ BCRYPT_AES_CCM_ALG_HANDLE

#define BCRYPT_AES_CCM_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001d1)

Definition at line 406 of file bcrypt.h.

◆ BCRYPT_AES_CFB_ALG_HANDLE

#define BCRYPT_AES_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001c1)

Definition at line 405 of file bcrypt.h.

◆ BCRYPT_AES_CMAC_ALG_HANDLE

#define BCRYPT_AES_CMAC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000101)

Definition at line 393 of file bcrypt.h.

◆ BCRYPT_AES_ECB_ALG_HANDLE

#define BCRYPT_AES_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001b1)

Definition at line 404 of file bcrypt.h.

◆ BCRYPT_AES_GCM_ALG_HANDLE

#define BCRYPT_AES_GCM_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001e1)

Definition at line 407 of file bcrypt.h.

◆ BCRYPT_AES_GMAC_ALG_HANDLE

#define BCRYPT_AES_GMAC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000111)

Definition at line 394 of file bcrypt.h.

◆ BCRYPT_AES_WRAP_KEY_BLOB

#define BCRYPT_AES_WRAP_KEY_BLOB   L"Rfc3565KeyWrapBlob"

Definition at line 64 of file bcrypt.h.

◆ BCRYPT_ALG_HANDLE_HMAC_FLAG

#define BCRYPT_ALG_HANDLE_HMAC_FLAG   0x00000008

Definition at line 441 of file bcrypt.h.

◆ BCRYPT_ALGORITHM_NAME

#define BCRYPT_ALGORITHM_NAME   L"AlgorithmName"

Definition at line 43 of file bcrypt.h.

◆ BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE

#define BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE   0x00000003

Definition at line 149 of file bcrypt.h.

◆ BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION

#define BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION   0x00000004

Definition at line 141 of file bcrypt.h.

◆ BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG

#define BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG   0x00000001

Definition at line 300 of file bcrypt.h.

◆ BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG

#define BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG   0x00000002

Definition at line 301 of file bcrypt.h.

◆ BCRYPT_AUTH_TAG_LENGTH

#define BCRYPT_AUTH_TAG_LENGTH   L"AuthTagLength"

Definition at line 44 of file bcrypt.h.

◆ BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION

#define BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION   1

Definition at line 298 of file bcrypt.h.

◆ BCRYPT_BLOCK_LENGTH

#define BCRYPT_BLOCK_LENGTH   L"BlockLength"

Definition at line 45 of file bcrypt.h.

◆ BCRYPT_BLOCK_PADDING

#define BCRYPT_BLOCK_PADDING   0x00000001

Definition at line 444 of file bcrypt.h.

◆ BCRYPT_BLOCK_SIZE_LIST

#define BCRYPT_BLOCK_SIZE_LIST   L"BlockSizeList"

Definition at line 46 of file bcrypt.h.

◆ BCRYPT_CAPI_KDF_ALG_HANDLE

#define BCRYPT_CAPI_KDF_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000321)

Definition at line 427 of file bcrypt.h.

◆ BCRYPT_CHAIN_MODE_CBC

#define BCRYPT_CHAIN_MODE_CBC   L"ChainingModeCBC"

Definition at line 111 of file bcrypt.h.

◆ BCRYPT_CHAIN_MODE_CCM

#define BCRYPT_CHAIN_MODE_CCM   L"ChainingModeCCM"

Definition at line 114 of file bcrypt.h.

◆ BCRYPT_CHAIN_MODE_CFB

#define BCRYPT_CHAIN_MODE_CFB   L"ChainingModeCFB"

Definition at line 113 of file bcrypt.h.

◆ BCRYPT_CHAIN_MODE_ECB

#define BCRYPT_CHAIN_MODE_ECB   L"ChainingModeECB"

Definition at line 112 of file bcrypt.h.

◆ BCRYPT_CHAIN_MODE_GCM

#define BCRYPT_CHAIN_MODE_GCM   L"ChainingModeGCM"

Definition at line 115 of file bcrypt.h.

◆ BCRYPT_CHAIN_MODE_NA

#define BCRYPT_CHAIN_MODE_NA   L"ChainingModeN/A"

Definition at line 110 of file bcrypt.h.

◆ BCRYPT_CHAINING_MODE

#define BCRYPT_CHAINING_MODE   L"ChainingMode"

Definition at line 47 of file bcrypt.h.

◆ BCRYPT_CIPHER_INTERFACE

#define BCRYPT_CIPHER_INTERFACE   0x00000001

Definition at line 147 of file bcrypt.h.

◆ BCRYPT_CIPHER_OPERATION

#define BCRYPT_CIPHER_OPERATION   0x00000001

Definition at line 139 of file bcrypt.h.

◆ BCRYPT_DES_ALGORITHM

#define BCRYPT_DES_ALGORITHM   L"DES"

Definition at line 88 of file bcrypt.h.

◆ BCRYPT_DES_CBC_ALG_HANDLE

#define BCRYPT_DES_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001f1)

Definition at line 408 of file bcrypt.h.

◆ BCRYPT_DES_CFB_ALG_HANDLE

#define BCRYPT_DES_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000211)

Definition at line 410 of file bcrypt.h.

◆ BCRYPT_DES_ECB_ALG_HANDLE

#define BCRYPT_DES_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000201)

Definition at line 409 of file bcrypt.h.

◆ BCRYPT_DESX_CBC_ALG_HANDLE

#define BCRYPT_DESX_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000221)

Definition at line 411 of file bcrypt.h.

◆ BCRYPT_DESX_CFB_ALG_HANDLE

#define BCRYPT_DESX_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000241)

Definition at line 413 of file bcrypt.h.

◆ BCRYPT_DESX_ECB_ALG_HANDLE

#define BCRYPT_DESX_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000231)

Definition at line 412 of file bcrypt.h.

◆ BCRYPT_DH_ALG_HANDLE

#define BCRYPT_DH_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000281)

Definition at line 417 of file bcrypt.h.

◆ BCRYPT_DH_ALGORITHM

#define BCRYPT_DH_ALGORITHM   L"DH"

Definition at line 89 of file bcrypt.h.

◆ BCRYPT_DH_PARAMETERS

#define BCRYPT_DH_PARAMETERS   L"DHParameters"

Definition at line 123 of file bcrypt.h.

◆ BCRYPT_DH_PARAMETERS_MAGIC

#define BCRYPT_DH_PARAMETERS_MAGIC   0x4d504844

Definition at line 289 of file bcrypt.h.

◆ BCRYPT_DH_PRIVATE_BLOB

#define BCRYPT_DH_PRIVATE_BLOB   L"DHPRIVATEBLOB"

Definition at line 75 of file bcrypt.h.

◆ BCRYPT_DH_PRIVATE_MAGIC

#define BCRYPT_DH_PRIVATE_MAGIC   0x56504844

Definition at line 281 of file bcrypt.h.

◆ BCRYPT_DH_PUBLIC_BLOB

#define BCRYPT_DH_PUBLIC_BLOB   L"DHPUBLICBLOB"

Definition at line 74 of file bcrypt.h.

◆ BCRYPT_DH_PUBLIC_MAGIC

#define BCRYPT_DH_PUBLIC_MAGIC   0x42504844

Definition at line 280 of file bcrypt.h.

◆ BCRYPT_DSA_ALG_HANDLE

#define BCRYPT_DSA_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002d1)

Definition at line 422 of file bcrypt.h.

◆ BCRYPT_DSA_ALGORITHM

#define BCRYPT_DSA_ALGORITHM   L"DSA"

Definition at line 90 of file bcrypt.h.

◆ BCRYPT_DSA_PRIVATE_BLOB

#define BCRYPT_DSA_PRIVATE_BLOB   L"DSAPRIVATEBLOB"

Definition at line 71 of file bcrypt.h.

◆ BCRYPT_DSA_PRIVATE_MAGIC

#define BCRYPT_DSA_PRIVATE_MAGIC   0x56505344

Definition at line 242 of file bcrypt.h.

◆ BCRYPT_DSA_PRIVATE_MAGIC_V2

#define BCRYPT_DSA_PRIVATE_MAGIC_V2   0x32565044

Definition at line 254 of file bcrypt.h.

◆ BCRYPT_DSA_PUBLIC_BLOB

#define BCRYPT_DSA_PUBLIC_BLOB   L"DSAPUBLICBLOB"

Definition at line 70 of file bcrypt.h.

◆ BCRYPT_DSA_PUBLIC_MAGIC

#define BCRYPT_DSA_PUBLIC_MAGIC   0x42505344

Definition at line 241 of file bcrypt.h.

◆ BCRYPT_DSA_PUBLIC_MAGIC_V2

#define BCRYPT_DSA_PUBLIC_MAGIC_V2   0x32425044

Definition at line 253 of file bcrypt.h.

◆ BCRYPT_ECCPRIVATE_BLOB

#define BCRYPT_ECCPRIVATE_BLOB   L"ECCPRIVATEBLOB"

Definition at line 66 of file bcrypt.h.

◆ BCRYPT_ECCPUBLIC_BLOB

#define BCRYPT_ECCPUBLIC_BLOB   L"ECCPUBLICBLOB"

Definition at line 65 of file bcrypt.h.

◆ BCRYPT_ECDH_ALG_HANDLE

#define BCRYPT_ECDH_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000291)

Definition at line 418 of file bcrypt.h.

◆ BCRYPT_ECDH_P256_ALG_HANDLE

#define BCRYPT_ECDH_P256_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002a1)

Definition at line 419 of file bcrypt.h.

◆ BCRYPT_ECDH_P256_ALGORITHM

#define BCRYPT_ECDH_P256_ALGORITHM   L"ECDH_P256"

Definition at line 91 of file bcrypt.h.

◆ BCRYPT_ECDH_P384_ALG_HANDLE

#define BCRYPT_ECDH_P384_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002b1)

Definition at line 420 of file bcrypt.h.

◆ BCRYPT_ECDH_P384_ALGORITHM

#define BCRYPT_ECDH_P384_ALGORITHM   L"ECDH_P384"

Definition at line 92 of file bcrypt.h.

◆ BCRYPT_ECDH_P521_ALG_HANDLE

#define BCRYPT_ECDH_P521_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002c1)

Definition at line 421 of file bcrypt.h.

◆ BCRYPT_ECDH_PRIVATE_P256_MAGIC

#define BCRYPT_ECDH_PRIVATE_P256_MAGIC   0x324b4345

Definition at line 133 of file bcrypt.h.

◆ BCRYPT_ECDH_PRIVATE_P384_MAGIC

#define BCRYPT_ECDH_PRIVATE_P384_MAGIC   0x344b4345

Definition at line 135 of file bcrypt.h.

◆ BCRYPT_ECDH_PRIVATE_P521_MAGIC

#define BCRYPT_ECDH_PRIVATE_P521_MAGIC   0x364b4345

Definition at line 137 of file bcrypt.h.

◆ BCRYPT_ECDH_PUBLIC_P256_MAGIC

#define BCRYPT_ECDH_PUBLIC_P256_MAGIC   0x314b4345

Definition at line 132 of file bcrypt.h.

◆ BCRYPT_ECDH_PUBLIC_P384_MAGIC

#define BCRYPT_ECDH_PUBLIC_P384_MAGIC   0x334b4345

Definition at line 134 of file bcrypt.h.

◆ BCRYPT_ECDH_PUBLIC_P521_MAGIC

#define BCRYPT_ECDH_PUBLIC_P521_MAGIC   0x354b4345

Definition at line 136 of file bcrypt.h.

◆ BCRYPT_ECDSA_ALG_HANDLE

#define BCRYPT_ECDSA_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000f1)

Definition at line 392 of file bcrypt.h.

◆ BCRYPT_ECDSA_P256_ALG_HANDLE

#define BCRYPT_ECDSA_P256_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002e1)

Definition at line 423 of file bcrypt.h.

◆ BCRYPT_ECDSA_P256_ALGORITHM

#define BCRYPT_ECDSA_P256_ALGORITHM   L"ECDSA_P256"

Definition at line 93 of file bcrypt.h.

◆ BCRYPT_ECDSA_P384_ALG_HANDLE

#define BCRYPT_ECDSA_P384_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002f1)

Definition at line 424 of file bcrypt.h.

◆ BCRYPT_ECDSA_P384_ALGORITHM

#define BCRYPT_ECDSA_P384_ALGORITHM   L"ECDSA_P384"

Definition at line 94 of file bcrypt.h.

◆ BCRYPT_ECDSA_P521_ALG_HANDLE

#define BCRYPT_ECDSA_P521_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000301)

Definition at line 425 of file bcrypt.h.

◆ BCRYPT_ECDSA_P521_ALGORITHM

#define BCRYPT_ECDSA_P521_ALGORITHM   L"ECDSA_P521"

Definition at line 95 of file bcrypt.h.

◆ BCRYPT_ECDSA_PRIVATE_P256_MAGIC

#define BCRYPT_ECDSA_PRIVATE_P256_MAGIC   0x32534345

Definition at line 126 of file bcrypt.h.

◆ BCRYPT_ECDSA_PRIVATE_P384_MAGIC

#define BCRYPT_ECDSA_PRIVATE_P384_MAGIC   0x34534345

Definition at line 128 of file bcrypt.h.

◆ BCRYPT_ECDSA_PRIVATE_P521_MAGIC

#define BCRYPT_ECDSA_PRIVATE_P521_MAGIC   0x36534345

Definition at line 130 of file bcrypt.h.

◆ BCRYPT_ECDSA_PUBLIC_P256_MAGIC

#define BCRYPT_ECDSA_PUBLIC_P256_MAGIC   0x31534345

Definition at line 125 of file bcrypt.h.

◆ BCRYPT_ECDSA_PUBLIC_P384_MAGIC

#define BCRYPT_ECDSA_PUBLIC_P384_MAGIC   0x33534345

Definition at line 127 of file bcrypt.h.

◆ BCRYPT_ECDSA_PUBLIC_P521_MAGIC

#define BCRYPT_ECDSA_PUBLIC_P521_MAGIC   0x35534345

Definition at line 129 of file bcrypt.h.

◆ BCRYPT_EFFECTIVE_KEY_LENGTH

#define BCRYPT_EFFECTIVE_KEY_LENGTH   L"EffectiveKeyLength"

Definition at line 48 of file bcrypt.h.

◆ BCRYPT_HASH_BLOCK_LENGTH

#define BCRYPT_HASH_BLOCK_LENGTH   L"HashBlockLength"

Definition at line 49 of file bcrypt.h.

◆ BCRYPT_HASH_INTERFACE

#define BCRYPT_HASH_INTERFACE   0x00000002

Definition at line 148 of file bcrypt.h.

◆ BCRYPT_HASH_LENGTH

#define BCRYPT_HASH_LENGTH   L"HashDigestLength"

Definition at line 50 of file bcrypt.h.

◆ BCRYPT_HASH_OID_LIST

#define BCRYPT_HASH_OID_LIST   L"HashOIDList"

Definition at line 51 of file bcrypt.h.

◆ BCRYPT_HASH_OPERATION

#define BCRYPT_HASH_OPERATION   0x00000002

Definition at line 140 of file bcrypt.h.

◆ BCRYPT_HASH_REUSABLE_FLAG

#define BCRYPT_HASH_REUSABLE_FLAG   0x00000020

Definition at line 447 of file bcrypt.h.

◆ BCRYPT_HKDF_ALG_HANDLE

#define BCRYPT_HKDF_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000391)

Definition at line 434 of file bcrypt.h.

◆ BCRYPT_HMAC_MD2_ALG_HANDLE

#define BCRYPT_HMAC_MD2_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000121)

Definition at line 395 of file bcrypt.h.

◆ BCRYPT_HMAC_MD4_ALG_HANDLE

#define BCRYPT_HMAC_MD4_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000131)

Definition at line 396 of file bcrypt.h.

◆ BCRYPT_HMAC_MD5_ALG_HANDLE

#define BCRYPT_HMAC_MD5_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000091)

Definition at line 386 of file bcrypt.h.

◆ BCRYPT_HMAC_SHA1_ALG_HANDLE

#define BCRYPT_HMAC_SHA1_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000a1)

Definition at line 387 of file bcrypt.h.

◆ BCRYPT_HMAC_SHA256_ALG_HANDLE

#define BCRYPT_HMAC_SHA256_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000b1)

Definition at line 388 of file bcrypt.h.

◆ BCRYPT_HMAC_SHA384_ALG_HANDLE

#define BCRYPT_HMAC_SHA384_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000c1)

Definition at line 389 of file bcrypt.h.

◆ BCRYPT_HMAC_SHA512_ALG_HANDLE

#define BCRYPT_HMAC_SHA512_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000d1)

Definition at line 390 of file bcrypt.h.

◆ BCRYPT_KDF_HASH

#define BCRYPT_KDF_HASH   L"HASH"

Definition at line 117 of file bcrypt.h.

◆ BCRYPT_KDF_HMAC

#define BCRYPT_KDF_HMAC   L"HMAC"

Definition at line 118 of file bcrypt.h.

◆ BCRYPT_KDF_RAW_SECRET

#define BCRYPT_KDF_RAW_SECRET   L"TRUNCATE"

Definition at line 121 of file bcrypt.h.

◆ BCRYPT_KDF_SP80056A_CONCAT

#define BCRYPT_KDF_SP80056A_CONCAT   L"SP800_56A_CONCAT"

Definition at line 120 of file bcrypt.h.

◆ BCRYPT_KDF_TLS_PRF

#define BCRYPT_KDF_TLS_PRF   L"TLS_PRF"

Definition at line 119 of file bcrypt.h.

◆ BCRYPT_KEY_DATA_BLOB

#define BCRYPT_KEY_DATA_BLOB   L"KeyDataBlob"

Definition at line 63 of file bcrypt.h.

◆ BCRYPT_KEY_DATA_BLOB_MAGIC

#define BCRYPT_KEY_DATA_BLOB_MAGIC   0x4d42444b

Definition at line 367 of file bcrypt.h.

◆ BCRYPT_KEY_DATA_BLOB_VERSION1

#define BCRYPT_KEY_DATA_BLOB_VERSION1   1

Definition at line 368 of file bcrypt.h.

◆ BCRYPT_KEY_DERIVATION_INTERFACE

#define BCRYPT_KEY_DERIVATION_INTERFACE   0x00000007

Definition at line 153 of file bcrypt.h.

◆ BCRYPT_KEY_DERIVATION_OPERATION

#define BCRYPT_KEY_DERIVATION_OPERATION   0x00000040

Definition at line 145 of file bcrypt.h.

◆ BCRYPT_KEY_LENGTH

#define BCRYPT_KEY_LENGTH   L"KeyLength"

Definition at line 52 of file bcrypt.h.

◆ BCRYPT_KEY_LENGTHS

#define BCRYPT_KEY_LENGTHS   L"KeyLengths"

Definition at line 53 of file bcrypt.h.

◆ BCRYPT_KEY_OBJECT_LENGTH

#define BCRYPT_KEY_OBJECT_LENGTH   L"KeyObjectLength"

Definition at line 54 of file bcrypt.h.

◆ BCRYPT_KEY_STRENGTH

#define BCRYPT_KEY_STRENGTH   L"KeyStrength"

Definition at line 55 of file bcrypt.h.

◆ BCRYPT_MD2_ALG_HANDLE

#define BCRYPT_MD2_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000001)

Definition at line 377 of file bcrypt.h.

◆ BCRYPT_MD2_ALGORITHM

#define BCRYPT_MD2_ALGORITHM   L"MD2"

Definition at line 96 of file bcrypt.h.

◆ BCRYPT_MD4_ALG_HANDLE

#define BCRYPT_MD4_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000011)

Definition at line 378 of file bcrypt.h.

◆ BCRYPT_MD4_ALGORITHM

#define BCRYPT_MD4_ALGORITHM   L"MD4"

Definition at line 97 of file bcrypt.h.

◆ BCRYPT_MD5_ALG_HANDLE

#define BCRYPT_MD5_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000021)

Definition at line 379 of file bcrypt.h.

◆ BCRYPT_MD5_ALGORITHM

#define BCRYPT_MD5_ALGORITHM   L"MD5"

Definition at line 98 of file bcrypt.h.

◆ BCRYPT_OBJECT_LENGTH

#define BCRYPT_OBJECT_LENGTH   L"ObjectLength"

Definition at line 56 of file bcrypt.h.

◆ BCRYPT_OPAQUE_KEY_BLOB

#define BCRYPT_OPAQUE_KEY_BLOB   L"OpaqueKeyBlob"

Definition at line 62 of file bcrypt.h.

◆ BCRYPT_PAD_NONE

#define BCRYPT_PAD_NONE   0x00000001

Definition at line 235 of file bcrypt.h.

◆ BCRYPT_PAD_OAEP

#define BCRYPT_PAD_OAEP   0x00000004

Definition at line 237 of file bcrypt.h.

◆ BCRYPT_PAD_PKCS1

#define BCRYPT_PAD_PKCS1   0x00000002

Definition at line 236 of file bcrypt.h.

◆ BCRYPT_PAD_PKCS1_OPTIONAL_HASH_OID

#define BCRYPT_PAD_PKCS1_OPTIONAL_HASH_OID   0x00000010

Definition at line 239 of file bcrypt.h.

◆ BCRYPT_PAD_PSS

#define BCRYPT_PAD_PSS   0x00000008

Definition at line 238 of file bcrypt.h.

◆ BCRYPT_PADDING_SCHEMES

#define BCRYPT_PADDING_SCHEMES   L"PaddingSchemes"

Definition at line 57 of file bcrypt.h.

◆ BCRYPT_PBKDF2_ALG_HANDLE

#define BCRYPT_PBKDF2_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000331)

Definition at line 428 of file bcrypt.h.

◆ BCRYPT_PBKDF2_ALGORITHM

#define BCRYPT_PBKDF2_ALGORITHM   L"PBKDF2"

Definition at line 108 of file bcrypt.h.

◆ BCRYPT_PRIVATE_KEY_BLOB

#define BCRYPT_PRIVATE_KEY_BLOB   L"PRIVATEBLOB"

Definition at line 73 of file bcrypt.h.

◆ BCRYPT_PROVIDER_HANDLE

#define BCRYPT_PROVIDER_HANDLE   L"ProviderHandle"

Definition at line 58 of file bcrypt.h.

◆ BCRYPT_PUBLIC_KEY_BLOB

#define BCRYPT_PUBLIC_KEY_BLOB   L"PUBLICBLOB"

Definition at line 72 of file bcrypt.h.

◆ BCRYPT_PUBLIC_KEY_LENGTH

#define BCRYPT_PUBLIC_KEY_LENGTH   L"PublicKeyLength"

Definition at line 60 of file bcrypt.h.

◆ BCRYPT_RC2_ALGORITHM

#define BCRYPT_RC2_ALGORITHM   L"RC2"

Definition at line 99 of file bcrypt.h.

◆ BCRYPT_RC2_CBC_ALG_HANDLE

#define BCRYPT_RC2_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000251)

Definition at line 414 of file bcrypt.h.

◆ BCRYPT_RC2_CFB_ALG_HANDLE

#define BCRYPT_RC2_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000271)

Definition at line 416 of file bcrypt.h.

◆ BCRYPT_RC2_ECB_ALG_HANDLE

#define BCRYPT_RC2_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000261)

Definition at line 415 of file bcrypt.h.

◆ BCRYPT_RC4_ALG_HANDLE

#define BCRYPT_RC4_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000071)

Definition at line 384 of file bcrypt.h.

◆ BCRYPT_RC4_ALGORITHM

#define BCRYPT_RC4_ALGORITHM   L"RC4"

Definition at line 100 of file bcrypt.h.

◆ BCRYPT_RNG_ALG_HANDLE

#define BCRYPT_RNG_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000081)

Definition at line 385 of file bcrypt.h.

◆ BCRYPT_RNG_ALGORITHM

#define BCRYPT_RNG_ALGORITHM   L"RNG"

Definition at line 101 of file bcrypt.h.

◆ BCRYPT_RNG_INTERFACE

#define BCRYPT_RNG_INTERFACE   0x00000006

Definition at line 152 of file bcrypt.h.

◆ BCRYPT_RNG_OPERATION

#define BCRYPT_RNG_OPERATION   0x00000020

Definition at line 144 of file bcrypt.h.

◆ BCRYPT_RNG_USE_ENTROPY_IN_BUFFER

#define BCRYPT_RNG_USE_ENTROPY_IN_BUFFER   0x00000001

Definition at line 437 of file bcrypt.h.

◆ BCRYPT_RSA_ALG_HANDLE

#define BCRYPT_RSA_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000e1)

Definition at line 391 of file bcrypt.h.

◆ BCRYPT_RSA_ALGORITHM

#define BCRYPT_RSA_ALGORITHM   L"RSA"

Definition at line 102 of file bcrypt.h.

◆ BCRYPT_RSA_SIGN_ALG_HANDLE

#define BCRYPT_RSA_SIGN_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000311)

Definition at line 426 of file bcrypt.h.

◆ BCRYPT_RSA_SIGN_ALGORITHM

#define BCRYPT_RSA_SIGN_ALGORITHM   L"RSA_SIGN"

Definition at line 103 of file bcrypt.h.

◆ BCRYPT_RSAFULLPRIVATE_BLOB

#define BCRYPT_RSAFULLPRIVATE_BLOB   L"RSAFULLPRIVATEBLOB"

Definition at line 69 of file bcrypt.h.

◆ BCRYPT_RSAFULLPRIVATE_MAGIC

#define BCRYPT_RSAFULLPRIVATE_MAGIC   0x33415352

Definition at line 205 of file bcrypt.h.

◆ BCRYPT_RSAPRIVATE_BLOB

#define BCRYPT_RSAPRIVATE_BLOB   L"RSAPRIVATEBLOB"

Definition at line 68 of file bcrypt.h.

◆ BCRYPT_RSAPRIVATE_MAGIC

#define BCRYPT_RSAPRIVATE_MAGIC   0x32415352

Definition at line 204 of file bcrypt.h.

◆ BCRYPT_RSAPUBLIC_BLOB

#define BCRYPT_RSAPUBLIC_BLOB   L"RSAPUBLICBLOB"

Definition at line 67 of file bcrypt.h.

◆ BCRYPT_RSAPUBLIC_MAGIC

#define BCRYPT_RSAPUBLIC_MAGIC   0x31415352

Definition at line 203 of file bcrypt.h.

◆ BCRYPT_SECRET_AGREEMENT_INTERFACE

#define BCRYPT_SECRET_AGREEMENT_INTERFACE   0x00000004

Definition at line 150 of file bcrypt.h.

◆ BCRYPT_SECRET_AGREEMENT_OPERATION

#define BCRYPT_SECRET_AGREEMENT_OPERATION   0x00000008

Definition at line 142 of file bcrypt.h.

◆ BCRYPT_SHA1_ALG_HANDLE

#define BCRYPT_SHA1_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000031)

Definition at line 380 of file bcrypt.h.

◆ BCRYPT_SHA1_ALGORITHM

#define BCRYPT_SHA1_ALGORITHM   L"SHA1"

Definition at line 104 of file bcrypt.h.

◆ BCRYPT_SHA256_ALG_HANDLE

#define BCRYPT_SHA256_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000041)

Definition at line 381 of file bcrypt.h.

◆ BCRYPT_SHA256_ALGORITHM

#define BCRYPT_SHA256_ALGORITHM   L"SHA256"

Definition at line 105 of file bcrypt.h.

◆ BCRYPT_SHA384_ALG_HANDLE

#define BCRYPT_SHA384_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000051)

Definition at line 382 of file bcrypt.h.

◆ BCRYPT_SHA384_ALGORITHM

#define BCRYPT_SHA384_ALGORITHM   L"SHA384"

Definition at line 106 of file bcrypt.h.

◆ BCRYPT_SHA512_ALG_HANDLE

#define BCRYPT_SHA512_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000061)

Definition at line 383 of file bcrypt.h.

◆ BCRYPT_SHA512_ALGORITHM

#define BCRYPT_SHA512_ALGORITHM   L"SHA512"

Definition at line 107 of file bcrypt.h.

◆ BCRYPT_SIGNATURE_INTERFACE

#define BCRYPT_SIGNATURE_INTERFACE   0x00000005

Definition at line 151 of file bcrypt.h.

◆ BCRYPT_SIGNATURE_LENGTH

#define BCRYPT_SIGNATURE_LENGTH   L"SignatureLength"

Definition at line 59 of file bcrypt.h.

◆ BCRYPT_SIGNATURE_OPERATION

#define BCRYPT_SIGNATURE_OPERATION   0x00000010

Definition at line 143 of file bcrypt.h.

◆ BCRYPT_SP800108_CTR_HMAC_ALG_HANDLE

#define BCRYPT_SP800108_CTR_HMAC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000341)

Definition at line 429 of file bcrypt.h.

◆ BCRYPT_SP80056A_CONCAT_ALG_HANDLE

#define BCRYPT_SP80056A_CONCAT_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000351)

Definition at line 430 of file bcrypt.h.

◆ BCRYPT_SUPPORTED_PAD_OAEP

#define BCRYPT_SUPPORTED_PAD_OAEP   0x00000008

Definition at line 158 of file bcrypt.h.

◆ BCRYPT_SUPPORTED_PAD_PKCS1_ENC

#define BCRYPT_SUPPORTED_PAD_PKCS1_ENC   0x00000002

Definition at line 156 of file bcrypt.h.

◆ BCRYPT_SUPPORTED_PAD_PKCS1_SIG

#define BCRYPT_SUPPORTED_PAD_PKCS1_SIG   0x00000004

Definition at line 157 of file bcrypt.h.

◆ BCRYPT_SUPPORTED_PAD_PSS

#define BCRYPT_SUPPORTED_PAD_PSS   0x00000010

Definition at line 159 of file bcrypt.h.

◆ BCRYPT_SUPPORTED_PAD_ROUTER

#define BCRYPT_SUPPORTED_PAD_ROUTER   0x00000001

Definition at line 155 of file bcrypt.h.

◆ BCRYPT_TLS1_1_KDF_ALG_HANDLE

#define BCRYPT_TLS1_1_KDF_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000361)

Definition at line 431 of file bcrypt.h.

◆ BCRYPT_TLS1_2_KDF_ALG_HANDLE

#define BCRYPT_TLS1_2_KDF_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000371)

Definition at line 432 of file bcrypt.h.

◆ BCRYPT_USE_SYSTEM_PREFERRED_RNG

#define BCRYPT_USE_SYSTEM_PREFERRED_RNG   0x00000002

Definition at line 438 of file bcrypt.h.

◆ BCRYPT_XTS_AES_ALG_HANDLE

#define BCRYPT_XTS_AES_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000381)

Definition at line 433 of file bcrypt.h.

◆ BCRYPTBUFFER_VERSION

#define BCRYPTBUFFER_VERSION   0

Definition at line 358 of file bcrypt.h.

◆ CRYPT_DOMAIN

#define CRYPT_DOMAIN   0x00000002

Definition at line 450 of file bcrypt.h.

◆ CRYPT_LOCAL

#define CRYPT_LOCAL   0x00000001

Definition at line 449 of file bcrypt.h.

◆ IN

#define IN

Definition at line 27 of file bcrypt.h.

◆ KDF_ALGORITHMID

#define KDF_ALGORITHMID   0x08

Definition at line 341 of file bcrypt.h.

◆ KDF_CONTEXT

#define KDF_CONTEXT   0x0e

Definition at line 347 of file bcrypt.h.

◆ KDF_HASH_ALGORITHM

#define KDF_HASH_ALGORITHM   0x00

Definition at line 333 of file bcrypt.h.

◆ KDF_HMAC_KEY

#define KDF_HMAC_KEY   0x03

Definition at line 336 of file bcrypt.h.

◆ KDF_ITERATION_COUNT

#define KDF_ITERATION_COUNT   0x10

Definition at line 349 of file bcrypt.h.

◆ KDF_LABEL

#define KDF_LABEL   0x0d

Definition at line 346 of file bcrypt.h.

◆ KDF_PARTYUINFO

#define KDF_PARTYUINFO   0x09

Definition at line 342 of file bcrypt.h.

◆ KDF_PARTYVINFO

#define KDF_PARTYVINFO   0x0a

Definition at line 343 of file bcrypt.h.

◆ KDF_SALT

#define KDF_SALT   0x0f

Definition at line 348 of file bcrypt.h.

◆ KDF_SECRET_APPEND

#define KDF_SECRET_APPEND   0x02

Definition at line 335 of file bcrypt.h.

◆ KDF_SECRET_HANDLE

#define KDF_SECRET_HANDLE   0x06

Definition at line 339 of file bcrypt.h.

◆ KDF_SECRET_PREPEND

#define KDF_SECRET_PREPEND   0x01

Definition at line 334 of file bcrypt.h.

◆ KDF_SUPPPRIVINFO

#define KDF_SUPPPRIVINFO   0x0c

Definition at line 345 of file bcrypt.h.

◆ KDF_SUPPPUBINFO

#define KDF_SUPPPUBINFO   0x0b

Definition at line 344 of file bcrypt.h.

◆ KDF_TLS_PRF_LABEL

#define KDF_TLS_PRF_LABEL   0x04

Definition at line 337 of file bcrypt.h.

◆ KDF_TLS_PRF_PROTOCOL

#define KDF_TLS_PRF_PROTOCOL   0x07

Definition at line 340 of file bcrypt.h.

◆ KDF_TLS_PRF_SEED

#define KDF_TLS_PRF_SEED   0x05

Definition at line 338 of file bcrypt.h.

◆ LEGACY_DSA_PRIVATE_BLOB

#define LEGACY_DSA_PRIVATE_BLOB   L"CAPIDSAPRIVATEBLOB"

Definition at line 77 of file bcrypt.h.

◆ LEGACY_DSA_PUBLIC_BLOB

#define LEGACY_DSA_PUBLIC_BLOB   L"CAPIDSAPUBLICBLOB"

Definition at line 76 of file bcrypt.h.

◆ LEGACY_DSA_V2_PRIVATE_BLOB

#define LEGACY_DSA_V2_PRIVATE_BLOB   L"V2CAPIDSAPRIVATEBLOB"

Definition at line 79 of file bcrypt.h.

◆ LEGACY_DSA_V2_PUBLIC_BLOB

#define LEGACY_DSA_V2_PUBLIC_BLOB   L"V2CAPIDSAPUBLICBLOB"

Definition at line 78 of file bcrypt.h.

◆ LEGACY_RSAPRIVATE_BLOB

#define LEGACY_RSAPRIVATE_BLOB   L"CAPIPRIVATEBLOB"

Definition at line 81 of file bcrypt.h.

◆ LEGACY_RSAPUBLIC_BLOB

#define LEGACY_RSAPUBLIC_BLOB   L"CAPIPUBLICBLOB"

Definition at line 80 of file bcrypt.h.

◆ MS_PLATFORM_CRYPTO_PROVIDER

#define MS_PLATFORM_CRYPTO_PROVIDER   L"Microsoft Platform Crypto Provider"

Definition at line 84 of file bcrypt.h.

◆ MS_PRIMITIVE_PROVIDER

#define MS_PRIMITIVE_PROVIDER   L"Microsoft Primitive Provider"

Definition at line 83 of file bcrypt.h.

◆ OPTIONAL

Definition at line 35 of file bcrypt.h.

◆ OUT

#define OUT

Definition at line 31 of file bcrypt.h.

◆ WINAPI

#define WINAPI   __stdcall

Definition at line 23 of file bcrypt.h.

Typedef Documentation

◆ BCRYPT_ALG_HANDLE

Definition at line 370 of file bcrypt.h.

◆ BCRYPT_ALGORITHM_IDENTIFIER

◆ BCRYPT_AUTH_TAG_LENGTHS_STRUCT

◆ BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO

◆ BCRYPT_DH_KEY_BLOB

◆ BCRYPT_DH_PARAMETER_HEADER

◆ BCRYPT_DSA_KEY_BLOB

◆ BCRYPT_DSA_KEY_BLOB_V2

◆ BCRYPT_ECCKEY_BLOB

◆ BCRYPT_HANDLE

Definition at line 372 of file bcrypt.h.

◆ BCRYPT_HASH_HANDLE

Definition at line 373 of file bcrypt.h.

◆ BCRYPT_KEY_BLOB

◆ BCRYPT_KEY_DATA_BLOB_HEADER

◆ BCRYPT_KEY_HANDLE

Definition at line 371 of file bcrypt.h.

◆ BCRYPT_KEY_LENGTHS_STRUCT

◆ BCRYPT_OAEP_PADDING_INFO

◆ BCRYPT_PKCS1_PADDING_INFO

◆ BCRYPT_PSS_PADDING_INFO

◆ BCRYPT_RSAKEY_BLOB

◆ BCRYPT_SECRET_HANDLE

Definition at line 374 of file bcrypt.h.

◆ BCryptBuffer

◆ BCryptBufferDesc

◆ CRYPT_CONTEXT_FUNCTIONS

◆ CRYPT_IMAGE_REG

◆ CRYPT_INTERFACE_REG

◆ CRYPT_PROVIDER_REG

◆ PBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO

◆ PBCRYPT_DH_KEY_BLOB

◆ PBCRYPT_DSA_KEY_BLOB

◆ PBCRYPT_DSA_KEY_BLOB_V2

◆ PBCRYPT_ECCKEY_BLOB

◆ PBCRYPT_KEY_DATA_BLOB_HEADER

◆ PBCryptBuffer

◆ PBCryptBufferDesc

◆ PCRYPT_CONTEXT_FUNCTIONS

◆ PCRYPT_IMAGE_REG

◆ PCRYPT_INTERFACE_REG

◆ PCRYPT_PROVIDER_REG

◆ PNTSTATUS

typedef NTSTATUS* PNTSTATUS

Definition at line 40 of file bcrypt.h.

Enumeration Type Documentation

◆ DSAFIPSVERSION_ENUM

Enumerator
DSA_FIPS186_2 
DSA_FIPS186_3 

Definition at line 263 of file bcrypt.h.

264{
DSAFIPSVERSION_ENUM
Definition: bcrypt.h:264
@ DSA_FIPS186_3
Definition: bcrypt.h:266
@ DSA_FIPS186_2
Definition: bcrypt.h:265

◆ HASHALGORITHM_ENUM

Enumerator
DSA_HASH_ALGORITHM_SHA1 
DSA_HASH_ALGORITHM_SHA256 
DSA_HASH_ALGORITHM_SHA512 

Definition at line 256 of file bcrypt.h.

257{
HASHALGORITHM_ENUM
Definition: bcrypt.h:257
@ DSA_HASH_ALGORITHM_SHA512
Definition: bcrypt.h:260
@ DSA_HASH_ALGORITHM_SHA256
Definition: bcrypt.h:259
@ DSA_HASH_ALGORITHM_SHA1
Definition: bcrypt.h:258

Function Documentation

◆ _Return_type_success_()

typedef _Return_type_success_ ( return >=  0)

◆ BCryptAddContextFunction()

NTSTATUS WINAPI BCryptAddContextFunction ( ULONG  ,
LPCWSTR  ,
ULONG  ,
LPCWSTR  ,
ULONG   
)

◆ BCryptCloseAlgorithmProvider()

NTSTATUS WINAPI BCryptCloseAlgorithmProvider ( BCRYPT_ALG_HANDLE  ,
ULONG   
)

◆ BCryptCreateHash()

NTSTATUS WINAPI BCryptCreateHash ( BCRYPT_ALG_HANDLE  handle,
BCRYPT_HASH_HANDLE ret_handle,
PUCHAR  object,
ULONG  object_len,
PUCHAR  secret,
ULONG  secret_len,
ULONG  flags 
)

Definition at line 951 of file bcrypt_main.c.

953{
954 struct algorithm *alg = get_alg_object( handle );
955 struct hash *hash;
957
958 TRACE( "%p, %p, %p, %lu, %p, %lu, %#lx\n", handle, ret_handle, object, object_len, secret, secret_len, flags );
960 {
961 FIXME( "unimplemented flags %#lx\n", flags );
963 }
964 if (object) FIXME( "ignoring object buffer\n" );
965
966 if (!alg) return STATUS_INVALID_HANDLE;
967 if (!ret_handle) return STATUS_INVALID_PARAMETER;
968
969 if ((status = hash_create( alg, secret, secret_len, flags, &hash ))) return status;
970 *ret_handle = hash;
971 TRACE( "returning handle %p\n", *ret_handle );
972 return STATUS_SUCCESS;
973}
LONG NTSTATUS
Definition: precomp.h:26
#define FIXME(fmt,...)
Definition: precomp.h:53
#define BCRYPT_HASH_REUSABLE_FLAG
Definition: bcrypt.h:447
static struct algorithm * get_alg_object(BCRYPT_ALG_HANDLE handle)
Definition: bcrypt_main.c:296
static NTSTATUS hash_create(const struct algorithm *alg, UCHAR *secret, ULONG secret_len, ULONG flags, struct hash **ret_hash)
Definition: bcrypt_main.c:926
#define STATUS_INVALID_HANDLE
Definition: d3dkmdt.h:40
#define STATUS_NOT_IMPLEMENTED
Definition: d3dkmdt.h:42
GLbitfield flags
Definition: glext.h:7161
#define STATUS_SUCCESS
Definition: shellext.h:65
#define TRACE(s)
Definition: solgame.cpp:4
ULONG secret_len
Definition: ps.c:97
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135

Referenced by CNG_CalcHash(), CryptHashCertificate2(), and test_VerifySignature().

◆ BCryptDecrypt()

NTSTATUS WINAPI BCryptDecrypt ( BCRYPT_KEY_HANDLE  handle,
PUCHAR  input,
ULONG  input_len,
VOID padding,
PUCHAR  iv,
ULONG  iv_len,
PUCHAR  output,
ULONG  output_len,
ULONG ret_len,
ULONG  flags 
)

Definition at line 2318 of file bcrypt_main.c.

2320{
2321 struct key *key = get_key_object( handle );
2323 NTSTATUS ret;
2324
2325 TRACE( "%p, %p, %lu, %p, %p, %lu, %p, %lu, %p, %#lx\n", handle, input, input_len, padding, iv, iv_len, output,
2327
2328 if (!key) return STATUS_INVALID_HANDLE;
2329
2330 if (is_symmetric_key( key ))
2331 {
2333 {
2334 FIXME( "flags %#lx not supported\n", flags );
2336 }
2337
2338 EnterCriticalSection( &key->u.s.cs );
2340 LeaveCriticalSection( &key->u.s.cs );
2341 }
2342 else
2343 {
2344 if (flags & BCRYPT_PAD_NONE)
2345 {
2346 FIXME( "flags %#lx not implemented\n", flags );
2348 }
2350
2351 params.key = key;
2352 params.input = input;
2353 params.input_len = input_len;
2354 params.padding = padding;
2355 params.output = output;
2356 params.output_len = output_len;
2357 params.ret_len = ret_len;
2358 params.flags = flags;
2360 }
2361
2362 return ret;
2363}
#define BCRYPT_BLOCK_PADDING
Definition: bcrypt.h:444
#define BCRYPT_PAD_NONE
Definition: bcrypt.h:235
NTSTATUS key_asymmetric_decrypt(void *args)
static NTSTATUS key_symmetric_decrypt(struct key *key, UCHAR *input, ULONG input_len, void *padding, UCHAR *iv, ULONG iv_len, UCHAR *output, ULONG output_len, ULONG *ret_len, ULONG flags)
Definition: bcrypt_main.c:1234
static BOOL is_asymmetric_encryption_key(struct key *key)
Definition: bcrypt_main.c:143
static BOOL is_symmetric_key(const struct key *key)
Definition: bcrypt_main.c:137
static struct key * get_key_object(BCRYPT_KEY_HANDLE handle)
Definition: bcrypt_main.c:306
#define STATUS_NOT_SUPPORTED
Definition: d3dkmdt.h:48
return ret
Definition: mutex.c:147
GLenum const GLfloat * params
Definition: glext.h:5645
GLenum GLenum GLenum input
Definition: glext.h:9031
static JOBOBJECTINFOCLASS LPVOID DWORD LPDWORD ret_len
Definition: process.c:81
static const DWORD padding[]
Definition: mciwnd.c:89
Definition: copy.c:22
union key::@318 u
struct key_symmetric s
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

◆ BCryptDeriveKey()

NTSTATUS WINAPI BCryptDeriveKey ( BCRYPT_SECRET_HANDLE  ,
LPCWSTR  ,
BCryptBufferDesc ,
PUCHAR  ,
ULONG  ,
ULONG ,
ULONG   
)

◆ BCryptDeriveKeyCapi()

NTSTATUS WINAPI BCryptDeriveKeyCapi ( BCRYPT_HASH_HANDLE  handle,
BCRYPT_ALG_HANDLE  halg,
PUCHAR  key,
ULONG  keylen,
ULONG  flags 
)

Definition at line 2393 of file bcrypt_main.c.

2394{
2395 struct hash *hash = get_hash_object( handle );
2397 ULONG len, hash_size;
2398
2399 TRACE( "%p, %p, %p, %lu, %#lx\n", handle, halg, key, keylen, flags );
2400
2401 if (!hash) return STATUS_INVALID_HANDLE;
2402 if (!key || !keylen) return STATUS_INVALID_PARAMETER;
2403 hash_get_size( hash, &hash_size );
2404 if (keylen > hash_size * 2) return STATUS_INVALID_PARAMETER;
2405 if (halg)
2406 {
2407 FIXME( "algorithm handle not supported\n" );
2409 }
2410
2411 hash_finalize( hash, buf, sizeof(buf) );
2412 len = hash_size;
2413 if (len < keylen)
2414 {
2415 UCHAR pad1[HMAC_PAD_LEN], pad2[HMAC_PAD_LEN];
2416 ULONG i;
2417
2418 for (i = 0; i < sizeof(pad1); i++)
2419 {
2420 pad1[i] = 0x36 ^ (i < len ? buf[i] : 0);
2421 pad2[i] = 0x5c ^ (i < len ? buf[i] : 0);
2422 }
2423
2424 hash_prepare( hash );
2425 hash_update( hash, pad1, sizeof(pad1) );
2426 hash_finish( hash, buf );
2427
2428 hash_prepare( hash );
2429 hash_update( hash, pad2, sizeof(pad2) );
2430 hash_finish( hash, buf + len );
2431 }
2432 memcpy( key, buf, keylen );
2433 return STATUS_SUCCESS;
2434}
NTSTATUS hash_update(struct hash *hash, UCHAR *input, ULONG size)
NTSTATUS hash_get_size(struct hash *hash, ULONG *output)
NTSTATUS hash_finish(struct hash *hash, UCHAR *output)
#define MAX_HASH_OUTPUT_BYTES
Definition: bcrypt_main.c:101
static void hash_finalize(struct hash *hash, UCHAR *output, ULONG size)
Definition: bcrypt_main.c:1034
#define HMAC_PAD_LEN
Definition: bcrypt_main.c:2392
static void hash_prepare(struct hash *hash)
Definition: bcrypt_main.c:889
static struct hash * get_hash_object(BCRYPT_HASH_HANDLE handle)
Definition: bcrypt_main.c:301
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLenum GLsizei len
Definition: glext.h:6722
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
unsigned char UCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59

◆ BCryptDeriveKeyPBKDF2()

NTSTATUS WINAPI BCryptDeriveKeyPBKDF2 ( BCRYPT_ALG_HANDLE  handle,
PUCHAR  pwd,
ULONG  pwd_len,
PUCHAR  salt,
ULONG  salt_len,
ULONGLONG  iterations,
PUCHAR  dk,
ULONG  dk_len,
ULONG  flags 
)

Definition at line 2518 of file bcrypt_main.c.

2520{
2521 struct algorithm *alg = get_alg_object( handle );
2522
2523 TRACE( "%p, %p, %lu, %p, %lu, %s, %p, %lu, %#lx\n", handle, pwd, pwd_len, salt, salt_len,
2525
2526 if (!alg) return STATUS_INVALID_HANDLE;
2528}
ULONG pwd_len
Definition: bcrypt.c:537
ULONGLONG iterations
Definition: bcrypt.c:539
const UCHAR * dk
Definition: bcrypt.c:543
UCHAR * pwd
Definition: bcrypt.c:541
ULONG dk_len
Definition: bcrypt.c:540
ULONG salt_len
Definition: bcrypt.c:538
static UCHAR salt[]
Definition: bcrypt.c:521
static NTSTATUS derive_key_pbkdf2(struct algorithm *alg, UCHAR *pwd, ULONG pwd_len, UCHAR *salt, ULONG salt_len, ULONGLONG iterations, UCHAR *dk, ULONG dk_len)
Definition: bcrypt_main.c:2472
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:49

◆ BCryptDestroyHash()

NTSTATUS WINAPI BCryptDestroyHash ( BCRYPT_HASH_HANDLE  handle)

Definition at line 1009 of file bcrypt_main.c.

1010{
1011 struct hash *hash = get_hash_object( handle );
1012
1013 TRACE( "%p\n", handle );
1014
1015 if (!hash) return STATUS_INVALID_PARAMETER;
1016 hash_destroy( hash );
1017 return STATUS_SUCCESS;
1018}
static void hash_destroy(struct hash *hash)
Definition: bcrypt_main.c:1002

Referenced by CNG_CalcHash(), CryptHashCertificate2(), and test_VerifySignature().

◆ BCryptDestroyKey()

NTSTATUS WINAPI BCryptDestroyKey ( BCRYPT_KEY_HANDLE  handle)

Definition at line 2261 of file bcrypt_main.c.

2262{
2263 struct key *key = get_key_object( handle );
2264
2265 TRACE( "%p\n", handle );
2266
2267 if (!key) return STATUS_INVALID_HANDLE;
2268 key_destroy( key );
2269 return STATUS_SUCCESS;
2270}
static void key_destroy(struct key *key)
Definition: bcrypt_main.c:1167

Referenced by cng_verify_msg_signature(), CNG_VerifySignature(), test_verify_ecc_signature(), test_VerifySignature(), and testImportPublicKey().

◆ BCryptDestroySecret()

NTSTATUS WINAPI BCryptDestroySecret ( BCRYPT_SECRET_HANDLE  handle)

Definition at line 2563 of file bcrypt_main.c.

2564{
2566
2567 TRACE( "%p\n", handle );
2568
2569 if (!secret) return STATUS_INVALID_HANDLE;
2573 return STATUS_SUCCESS;
2574}
static void destroy_object(struct object *obj)
Definition: bcrypt_main.c:415
static struct secret * get_secret_object(BCRYPT_SECRET_HANDLE handle)
Definition: bcrypt_main.c:311
struct object hdr
struct key * privkey
struct key * pubkey

◆ BCryptDuplicateHash()

NTSTATUS WINAPI BCryptDuplicateHash ( BCRYPT_HASH_HANDLE  handle,
BCRYPT_HASH_HANDLE handle_copy,
UCHAR object,
ULONG  objectlen,
ULONG  flags 
)

Definition at line 975 of file bcrypt_main.c.

977{
978 struct hash *hash_orig = get_hash_object( handle );
979 struct hash *hash_copy;
980
981 TRACE( "%p, %p, %p, %lu, %#lx\n", handle, handle_copy, object, objectlen, flags );
982
983 if (!hash_orig) return STATUS_INVALID_HANDLE;
984 if (!handle_copy) return STATUS_INVALID_PARAMETER;
985 if (object) FIXME( "ignoring object buffer\n" );
986
987 if (!(hash_copy = malloc( sizeof(*hash_copy) ))) return STATUS_NO_MEMORY;
988
989 memcpy( hash_copy, hash_orig, sizeof(*hash_orig) );
990 if (hash_orig->secret && !(hash_copy->secret = malloc( hash_orig->secret_len )))
991 {
992 free( hash_copy );
993 return STATUS_NO_MEMORY;
994 }
995 memcpy( hash_copy->secret, hash_orig->secret, hash_orig->secret_len );
996
997 *handle_copy = hash_copy;
998 TRACE( "returning handle %p\n", *handle_copy );
999 return STATUS_SUCCESS;
1000}
#define STATUS_NO_MEMORY
Definition: d3dkmdt.h:51
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
UCHAR * secret

◆ BCryptDuplicateKey()

NTSTATUS WINAPI BCryptDuplicateKey ( BCRYPT_KEY_HANDLE  handle,
BCRYPT_KEY_HANDLE handle_copy,
PUCHAR  object,
ULONG  object_len,
ULONG  flags 
)

Definition at line 2145 of file bcrypt_main.c.

2147{
2148 struct key *key_orig = get_key_object( handle );
2149 struct key *key_copy;
2151
2152 TRACE( "%p, %p, %p, %lu, %#lx\n", handle, handle_copy, object, object_len, flags );
2153 if (object) FIXME( "ignoring object buffer\n" );
2154
2155 if (!key_orig) return STATUS_INVALID_HANDLE;
2156 if (!handle_copy) return STATUS_INVALID_PARAMETER;
2157
2158 if ((status = key_duplicate( key_orig, &key_copy ))) return status;
2159
2160 *handle_copy = key_copy;
2161 TRACE( "returning handle %p\n", *handle_copy );
2162 return STATUS_SUCCESS;
2163}
static NTSTATUS key_duplicate(struct key *key_orig, struct key **ret_key)
Definition: bcrypt_main.c:2105

◆ BCryptEncrypt()

NTSTATUS WINAPI BCryptEncrypt ( BCRYPT_KEY_HANDLE  handle,
PUCHAR  input,
ULONG  input_len,
VOID padding,
PUCHAR  iv,
ULONG  iv_len,
PUCHAR  output,
ULONG  output_len,
ULONG ret_len,
ULONG  flags 
)

Definition at line 2272 of file bcrypt_main.c.

2274{
2275 struct key *key = get_key_object( handle );
2276 struct key_asymmetric_encrypt_params asymmetric_params;
2277 NTSTATUS ret;
2278
2279 TRACE( "%p, %p, %lu, %p, %p, %lu, %p, %lu, %p, %#lx\n", handle, input, input_len, padding, iv, iv_len, output,
2281
2282 if (!key) return STATUS_INVALID_HANDLE;
2283
2284 if (is_symmetric_key( key ))
2285 {
2287 {
2288 FIXME( "flags %#lx not implemented\n", flags );
2290 }
2291 EnterCriticalSection( &key->u.s.cs );
2293 LeaveCriticalSection( &key->u.s.cs );
2294 }
2295 else
2296 {
2297 if (flags & BCRYPT_PAD_NONE)
2298 {
2299 FIXME( "flags %#lx not implemented\n", flags );
2301 }
2303
2304 asymmetric_params.input = input;
2305 asymmetric_params.input_len = input_len;
2306 asymmetric_params.padding = padding;
2307 asymmetric_params.key = key;
2308 asymmetric_params.output = output;
2309 asymmetric_params.output_len = output_len;
2310 asymmetric_params.ret_len = ret_len;
2311 asymmetric_params.flags = flags;
2312 ret = key_asymmetric_encrypt( &asymmetric_params );
2313 }
2314
2315 return ret;
2316}
NTSTATUS key_asymmetric_encrypt(void *args)
static NTSTATUS key_symmetric_encrypt(struct key *key, UCHAR *input, ULONG input_len, void *padding, UCHAR *iv, ULONG iv_len, UCHAR *output, ULONG output_len, ULONG *ret_len, ULONG flags)
Definition: bcrypt_main.c:1449

◆ BCryptEnumAlgorithms()

NTSTATUS WINAPI BCryptEnumAlgorithms ( ULONG  type,
ULONG ret_count,
BCRYPT_ALGORITHM_IDENTIFIER **  ret_list,
ULONG  flags 
)

Definition at line 175 of file bcrypt_main.c.

176{
177 static const ULONG supported = BCRYPT_CIPHER_OPERATION |\
185 ULONG i, j, count = 0;
186
187 TRACE( "%#lx, %p, %p, %#lx\n", type, ret_count, ret_list, flags );
188
189 if (!ret_count || !ret_list || (type & ~supported)) return STATUS_INVALID_PARAMETER;
190
191 for (i = 0; i < ARRAY_SIZE( builtin_algorithms ); i++)
192 {
194 }
195
196 if (!(list = malloc( count * sizeof(*list) ))) return STATUS_NO_MEMORY;
197
198 for (i = 0, j = 0; i < ARRAY_SIZE( builtin_algorithms ); i++)
199 {
200 if (!match_operation_type( type, builtin_algorithms[i].class )) continue;
201 list[j].pszName = (WCHAR *)builtin_algorithms[i].name;
202 list[j].dwClass = builtin_algorithms[i].class;
203 list[j].dwFlags = 0;
204 j++;
205 }
206
207 *ret_count = count;
208 *ret_list = list;
209 return STATUS_SUCCESS;
210}
#define ARRAY_SIZE(A)
Definition: main.h:20
#define BCRYPT_SECRET_AGREEMENT_OPERATION
Definition: bcrypt.h:142
#define BCRYPT_SIGNATURE_OPERATION
Definition: bcrypt.h:143
#define BCRYPT_HASH_OPERATION
Definition: bcrypt.h:140
#define BCRYPT_RNG_OPERATION
Definition: bcrypt.h:144
#define BCRYPT_CIPHER_OPERATION
Definition: bcrypt.h:139
#define BCRYPT_KEY_DERIVATION_OPERATION
Definition: bcrypt.h:145
#define BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION
Definition: bcrypt.h:141
static BOOL match_operation_type(ULONG type, ULONG class)
Definition: bcrypt_main.c:158
static const struct @319 builtin_algorithms[]
Definition: list.h:37
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
short WCHAR
Definition: pedump.c:58
#define list
Definition: rosglue.h:35
Definition: name.c:39

◆ BCryptEnumContextFunctions()

NTSTATUS WINAPI BCryptEnumContextFunctions ( ULONG  table,
const WCHAR ctx,
ULONG  iface,
ULONG buflen,
CRYPT_CONTEXT_FUNCTIONS **  buffer 
)

Definition at line 77 of file bcrypt_main.c.

79{
80 FIXME( "%#lx, %s, %#lx, %p, %p\n", table, debugstr_w(ctx), iface, buflen, buffer );
82}
GLuint buffer
Definition: glext.h:5915
#define debugstr_w
Definition: kernel32.h:32

◆ BCryptExportKey()

NTSTATUS WINAPI BCryptExportKey ( BCRYPT_KEY_HANDLE  ,
BCRYPT_KEY_HANDLE  ,
LPCWSTR  ,
PUCHAR  ,
ULONG  ,
ULONG ,
ULONG   
)

◆ BCryptFinalizeKeyPair()

NTSTATUS WINAPI BCryptFinalizeKeyPair ( BCRYPT_KEY_HANDLE  handle,
ULONG  flags 
)

Definition at line 2056 of file bcrypt_main.c.

2057{
2058 struct key *key = get_key_object( handle );
2059 NTSTATUS ret;
2060
2061 TRACE( "%p, %#lx\n", key, flags );
2062
2063 if (!key || key->u.a.flags & KEY_FLAG_FINALIZED) return STATUS_INVALID_HANDLE;
2064
2065 if (!(ret = key_asymmetric_generate( key ))) key->u.a.flags |= KEY_FLAG_FINALIZED;
2066 return ret;
2067}
#define KEY_FLAG_FINALIZED
NTSTATUS key_asymmetric_generate(void *args)
struct key_asymmetric a

◆ BCryptFinishHash()

NTSTATUS WINAPI BCryptFinishHash ( BCRYPT_HASH_HANDLE  handle,
PUCHAR  output,
ULONG  size,
ULONG  flags 
)

Definition at line 1058 of file bcrypt_main.c.

1059{
1060 struct hash *hash = get_hash_object( handle );
1061 ULONG hash_size;
1062
1063 TRACE( "%p, %p, %lu, %#lx\n", handle, output, size, flags );
1064
1065 if (!hash) return STATUS_INVALID_HANDLE;
1066 if (!output) return STATUS_INVALID_PARAMETER;
1067 hash_get_size( hash, &hash_size );
1068 if (size != hash_size) return STATUS_INVALID_PARAMETER;
1069
1070 hash_finalize( hash, output, size );
1071 return STATUS_SUCCESS;
1072}
GLsizeiptr size
Definition: glext.h:5919

Referenced by CNG_CalcHash(), CryptHashCertificate2(), and test_VerifySignature().

◆ BCryptFreeBuffer()

void WINAPI BCryptFreeBuffer ( void buffer)

Definition at line 84 of file bcrypt_main.c.

85{
86 free( buffer );
87}

◆ BCryptGenerateKeyPair()

NTSTATUS WINAPI BCryptGenerateKeyPair ( BCRYPT_ALG_HANDLE  handle,
BCRYPT_KEY_HANDLE ret_handle,
ULONG  key_len,
ULONG  flags 
)

Definition at line 2038 of file bcrypt_main.c.

2040{
2041 struct algorithm *alg = get_alg_object( handle );
2042 struct key *key;
2044
2045 TRACE( "%p, %p, %lu, %#lx\n", handle, ret_handle, key_len, flags );
2046
2047 if (!alg) return STATUS_INVALID_HANDLE;
2048 if (!ret_handle) return STATUS_INVALID_PARAMETER;
2049
2050 if ((status = key_asymmetric_create( alg->id, key_len, &key ))) return status;
2051 *ret_handle = key;
2052 TRACE( "returning handle %p\n", *ret_handle );
2053 return STATUS_SUCCESS;
2054}
static NTSTATUS key_asymmetric_create(enum alg_id alg_id, ULONG bitlen, struct key **ret_key)
Definition: bcrypt_main.c:1104
enum alg_id id

◆ BCryptGenerateSymmetricKey()

NTSTATUS WINAPI BCryptGenerateSymmetricKey ( BCRYPT_ALG_HANDLE  handle,
BCRYPT_KEY_HANDLE ret_handle,
PUCHAR  object,
ULONG  object_len,
PUCHAR  secret,
ULONG  secret_len,
ULONG  flags 
)

Definition at line 2023 of file bcrypt_main.c.

2026{
2027 struct algorithm *alg = get_alg_object( handle );
2029
2030 TRACE( "%p, %p, %p, %lu, %p, %lu, %#lx\n", handle, ret_handle, object, object_len, secret, secret_len, flags );
2031 if (object) FIXME( "ignoring object buffer\n" );
2032 if (!alg) return STATUS_INVALID_HANDLE;
2033 if ((status = key_symmetric_generate( alg, ret_handle, secret, secret_len ))) return status;
2034 TRACE( "returning handle %p\n", *ret_handle );
2035 return STATUS_SUCCESS;
2036}
static NTSTATUS key_symmetric_generate(struct algorithm *alg, BCRYPT_KEY_HANDLE *ret_handle, const UCHAR *secret, ULONG secret_len)
Definition: bcrypt_main.c:1189

◆ BCryptGenRandom()

NTSTATUS WINAPI BCryptGenRandom ( BCRYPT_ALG_HANDLE  handle,
PUCHAR  buffer,
ULONG  count,
ULONG  flags 
)

Definition at line 316 of file bcrypt_main.c.

317{
318 const DWORD supported_flags = BCRYPT_USE_SYSTEM_PREFERRED_RNG;
319 struct algorithm *alg = get_alg_object( handle );
320
321 TRACE("%p, %p, %lu, %#lx - semi-stub\n", handle, buffer, count, flags);
322
323 if (!handle)
324 {
325 /* It's valid to call without an algorithm if BCRYPT_USE_SYSTEM_PREFERRED_RNG
326 * is set. In this case the preferred system RNG is used.
327 */
330 }
332 {
333 FIXME( "pseudo-handle %p not supported\n", handle );
335 }
336 else if (!alg || alg->id != ALG_ID_RNG)
338
339 if (!buffer)
341
342 if (flags & ~supported_flags)
343 FIXME("unsupported flags %#lx\n", flags & ~supported_flags);
344
345 if (alg)
346 FIXME("ignoring selected algorithm\n");
347
348 /* When zero bytes are requested the function returns success too. */
349 if (!count)
350 return STATUS_SUCCESS;
351
353 {
355 }
356
357 FIXME("called with unsupported parameters, returning error\n");
359}
#define BCRYPT_RNG_ALG_HANDLE
Definition: bcrypt.h:385
#define BCRYPT_USE_SYSTEM_PREFERRED_RNG
Definition: bcrypt.h:438
@ ALG_ID_RNG
static BOOL is_alg_pseudo_handle(BCRYPT_ALG_HANDLE handle)
Definition: bcrypt_main.c:269
unsigned long DWORD
Definition: ntddk_ex.h:95
#define RtlGenRandom
Definition: ntsecapi.h:691

◆ BCryptGetFipsAlgorithmMode()

NTSTATUS WINAPI BCryptGetFipsAlgorithmMode ( BOOLEAN enabled)

Definition at line 432 of file bcrypt_main.c.

433{
434 FIXME("%p - semi-stub\n", enabled);
435
436 if (!enabled)
438
439 *enabled = FALSE;
440 return STATUS_SUCCESS;
441}
#define FALSE
Definition: types.h:117
GLenum GLenum GLsizei const GLuint GLboolean enabled
Definition: glext.h:7750

◆ BCryptGetProperty()

NTSTATUS WINAPI BCryptGetProperty ( BCRYPT_HANDLE  ,
LPCWSTR  ,
PUCHAR  ,
ULONG  ,
ULONG ,
ULONG   
)

◆ BCryptHash()

NTSTATUS WINAPI BCryptHash ( BCRYPT_ALG_HANDLE  handle,
PUCHAR  secret,
ULONG  secret_len,
PUCHAR  input,
ULONG  input_len,
PUCHAR  output,
ULONG  output_len 
)

Definition at line 1091 of file bcrypt_main.c.

1093{
1094 struct algorithm *alg = get_alg_object( handle );
1095
1096 TRACE( "%p, %p, %lu, %p, %lu, %p, %lu\n", handle, secret, secret_len, input, input_len, output, output_len );
1097
1098 if (!alg) return STATUS_INVALID_HANDLE;
1099 if (!output || output_len != builtin_algorithms[alg->id].hash_length) return STATUS_INVALID_PARAMETER;
1100
1101 return hash_single(alg, secret, secret_len, input, input_len, output, output_len );
1102}
static NTSTATUS hash_single(struct algorithm *alg, UCHAR *secret, ULONG secret_len, UCHAR *input, ULONG input_len, UCHAR *output, ULONG output_len)
Definition: bcrypt_main.c:1074

Referenced by assembly_get_pubkey_token().

◆ BCryptHashData()

NTSTATUS WINAPI BCryptHashData ( BCRYPT_HASH_HANDLE  handle,
PUCHAR  input,
ULONG  size,
ULONG  flags 
)

Definition at line 1020 of file bcrypt_main.c.

1021{
1022 struct hash *hash = get_hash_object( handle );
1023
1024 TRACE( "%p, %p, %lu, %#lx\n", handle, input, size, flags );
1025
1026 if (!hash) return STATUS_INVALID_HANDLE;
1027 if (!input) return STATUS_SUCCESS;
1028
1030
1031 return STATUS_SUCCESS;
1032}

Referenced by CNG_CalcHash(), CryptHashCertificate2(), and test_VerifySignature().

◆ BCryptImportKey()

NTSTATUS WINAPI BCryptImportKey ( BCRYPT_ALG_HANDLE  ,
BCRYPT_KEY_HANDLE  ,
LPCWSTR  ,
BCRYPT_KEY_HANDLE ,
PUCHAR  ,
ULONG  ,
PUCHAR  ,
ULONG  ,
ULONG   
)

◆ BCryptImportKeyPair()

NTSTATUS WINAPI BCryptImportKeyPair ( BCRYPT_ALG_HANDLE  ,
BCRYPT_KEY_HANDLE  ,
LPCWSTR  ,
BCRYPT_KEY_HANDLE ,
UCHAR ,
ULONG  ,
ULONG   
)

◆ BCryptKeyDerivation()

NTSTATUS WINAPI BCryptKeyDerivation ( BCRYPT_KEY_HANDLE  handle,
BCryptBufferDesc desc,
UCHAR output,
ULONG  output_size,
ULONG ret_len,
ULONG  flags 
)

Definition at line 2697 of file bcrypt_main.c.

2699{
2700 struct key *key = get_key_object( handle );
2701 struct algorithm *alg = NULL;
2702 ULONGLONG iter_count = 10000;
2703 ULONG salt_size = 0;
2704 UCHAR *salt = NULL;
2706 ULONG i;
2707
2708 TRACE( "%p, %p, %p, %lu, %p, %#lx\n", key, desc, output, output_size, ret_len, flags );
2709
2710 if (!key || !desc || !ret_len) return STATUS_INVALID_PARAMETER;
2711 if (key->alg_id != ALG_ID_PBKDF2)
2712 {
2713 FIXME( "unsupported key %d\n", key->alg_id );
2715 }
2716
2717 for (i = 0; i < desc->cBuffers; i++)
2718 {
2719 switch (desc->pBuffers[i].BufferType)
2720 {
2721 case KDF_HASH_ALGORITHM:
2722 alg = get_hash_alg( desc->pBuffers + i, TRUE );
2723 break;
2724 case KDF_SALT:
2725 salt = desc->pBuffers[i].pvBuffer;
2726 salt_size = desc->pBuffers[i].cbBuffer;
2727 break;
2729 if (desc->pBuffers[i].cbBuffer != sizeof(ULONGLONG)) return STATUS_INVALID_PARAMETER;
2730 iter_count = *(ULONGLONG *)desc->pBuffers[i].pvBuffer;
2731 break;
2732 default:
2733 FIXME( "buffer type %lu not supported\n", desc->pBuffers[i].BufferType );
2734 break;
2735 }
2736 }
2737
2738 status = derive_key_pbkdf2( alg, key->u.s.secret, key->u.s.secret_len,
2739 salt, salt_size, iter_count, output, output_size );
2740 if (!status) *ret_len = output_size;
2741 return status;
2742}
#define KDF_SALT
Definition: bcrypt.h:348
#define KDF_ITERATION_COUNT
Definition: bcrypt.h:349
#define KDF_HASH_ALGORITHM
Definition: bcrypt.h:333
@ ALG_ID_PBKDF2
static struct algorithm * get_hash_alg(BCryptBuffer *buf, BOOL hmac)
Definition: bcrypt_main.c:2601
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1204
enum alg_id alg_id
uint64_t ULONGLONG
Definition: typedefs.h:67

◆ BCryptOpenAlgorithmProvider()

NTSTATUS WINAPI BCryptOpenAlgorithmProvider ( BCRYPT_ALG_HANDLE ,
LPCWSTR  ,
LPCWSTR  ,
ULONG   
)

◆ BCryptRemoveContextFunction()

NTSTATUS WINAPI BCryptRemoveContextFunction ( ULONG  ,
LPCWSTR  ,
ULONG  ,
LPCWSTR   
)

◆ BCryptSecretAgreement()

NTSTATUS WINAPI BCryptSecretAgreement ( BCRYPT_KEY_HANDLE  privkey_handle,
BCRYPT_KEY_HANDLE  pubkey_handle,
BCRYPT_SECRET_HANDLE ret_handle,
ULONG  flags 
)

Definition at line 2530 of file bcrypt_main.c.

2532{
2533 struct key *privkey = get_key_object( privkey_handle );
2534 struct key *pubkey = get_key_object( pubkey_handle );
2535 struct secret *secret;
2537
2538 TRACE( "%p, %p, %p, %#lx\n", privkey_handle, pubkey_handle, ret_handle, flags );
2539
2540 if (!privkey || !pubkey) return STATUS_INVALID_HANDLE;
2542 if (!ret_handle) return STATUS_INVALID_PARAMETER;
2543
2544 if (!(secret = calloc( 1, sizeof(*secret) ))) return STATUS_NO_MEMORY;
2545 secret->hdr.magic = MAGIC_SECRET;
2547 {
2548 free( secret );
2549 return status;
2550 }
2551 if ((status = key_duplicate( pubkey, &secret->pubkey )))
2552 {
2554 free( secret );
2555 return status;
2556 }
2557
2558 *ret_handle = secret;
2559 TRACE( "returning handle %p\n", *ret_handle );
2560 return STATUS_SUCCESS;
2561}
#define MAGIC_SECRET
static BOOL is_agreement_key(struct key *key)
Definition: bcrypt_main.c:148
static const WCHAR pubkey[]
Definition: asmname.c:68
#define calloc
Definition: rosglue.h:14

◆ BCryptSetProperty()

NTSTATUS WINAPI BCryptSetProperty ( BCRYPT_HANDLE  ,
LPCWSTR  ,
PUCHAR  ,
ULONG  ,
ULONG   
)

◆ BCryptSignHash()

NTSTATUS WINAPI BCryptSignHash ( BCRYPT_KEY_HANDLE  handle,
void padding,
PUCHAR  input,
ULONG  input_len,
PUCHAR  output,
ULONG  output_len,
ULONG ret_len,
ULONG  flags 
)

Definition at line 2216 of file bcrypt_main.c.

2218{
2220 struct key *key = get_key_object( handle );
2221
2222 TRACE( "%p, %p, %p, %lu, %p, %lu, %p, %#lx\n", handle, padding, input, input_len, output, output_len,
2223 ret_len, flags );
2224
2225 if (!key) return STATUS_INVALID_HANDLE;
2227
2228 params.key = key;
2229 params.padding = padding;
2230 params.input = input;
2231 params.input_len = input_len;
2232 params.output = output;
2233 params.output_len = output_len;
2234 params.ret_len = ret_len;
2235 params.flags = flags;
2236 return key_asymmetric_sign( &params );
2237}
NTSTATUS key_asymmetric_sign(void *args)
static BOOL is_signature_key(struct key *key)
Definition: bcrypt_main.c:153

◆ BCryptVerifySignature()

NTSTATUS WINAPI BCryptVerifySignature ( BCRYPT_KEY_HANDLE  handle,
void padding,
UCHAR hash,
ULONG  hash_len,
UCHAR signature,
ULONG  signature_len,
ULONG  flags 
)

Definition at line 2239 of file bcrypt_main.c.

2241{
2243 struct key *key = get_key_object( handle );
2244
2245 TRACE( "%p, %p, %p, %lu, %p, %lu, %#lx\n", handle, padding, hash, hash_len, signature, signature_len, flags );
2246
2247 if (!key) return STATUS_INVALID_HANDLE;
2249 if (!hash || !hash_len || !signature || !signature_len) return STATUS_INVALID_PARAMETER;
2250
2251 params.key = key;
2252 params.padding = padding;
2253 params.hash = hash;
2254 params.hash_len = hash_len;
2255 params.signature = signature;
2256 params.signature_len = signature_len;
2257 params.flags = flags;
2258 return key_asymmetric_verify( &params );
2259}
NTSTATUS key_asymmetric_verify(void *args)

Referenced by cng_verify_msg_signature(), CNG_VerifySignature(), and test_VerifySignature().