ReactOS 0.4.17-dev-1190-g4c812f4
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_SUCCESS(st)   ((NTSTATUS)(st) >= 0)
 
#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_INITIALIZATION_VECTOR   L"IV"
 
#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_AES_GMAC_ALGORITHM   L"AES-GMAC"
 
#define BCRYPT_CHACHA20_POLY1305_ALGORITHM   L"CHACHA20_POLY1305"
 
#define BCRYPT_DES_ALGORITHM   L"DES"
 
#define BCRYPT_DH_ALGORITHM   L"DH"
 
#define BCRYPT_DSA_ALGORITHM   L"DSA"
 
#define BCRYPT_ECDH_ALGORITHM   L"ECDH"
 
#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_ECDSA_ALGORITHM   L"ECDSA"
 
#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_PBKDF2_ALGORITHM   L"PBKDF2"
 
#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_TLS1_1_KDF_ALGORITHM   L"TLS1_1_KDF"
 
#define BCRYPT_TLS1_2_KDF_ALGORITHM   L"TLS1_2_KDF"
 
#define BCRYPT_HKDF_ALGORITHM   L"HKDF"
 
#define BCRYPT_HKDF_HASH_ALGORITHM   L"HkdfHashAlgorithm"
 
#define BCRYPT_HKDF_SALT_AND_FINALIZE   L"HkdfSaltAndFinalize"
 
#define BCRYPT_HKDF_PRK_AND_FINALIZE   L"HkdfPrkAndFinalize"
 
#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_ECC_CURVE_NAME   L"ECCCurveName"
 
#define BCRYPT_ECC_CURVE_25519   L"curve25519"
 
#define BCRYPT_ECC_CURVE_BRAINPOOLP256R1   L"brainpoolP256r1"
 
#define BCRYPT_ECC_CURVE_BRAINPOOLP384R1   L"brainpoolP384r1"
 
#define BCRYPT_ECC_CURVE_SECP256R1   L"secP256r1"
 
#define BCRYPT_ECC_CURVE_SECP384R1   L"secP384r1"
 
#define BCRYPT_ECC_CURVE_SECP521R1   L"secP521r1"
 
#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_KDF_HKDF   L"HKDF"
 
#define BCRYPT_DH_PARAMETERS   L"DHParameters"
 
#define BCRYPT_MESSAGE_BLOCK_LENGTH   L"MessageBlockLength"
 
#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_ECDH_PUBLIC_GENERIC_MAGIC   0x504b4345
 
#define BCRYPT_ECDH_PRIVATE_GENERIC_MAGIC   0x564b4345
 
#define BCRYPT_ECDSA_PUBLIC_GENERIC_MAGIC   0x50444345
 
#define BCRYPT_ECDSA_PRIVATE_GENERIC_MAGIC   0x56444345
 
#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 KDF_HKDF_INFO   0x14
 
#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_CHACHA20_POLY1305_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000003a1)
 
#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 NTSTATUS * PNTSTATUS
 
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_INFO * PBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO
 
typedef struct _BCRYPT_KEY_BLOB BCRYPT_KEY_BLOB
 
typedef struct _BCRYPT_ECCKEY_BLOB BCRYPT_ECCKEY_BLOB
 
typedef struct _BCRYPT_ECCKEY_BLOB * PBCRYPT_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_BLOB * PBCRYPT_DSA_KEY_BLOB
 
typedef struct _BCRYPT_DSA_KEY_BLOB_V2 BCRYPT_DSA_KEY_BLOB_V2
 
typedef struct _BCRYPT_DSA_KEY_BLOB_V2 * PBCRYPT_DSA_KEY_BLOB_V2
 
typedef struct _BCRYPT_DH_KEY_BLOB BCRYPT_DH_KEY_BLOB
 
typedef struct _BCRYPT_DH_KEY_BLOB * PBCRYPT_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_REG * PCRYPT_INTERFACE_REG
 
typedef struct _CRYPT_IMAGE_REG CRYPT_IMAGE_REG
 
typedef struct _CRYPT_IMAGE_REG * PCRYPT_IMAGE_REG
 
typedef struct _CRYPT_PROVIDER_REG CRYPT_PROVIDER_REG
 
typedef struct _CRYPT_PROVIDER_REG * PCRYPT_PROVIDER_REG
 
typedef struct _BCRYPT_KEY_DATA_BLOB_HEADER BCRYPT_KEY_DATA_BLOB_HEADER
 
typedef struct _BCRYPT_KEY_DATA_BLOB_HEADER * PBCRYPT_KEY_DATA_BLOB_HEADER
 
typedef struct _BCryptBuffer BCryptBuffer
 
typedef struct _BCryptBuffer * PBCryptBuffer
 
typedef struct _BCryptBufferDesc BCryptBufferDesc
 
typedef struct _BCryptBufferDesc * PBCryptBufferDesc
 
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_FUNCTIONS * PCRYPT_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 439 of file bcrypt.h.

◆ BCRYPT_3DES_112_CFB_ALG_HANDLE

#define BCRYPT_3DES_112_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000191)

Definition at line 441 of file bcrypt.h.

◆ BCRYPT_3DES_112_ECB_ALG_HANDLE

#define BCRYPT_3DES_112_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000181)

Definition at line 440 of file bcrypt.h.

◆ BCRYPT_3DES_ALGORITHM

#define BCRYPT_3DES_ALGORITHM   L"3DES"

Definition at line 95 of file bcrypt.h.

◆ BCRYPT_3DES_CBC_ALG_HANDLE

#define BCRYPT_3DES_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000141)

Definition at line 436 of file bcrypt.h.

◆ BCRYPT_3DES_CFB_ALG_HANDLE

#define BCRYPT_3DES_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000161)

Definition at line 438 of file bcrypt.h.

◆ BCRYPT_3DES_ECB_ALG_HANDLE

#define BCRYPT_3DES_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000151)

Definition at line 437 of file bcrypt.h.

◆ BCRYPT_AES_ALGORITHM

#define BCRYPT_AES_ALGORITHM   L"AES"

Definition at line 96 of file bcrypt.h.

◆ BCRYPT_AES_CBC_ALG_HANDLE

#define BCRYPT_AES_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001a1)

Definition at line 442 of file bcrypt.h.

◆ BCRYPT_AES_CCM_ALG_HANDLE

#define BCRYPT_AES_CCM_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001d1)

Definition at line 445 of file bcrypt.h.

◆ BCRYPT_AES_CFB_ALG_HANDLE

#define BCRYPT_AES_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001c1)

Definition at line 444 of file bcrypt.h.

◆ BCRYPT_AES_CMAC_ALG_HANDLE

#define BCRYPT_AES_CMAC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000101)

Definition at line 432 of file bcrypt.h.

◆ BCRYPT_AES_ECB_ALG_HANDLE

#define BCRYPT_AES_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001b1)

Definition at line 443 of file bcrypt.h.

◆ BCRYPT_AES_GCM_ALG_HANDLE

#define BCRYPT_AES_GCM_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001e1)

Definition at line 446 of file bcrypt.h.

◆ BCRYPT_AES_GMAC_ALG_HANDLE

#define BCRYPT_AES_GMAC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000111)

Definition at line 433 of file bcrypt.h.

◆ BCRYPT_AES_GMAC_ALGORITHM

#define BCRYPT_AES_GMAC_ALGORITHM   L"AES-GMAC"

Definition at line 97 of file bcrypt.h.

◆ BCRYPT_AES_WRAP_KEY_BLOB

#define BCRYPT_AES_WRAP_KEY_BLOB   L"Rfc3565KeyWrapBlob"

Definition at line 73 of file bcrypt.h.

◆ BCRYPT_ALG_HANDLE_HMAC_FLAG

#define BCRYPT_ALG_HANDLE_HMAC_FLAG   0x00000008

Definition at line 481 of file bcrypt.h.

◆ BCRYPT_ALGORITHM_NAME

#define BCRYPT_ALGORITHM_NAME   L"AlgorithmName"

Definition at line 51 of file bcrypt.h.

◆ BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE

#define BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE   0x00000003

Definition at line 187 of file bcrypt.h.

◆ BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION

#define BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION   0x00000004

Definition at line 179 of file bcrypt.h.

◆ BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG

#define BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG   0x00000001

Definition at line 338 of file bcrypt.h.

◆ BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG

#define BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG   0x00000002

Definition at line 339 of file bcrypt.h.

◆ BCRYPT_AUTH_TAG_LENGTH

#define BCRYPT_AUTH_TAG_LENGTH   L"AuthTagLength"

Definition at line 52 of file bcrypt.h.

◆ BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION

#define BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION   1

Definition at line 336 of file bcrypt.h.

◆ BCRYPT_BLOCK_LENGTH

#define BCRYPT_BLOCK_LENGTH   L"BlockLength"

Definition at line 53 of file bcrypt.h.

◆ BCRYPT_BLOCK_PADDING

#define BCRYPT_BLOCK_PADDING   0x00000001

Definition at line 484 of file bcrypt.h.

◆ BCRYPT_BLOCK_SIZE_LIST

#define BCRYPT_BLOCK_SIZE_LIST   L"BlockSizeList"

Definition at line 54 of file bcrypt.h.

◆ BCRYPT_CAPI_KDF_ALG_HANDLE

#define BCRYPT_CAPI_KDF_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000321)

Definition at line 466 of file bcrypt.h.

◆ BCRYPT_CHACHA20_POLY1305_ALG_HANDLE

#define BCRYPT_CHACHA20_POLY1305_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000003a1)

Definition at line 474 of file bcrypt.h.

◆ BCRYPT_CHACHA20_POLY1305_ALGORITHM

#define BCRYPT_CHACHA20_POLY1305_ALGORITHM   L"CHACHA20_POLY1305"

Definition at line 98 of file bcrypt.h.

◆ BCRYPT_CHAIN_MODE_CBC

#define BCRYPT_CHAIN_MODE_CBC   L"ChainingModeCBC"

Definition at line 132 of file bcrypt.h.

◆ BCRYPT_CHAIN_MODE_CCM

#define BCRYPT_CHAIN_MODE_CCM   L"ChainingModeCCM"

Definition at line 135 of file bcrypt.h.

◆ BCRYPT_CHAIN_MODE_CFB

#define BCRYPT_CHAIN_MODE_CFB   L"ChainingModeCFB"

Definition at line 134 of file bcrypt.h.

◆ BCRYPT_CHAIN_MODE_ECB

#define BCRYPT_CHAIN_MODE_ECB   L"ChainingModeECB"

Definition at line 133 of file bcrypt.h.

◆ BCRYPT_CHAIN_MODE_GCM

#define BCRYPT_CHAIN_MODE_GCM   L"ChainingModeGCM"

Definition at line 136 of file bcrypt.h.

◆ BCRYPT_CHAIN_MODE_NA

#define BCRYPT_CHAIN_MODE_NA   L"ChainingModeN/A"

Definition at line 131 of file bcrypt.h.

◆ BCRYPT_CHAINING_MODE

#define BCRYPT_CHAINING_MODE   L"ChainingMode"

Definition at line 55 of file bcrypt.h.

◆ BCRYPT_CIPHER_INTERFACE

#define BCRYPT_CIPHER_INTERFACE   0x00000001

Definition at line 185 of file bcrypt.h.

◆ BCRYPT_CIPHER_OPERATION

#define BCRYPT_CIPHER_OPERATION   0x00000001

Definition at line 177 of file bcrypt.h.

◆ BCRYPT_DES_ALGORITHM

#define BCRYPT_DES_ALGORITHM   L"DES"

Definition at line 99 of file bcrypt.h.

◆ BCRYPT_DES_CBC_ALG_HANDLE

#define BCRYPT_DES_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000001f1)

Definition at line 447 of file bcrypt.h.

◆ BCRYPT_DES_CFB_ALG_HANDLE

#define BCRYPT_DES_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000211)

Definition at line 449 of file bcrypt.h.

◆ BCRYPT_DES_ECB_ALG_HANDLE

#define BCRYPT_DES_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000201)

Definition at line 448 of file bcrypt.h.

◆ BCRYPT_DESX_CBC_ALG_HANDLE

#define BCRYPT_DESX_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000221)

Definition at line 450 of file bcrypt.h.

◆ BCRYPT_DESX_CFB_ALG_HANDLE

#define BCRYPT_DESX_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000241)

Definition at line 452 of file bcrypt.h.

◆ BCRYPT_DESX_ECB_ALG_HANDLE

#define BCRYPT_DESX_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000231)

Definition at line 451 of file bcrypt.h.

◆ BCRYPT_DH_ALG_HANDLE

#define BCRYPT_DH_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000281)

Definition at line 456 of file bcrypt.h.

◆ BCRYPT_DH_ALGORITHM

#define BCRYPT_DH_ALGORITHM   L"DH"

Definition at line 100 of file bcrypt.h.

◆ BCRYPT_DH_PARAMETERS

#define BCRYPT_DH_PARAMETERS   L"DHParameters"

Definition at line 153 of file bcrypt.h.

◆ BCRYPT_DH_PARAMETERS_MAGIC

#define BCRYPT_DH_PARAMETERS_MAGIC   0x4d504844

Definition at line 327 of file bcrypt.h.

◆ BCRYPT_DH_PRIVATE_BLOB

#define BCRYPT_DH_PRIVATE_BLOB   L"DHPRIVATEBLOB"

Definition at line 84 of file bcrypt.h.

◆ BCRYPT_DH_PRIVATE_MAGIC

#define BCRYPT_DH_PRIVATE_MAGIC   0x56504844

Definition at line 319 of file bcrypt.h.

◆ BCRYPT_DH_PUBLIC_BLOB

#define BCRYPT_DH_PUBLIC_BLOB   L"DHPUBLICBLOB"

Definition at line 83 of file bcrypt.h.

◆ BCRYPT_DH_PUBLIC_MAGIC

#define BCRYPT_DH_PUBLIC_MAGIC   0x42504844

Definition at line 318 of file bcrypt.h.

◆ BCRYPT_DSA_ALG_HANDLE

#define BCRYPT_DSA_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002d1)

Definition at line 461 of file bcrypt.h.

◆ BCRYPT_DSA_ALGORITHM

#define BCRYPT_DSA_ALGORITHM   L"DSA"

Definition at line 101 of file bcrypt.h.

◆ BCRYPT_DSA_PRIVATE_BLOB

#define BCRYPT_DSA_PRIVATE_BLOB   L"DSAPRIVATEBLOB"

Definition at line 80 of file bcrypt.h.

◆ BCRYPT_DSA_PRIVATE_MAGIC

#define BCRYPT_DSA_PRIVATE_MAGIC   0x56505344

Definition at line 280 of file bcrypt.h.

◆ BCRYPT_DSA_PRIVATE_MAGIC_V2

#define BCRYPT_DSA_PRIVATE_MAGIC_V2   0x32565044

Definition at line 292 of file bcrypt.h.

◆ BCRYPT_DSA_PUBLIC_BLOB

#define BCRYPT_DSA_PUBLIC_BLOB   L"DSAPUBLICBLOB"

Definition at line 79 of file bcrypt.h.

◆ BCRYPT_DSA_PUBLIC_MAGIC

#define BCRYPT_DSA_PUBLIC_MAGIC   0x42505344

Definition at line 279 of file bcrypt.h.

◆ BCRYPT_DSA_PUBLIC_MAGIC_V2

#define BCRYPT_DSA_PUBLIC_MAGIC_V2   0x32425044

Definition at line 291 of file bcrypt.h.

◆ BCRYPT_ECC_CURVE_25519

#define BCRYPT_ECC_CURVE_25519   L"curve25519"

Definition at line 139 of file bcrypt.h.

◆ BCRYPT_ECC_CURVE_BRAINPOOLP256R1

#define BCRYPT_ECC_CURVE_BRAINPOOLP256R1   L"brainpoolP256r1"

Definition at line 140 of file bcrypt.h.

◆ BCRYPT_ECC_CURVE_BRAINPOOLP384R1

#define BCRYPT_ECC_CURVE_BRAINPOOLP384R1   L"brainpoolP384r1"

Definition at line 141 of file bcrypt.h.

◆ BCRYPT_ECC_CURVE_NAME

#define BCRYPT_ECC_CURVE_NAME   L"ECCCurveName"

Definition at line 138 of file bcrypt.h.

◆ BCRYPT_ECC_CURVE_SECP256R1

#define BCRYPT_ECC_CURVE_SECP256R1   L"secP256r1"

Definition at line 142 of file bcrypt.h.

◆ BCRYPT_ECC_CURVE_SECP384R1

#define BCRYPT_ECC_CURVE_SECP384R1   L"secP384r1"

Definition at line 143 of file bcrypt.h.

◆ BCRYPT_ECC_CURVE_SECP521R1

#define BCRYPT_ECC_CURVE_SECP521R1   L"secP521r1"

Definition at line 144 of file bcrypt.h.

◆ BCRYPT_ECCPRIVATE_BLOB

#define BCRYPT_ECCPRIVATE_BLOB   L"ECCPRIVATEBLOB"

Definition at line 75 of file bcrypt.h.

◆ BCRYPT_ECCPUBLIC_BLOB

#define BCRYPT_ECCPUBLIC_BLOB   L"ECCPUBLICBLOB"

Definition at line 74 of file bcrypt.h.

◆ BCRYPT_ECDH_ALG_HANDLE

#define BCRYPT_ECDH_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000291)

Definition at line 457 of file bcrypt.h.

◆ BCRYPT_ECDH_ALGORITHM

#define BCRYPT_ECDH_ALGORITHM   L"ECDH"

Definition at line 102 of file bcrypt.h.

◆ BCRYPT_ECDH_P256_ALG_HANDLE

#define BCRYPT_ECDH_P256_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002a1)

Definition at line 458 of file bcrypt.h.

◆ BCRYPT_ECDH_P256_ALGORITHM

#define BCRYPT_ECDH_P256_ALGORITHM   L"ECDH_P256"

Definition at line 103 of file bcrypt.h.

◆ BCRYPT_ECDH_P384_ALG_HANDLE

#define BCRYPT_ECDH_P384_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002b1)

Definition at line 459 of file bcrypt.h.

◆ BCRYPT_ECDH_P384_ALGORITHM

#define BCRYPT_ECDH_P384_ALGORITHM   L"ECDH_P384"

Definition at line 104 of file bcrypt.h.

◆ BCRYPT_ECDH_P521_ALG_HANDLE

#define BCRYPT_ECDH_P521_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002c1)

Definition at line 460 of file bcrypt.h.

◆ BCRYPT_ECDH_P521_ALGORITHM

#define BCRYPT_ECDH_P521_ALGORITHM   L"ECDH_P521"

Definition at line 105 of file bcrypt.h.

◆ BCRYPT_ECDH_PRIVATE_GENERIC_MAGIC

#define BCRYPT_ECDH_PRIVATE_GENERIC_MAGIC   0x564b4345

Definition at line 172 of file bcrypt.h.

◆ BCRYPT_ECDH_PRIVATE_P256_MAGIC

#define BCRYPT_ECDH_PRIVATE_P256_MAGIC   0x324b4345

Definition at line 165 of file bcrypt.h.

◆ BCRYPT_ECDH_PRIVATE_P384_MAGIC

#define BCRYPT_ECDH_PRIVATE_P384_MAGIC   0x344b4345

Definition at line 167 of file bcrypt.h.

◆ BCRYPT_ECDH_PRIVATE_P521_MAGIC

#define BCRYPT_ECDH_PRIVATE_P521_MAGIC   0x364b4345

Definition at line 169 of file bcrypt.h.

◆ BCRYPT_ECDH_PUBLIC_GENERIC_MAGIC

#define BCRYPT_ECDH_PUBLIC_GENERIC_MAGIC   0x504b4345

Definition at line 171 of file bcrypt.h.

◆ BCRYPT_ECDH_PUBLIC_P256_MAGIC

#define BCRYPT_ECDH_PUBLIC_P256_MAGIC   0x314b4345

Definition at line 164 of file bcrypt.h.

◆ BCRYPT_ECDH_PUBLIC_P384_MAGIC

#define BCRYPT_ECDH_PUBLIC_P384_MAGIC   0x334b4345

Definition at line 166 of file bcrypt.h.

◆ BCRYPT_ECDH_PUBLIC_P521_MAGIC

#define BCRYPT_ECDH_PUBLIC_P521_MAGIC   0x354b4345

Definition at line 168 of file bcrypt.h.

◆ BCRYPT_ECDSA_ALG_HANDLE

#define BCRYPT_ECDSA_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000f1)

Definition at line 431 of file bcrypt.h.

◆ BCRYPT_ECDSA_ALGORITHM

#define BCRYPT_ECDSA_ALGORITHM   L"ECDSA"

Definition at line 106 of file bcrypt.h.

◆ BCRYPT_ECDSA_P256_ALG_HANDLE

#define BCRYPT_ECDSA_P256_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002e1)

Definition at line 462 of file bcrypt.h.

◆ BCRYPT_ECDSA_P256_ALGORITHM

#define BCRYPT_ECDSA_P256_ALGORITHM   L"ECDSA_P256"

Definition at line 107 of file bcrypt.h.

◆ BCRYPT_ECDSA_P384_ALG_HANDLE

#define BCRYPT_ECDSA_P384_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000002f1)

Definition at line 463 of file bcrypt.h.

◆ BCRYPT_ECDSA_P384_ALGORITHM

#define BCRYPT_ECDSA_P384_ALGORITHM   L"ECDSA_P384"

Definition at line 108 of file bcrypt.h.

◆ BCRYPT_ECDSA_P521_ALG_HANDLE

#define BCRYPT_ECDSA_P521_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000301)

Definition at line 464 of file bcrypt.h.

◆ BCRYPT_ECDSA_P521_ALGORITHM

#define BCRYPT_ECDSA_P521_ALGORITHM   L"ECDSA_P521"

Definition at line 109 of file bcrypt.h.

◆ BCRYPT_ECDSA_PRIVATE_GENERIC_MAGIC

#define BCRYPT_ECDSA_PRIVATE_GENERIC_MAGIC   0x56444345

Definition at line 175 of file bcrypt.h.

◆ BCRYPT_ECDSA_PRIVATE_P256_MAGIC

#define BCRYPT_ECDSA_PRIVATE_P256_MAGIC   0x32534345

Definition at line 158 of file bcrypt.h.

◆ BCRYPT_ECDSA_PRIVATE_P384_MAGIC

#define BCRYPT_ECDSA_PRIVATE_P384_MAGIC   0x34534345

Definition at line 160 of file bcrypt.h.

◆ BCRYPT_ECDSA_PRIVATE_P521_MAGIC

#define BCRYPT_ECDSA_PRIVATE_P521_MAGIC   0x36534345

Definition at line 162 of file bcrypt.h.

◆ BCRYPT_ECDSA_PUBLIC_GENERIC_MAGIC

#define BCRYPT_ECDSA_PUBLIC_GENERIC_MAGIC   0x50444345

Definition at line 174 of file bcrypt.h.

◆ BCRYPT_ECDSA_PUBLIC_P256_MAGIC

#define BCRYPT_ECDSA_PUBLIC_P256_MAGIC   0x31534345

Definition at line 157 of file bcrypt.h.

◆ BCRYPT_ECDSA_PUBLIC_P384_MAGIC

#define BCRYPT_ECDSA_PUBLIC_P384_MAGIC   0x33534345

Definition at line 159 of file bcrypt.h.

◆ BCRYPT_ECDSA_PUBLIC_P521_MAGIC

#define BCRYPT_ECDSA_PUBLIC_P521_MAGIC   0x35534345

Definition at line 161 of file bcrypt.h.

◆ BCRYPT_EFFECTIVE_KEY_LENGTH

#define BCRYPT_EFFECTIVE_KEY_LENGTH   L"EffectiveKeyLength"

Definition at line 56 of file bcrypt.h.

◆ BCRYPT_HASH_BLOCK_LENGTH

#define BCRYPT_HASH_BLOCK_LENGTH   L"HashBlockLength"

Definition at line 57 of file bcrypt.h.

◆ BCRYPT_HASH_INTERFACE

#define BCRYPT_HASH_INTERFACE   0x00000002

Definition at line 186 of file bcrypt.h.

◆ BCRYPT_HASH_LENGTH

#define BCRYPT_HASH_LENGTH   L"HashDigestLength"

Definition at line 58 of file bcrypt.h.

◆ BCRYPT_HASH_OID_LIST

#define BCRYPT_HASH_OID_LIST   L"HashOIDList"

Definition at line 59 of file bcrypt.h.

◆ BCRYPT_HASH_OPERATION

#define BCRYPT_HASH_OPERATION   0x00000002

Definition at line 178 of file bcrypt.h.

◆ BCRYPT_HASH_REUSABLE_FLAG

#define BCRYPT_HASH_REUSABLE_FLAG   0x00000020

Definition at line 487 of file bcrypt.h.

◆ BCRYPT_HKDF_ALG_HANDLE

#define BCRYPT_HKDF_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000391)

Definition at line 473 of file bcrypt.h.

◆ BCRYPT_HKDF_ALGORITHM

#define BCRYPT_HKDF_ALGORITHM   L"HKDF"

Definition at line 125 of file bcrypt.h.

◆ BCRYPT_HKDF_HASH_ALGORITHM

#define BCRYPT_HKDF_HASH_ALGORITHM   L"HkdfHashAlgorithm"

Definition at line 127 of file bcrypt.h.

◆ BCRYPT_HKDF_PRK_AND_FINALIZE

#define BCRYPT_HKDF_PRK_AND_FINALIZE   L"HkdfPrkAndFinalize"

Definition at line 129 of file bcrypt.h.

◆ BCRYPT_HKDF_SALT_AND_FINALIZE

#define BCRYPT_HKDF_SALT_AND_FINALIZE   L"HkdfSaltAndFinalize"

Definition at line 128 of file bcrypt.h.

◆ BCRYPT_HMAC_MD2_ALG_HANDLE

#define BCRYPT_HMAC_MD2_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000121)

Definition at line 434 of file bcrypt.h.

◆ BCRYPT_HMAC_MD4_ALG_HANDLE

#define BCRYPT_HMAC_MD4_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000131)

Definition at line 435 of file bcrypt.h.

◆ BCRYPT_HMAC_MD5_ALG_HANDLE

#define BCRYPT_HMAC_MD5_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000091)

Definition at line 425 of file bcrypt.h.

◆ BCRYPT_HMAC_SHA1_ALG_HANDLE

#define BCRYPT_HMAC_SHA1_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000a1)

Definition at line 426 of file bcrypt.h.

◆ BCRYPT_HMAC_SHA256_ALG_HANDLE

#define BCRYPT_HMAC_SHA256_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000b1)

Definition at line 427 of file bcrypt.h.

◆ BCRYPT_HMAC_SHA384_ALG_HANDLE

#define BCRYPT_HMAC_SHA384_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000c1)

Definition at line 428 of file bcrypt.h.

◆ BCRYPT_HMAC_SHA512_ALG_HANDLE

#define BCRYPT_HMAC_SHA512_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000d1)

Definition at line 429 of file bcrypt.h.

◆ BCRYPT_INITIALIZATION_VECTOR

#define BCRYPT_INITIALIZATION_VECTOR   L"IV"

Definition at line 60 of file bcrypt.h.

◆ BCRYPT_KDF_HASH

#define BCRYPT_KDF_HASH   L"HASH"

Definition at line 146 of file bcrypt.h.

◆ BCRYPT_KDF_HKDF

#define BCRYPT_KDF_HKDF   L"HKDF"

Definition at line 151 of file bcrypt.h.

◆ BCRYPT_KDF_HMAC

#define BCRYPT_KDF_HMAC   L"HMAC"

Definition at line 147 of file bcrypt.h.

◆ BCRYPT_KDF_RAW_SECRET

#define BCRYPT_KDF_RAW_SECRET   L"TRUNCATE"

Definition at line 150 of file bcrypt.h.

◆ BCRYPT_KDF_SP80056A_CONCAT

#define BCRYPT_KDF_SP80056A_CONCAT   L"SP800_56A_CONCAT"

Definition at line 149 of file bcrypt.h.

◆ BCRYPT_KDF_TLS_PRF

#define BCRYPT_KDF_TLS_PRF   L"TLS_PRF"

Definition at line 148 of file bcrypt.h.

◆ BCRYPT_KEY_DATA_BLOB

#define BCRYPT_KEY_DATA_BLOB   L"KeyDataBlob"

Definition at line 72 of file bcrypt.h.

◆ BCRYPT_KEY_DATA_BLOB_MAGIC

#define BCRYPT_KEY_DATA_BLOB_MAGIC   0x4d42444b

Definition at line 406 of file bcrypt.h.

◆ BCRYPT_KEY_DATA_BLOB_VERSION1

#define BCRYPT_KEY_DATA_BLOB_VERSION1   1

Definition at line 407 of file bcrypt.h.

◆ BCRYPT_KEY_DERIVATION_INTERFACE

#define BCRYPT_KEY_DERIVATION_INTERFACE   0x00000007

Definition at line 191 of file bcrypt.h.

◆ BCRYPT_KEY_DERIVATION_OPERATION

#define BCRYPT_KEY_DERIVATION_OPERATION   0x00000040

Definition at line 183 of file bcrypt.h.

◆ BCRYPT_KEY_LENGTH

#define BCRYPT_KEY_LENGTH   L"KeyLength"

Definition at line 61 of file bcrypt.h.

◆ BCRYPT_KEY_LENGTHS

#define BCRYPT_KEY_LENGTHS   L"KeyLengths"

Definition at line 62 of file bcrypt.h.

◆ BCRYPT_KEY_OBJECT_LENGTH

#define BCRYPT_KEY_OBJECT_LENGTH   L"KeyObjectLength"

Definition at line 63 of file bcrypt.h.

◆ BCRYPT_KEY_STRENGTH

#define BCRYPT_KEY_STRENGTH   L"KeyStrength"

Definition at line 64 of file bcrypt.h.

◆ BCRYPT_MD2_ALG_HANDLE

#define BCRYPT_MD2_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000001)

Definition at line 416 of file bcrypt.h.

◆ BCRYPT_MD2_ALGORITHM

#define BCRYPT_MD2_ALGORITHM   L"MD2"

Definition at line 110 of file bcrypt.h.

◆ BCRYPT_MD4_ALG_HANDLE

#define BCRYPT_MD4_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000011)

Definition at line 417 of file bcrypt.h.

◆ BCRYPT_MD4_ALGORITHM

#define BCRYPT_MD4_ALGORITHM   L"MD4"

Definition at line 111 of file bcrypt.h.

◆ BCRYPT_MD5_ALG_HANDLE

#define BCRYPT_MD5_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000021)

Definition at line 418 of file bcrypt.h.

◆ BCRYPT_MD5_ALGORITHM

#define BCRYPT_MD5_ALGORITHM   L"MD5"

Definition at line 112 of file bcrypt.h.

◆ BCRYPT_MESSAGE_BLOCK_LENGTH

#define BCRYPT_MESSAGE_BLOCK_LENGTH   L"MessageBlockLength"

Definition at line 155 of file bcrypt.h.

◆ BCRYPT_OBJECT_LENGTH

#define BCRYPT_OBJECT_LENGTH   L"ObjectLength"

Definition at line 65 of file bcrypt.h.

◆ BCRYPT_OPAQUE_KEY_BLOB

#define BCRYPT_OPAQUE_KEY_BLOB   L"OpaqueKeyBlob"

Definition at line 71 of file bcrypt.h.

◆ BCRYPT_PAD_NONE

#define BCRYPT_PAD_NONE   0x00000001

Definition at line 273 of file bcrypt.h.

◆ BCRYPT_PAD_OAEP

#define BCRYPT_PAD_OAEP   0x00000004

Definition at line 275 of file bcrypt.h.

◆ BCRYPT_PAD_PKCS1

#define BCRYPT_PAD_PKCS1   0x00000002

Definition at line 274 of file bcrypt.h.

◆ BCRYPT_PAD_PKCS1_OPTIONAL_HASH_OID

#define BCRYPT_PAD_PKCS1_OPTIONAL_HASH_OID   0x00000010

Definition at line 277 of file bcrypt.h.

◆ BCRYPT_PAD_PSS

#define BCRYPT_PAD_PSS   0x00000008

Definition at line 276 of file bcrypt.h.

◆ BCRYPT_PADDING_SCHEMES

#define BCRYPT_PADDING_SCHEMES   L"PaddingSchemes"

Definition at line 66 of file bcrypt.h.

◆ BCRYPT_PBKDF2_ALG_HANDLE

#define BCRYPT_PBKDF2_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000331)

Definition at line 467 of file bcrypt.h.

◆ BCRYPT_PBKDF2_ALGORITHM

#define BCRYPT_PBKDF2_ALGORITHM   L"PBKDF2"

Definition at line 113 of file bcrypt.h.

◆ BCRYPT_PRIVATE_KEY_BLOB

#define BCRYPT_PRIVATE_KEY_BLOB   L"PRIVATEBLOB"

Definition at line 82 of file bcrypt.h.

◆ BCRYPT_PROVIDER_HANDLE

#define BCRYPT_PROVIDER_HANDLE   L"ProviderHandle"

Definition at line 67 of file bcrypt.h.

◆ BCRYPT_PUBLIC_KEY_BLOB

#define BCRYPT_PUBLIC_KEY_BLOB   L"PUBLICBLOB"

Definition at line 81 of file bcrypt.h.

◆ BCRYPT_PUBLIC_KEY_LENGTH

#define BCRYPT_PUBLIC_KEY_LENGTH   L"PublicKeyLength"

Definition at line 69 of file bcrypt.h.

◆ BCRYPT_RC2_ALGORITHM

#define BCRYPT_RC2_ALGORITHM   L"RC2"

Definition at line 114 of file bcrypt.h.

◆ BCRYPT_RC2_CBC_ALG_HANDLE

#define BCRYPT_RC2_CBC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000251)

Definition at line 453 of file bcrypt.h.

◆ BCRYPT_RC2_CFB_ALG_HANDLE

#define BCRYPT_RC2_CFB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000271)

Definition at line 455 of file bcrypt.h.

◆ BCRYPT_RC2_ECB_ALG_HANDLE

#define BCRYPT_RC2_ECB_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000261)

Definition at line 454 of file bcrypt.h.

◆ BCRYPT_RC4_ALG_HANDLE

#define BCRYPT_RC4_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000071)

Definition at line 423 of file bcrypt.h.

◆ BCRYPT_RC4_ALGORITHM

#define BCRYPT_RC4_ALGORITHM   L"RC4"

Definition at line 115 of file bcrypt.h.

◆ BCRYPT_RNG_ALG_HANDLE

#define BCRYPT_RNG_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000081)

Definition at line 424 of file bcrypt.h.

◆ BCRYPT_RNG_ALGORITHM

#define BCRYPT_RNG_ALGORITHM   L"RNG"

Definition at line 116 of file bcrypt.h.

◆ BCRYPT_RNG_INTERFACE

#define BCRYPT_RNG_INTERFACE   0x00000006

Definition at line 190 of file bcrypt.h.

◆ BCRYPT_RNG_OPERATION

#define BCRYPT_RNG_OPERATION   0x00000020

Definition at line 182 of file bcrypt.h.

◆ BCRYPT_RNG_USE_ENTROPY_IN_BUFFER

#define BCRYPT_RNG_USE_ENTROPY_IN_BUFFER   0x00000001

Definition at line 477 of file bcrypt.h.

◆ BCRYPT_RSA_ALG_HANDLE

#define BCRYPT_RSA_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x000000e1)

Definition at line 430 of file bcrypt.h.

◆ BCRYPT_RSA_ALGORITHM

#define BCRYPT_RSA_ALGORITHM   L"RSA"

Definition at line 117 of file bcrypt.h.

◆ BCRYPT_RSA_SIGN_ALG_HANDLE

#define BCRYPT_RSA_SIGN_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000311)

Definition at line 465 of file bcrypt.h.

◆ BCRYPT_RSA_SIGN_ALGORITHM

#define BCRYPT_RSA_SIGN_ALGORITHM   L"RSA_SIGN"

Definition at line 118 of file bcrypt.h.

◆ BCRYPT_RSAFULLPRIVATE_BLOB

#define BCRYPT_RSAFULLPRIVATE_BLOB   L"RSAFULLPRIVATEBLOB"

Definition at line 78 of file bcrypt.h.

◆ BCRYPT_RSAFULLPRIVATE_MAGIC

#define BCRYPT_RSAFULLPRIVATE_MAGIC   0x33415352

Definition at line 243 of file bcrypt.h.

◆ BCRYPT_RSAPRIVATE_BLOB

#define BCRYPT_RSAPRIVATE_BLOB   L"RSAPRIVATEBLOB"

Definition at line 77 of file bcrypt.h.

◆ BCRYPT_RSAPRIVATE_MAGIC

#define BCRYPT_RSAPRIVATE_MAGIC   0x32415352

Definition at line 242 of file bcrypt.h.

◆ BCRYPT_RSAPUBLIC_BLOB

#define BCRYPT_RSAPUBLIC_BLOB   L"RSAPUBLICBLOB"

Definition at line 76 of file bcrypt.h.

◆ BCRYPT_RSAPUBLIC_MAGIC

#define BCRYPT_RSAPUBLIC_MAGIC   0x31415352

Definition at line 241 of file bcrypt.h.

◆ BCRYPT_SECRET_AGREEMENT_INTERFACE

#define BCRYPT_SECRET_AGREEMENT_INTERFACE   0x00000004

Definition at line 188 of file bcrypt.h.

◆ BCRYPT_SECRET_AGREEMENT_OPERATION

#define BCRYPT_SECRET_AGREEMENT_OPERATION   0x00000008

Definition at line 180 of file bcrypt.h.

◆ BCRYPT_SHA1_ALG_HANDLE

#define BCRYPT_SHA1_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000031)

Definition at line 419 of file bcrypt.h.

◆ BCRYPT_SHA1_ALGORITHM

#define BCRYPT_SHA1_ALGORITHM   L"SHA1"

Definition at line 119 of file bcrypt.h.

◆ BCRYPT_SHA256_ALG_HANDLE

#define BCRYPT_SHA256_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000041)

Definition at line 420 of file bcrypt.h.

◆ BCRYPT_SHA256_ALGORITHM

#define BCRYPT_SHA256_ALGORITHM   L"SHA256"

Definition at line 120 of file bcrypt.h.

◆ BCRYPT_SHA384_ALG_HANDLE

#define BCRYPT_SHA384_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000051)

Definition at line 421 of file bcrypt.h.

◆ BCRYPT_SHA384_ALGORITHM

#define BCRYPT_SHA384_ALGORITHM   L"SHA384"

Definition at line 121 of file bcrypt.h.

◆ BCRYPT_SHA512_ALG_HANDLE

#define BCRYPT_SHA512_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000061)

Definition at line 422 of file bcrypt.h.

◆ BCRYPT_SHA512_ALGORITHM

#define BCRYPT_SHA512_ALGORITHM   L"SHA512"

Definition at line 122 of file bcrypt.h.

◆ BCRYPT_SIGNATURE_INTERFACE

#define BCRYPT_SIGNATURE_INTERFACE   0x00000005

Definition at line 189 of file bcrypt.h.

◆ BCRYPT_SIGNATURE_LENGTH

#define BCRYPT_SIGNATURE_LENGTH   L"SignatureLength"

Definition at line 68 of file bcrypt.h.

◆ BCRYPT_SIGNATURE_OPERATION

#define BCRYPT_SIGNATURE_OPERATION   0x00000010

Definition at line 181 of file bcrypt.h.

◆ BCRYPT_SP800108_CTR_HMAC_ALG_HANDLE

#define BCRYPT_SP800108_CTR_HMAC_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000341)

Definition at line 468 of file bcrypt.h.

◆ BCRYPT_SP80056A_CONCAT_ALG_HANDLE

#define BCRYPT_SP80056A_CONCAT_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000351)

Definition at line 469 of file bcrypt.h.

◆ BCRYPT_SUCCESS

#define BCRYPT_SUCCESS (   st)    ((NTSTATUS)(st) >= 0)

Definition at line 44 of file bcrypt.h.

◆ BCRYPT_SUPPORTED_PAD_OAEP

#define BCRYPT_SUPPORTED_PAD_OAEP   0x00000008

Definition at line 196 of file bcrypt.h.

◆ BCRYPT_SUPPORTED_PAD_PKCS1_ENC

#define BCRYPT_SUPPORTED_PAD_PKCS1_ENC   0x00000002

Definition at line 194 of file bcrypt.h.

◆ BCRYPT_SUPPORTED_PAD_PKCS1_SIG

#define BCRYPT_SUPPORTED_PAD_PKCS1_SIG   0x00000004

Definition at line 195 of file bcrypt.h.

◆ BCRYPT_SUPPORTED_PAD_PSS

#define BCRYPT_SUPPORTED_PAD_PSS   0x00000010

Definition at line 197 of file bcrypt.h.

◆ BCRYPT_SUPPORTED_PAD_ROUTER

#define BCRYPT_SUPPORTED_PAD_ROUTER   0x00000001

Definition at line 193 of file bcrypt.h.

◆ BCRYPT_TLS1_1_KDF_ALG_HANDLE

#define BCRYPT_TLS1_1_KDF_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000361)

Definition at line 470 of file bcrypt.h.

◆ BCRYPT_TLS1_1_KDF_ALGORITHM

#define BCRYPT_TLS1_1_KDF_ALGORITHM   L"TLS1_1_KDF"

Definition at line 123 of file bcrypt.h.

◆ BCRYPT_TLS1_2_KDF_ALG_HANDLE

#define BCRYPT_TLS1_2_KDF_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000371)

Definition at line 471 of file bcrypt.h.

◆ BCRYPT_TLS1_2_KDF_ALGORITHM

#define BCRYPT_TLS1_2_KDF_ALGORITHM   L"TLS1_2_KDF"

Definition at line 124 of file bcrypt.h.

◆ BCRYPT_USE_SYSTEM_PREFERRED_RNG

#define BCRYPT_USE_SYSTEM_PREFERRED_RNG   0x00000002

Definition at line 478 of file bcrypt.h.

◆ BCRYPT_XTS_AES_ALG_HANDLE

#define BCRYPT_XTS_AES_ALG_HANDLE   ((BCRYPT_ALG_HANDLE)0x00000381)

Definition at line 472 of file bcrypt.h.

◆ BCRYPTBUFFER_VERSION

#define BCRYPTBUFFER_VERSION   0

Definition at line 397 of file bcrypt.h.

◆ CRYPT_DOMAIN

#define CRYPT_DOMAIN   0x00000002

Definition at line 490 of file bcrypt.h.

◆ CRYPT_LOCAL

#define CRYPT_LOCAL   0x00000001

Definition at line 489 of file bcrypt.h.

◆ IN

#define IN

Definition at line 27 of file bcrypt.h.

◆ KDF_ALGORITHMID

#define KDF_ALGORITHMID   0x08

Definition at line 379 of file bcrypt.h.

◆ KDF_CONTEXT

#define KDF_CONTEXT   0x0e

Definition at line 385 of file bcrypt.h.

◆ KDF_HASH_ALGORITHM

#define KDF_HASH_ALGORITHM   0x00

Definition at line 371 of file bcrypt.h.

◆ KDF_HKDF_INFO

#define KDF_HKDF_INFO   0x14

Definition at line 388 of file bcrypt.h.

◆ KDF_HMAC_KEY

#define KDF_HMAC_KEY   0x03

Definition at line 374 of file bcrypt.h.

◆ KDF_ITERATION_COUNT

#define KDF_ITERATION_COUNT   0x10

Definition at line 387 of file bcrypt.h.

◆ KDF_LABEL

#define KDF_LABEL   0x0d

Definition at line 384 of file bcrypt.h.

◆ KDF_PARTYUINFO

#define KDF_PARTYUINFO   0x09

Definition at line 380 of file bcrypt.h.

◆ KDF_PARTYVINFO

#define KDF_PARTYVINFO   0x0a

Definition at line 381 of file bcrypt.h.

◆ KDF_SALT

#define KDF_SALT   0x0f

Definition at line 386 of file bcrypt.h.

◆ KDF_SECRET_APPEND

#define KDF_SECRET_APPEND   0x02

Definition at line 373 of file bcrypt.h.

◆ KDF_SECRET_HANDLE

#define KDF_SECRET_HANDLE   0x06

Definition at line 377 of file bcrypt.h.

◆ KDF_SECRET_PREPEND

#define KDF_SECRET_PREPEND   0x01

Definition at line 372 of file bcrypt.h.

◆ KDF_SUPPPRIVINFO

#define KDF_SUPPPRIVINFO   0x0c

Definition at line 383 of file bcrypt.h.

◆ KDF_SUPPPUBINFO

#define KDF_SUPPPUBINFO   0x0b

Definition at line 382 of file bcrypt.h.

◆ KDF_TLS_PRF_LABEL

#define KDF_TLS_PRF_LABEL   0x04

Definition at line 375 of file bcrypt.h.

◆ KDF_TLS_PRF_PROTOCOL

#define KDF_TLS_PRF_PROTOCOL   0x07

Definition at line 378 of file bcrypt.h.

◆ KDF_TLS_PRF_SEED

#define KDF_TLS_PRF_SEED   0x05

Definition at line 376 of file bcrypt.h.

◆ LEGACY_DSA_PRIVATE_BLOB

#define LEGACY_DSA_PRIVATE_BLOB   L"CAPIDSAPRIVATEBLOB"

Definition at line 86 of file bcrypt.h.

◆ LEGACY_DSA_PUBLIC_BLOB

#define LEGACY_DSA_PUBLIC_BLOB   L"CAPIDSAPUBLICBLOB"

Definition at line 85 of file bcrypt.h.

◆ LEGACY_DSA_V2_PRIVATE_BLOB

#define LEGACY_DSA_V2_PRIVATE_BLOB   L"V2CAPIDSAPRIVATEBLOB"

Definition at line 88 of file bcrypt.h.

◆ LEGACY_DSA_V2_PUBLIC_BLOB

#define LEGACY_DSA_V2_PUBLIC_BLOB   L"V2CAPIDSAPUBLICBLOB"

Definition at line 87 of file bcrypt.h.

◆ LEGACY_RSAPRIVATE_BLOB

#define LEGACY_RSAPRIVATE_BLOB   L"CAPIPRIVATEBLOB"

Definition at line 90 of file bcrypt.h.

◆ LEGACY_RSAPUBLIC_BLOB

#define LEGACY_RSAPUBLIC_BLOB   L"CAPIPUBLICBLOB"

Definition at line 89 of file bcrypt.h.

◆ MS_PLATFORM_CRYPTO_PROVIDER

#define MS_PLATFORM_CRYPTO_PROVIDER   L"Microsoft Platform Crypto Provider"

Definition at line 93 of file bcrypt.h.

◆ MS_PRIMITIVE_PROVIDER

#define MS_PRIMITIVE_PROVIDER   L"Microsoft Primitive Provider"

Definition at line 92 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 409 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 411 of file bcrypt.h.

◆ BCRYPT_HASH_HANDLE

Definition at line 412 of file bcrypt.h.

◆ BCRYPT_KEY_BLOB

◆ BCRYPT_KEY_DATA_BLOB_HEADER

◆ BCRYPT_KEY_HANDLE

Definition at line 410 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 413 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 301 of file bcrypt.h.

302{
DSAFIPSVERSION_ENUM
Definition: bcrypt.h:302
@ DSA_FIPS186_3
Definition: bcrypt.h:304
@ DSA_FIPS186_2
Definition: bcrypt.h:303

◆ HASHALGORITHM_ENUM

Enumerator
DSA_HASH_ALGORITHM_SHA1 
DSA_HASH_ALGORITHM_SHA256 
DSA_HASH_ALGORITHM_SHA512 

Definition at line 294 of file bcrypt.h.

295{
HASHALGORITHM_ENUM
Definition: bcrypt.h:295
@ DSA_HASH_ALGORITHM_SHA512
Definition: bcrypt.h:298
@ DSA_HASH_ALGORITHM_SHA256
Definition: bcrypt.h:297
@ DSA_HASH_ALGORITHM_SHA1
Definition: bcrypt.h:296

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 1416 of file bcrypt_main.c.

1418{
1419 struct algorithm *alg = get_alg_object( handle );
1420 struct hash *hash;
1422
1423 TRACE( "%p, %p, %p, %lu, %p, %lu, %#lx\n", handle, ret_handle, object, object_len, secret, secret_len, flags );
1425 {
1426 FIXME( "unimplemented flags %#lx\n", flags );
1428 }
1429 if (object) FIXME( "ignoring object buffer\n" );
1430
1431 if (!alg) return STATUS_INVALID_HANDLE;
1432 if (!ret_handle) return STATUS_INVALID_PARAMETER;
1433
1434 if ((status = create_hash( alg, secret, secret_len, flags, &hash ))) return status;
1435 *ret_handle = hash;
1436
1437 TRACE( "returning handle %p\n", *ret_handle );
1438 return STATUS_SUCCESS;
1439}
LONG NTSTATUS
Definition: precomp.h:26
#define FIXME(fmt,...)
Definition: precomp.h:53
#define BCRYPT_HASH_REUSABLE_FLAG
Definition: bcrypt.h:487
static struct algorithm * get_alg_object(BCRYPT_ALG_HANDLE handle)
Definition: bcrypt_main.c:554
static NTSTATUS create_hash(const struct algorithm *alg, UCHAR *secret, ULONG secret_len, ULONG flags, struct hash **ret_hash)
Definition: bcrypt_main.c:1385
#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: bcrypt_main.c:109
Definition: ps.c:97
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135

Referenced by CNG_CalcHash(), CryptHashCertificate2(), test_BcryptDeriveKeyCapi(), test_hash(), 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 1968 of file bcrypt_main.c.

1970{
1971 struct key *key = get_key_object( handle );
1973
1974 TRACE( "%p, %p, %lu, %p, %p, %lu, %p, %lu, %p, %#lx\n", handle, input, input_len, padding, iv, iv_len, output,
1975 output_len, ret_len, flags );
1976
1977 if (!key) return STATUS_INVALID_HANDLE;
1978
1979 if (is_symmetric_key( key ))
1980 {
1982 {
1983 FIXME( "flags %#lx not supported\n", flags );
1985 }
1986
1987 status = decrypt_symmetric( key, input, input_len, padding, iv, iv_len, output, output_len, ret_len, flags );
1988 }
1989 else
1990 {
1991 if (key->alg_id != ALG_ID_RSA) return STATUS_NOT_SUPPORTED;
1993
1994 status = decrypt_rsa( key, input, input_len, padding, output, output_len, ret_len, flags );
1995 }
1996 return status;
1997}
#define BCRYPT_BLOCK_PADDING
Definition: bcrypt.h:484
#define KEY_FLAG_FINALIZED
Definition: bcrypt_main.c:217
static NTSTATUS decrypt_symmetric(struct key *key, const UCHAR *input, ULONG input_len, const BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO *info, UCHAR *iv, ULONG iv_len, UCHAR *output, ULONG output_len, ULONG *ret_len, ULONG flags)
Definition: bcrypt_main.c:1876
static BOOL is_symmetric_key(const struct key *key)
Definition: bcrypt_main.c:401
static struct key * get_key_object(BCRYPT_KEY_HANDLE handle)
Definition: bcrypt_main.c:564
static NTSTATUS decrypt_rsa(const struct key *key, const UCHAR *input, ULONG input_len, const void *padding, UCHAR *output, ULONG output_len, ULONG *ret_len, ULONG flags)
Definition: bcrypt_main.c:1922
@ ALG_ID_RSA
Definition: bcrypt_main.c:73
#define STATUS_NOT_SUPPORTED
Definition: d3dkmdt.h:48
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:88
Definition: copy.c:22
ULONG flags
Definition: bcrypt_main.c:223
enum alg_id alg_id
Definition: bcrypt_main.c:222

Referenced by test_aes_vector_property(), test_BCryptDecrypt(), test_BCryptGenerateSymmetricKey(), and test_rsa_encrypt().

◆ 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 4021 of file bcrypt_main.c.

4023{
4024 struct hash *hash = get_hash_object( handle );
4026
4027 TRACE( "%p, %p, %p, %lu, %#lx\n", handle, halg, key, keylen, flags );
4028
4029 if (!hash) return STATUS_INVALID_HANDLE;
4030 if (!key || !keylen || keylen > hash->len * 2) return STATUS_INVALID_PARAMETER;
4031 if (halg)
4032 {
4033 FIXME( "algorithm handle not supported\n" );
4035 }
4036
4037 finish_hash( hash, buf );
4038
4039 if (hash->len < keylen)
4040 {
4041 UCHAR pad1[HMAC_PAD_LEN], pad2[HMAC_PAD_LEN];
4042 ULONG i;
4043
4044 for (i = 0; i < sizeof(pad1); i++)
4045 {
4046 pad1[i] = 0x36 ^ (i < hash->len ? buf[i] : 0);
4047 pad2[i] = 0x5c ^ (i < hash->len ? buf[i] : 0);
4048 }
4049
4050 prepare_hash( hash );
4051 hash_data( hash, pad1, sizeof(pad1) );
4052 finish_hash( hash, buf );
4053
4054 prepare_hash( hash );
4055 hash_data( hash, pad2, sizeof(pad2) );
4056 finish_hash( hash, buf + hash->len );
4057 }
4058
4059 memcpy( key, buf, keylen );
4060 return STATUS_SUCCESS;
4061}
#define MAX_HASH_OUTPUT_BYTES
Definition: bcrypt_main.c:349
static void finish_hash(struct hash *hash, UCHAR *output)
Definition: bcrypt_main.c:1515
#define HMAC_PAD_LEN
Definition: bcrypt_main.c:4020
static void prepare_hash(struct hash *hash)
Definition: bcrypt_main.c:1358
static struct hash * get_hash_object(BCRYPT_HASH_HANDLE handle)
Definition: bcrypt_main.c:559
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
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
static const struct @1962 hash_data[]
ULONG len
Definition: bcrypt_main.c:106
unsigned char UCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59

Referenced by test_BcryptDeriveKeyCapi().

◆ BCryptDeriveKeyPBKDF2()

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

Definition at line 4153 of file bcrypt_main.c.

4155{
4156 const struct algorithm *alg = get_alg_object( handle );
4157 const SYMCRYPT_MAC *mac;
4158
4159 TRACE( "%p, %p, %lu, %p, %lu, %s, %p, %lu, %#lx\n", handle, pwd, pwd_len, salt, salt_len,
4161
4162 if (!alg || !(alg->flags & BCRYPT_ALG_HANDLE_HMAC_FLAG)) return STATUS_INVALID_HANDLE;
4164
4165 if (!(mac = get_mac_from_alg( alg->id ))) return STATUS_NOT_SUPPORTED;
4166
4167 if (SymCryptPbkdf2( mac, pwd, pwd_len, salt, salt_len, iterations, key, key_len )) return STATUS_INTERNAL_ERROR;
4168 return STATUS_SUCCESS;
4169}
ULONG pwd_len
Definition: bcrypt.c:511
ULONGLONG iterations
Definition: bcrypt.c:513
UCHAR * pwd
Definition: bcrypt.c:515
ULONG salt_len
Definition: bcrypt.c:512
static UCHAR salt[]
Definition: bcrypt.c:495
#define BCRYPT_ALG_HANDLE_HMAC_FLAG
Definition: bcrypt.h:481
static const SYMCRYPT_MAC * get_mac_from_alg(enum alg_id alg)
Definition: bcrypt_main.c:4139
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:49
#define STATUS_INTERNAL_ERROR
Definition: ntstatus.h:559
ULONG flags
Definition: bcrypt_main.c:143
enum alg_id id
Definition: bcrypt_main.c:141
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptPbkdf2(PCSYMCRYPT_MAC macAlgorithm, _In_reads_(cbKey) PCBYTE pbKey, SIZE_T cbKey, _In_reads_opt_(cbSalt) PCBYTE pbSalt, SIZE_T cbSalt, UINT64 iterationCnt, _Out_writes_(cbResult) PBYTE pbResult, SIZE_T cbResult)
Definition: pbkdf2.c:89

Referenced by test_BcryptDeriveKeyPBKDF2().

◆ BCryptDestroyHash()

NTSTATUS WINAPI BCryptDestroyHash ( BCRYPT_HASH_HANDLE  handle)

Definition at line 1483 of file bcrypt_main.c.

1484{
1485 struct hash *hash = get_hash_object( handle );
1486
1487 TRACE( "%p\n", handle );
1488
1489 if (!hash || hash->hdr.magic != MAGIC_HASH) return STATUS_INVALID_PARAMETER;
1490
1491 destroy_hash( hash );
1492 return STATUS_SUCCESS;
1493}
#define MAGIC_HASH
Definition: bcrypt_main.c:46
static void destroy_hash(struct hash *hash)
Definition: bcrypt_main.c:1476
struct object hdr
Definition: bcrypt_main.c:104

Referenced by CNG_CalcHash(), CryptHashCertificate2(), test_BcryptDeriveKeyCapi(), test_hash(), test_SecretAgreement(), and test_VerifySignature().

◆ BCryptDestroyKey()

◆ BCryptDestroySecret()

NTSTATUS WINAPI BCryptDestroySecret ( BCRYPT_SECRET_HANDLE  handle)

Definition at line 4127 of file bcrypt_main.c.

4128{
4130
4131 TRACE( "%p\n", handle );
4132
4133 if (!secret || secret->hdr.magic != MAGIC_SECRET) return STATUS_INVALID_HANDLE;
4134
4136 return STATUS_SUCCESS;
4137}
#define MAGIC_SECRET
Definition: bcrypt_main.c:48
static void destroy_secret(struct secret *secret)
Definition: bcrypt_main.c:4063
static struct secret * get_secret_object(BCRYPT_SECRET_HANDLE handle)
Definition: bcrypt_main.c:569
struct object hdr
Definition: bcrypt_main.c:236

Referenced by test_DH(), test_ECDH_alg(), and test_SecretAgreement().

◆ BCryptDuplicateHash()

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

Definition at line 1441 of file bcrypt_main.c.

1443{
1444 const struct hash *hash_orig = get_hash_object( handle );
1445 struct hash *hash_copy;
1446
1447 TRACE( "%p, %p, %p, %lu, %#lx\n", handle, handle_copy, object, object_len, flags );
1448
1449 if (!hash_orig) return STATUS_INVALID_HANDLE;
1450 if (!handle_copy) return STATUS_INVALID_PARAMETER;
1451 if (object) FIXME( "ignoring object buffer\n" );
1452
1453 if (!(hash_copy = malloc( sizeof(*hash_copy) ))) return STATUS_NO_MEMORY;
1454
1455 memcpy( hash_copy, hash_orig, sizeof(*hash_orig) );
1456 if (hash_orig->secret && !(hash_copy->secret = malloc( hash_orig->secret_len )))
1457 {
1458 free( hash_copy );
1459 return STATUS_NO_MEMORY;
1460 }
1461 memcpy( hash_copy->secret, hash_orig->secret, hash_orig->secret_len );
1462
1463 if (hash_orig->flags & HASH_FLAG_HMAC)
1464 {
1465 SymCryptHmacKeyCopy( &hash_orig->hmac, &hash_copy->hmac );
1466 SymCryptHmacStateCopy( &hash_orig->hmac_state, &hash_orig->hmac, &hash_copy->hmac_state );
1467 }
1468 else
1469 SymCryptHashStateCopy( hash_orig->desc, &hash_orig->state, &hash_copy->state );
1470
1471 *handle_copy = hash_copy;
1472 TRACE( "returning handle %p\n", *handle_copy );
1473 return STATUS_SUCCESS;
1474}
#define HASH_FLAG_HMAC
Definition: bcrypt_main.c:100
#define STATUS_NO_MEMORY
Definition: d3dkmdt.h:51
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
SYMCRYPT_HASH_STATE state
Definition: bcrypt_main.c:112
SYMCRYPT_HMAC_EXPANDED_KEY hmac
Definition: bcrypt_main.c:113
SYMCRYPT_HMAC_STATE hmac_state
Definition: bcrypt_main.c:114
ULONG flags
Definition: bcrypt_main.c:107
const SYMCRYPT_HASH * desc
Definition: bcrypt_main.c:111
UCHAR * secret
Definition: bcrypt_main.c:108
VOID SYMCRYPT_CALL SymCryptHmacKeyCopy(_In_ PCSYMCRYPT_HMAC_EXPANDED_KEY pSrc, _Out_ PSYMCRYPT_HMAC_EXPANDED_KEY pDst)
Definition: hmac.c:36
VOID SYMCRYPT_CALL SymCryptHmacStateCopy(_In_ PCSYMCRYPT_HMAC_STATE pSrc, _In_opt_ PCSYMCRYPT_HMAC_EXPANDED_KEY pExpandedKey, _Out_ PSYMCRYPT_HMAC_STATE pDst)
Definition: hmac.c:10
VOID SYMCRYPT_CALL SymCryptHashStateCopy(_In_ PCSYMCRYPT_HASH pHash, _In_reads_(pHash->stateSize) PCVOID pSrc, _Out_writes_(pHash->stateSize) PVOID pDst)
Definition: hash.c:210

◆ BCryptDuplicateKey()

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

Definition at line 3717 of file bcrypt_main.c.

3719{
3720 const struct key *key_orig = get_key_object( handle );
3721 struct key *key_copy;
3723
3724 TRACE( "%p, %p, %p, %lu, %#lx\n", handle, handle_copy, object, object_len, flags );
3725 if (object) FIXME( "ignoring object buffer\n" );
3726
3727 if (!key_orig) return STATUS_INVALID_HANDLE;
3728 if (!handle_copy) return STATUS_INVALID_PARAMETER;
3729
3730 if ((status = duplicate_key( key_orig, &key_copy ))) return status;
3731 *handle_copy = key_copy;
3732
3733 TRACE( "returning handle %p\n", *handle_copy );
3734 return STATUS_SUCCESS;
3735}
static NTSTATUS duplicate_key(const struct key *src, struct key **ret_key)
Definition: bcrypt_main.c:3669

Referenced by test_BCryptGenerateSymmetricKey(), test_PBKDF2(), and test_TLS_PRF().

◆ 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 2307 of file bcrypt_main.c.

2309{
2310 struct key *key = get_key_object( handle );
2312
2313 TRACE( "%p, %p, %lu, %p, %p, %lu, %p, %lu, %p, %#lx\n", handle, input, input_len, padding, iv, iv_len, output,
2314 output_len, ret_len, flags );
2315
2316 if (!key) return STATUS_INVALID_HANDLE;
2317
2318 if (is_symmetric_key( key ))
2319 {
2321 {
2322 FIXME( "flags %#lx not implemented\n", flags );
2324 }
2325
2326 status = encrypt_symmetric( key, input, input_len, padding, iv, iv_len, output, output_len, ret_len, flags );
2327 }
2328 else
2329 {
2330 if (key->alg_id != ALG_ID_RSA) return STATUS_NOT_SUPPORTED;
2332
2333 status = encrypt_rsa( key, input, input_len, padding, output, output_len, ret_len, flags );
2334 }
2335 return status;
2336}
static NTSTATUS encrypt_rsa(const struct key *key, const UCHAR *input, ULONG input_len, const void *padding, UCHAR *output, ULONG output_len, ULONG *ret_len, ULONG flags)
Definition: bcrypt_main.c:2255
static NTSTATUS encrypt_symmetric(struct key *key, const UCHAR *input, ULONG input_len, const BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO *info, UCHAR *iv, ULONG iv_len, UCHAR *output, ULONG output_len, ULONG *ret_len, ULONG flags)
Definition: bcrypt_main.c:2222

Referenced by encrypt_race_thread(), NCryptEncrypt(), test_aes_vector(), test_aes_vector_property(), test_BCryptEncrypt(), test_BCryptGenerateSymmetricKey(), test_DH(), and test_rsa_encrypt().

◆ BCryptEnumAlgorithms()

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

Definition at line 424 of file bcrypt_main.c.

425{
426 static const ULONG supported = BCRYPT_CIPHER_OPERATION |\
434 ULONG i, j, count = 0;
435
436 TRACE( "%#lx, %p, %p, %#lx\n", type, ret_count, ret_list, flags );
437
438 if (!ret_count || !ret_list || (type & ~supported)) return STATUS_INVALID_PARAMETER;
439
440 for (i = 0; i < ARRAY_SIZE( builtin_algorithms ); i++)
441 {
443 }
444
445 if (!(list = malloc( count * sizeof(*list) ))) return STATUS_NO_MEMORY;
446
447 for (i = 0, j = 0; i < ARRAY_SIZE( builtin_algorithms ); i++)
448 {
449 if (!match_operation_type( type, builtin_algorithms[i].class )) continue;
450 list[j].pszName = (WCHAR *)builtin_algorithms[i].name;
451 list[j].dwClass = builtin_algorithms[i].class;
452 list[j].dwFlags = 0;
453 j++;
454 }
455
456 *ret_count = count;
457 *ret_list = list;
458 return STATUS_SUCCESS;
459}
#define ARRAY_SIZE(A)
Definition: main.h:20
#define BCRYPT_SECRET_AGREEMENT_OPERATION
Definition: bcrypt.h:180
#define BCRYPT_SIGNATURE_OPERATION
Definition: bcrypt.h:181
#define BCRYPT_HASH_OPERATION
Definition: bcrypt.h:178
#define BCRYPT_RNG_OPERATION
Definition: bcrypt.h:182
#define BCRYPT_CIPHER_OPERATION
Definition: bcrypt.h:177
#define BCRYPT_KEY_DERIVATION_OPERATION
Definition: bcrypt.h:183
#define BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION
Definition: bcrypt.h:179
static const struct @409 builtin_algorithms[]
static BOOL match_operation_type(ULONG type, ULONG class)
Definition: bcrypt_main.c:407
Definition: list.h:39
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

Referenced by NCryptIsAlgSupported(), and test_BCryptEnumAlgorithms().

◆ BCryptEnumContextFunctions()

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

Definition at line 325 of file bcrypt_main.c.

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

Referenced by test_BCryptEnumContextFunctions().

◆ 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 3658 of file bcrypt_main.c.

3659{
3660 struct key *key = get_key_object( handle );
3661
3662 TRACE( "%p, %#lx\n", key, flags );
3663
3665
3666 return finalize_key_pair( key );
3667}
static NTSTATUS finalize_key_pair(struct key *key)
Definition: bcrypt_main.c:3590

Referenced by NCryptFinalizeKey(), test_BCryptSignHash(), test_DH(), test_DSA(), test_ECDH(), test_ECDH_alg(), test_ECDSA(), test_RSA(), test_rsa_encrypt(), test_RSA_SIGN(), and test_SecretAgreement().

◆ BCryptFinishHash()

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

Definition at line 1525 of file bcrypt_main.c.

1526{
1527 struct hash *hash = get_hash_object( handle );
1528
1529 TRACE( "%p, %p, %lu, %#lx\n", handle, output, size, flags );
1530
1531 if (!hash) return STATUS_INVALID_HANDLE;
1532 if (!output || size != hash->len) return STATUS_INVALID_PARAMETER;
1533
1534 finish_hash( hash, output );
1535 return STATUS_SUCCESS;
1536}
GLsizeiptr size
Definition: glext.h:5919

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

◆ BCryptFreeBuffer()

void WINAPI BCryptFreeBuffer ( void *  buffer)

Definition at line 332 of file bcrypt_main.c.

333{
334 free( buffer );
335}

Referenced by NCryptIsAlgSupported(), test_BCryptEnumAlgorithms(), and test_BCryptEnumContextFunctions().

◆ BCryptGenerateKeyPair()

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

Definition at line 3571 of file bcrypt_main.c.

3573{
3574 const struct algorithm *alg = get_alg_object( handle );
3575 struct key *key;
3577
3578 TRACE( "%p, %p, %lu, %#lx\n", handle, ret_handle, bitlen, flags );
3579
3580 if (!alg) return STATUS_INVALID_HANDLE;
3581 if (!ret_handle) return STATUS_INVALID_PARAMETER;
3582
3583 if ((status = generate_key_pair( alg, bitlen, flags, &key ))) return status;
3584
3585 *ret_handle = key;
3586 TRACE( "returning handle %p\n", *ret_handle );
3587 return STATUS_SUCCESS;
3588}
static NTSTATUS generate_key_pair(const struct algorithm *alg, ULONG bitlen, ULONG flags, struct key **ret_key)
Definition: bcrypt_main.c:3522

Referenced by NCryptCreatePersistedKey(), test_BCryptSignHash(), test_DH(), test_DSA(), test_ECDH(), test_ECDH_alg(), test_ECDSA(), test_RSA(), test_rsa_encrypt(), test_RSA_SIGN(), and test_SecretAgreement().

◆ 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 1737 of file bcrypt_main.c.

1739{
1740 const struct algorithm *alg = get_alg_object( handle );
1741 struct key *key;
1743
1744 TRACE( "%p, %p, %p, %lu, %p, %lu, %#lx\n", handle, ret_handle, object, object_len, secret, secret_len, flags );
1745 if (object) FIXME( "ignoring object buffer\n" );
1746
1747 if (!alg) return STATUS_INVALID_HANDLE;
1748
1749 if ((status = generate_symmetric_key( alg, secret, secret_len, &key ))) return status;
1750 *ret_handle = key;
1751
1752 TRACE( "returning handle %p\n", *ret_handle );
1753 return STATUS_SUCCESS;
1754}
static NTSTATUS generate_symmetric_key(const struct algorithm *alg, const UCHAR *secret, ULONG secret_len, struct key **ret_key)
Definition: bcrypt_main.c:1684

Referenced by test_BCryptDecrypt(), test_BCryptEncrypt(), test_BCryptGenerateSymmetricKey(), test_HKDF(), test_PBKDF2(), and test_TLS_PRF().

◆ BCryptGenRandom()

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

Definition at line 574 of file bcrypt_main.c.

575{
576 const DWORD supported_flags = BCRYPT_USE_SYSTEM_PREFERRED_RNG;
577 const struct algorithm *alg = get_alg_object( handle );
578
579 TRACE("%p, %p, %lu, %#lx - semi-stub\n", handle, buffer, count, flags);
580
581 if (!handle)
582 {
583 /* It's valid to call without an algorithm if BCRYPT_USE_SYSTEM_PREFERRED_RNG
584 * is set. In this case the preferred system RNG is used.
585 */
588 }
590 {
591 FIXME( "pseudo-handle %p not supported\n", handle );
593 }
594 else if (!alg || alg->id != ALG_ID_RNG)
596
597 if (!buffer)
599
600 if (flags & ~supported_flags)
601 FIXME("unsupported flags %#lx\n", flags & ~supported_flags);
602
603 if (alg)
604 FIXME("ignoring selected algorithm\n");
605
606 if (!count) return STATUS_SUCCESS;
607
609 {
611 }
612
613 FIXME("called with unsupported parameters, returning error\n");
615}
#define BCRYPT_RNG_ALG_HANDLE
Definition: bcrypt.h:424
#define BCRYPT_USE_SYSTEM_PREFERRED_RNG
Definition: bcrypt.h:478
static BOOL is_alg_pseudo_handle(BCRYPT_ALG_HANDLE handle)
Definition: bcrypt_main.c:527
@ ALG_ID_RNG
Definition: bcrypt_main.c:91
unsigned long DWORD
Definition: ntddk_ex.h:95
#define RtlGenRandom
Definition: ntsecapi.h:691

Referenced by test_BCryptGenRandom(), and test_rng().

◆ BCryptGetFipsAlgorithmMode()

NTSTATUS WINAPI BCryptGetFipsAlgorithmMode ( BOOLEAN *  enabled)

Definition at line 696 of file bcrypt_main.c.

697{
698 FIXME("%p - semi-stub\n", enabled);
699
700 if (!enabled)
702
703 *enabled = FALSE;
704 return STATUS_SUCCESS;
705}
#define FALSE
Definition: types.h:117
GLenum GLenum GLsizei const GLuint GLboolean enabled
Definition: glext.h:7750

Referenced by test_BCryptGetFipsAlgorithmMode().

◆ 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 1555 of file bcrypt_main.c.

1557{
1558 struct algorithm *alg = get_alg_object( handle );
1559
1560 TRACE( "%p, %p, %lu, %p, %lu, %p, %lu\n", handle, secret, secret_len, input, input_len, output, output_len );
1561
1562 if (!alg) return STATUS_INVALID_HANDLE;
1563 if (!output || output_len != builtin_algorithms[alg->id].hash_length) return STATUS_INVALID_PARAMETER;
1564
1565 return hash_single( alg, secret, secret_len, input, input_len, output );
1566}
static NTSTATUS hash_single(const struct algorithm *alg, UCHAR *secret, ULONG secret_len, UCHAR *input, ULONG input_len, UCHAR *output)
Definition: bcrypt_main.c:1538

Referenced by assembly_get_pubkey_token().

◆ BCryptHashData()

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

Definition at line 1503 of file bcrypt_main.c.

1504{
1505 struct hash *hash = get_hash_object( handle );
1506
1507 TRACE( "%p, %p, %lu, %#lx\n", handle, input, size, flags );
1508
1509 if (!hash) return STATUS_INVALID_HANDLE;
1510
1511 hash_data( hash, input, size );
1512 return STATUS_SUCCESS;
1513}

Referenced by CNG_CalcHash(), CryptHashCertificate2(), test_BcryptDeriveKeyCapi(), test_hash(), 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_len,
ULONG *  ret_len,
ULONG  flags 
)

Definition at line 4404 of file bcrypt_main.c.

4406{
4407 const struct key *key = get_key_object( handle );
4409
4410 TRACE( "%p, %p, %p, %lu, %p, %#lx\n", key, desc, output, output_len, ret_len, flags );
4411
4412 if (!key || !output || !ret_len) return STATUS_INVALID_PARAMETER;
4413
4414 switch (key->alg_id)
4415 {
4416 case ALG_ID_PBKDF2:
4417 status = key_derivation_pbkdf2( key, desc, output, output_len, ret_len );
4418 break;
4419 case ALG_ID_TLS1_1_KDF:
4420 status = key_derivation_tls_prf( key, desc, output, output_len, ret_len, FALSE );
4421 break;
4422 case ALG_ID_TLS1_2_KDF:
4423 status = key_derivation_tls_prf( key, desc, output, output_len, ret_len, TRUE );
4424 break;
4425 case ALG_ID_HKDF:
4426 status = key_derivation_hkdf( key, desc, output, output_len, ret_len );
4427 break;
4428 default:
4429 FIXME( "unsupported algorithm %u\n", key->alg_id );
4431 }
4432 return status;
4433}
static NTSTATUS key_derivation_hkdf(const struct key *key, BCryptBufferDesc *desc, UCHAR *output, ULONG output_len, ULONG *ret_len)
Definition: bcrypt_main.c:4375
static NTSTATUS key_derivation_pbkdf2(const struct key *key, BCryptBufferDesc *desc, UCHAR *output, ULONG output_len, ULONG *ret_len)
Definition: bcrypt_main.c:4290
static NTSTATUS key_derivation_tls_prf(const struct key *key, BCryptBufferDesc *desc, UCHAR *output, ULONG output_len, ULONG *ret_len, BOOL tls1_2)
Definition: bcrypt_main.c:4330
@ ALG_ID_PBKDF2
Definition: bcrypt_main.c:94
@ ALG_ID_TLS1_2_KDF
Definition: bcrypt_main.c:96
@ ALG_ID_TLS1_1_KDF
Definition: bcrypt_main.c:95
@ ALG_ID_HKDF
Definition: bcrypt_main.c:97
#define TRUE
Definition: types.h:120
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683

Referenced by test_HKDF(), test_PBKDF2(), and test_TLS_PRF().

◆ 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 4071 of file bcrypt_main.c.

4073{
4074 const struct key *privkey = get_key_object( privkey_handle );
4075 const struct key *pubkey = get_key_object( pubkey_handle );
4076 struct secret *secret;
4077
4078 TRACE( "%p, %p, %p, %#lx\n", privkey_handle, pubkey_handle, ret_handle, flags );
4079
4080 if (!privkey || !pubkey || privkey->alg_id != pubkey->alg_id || !(privkey->flags & KEY_FLAG_PRIVATE))
4081 return STATUS_INVALID_HANDLE;
4082 if (!ret_handle) return STATUS_INVALID_PARAMETER;
4083
4084 if (!(secret = calloc( 1, sizeof(*secret) ))) return STATUS_NO_MEMORY;
4085 secret->hdr.magic = MAGIC_SECRET;
4086 secret->derived_key_len = len_from_bitlen( privkey->a.bitlen );
4088 {
4089 free( secret );
4090 return STATUS_NO_MEMORY;
4091 }
4092
4093 switch (privkey->alg_id)
4094 {
4095 case ALG_ID_DH:
4096 if (SymCryptDhSecretAgreement( privkey->a.dsa.handle, pubkey->a.dsa.handle,
4099 {
4101 return STATUS_INTERNAL_ERROR;
4102 }
4103 break;
4104 case ALG_ID_ECDH:
4105 case ALG_ID_ECDH_P256:
4106 case ALG_ID_ECDH_P384:
4107 case ALG_ID_ECDH_P521:
4108 if (SymCryptEcDhSecretAgreement( privkey->a.ecc.handle, pubkey->a.ecc.handle,
4111 {
4113 return STATUS_INTERNAL_ERROR;
4114 }
4115 break;
4116 default:
4117 FIXME( "algorithm %u not supported\n", privkey->alg_id );
4119 return STATUS_NOT_SUPPORTED;
4120 }
4121
4122 *ret_handle = secret;
4123 TRACE( "returning handle %p\n", *ret_handle );
4124 return STATUS_SUCCESS;
4125}
static ULONG len_from_bitlen(ULONG bitlen)
Definition: bcrypt_main.c:293
#define KEY_FLAG_PRIVATE
Definition: bcrypt_main.c:216
@ ALG_ID_ECDH_P256
Definition: bcrypt_main.c:78
@ ALG_ID_DH
Definition: bcrypt_main.c:76
@ ALG_ID_ECDH_P521
Definition: bcrypt_main.c:80
@ ALG_ID_ECDH_P384
Definition: bcrypt_main.c:79
@ ALG_ID_ECDH
Definition: bcrypt_main.c:77
static const WCHAR pubkey[]
Definition: asmname.c:68
#define calloc
Definition: rosglue.h:14
struct asymmetric_key a
Definition: bcrypt_main.c:227
UCHAR * derived_key
Definition: bcrypt_main.c:237
ULONG derived_key_len
Definition: bcrypt_main.c:238
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptEcDhSecretAgreement(_In_ PCSYMCRYPT_ECKEY pkPrivate, _In_ PCSYMCRYPT_ECKEY pkPublic, SYMCRYPT_NUMBER_FORMAT format, UINT32 flags, _Out_writes_(cbAgreedSecret) PBYTE pbAgreedSecret, SIZE_T cbAgreedSecret)
Definition: ec_dh.c:12
@ SYMCRYPT_NUMBER_FORMAT_MSB_FIRST
Definition: symcrypt.h:7017
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptDhSecretAgreement(_In_ PCSYMCRYPT_DLKEY pkPrivate, _In_ PCSYMCRYPT_DLKEY pkPublic, SYMCRYPT_NUMBER_FORMAT format, UINT32 flags, _Out_writes_(cbAgreedSecret) PBYTE pbAgreedSecret, SIZE_T cbAgreedSecret)
Definition: dh.c:12

Referenced by test_DH(), test_ECDH_alg(), and test_SecretAgreement().

◆ BCryptSetProperty()

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

◆ BCryptSignHash()

NTSTATUS WINAPI BCryptSignHash ( BCRYPT_KEY_HANDLE  handle,
void *  padding,
PUCHAR  hash,
ULONG  hash_len,
PUCHAR  signature,
ULONG  signature_len,
ULONG *  ret_len,
ULONG  flags 
)

Definition at line 3870 of file bcrypt_main.c.

3872{
3873 const struct key *key = get_key_object( handle );
3874
3875 TRACE( "%p, %p, %p, %lu, %p, %lu, %p, %#lx\n", handle, padding, hash, hash_len, signature, signature_len,
3876 ret_len, flags );
3877
3878 if (!key) return STATUS_INVALID_HANDLE;
3879
3880 switch (key->alg_id)
3881 {
3882 case ALG_ID_RSA:
3883 case ALG_ID_RSA_SIGN:
3884 return sign_hash_rsa( key, padding, hash, hash_len, signature, signature_len, ret_len, flags );
3885
3886 case ALG_ID_ECDSA:
3887 case ALG_ID_ECDSA_P256:
3888 case ALG_ID_ECDSA_P384:
3889 case ALG_ID_ECDSA_P521:
3891 return sign_hash_ecc( key, hash, hash_len, signature, signature_len, ret_len );
3892
3893 case ALG_ID_DSA:
3894 return sign_hash_dsa( key, hash, hash_len, signature, signature_len, ret_len );
3895
3896 default:
3897 FIXME( "unhandled algorithm %u\n", key->alg_id );
3898 break;
3899 }
3900
3901 return STATUS_NOT_SUPPORTED;
3902}
static NTSTATUS sign_hash_ecc(const struct key *key, const UCHAR *hash, ULONG hash_len, UCHAR *signature, ULONG signature_len, ULONG *ret_len)
Definition: bcrypt_main.c:3830
static NTSTATUS sign_hash_dsa(const struct key *key, const UCHAR *hash, ULONG hash_len, UCHAR *signature, ULONG signature_len, ULONG *ret_len)
Definition: bcrypt_main.c:3850
static NTSTATUS sign_hash_rsa(const struct key *key, const void *padding, const UCHAR *hash, ULONG hash_len, UCHAR *signature, ULONG signature_len, ULONG *ret_len, ULONG flags)
Definition: bcrypt_main.c:3779
@ ALG_ID_DSA
Definition: bcrypt_main.c:88
@ ALG_ID_RSA_SIGN
Definition: bcrypt_main.c:83
@ ALG_ID_ECDSA_P256
Definition: bcrypt_main.c:85
@ ALG_ID_ECDSA
Definition: bcrypt_main.c:84
@ ALG_ID_ECDSA_P384
Definition: bcrypt_main.c:86
@ ALG_ID_ECDSA_P521
Definition: bcrypt_main.c:87

Referenced by NCryptSignHash(), test_BCryptSignHash(), test_DH(), test_DSA(), test_ECDSA(), and test_RSA().

◆ 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 3975 of file bcrypt_main.c.

3977{
3978 const struct key *key = get_key_object( handle );
3979
3980 TRACE( "%p, %p, %p, %lu, %p, %lu, %#lx\n", handle, padding, hash, hash_len, signature, signature_len, flags );
3981
3982 if (!key) return STATUS_INVALID_HANDLE;
3983 if (!hash || !hash_len || !signature || !signature_len) return STATUS_INVALID_PARAMETER;
3984
3985 switch (key->alg_id)
3986 {
3987 case ALG_ID_RSA:
3988 case ALG_ID_RSA_SIGN:
3989 return verify_signature_rsa( key, padding, hash, hash_len, signature, signature_len, flags );
3990
3991 case ALG_ID_ECDSA:
3992 case ALG_ID_ECDSA_P256:
3993 case ALG_ID_ECDSA_P384:
3994 case ALG_ID_ECDSA_P521:
3995 return verify_signature_ecc( key, hash, hash_len, signature, signature_len, flags );
3996
3997 case ALG_ID_DSA:
3998 return verify_signature_dsa( key, hash, hash_len, signature, signature_len, flags );
3999
4000 default:
4001 FIXME( "unhandled algorithm %u\n", key->alg_id );
4002 break;
4003 }
4004
4005 return STATUS_NOT_SUPPORTED;
4006}
static NTSTATUS verify_signature_rsa(const struct key *key, const void *padding, const UCHAR *hash, ULONG hash_len, const UCHAR *signature, ULONG signature_len, ULONG flags)
Definition: bcrypt_main.c:3904
static NTSTATUS verify_signature_dsa(const struct key *key, const UCHAR *hash, ULONG hash_len, const UCHAR *signature, ULONG signature_len, ULONG flags)
Definition: bcrypt_main.c:3960
static NTSTATUS verify_signature_ecc(const struct key *key, const UCHAR *hash, ULONG hash_len, const UCHAR *signature, ULONG signature_len, ULONG flags)
Definition: bcrypt_main.c:3945

Referenced by cng_verify_msg_signature(), CNG_VerifySignature(), NCryptVerifySignature(), test_BCryptSignHash(), test_DSA(), test_ECDSA(), test_RSA(), test_RSA_SIGN(), and test_VerifySignature().