Cryptography Reference

Describes the cryptography functions available in the bcrypt.lib library.

Functions

Name Description
BCryptCloseAlgorithmProvider The BCryptCloseAlgorithmProvider function closes an algorithm provider.
BCryptCreateHash The BCryptCreateHash function is called to create a hash or Message Authentication Code (MAC) object.
BCryptDecrypt The BCryptDecrypt function decrypts a block of data.
BCryptDeriveKey The BCryptDeriveKey function derives a key from a secret agreement value.
BCryptDestroyHash The BCryptDestroyHash function destroys a hash or Message Authentication Code (MAC) object.
BCryptDestroyKey The BCryptDestroyKey function destroys a key.
BCryptDestroySecret The BCryptDestroySecret function destroys a secret agreement handle that was created by using the BCryptSecretAgreement function.
BCryptDuplicateHash The BCryptDuplicateHash function duplicates an existing hash or Message Authentication Code (MAC) object. The duplicate object contains all state and data contained in the original object at the point of duplication.
BCryptDuplicateKey The BCryptDuplicateKey function creates a duplicate of a symmetric key.
BCryptEncrypt The BCryptEncrypt function encrypts a block of data.
BCryptExportKey The BCryptExportKey function exports a key to a memory BLOB that can be persisted for later use.
BCryptFinalizeKeyPair The BCryptFinalizeKeyPair function completes a public/private key pair. The key cannot be used until this function has been called. After this function has been called, the BCryptSetProperty function can no longer be used for this key.
BCryptFinishHash The BCryptFinishHash function retrieves the hash or Message Authentication Code (MAC) value for the data accumulated from prior calls to BCryptHashData.
BCryptFreeBuffer The BCryptFreeBuffer function is used to free memory that was allocated by one of the CNG functions.
BCryptGenerateKeyPair The BCryptGenerateKeyPair function creates an empty public/private key pair. After you create a key by using this function, you can use the BCryptSetProperty function to set its properties; however, the key cannot be used until the BCryptFinalizeKeyPair function is called.
BCryptGenerateSymmetricKey The BCryptGenerateSymmetricKey function creates a key object for use with a symmetrical key encryption algorithm from a supplied key.
BCryptGenRandom The BCryptGenRandom function generates a random number.
BCryptGetProperty The BCryptGetProperty function retrieves the value of a named property for a CNG object.
BCryptHashData The BCryptHashData function performs a one way hash or Message Authentication Code (MAC) on a data buffer.
BCryptImportKey The BCryptImportKey function imports a symmetric key from a key BLOB. The BCryptImportKeyPair function is used to import a public/private key pair.
BCryptImportKeyPair The BCryptImportKeyPair function imports a public/private key pair from a key BLOB. The BCryptImportKey function is used to import a symmetric key pair.
BCryptKeyDerivation The BCryptKeyDerivation function derives a key without requiring a secret agreement. It is similar in functionality to BCryptDeriveKey but does not require a BCRYPT_SECRET_HANDLE value as input.
BCryptOpenAlgorithmProvider The BCryptOpenAlgorithmProvider function loads and initializes a CNG provider.
BCryptSecretAgreement The BCryptSecretAgreement function creates a secret agreement value from a private and a public key.
BCryptSetProperty The BCryptSetProperty function sets the value of a named property for a CNG object.
BCryptSignHash The BCryptSignHash function creates a signature of a hash value.
BCryptVerifySignature The BCryptVerifySignature function verifies that the specified signature matches the specified hash.

Structures

Name Description
BCRYPT_ALGORITHM_IDENTIFIER The BCRYPT_ALGORITHM_IDENTIFIER structure is used to contain a cryptographic algorithm identifier.
BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO The BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure is used with the BCryptEncrypt and BCryptDecrypt functions to contain additional information related to authenticated cipher modes.
BCRYPT_DH_KEY_BLOB The BCRYPT_DH_KEY_BLOB structure is used as a header for a Diffie-Hellman public key or private keyBLOB in memory.
BCRYPT_DH_PARAMETER_HEADER The BCRYPT_DH_PARAMETER_HEADER structure is used to contain parameter header information for a Diffie-Hellman key. This structure is used with the BCRYPT_DH_PARAMETERS property in the BCryptSetProperty function.
BCRYPT_DSA_KEY_BLOB The BCRYPT_DSA_KEY_BLOB structure is used as a header for a Digital Signature Algorithm (DSA) public key or private keyBLOB in memory.
BCRYPT_DSA_KEY_BLOB_V2 The BCRYPT_DSA_KEY_BLOB_V2 structure is used as a header for a Digital Signature Algorithm (DSA) public key or private keyBLOB in memory.
BCRYPT_DSA_PARAMETER_HEADER The BCRYPT_DSA_PARAMETER_HEADER structure is used to contain parameter header information for a Digital Signature Algorithm (DSA) key. This structure is used with the BCRYPT_DSA_PARAMETERS property in the BCryptSetProperty function.
BCRYPT_DSA_PARAMETER_HEADER_V2 The BCRYPT_DSA_PARAMETER_HEADER_V2 structure is contains parameter header information for a Digital Signature Algorithm (DSA) key. This structure is used with the BCRYPT_DSA_PARAMETERS property in the BCryptSetProperty function.
BCRYPT_ECCKEY_BLOB The BCRYPT_ECCKEY_BLOB structure is used as a header for an elliptic curve public key or private keyBLOB in memory.
BCRYPT_KEY_BLOB The BCRYPT_KEY_BLOB structure is the base structure for all CNG key BLOBs. All CNG key BLOBs are based on this structure. For example, the BCRYPT_RSAKEY_BLOB structure is based on this structure.
BCRYPT_KEY_DATA_BLOB_HEADER The BCRYPT_KEY_DATA_BLOB_HEADER structure is used to contain information about a key data BLOB. The key data BLOB must immediately follow this structure in memory.
BCRYPT_KEY_LENGTHS_STRUCT The BCRYPT_KEY_LENGTHS_STRUCT structure defines the range of key sizes that are supported by the provider. This structure is used with the BCRYPT_KEY_LENGTHS property.This structure is also used with the BCRYPT_AUTH_TAG_LENGTH property to contain the minimum, maximum, and increment size of an authentication tag.
BCRYPT_OAEP_PADDING_INFO The BCRYPT_OAEP_PADDING_INFO structure is used to provide options for the Optimal Asymmetric Encryption Padding (OAEP) scheme.
BCRYPT_OID The BCRYPT_OID structure contains information about a DER-encoded object identifier (OID). CNG uses hash OIDs in functions that sign or verify data in PKCS #1 format.
BCRYPT_OID_LIST The BCRYPT_OID_LIST structure is used to contain a collection of BCRYPT_OID structures. Use this structure with the BCRYPT_HASH_OID_LIST property to retrieve the list of hashing object identifiers (OIDs) that have been encoded by using Distinguished Encoding Rules (DER) encoding.
BCRYPT_PKCS1_PADDING_INFO The BCRYPT_PKCS1_PADDING_INFO structure is used to provide options for the PKCS #1 padding scheme.
BCRYPT_PSS_PADDING_INFO The BCRYPT_PSS_PADDING_INFO structure is used to provide options for the Probabilistic Signature Scheme (PSS) padding scheme.
BCRYPT_RSAKEY_BLOB The BCRYPT_RSAKEY_BLOB structure is used as a header for an RSA public key or private keyBLOB in memory.
BCryptBuffer The BCryptBuffer structure is used to represent a generic CNG buffer.
BCryptBufferDesc The BCryptBufferDesc structure is used to contain a set of generic CNG buffers.

Enumerations

Name Description
DSAFIPSVERSION_ENUM The DSAFIPSVERSION_ENUM enumeration type contains FIPS version information. It is used by the BCRYPT_DSA_KEY_BLOB_V2 and BCRYPT_DSA_PARAMETER_HEADER_V2 structures.
HASHALGORITHM_ENUM The HASHALGORITHM_ENUM enumeration type specifies signing and hashing algorithms. It is used by the BCRYPT_DSA_KEY_BLOB_V2 and BCRYPT_DSA_PARAMETER_HEADER_V2 structures.

Macros

Name Description
BCRYPT_INIT_AUTH_MODE_INFO The BCRYPT_INIT_AUTH_MODE_INFO macro initializes a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure for use in calls to BCryptEncrypt and BCryptDecrypt functions.