| bcrypt.h (6.3.9600.17415-Windows 8.1) | | bcrypt.h (10.0.10586.0-Windows 10 1511 10586.494) |
| | |
| skipping to change at line 12 | | skipping to change at line 12 |
| // | | // |
| // Microsoft Windows | | // Microsoft Windows |
| // Copyright (C) Microsoft Corporation, 2004. | | // Copyright (C) Microsoft Corporation, 2004. |
| // | | // |
| // File: bcrypt.h | | // File: bcrypt.h |
| // | | // |
| // Contents: Cryptographic Primitive API Prototypes and Definitions | | // Contents: Cryptographic Primitive API Prototypes and Definitions |
| // | | // |
| //---------------------------------------------------------------------------- | | //---------------------------------------------------------------------------- |
| | |
|
| #ifndef __BCRYPT_H__ | | #pragma once |
| | |
| | // |
| | // The __BCRYPT_H__ is used by other header files to conditionally define |
| | // BCrypt-dependent extensions when bcrypt.h has been included. |
| | // |
| #define __BCRYPT_H__ | | #define __BCRYPT_H__ |
| | |
| #include <winapifamily.h> | | #include <winapifamily.h> |
| | |
|
| | #if _MSC_VER >= 1200 |
| | #pragma warning(push) |
| | #pragma warning(disable:4820) // padding added after data member |
| | #endif |
| | |
| #ifdef __cplusplus | | #ifdef __cplusplus |
| extern "C" { | | extern "C" { |
| #endif | | #endif |
| | |
|
| #pragma region Desktop Family | | #pragma region Desktop Family or OneCore Family |
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) |
| | |
| #ifndef WINAPI | | #ifndef WINAPI |
| #define WINAPI __stdcall | | #define WINAPI __stdcall |
| #endif | | #endif |
| | |
| #ifndef _NTDEF_ | | #ifndef _NTDEF_ |
| typedef _Return_type_success_(return >= 0) LONG NTSTATUS; | | typedef _Return_type_success_(return >= 0) LONG NTSTATUS; |
| typedef NTSTATUS *PNTSTATUS; | | typedef NTSTATUS *PNTSTATUS; |
| #endif | | #endif |
| | |
| | |
| skipping to change at line 78 | | skipping to change at line 88 |
| // all structures that used it contained a pointer so they were already 4/8 alig
ned. | | // all structures that used it contained a pointer so they were already 4/8 alig
ned. |
| // | | // |
| #define BCRYPT_STRUCT_ALIGNMENT | | #define BCRYPT_STRUCT_ALIGNMENT |
| | |
| // | | // |
| // DeriveKey KDF Types | | // DeriveKey KDF Types |
| // | | // |
| #define BCRYPT_KDF_HASH L"HASH" | | #define BCRYPT_KDF_HASH L"HASH" |
| #define BCRYPT_KDF_HMAC L"HMAC" | | #define BCRYPT_KDF_HMAC L"HMAC" |
| #define BCRYPT_KDF_TLS_PRF L"TLS_PRF" | | #define BCRYPT_KDF_TLS_PRF L"TLS_PRF" |
|
| | |
| | #if (NTDDI_VERSION >= NTDDI_WIN7) |
| #define BCRYPT_KDF_SP80056A_CONCAT L"SP800_56A_CONCAT" | | #define BCRYPT_KDF_SP80056A_CONCAT L"SP800_56A_CONCAT" |
|
| | #endif |
| | |
| // | | // |
| // DeriveKey KDF BufferTypes | | // DeriveKey KDF BufferTypes |
| // | | // |
| // For BCRYPT_KDF_HASH and BCRYPT_KDF_HMAC operations, there may be an arbitrary | | // For BCRYPT_KDF_HASH and BCRYPT_KDF_HMAC operations, there may be an arbitrary |
| // number of KDF_SECRET_PREPEND and KDF_SECRET_APPEND buffertypes in the | | // number of KDF_SECRET_PREPEND and KDF_SECRET_APPEND buffertypes in the |
| // parameter list. The BufferTypes are processed in order of appearence | | // parameter list. The BufferTypes are processed in order of appearence |
| // within the parameter list. | | // within the parameter list. |
| // | | // |
| #define KDF_HASH_ALGORITHM 0x0 | | #define KDF_HASH_ALGORITHM 0x0 |
| #define KDF_SECRET_PREPEND 0x1 | | #define KDF_SECRET_PREPEND 0x1 |
| #define KDF_SECRET_APPEND 0x2 | | #define KDF_SECRET_APPEND 0x2 |
| #define KDF_HMAC_KEY 0x3 | | #define KDF_HMAC_KEY 0x3 |
| #define KDF_TLS_PRF_LABEL 0x4 | | #define KDF_TLS_PRF_LABEL 0x4 |
| #define KDF_TLS_PRF_SEED 0x5 | | #define KDF_TLS_PRF_SEED 0x5 |
| #define KDF_SECRET_HANDLE 0x6 | | #define KDF_SECRET_HANDLE 0x6 |
|
| | |
| | #if (NTDDI_VERSION >= NTDDI_WIN7) |
| #define KDF_TLS_PRF_PROTOCOL 0x7 | | #define KDF_TLS_PRF_PROTOCOL 0x7 |
| #define KDF_ALGORITHMID 0x8 | | #define KDF_ALGORITHMID 0x8 |
| #define KDF_PARTYUINFO 0x9 | | #define KDF_PARTYUINFO 0x9 |
| #define KDF_PARTYVINFO 0xA | | #define KDF_PARTYVINFO 0xA |
| #define KDF_SUPPPUBINFO 0xB | | #define KDF_SUPPPUBINFO 0xB |
| #define KDF_SUPPPRIVINFO 0xC | | #define KDF_SUPPPRIVINFO 0xC |
|
| | #endif |
| | |
| | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| #define KDF_LABEL 0xD | | #define KDF_LABEL 0xD |
| #define KDF_CONTEXT 0xE | | #define KDF_CONTEXT 0xE |
| #define KDF_SALT 0xF | | #define KDF_SALT 0xF |
| #define KDF_ITERATION_COUNT 0x10 | | #define KDF_ITERATION_COUNT 0x10 |
| // | | // |
| // | | // |
| // Parameters for BCrypt(/NCrypt)KeyDerivation: | | // Parameters for BCrypt(/NCrypt)KeyDerivation: |
| // Generic parameters: | | // Generic parameters: |
| // KDF_GENERIC_PARAMETER and KDF_HASH_ALGORITHM are the generic parameters that
can be passed for the following KDF algorithms: | | // KDF_GENERIC_PARAMETER and KDF_HASH_ALGORITHM are the generic parameters that
can be passed for the following KDF algorithms: |
| // BCRYPT/NCRYPT_SP800108_CTR_HMAC_ALGORITHM | | // BCRYPT/NCRYPT_SP800108_CTR_HMAC_ALGORITHM |
| // KDF_GENERIC_PARAMETER = KDF_LABEL||0x00||KDF_CONTEXT | | // KDF_GENERIC_PARAMETER = KDF_LABEL||0x00||KDF_CONTEXT |
| // BCRYPT/NCRYPT_SP80056A_CONCAT_ALGORITHM | | // BCRYPT/NCRYPT_SP80056A_CONCAT_ALGORITHM |
| // KDF_GENERIC_PARAMETER = KDF_ALGORITHMID || KDF_PARTYUINFO || KDF_PARTYVI
NFO {|| KDF_SUPPPUBINFO } {|| KDF_SUPPPRIVINFO } | | // KDF_GENERIC_PARAMETER = KDF_ALGORITHMID || KDF_PARTYUINFO || KDF_PARTYVI
NFO {|| KDF_SUPPPUBINFO } {|| KDF_SUPPPRIVINFO } |
| // BCRYPT/NCRYPT_PBKDF2_ALGORITHM | | // BCRYPT/NCRYPT_PBKDF2_ALGORITHM |
| // KDF_GENERIC_PARAMETER = KDF_SALT | | // KDF_GENERIC_PARAMETER = KDF_SALT |
| // BCRYPT/NCRYPT_CAPI_KDF_ALGORITHM | | // BCRYPT/NCRYPT_CAPI_KDF_ALGORITHM |
| // KDF_GENERIC_PARAMETER = Not used | | // KDF_GENERIC_PARAMETER = Not used |
|
| | // BCRYPT/NCRYPT_TLS1_1_KDF_ALGORITHM |
| | // KDF_GENERIC_PARAMETER = Not used |
| | // BCRYPT/NCRYPT_TLS1_2_KDF_ALGORITHM |
| | // KDF_GENERIC_PARAMETER = Not used |
| // | | // |
| // KDF specific parameters: | | // KDF specific parameters: |
| // For BCRYPT/NCRYPT_SP800108_CTR_HMAC_ALGORITHM: | | // For BCRYPT/NCRYPT_SP800108_CTR_HMAC_ALGORITHM: |
| // KDF_HASH_ALGORITHM, KDF_LABEL and KDF_CONTEXT are required | | // KDF_HASH_ALGORITHM, KDF_LABEL and KDF_CONTEXT are required |
| // For BCRYPT/NCRYPT_SP80056A_CONCAT_ALGORITHM: | | // For BCRYPT/NCRYPT_SP80056A_CONCAT_ALGORITHM: |
| // KDF_HASH_ALGORITHM, KDF_ALGORITHMID, KDF_PARTYUINFO, KDF_PARTYVINFO are
required | | // KDF_HASH_ALGORITHM, KDF_ALGORITHMID, KDF_PARTYUINFO, KDF_PARTYVINFO are
required |
| // KDF_SUPPPUBINFO, KDF_SUPPPRIVINFO are optional | | // KDF_SUPPPUBINFO, KDF_SUPPPRIVINFO are optional |
| // For BCRYPT/NCRYPT_PBKDF2_ALGORITHM | | // For BCRYPT/NCRYPT_PBKDF2_ALGORITHM |
| // KDF_HASH_ALGORITHM is required | | // KDF_HASH_ALGORITHM is required |
| // KDF_ITERATION_COUNT, KDF_SALT are optional | | // KDF_ITERATION_COUNT, KDF_SALT are optional |
| // Iteration count, (if not specified) will default to 10,000 | | // Iteration count, (if not specified) will default to 10,000 |
| // For BCRYPT/NCRYPT_CAPI_KDF_ALGORITHM | | // For BCRYPT/NCRYPT_CAPI_KDF_ALGORITHM |
| // KDF_HASH_ALGORITHM is required | | // KDF_HASH_ALGORITHM is required |
|
| | // For BCRYPT/NCRYPT_TLS1_1_KDF_ALGORITHM |
| | // KDF_TLS_PRF_LABEL is required |
| | // KDF_TLS_PRF_SEED is required |
| | // For BCRYPT/NCRYPT_TLS1_2_KDF_ALGORITHM |
| | // KDF_HASH_ALGORITHM is required |
| | // KDF_TLS_PRF_LABEL is required |
| | // KDF_TLS_PRF_SEED is required |
| // | | // |
| #define KDF_GENERIC_PARAMETER 0x11 | | #define KDF_GENERIC_PARAMETER 0x11 |
|
| | | |
| #define KDF_KEYBITLENGTH 0x12 | | #define KDF_KEYBITLENGTH 0x12 |
|
| | #endif |
| | |
| // | | // |
| // DeriveKey Flags: | | // DeriveKey Flags: |
| // | | // |
| // KDF_USE_SECRET_AS_HMAC_KEY_FLAG causes the secret agreement to serve also | | // KDF_USE_SECRET_AS_HMAC_KEY_FLAG causes the secret agreement to serve also |
| // as the HMAC key. If this flag is used, the KDF_HMAC_KEY parameter should | | // as the HMAC key. If this flag is used, the KDF_HMAC_KEY parameter should |
| // NOT be specified. | | // NOT be specified. |
| // | | // |
| #define KDF_USE_SECRET_AS_HMAC_KEY_FLAG 0x1 | | #define KDF_USE_SECRET_AS_HMAC_KEY_FLAG 0x1 |
| | |
| | |
| skipping to change at line 222 | | skipping to change at line 251 |
| (_AUTH_INFO_STRUCT_).cbSize = sizeof(BCRYPT_AUTHENTICATED_CIPHER_MOD
E_INFO); \ | | (_AUTH_INFO_STRUCT_).cbSize = sizeof(BCRYPT_AUTHENTICATED_CIPHER_MOD
E_INFO); \ |
| (_AUTH_INFO_STRUCT_).dwInfoVersion = BCRYPT_AUTHENTICATED_CIPHER_MOD
E_INFO_VERSION; | | (_AUTH_INFO_STRUCT_).dwInfoVersion = BCRYPT_AUTHENTICATED_CIPHER_MOD
E_INFO_VERSION; |
| | |
| // | | // |
| // BCrypt String Properties | | // BCrypt String Properties |
| // | | // |
| | |
| // BCrypt(Import/Export)Key BLOB types | | // BCrypt(Import/Export)Key BLOB types |
| #define BCRYPT_OPAQUE_KEY_BLOB L"OpaqueKeyBlob" | | #define BCRYPT_OPAQUE_KEY_BLOB L"OpaqueKeyBlob" |
| #define BCRYPT_KEY_DATA_BLOB L"KeyDataBlob" | | #define BCRYPT_KEY_DATA_BLOB L"KeyDataBlob" |
|
| | |
| | #if (NTDDI_VERSION >= NTDDI_WIN7) |
| #define BCRYPT_AES_WRAP_KEY_BLOB L"Rfc3565KeyWrapBlob" | | #define BCRYPT_AES_WRAP_KEY_BLOB L"Rfc3565KeyWrapBlob" |
|
| | #endif |
| | |
| // BCryptGetProperty strings | | // BCryptGetProperty strings |
| #define BCRYPT_OBJECT_LENGTH L"ObjectLength" | | #define BCRYPT_OBJECT_LENGTH L"ObjectLength" |
| #define BCRYPT_ALGORITHM_NAME L"AlgorithmName" | | #define BCRYPT_ALGORITHM_NAME L"AlgorithmName" |
| #define BCRYPT_PROVIDER_HANDLE L"ProviderHandle" | | #define BCRYPT_PROVIDER_HANDLE L"ProviderHandle" |
| #define BCRYPT_CHAINING_MODE L"ChainingMode" | | #define BCRYPT_CHAINING_MODE L"ChainingMode" |
| #define BCRYPT_BLOCK_LENGTH L"BlockLength" | | #define BCRYPT_BLOCK_LENGTH L"BlockLength" |
| #define BCRYPT_KEY_LENGTH L"KeyLength" | | #define BCRYPT_KEY_LENGTH L"KeyLength" |
| #define BCRYPT_KEY_OBJECT_LENGTH L"KeyObjectLength" | | #define BCRYPT_KEY_OBJECT_LENGTH L"KeyObjectLength" |
| #define BCRYPT_KEY_STRENGTH L"KeyStrength" | | #define BCRYPT_KEY_STRENGTH L"KeyStrength" |
| #define BCRYPT_KEY_LENGTHS L"KeyLengths" | | #define BCRYPT_KEY_LENGTHS L"KeyLengths" |
| #define BCRYPT_BLOCK_SIZE_LIST L"BlockSizeList" | | #define BCRYPT_BLOCK_SIZE_LIST L"BlockSizeList" |
| #define BCRYPT_EFFECTIVE_KEY_LENGTH L"EffectiveKeyLength" | | #define BCRYPT_EFFECTIVE_KEY_LENGTH L"EffectiveKeyLength" |
| #define BCRYPT_HASH_LENGTH L"HashDigestLength" | | #define BCRYPT_HASH_LENGTH L"HashDigestLength" |
| #define BCRYPT_HASH_OID_LIST L"HashOIDList" | | #define BCRYPT_HASH_OID_LIST L"HashOIDList" |
| #define BCRYPT_PADDING_SCHEMES L"PaddingSchemes" | | #define BCRYPT_PADDING_SCHEMES L"PaddingSchemes" |
| #define BCRYPT_SIGNATURE_LENGTH L"SignatureLength" | | #define BCRYPT_SIGNATURE_LENGTH L"SignatureLength" |
| #define BCRYPT_HASH_BLOCK_LENGTH L"HashBlockLength" | | #define BCRYPT_HASH_BLOCK_LENGTH L"HashBlockLength" |
| #define BCRYPT_AUTH_TAG_LENGTH L"AuthTagLength" | | #define BCRYPT_AUTH_TAG_LENGTH L"AuthTagLength" |
|
| | |
| | #if (NTDDI_VERSION >= NTDDI_WIN7) |
| #define BCRYPT_PRIMITIVE_TYPE L"PrimitiveType" | | #define BCRYPT_PRIMITIVE_TYPE L"PrimitiveType" |
| #define BCRYPT_IS_KEYED_HASH L"IsKeyedHash" | | #define BCRYPT_IS_KEYED_HASH L"IsKeyedHash" |
|
| | #endif |
| | |
| | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| #define BCRYPT_IS_REUSABLE_HASH L"IsReusableHash" | | #define BCRYPT_IS_REUSABLE_HASH L"IsReusableHash" |
| #define BCRYPT_MESSAGE_BLOCK_LENGTH L"MessageBlockLength" | | #define BCRYPT_MESSAGE_BLOCK_LENGTH L"MessageBlockLength" |
|
| | #endif |
| | |
| | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| | #define BCRYPT_PUBLIC_KEY_LENGTH L"PublicKeyLength" |
| | #endif |
| | |
| // Additional BCryptGetProperty strings for the RNG Platform Crypto Provider | | // Additional BCryptGetProperty strings for the RNG Platform Crypto Provider |
| #define BCRYPT_PCP_PLATFORM_TYPE_PROPERTY L"PCP_PLATFORM_TYPE" | | #define BCRYPT_PCP_PLATFORM_TYPE_PROPERTY L"PCP_PLATFORM_TYPE" |
| #define BCRYPT_PCP_PROVIDER_VERSION_PROPERTY L"PCP_PROVIDER_VERSION" | | #define BCRYPT_PCP_PROVIDER_VERSION_PROPERTY L"PCP_PROVIDER_VERSION" |
| | |
| #if (NTDDI_VERSION > NTDDI_WINBLUE || (NTDDI_VERSION == NTDDI_WINBLUE && defined
(WINBLUE_KBSPRING14))) | | #if (NTDDI_VERSION > NTDDI_WINBLUE || (NTDDI_VERSION == NTDDI_WINBLUE && defined
(WINBLUE_KBSPRING14))) |
| #define BCRYPT_MULTI_OBJECT_LENGTH L"MultiObjectLength" | | #define BCRYPT_MULTI_OBJECT_LENGTH L"MultiObjectLength" |
| #endif | | #endif |
| | |
| // BCryptSetProperty strings | | // BCryptSetProperty strings |
| | |
| skipping to change at line 292 | | skipping to change at line 334 |
| #define BCRYPT_PAD_NONE 0x00000001 | | #define BCRYPT_PAD_NONE 0x00000001 |
| #define BCRYPT_PAD_PKCS1 0x00000002 // BCryptEncrypt/Decrypt BCryptS
ignHash/VerifySignature | | #define BCRYPT_PAD_PKCS1 0x00000002 // BCryptEncrypt/Decrypt BCryptS
ignHash/VerifySignature |
| #define BCRYPT_PAD_OAEP 0x00000004 // BCryptEncrypt/Decrypt | | #define BCRYPT_PAD_OAEP 0x00000004 // BCryptEncrypt/Decrypt |
| #define BCRYPT_PAD_PSS 0x00000008 // BCryptSignHash/VerifySignatur
e | | #define BCRYPT_PAD_PSS 0x00000008 // BCryptSignHash/VerifySignatur
e |
| #if (NTDDI_VERSION >= NTDDI_WINBLUE) | | #if (NTDDI_VERSION >= NTDDI_WINBLUE) |
| #define BCRYPT_PAD_PKCS1_OPTIONAL_HASH_OID 0x00000010 //BCryptVerifySignature | | #define BCRYPT_PAD_PKCS1_OPTIONAL_HASH_OID 0x00000010 //BCryptVerifySignature |
| #endif | | #endif |
| | |
| #define BCRYPTBUFFER_VERSION 0 | | #define BCRYPTBUFFER_VERSION 0 |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | |
| #pragma endregion | | |
| | |
| #pragma region Application Family | | |
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) | | |
| | | |
| typedef struct _BCryptBuffer { | | typedef struct _BCryptBuffer { |
| ULONG cbBuffer; // Length of buffer, in bytes | | ULONG cbBuffer; // Length of buffer, in bytes |
| ULONG BufferType; // Buffer type | | ULONG BufferType; // Buffer type |
| PVOID pvBuffer; // Pointer to buffer | | PVOID pvBuffer; // Pointer to buffer |
| } BCryptBuffer, * PBCryptBuffer; | | } BCryptBuffer, * PBCryptBuffer; |
| | |
| typedef struct _BCryptBufferDesc { | | typedef struct _BCryptBufferDesc { |
| ULONG ulVersion; // Version number | | ULONG ulVersion; // Version number |
| ULONG cBuffers; // Number of buffers | | ULONG cBuffers; // Number of buffers |
| PBCryptBuffer pBuffers; // Pointer to array of buffers | | PBCryptBuffer pBuffers; // Pointer to array of buffers |
| } BCryptBufferDesc, * PBCryptBufferDesc; | | } BCryptBufferDesc, * PBCryptBufferDesc; |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ | | |
| #pragma endregion | | |
| | |
| #pragma region Desktop Family | | |
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | |
| | | |
| // | | // |
| // Primitive handles | | // Primitive handles |
| // | | // |
| | |
| typedef PVOID BCRYPT_HANDLE; | | typedef PVOID BCRYPT_HANDLE; |
| typedef PVOID BCRYPT_ALG_HANDLE; | | typedef PVOID BCRYPT_ALG_HANDLE; |
| typedef PVOID BCRYPT_KEY_HANDLE; | | typedef PVOID BCRYPT_KEY_HANDLE; |
| typedef PVOID BCRYPT_HASH_HANDLE; | | typedef PVOID BCRYPT_HASH_HANDLE; |
| typedef PVOID BCRYPT_SECRET_HANDLE; | | typedef PVOID BCRYPT_SECRET_HANDLE; |
| | |
| | |
| skipping to change at line 380 | | skipping to change at line 410 |
| // Prime2 | | // Prime2 |
| // Private Exponent mod (Prime1 - 1) | | // Private Exponent mod (Prime1 - 1) |
| // Private Exponent mod (Prime2 - 1) | | // Private Exponent mod (Prime2 - 1) |
| // Inverse of Prime2 mod Prime1 | | // Inverse of Prime2 mod Prime1 |
| // PrivateExponent | | // PrivateExponent |
| #define BCRYPT_RSAFULLPRIVATE_BLOB L"RSAFULLPRIVATEBLOB" | | #define BCRYPT_RSAFULLPRIVATE_BLOB L"RSAFULLPRIVATEBLOB" |
| | |
| #define BCRYPT_RSAFULLPRIVATE_MAGIC 0x33415352 // RSA3 | | #define BCRYPT_RSAFULLPRIVATE_MAGIC 0x33415352 // RSA3 |
| | |
| //Properties of secret agreement algorithms | | //Properties of secret agreement algorithms |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| #define BCRYPT_GLOBAL_PARAMETERS L"SecretAgreementParam" | | #define BCRYPT_GLOBAL_PARAMETERS L"SecretAgreementParam" |
| #define BCRYPT_PRIVATE_KEY L"PrivKeyVal" | | #define BCRYPT_PRIVATE_KEY L"PrivKeyVal" |
|
| | #endif |
| | |
| // The BCRYPT_ECCPUBLIC_BLOB and BCRYPT_ECCPRIVATE_BLOB blob types are used | | // The BCRYPT_ECCPUBLIC_BLOB and BCRYPT_ECCPRIVATE_BLOB blob types are used |
| // to transport plaintext ECC keys. These blob types will be supported by | | // to transport plaintext ECC keys. These blob types will be supported by |
| // all ECC primitive providers. | | // all ECC primitive providers. |
| #define BCRYPT_ECCPUBLIC_BLOB L"ECCPUBLICBLOB" | | #define BCRYPT_ECCPUBLIC_BLOB L"ECCPUBLICBLOB" |
| #define BCRYPT_ECCPRIVATE_BLOB L"ECCPRIVATEBLOB" | | #define BCRYPT_ECCPRIVATE_BLOB L"ECCPRIVATEBLOB" |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) |
| | #define BCRYPT_ECCFULLPUBLIC_BLOB L"ECCFULLPUBLICBLOB" |
| | #define BCRYPT_ECCFULLPRIVATE_BLOB L"ECCFULLPRIVATEBLOB" |
| | #define SSL_ECCPUBLIC_BLOB L"SSLECCPUBLICBLOB" |
| | #endif |
| | |
| #define BCRYPT_ECDH_PUBLIC_P256_MAGIC 0x314B4345 // ECK1 | | #define BCRYPT_ECDH_PUBLIC_P256_MAGIC 0x314B4345 // ECK1 |
| #define BCRYPT_ECDH_PRIVATE_P256_MAGIC 0x324B4345 // ECK2 | | #define BCRYPT_ECDH_PRIVATE_P256_MAGIC 0x324B4345 // ECK2 |
| #define BCRYPT_ECDH_PUBLIC_P384_MAGIC 0x334B4345 // ECK3 | | #define BCRYPT_ECDH_PUBLIC_P384_MAGIC 0x334B4345 // ECK3 |
| #define BCRYPT_ECDH_PRIVATE_P384_MAGIC 0x344B4345 // ECK4 | | #define BCRYPT_ECDH_PRIVATE_P384_MAGIC 0x344B4345 // ECK4 |
| #define BCRYPT_ECDH_PUBLIC_P521_MAGIC 0x354B4345 // ECK5 | | #define BCRYPT_ECDH_PUBLIC_P521_MAGIC 0x354B4345 // ECK5 |
| #define BCRYPT_ECDH_PRIVATE_P521_MAGIC 0x364B4345 // ECK6 | | #define BCRYPT_ECDH_PRIVATE_P521_MAGIC 0x364B4345 // ECK6 |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) |
| | #define BCRYPT_ECDH_PUBLIC_GENERIC_MAGIC 0x504B4345 // ECKP |
| | #define BCRYPT_ECDH_PRIVATE_GENERIC_MAGIC 0x564B4345 // ECKV |
| | #endif |
| | |
| #define BCRYPT_ECDSA_PUBLIC_P256_MAGIC 0x31534345 // ECS1 | | #define BCRYPT_ECDSA_PUBLIC_P256_MAGIC 0x31534345 // ECS1 |
| #define BCRYPT_ECDSA_PRIVATE_P256_MAGIC 0x32534345 // ECS2 | | #define BCRYPT_ECDSA_PRIVATE_P256_MAGIC 0x32534345 // ECS2 |
| #define BCRYPT_ECDSA_PUBLIC_P384_MAGIC 0x33534345 // ECS3 | | #define BCRYPT_ECDSA_PUBLIC_P384_MAGIC 0x33534345 // ECS3 |
| #define BCRYPT_ECDSA_PRIVATE_P384_MAGIC 0x34534345 // ECS4 | | #define BCRYPT_ECDSA_PRIVATE_P384_MAGIC 0x34534345 // ECS4 |
| #define BCRYPT_ECDSA_PUBLIC_P521_MAGIC 0x35534345 // ECS5 | | #define BCRYPT_ECDSA_PUBLIC_P521_MAGIC 0x35534345 // ECS5 |
| #define BCRYPT_ECDSA_PRIVATE_P521_MAGIC 0x36534345 // ECS6 | | #define BCRYPT_ECDSA_PRIVATE_P521_MAGIC 0x36534345 // ECS6 |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) |
| | #define BCRYPT_ECDSA_PUBLIC_GENERIC_MAGIC 0x50444345 // ECDP |
| | #define BCRYPT_ECDSA_PRIVATE_GENERIC_MAGIC 0x56444345 // ECDV |
| | #endif |
| | |
| typedef struct _BCRYPT_ECCKEY_BLOB | | typedef struct _BCRYPT_ECCKEY_BLOB |
| { | | { |
| ULONG dwMagic; | | ULONG dwMagic; |
| ULONG cbKey; | | ULONG cbKey; |
| } BCRYPT_ECCKEY_BLOB, *PBCRYPT_ECCKEY_BLOB; | | } BCRYPT_ECCKEY_BLOB, *PBCRYPT_ECCKEY_BLOB; |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) |
| | //SSL ECC Public Blob Version |
| | typedef struct _SSL_ECCKEY_BLOB |
| | { |
| | ULONG dwCurveType; |
| | ULONG cbKey; |
| | } SSL_ECCKEY_BLOB, *PSSL_ECCKEY_BLOB; |
| | |
| | //ECC Full versions |
| | #define BCRYPT_ECC_FULLKEY_BLOB_V1 0x1 |
| | |
| | typedef enum |
| | { |
| | BCRYPT_ECC_PRIME_SHORT_WEIERSTRASS_CURVE = 0x1, |
| | BCRYPT_ECC_PRIME_TWISTED_EDWARDS_CURVE = 0x2, |
| | BCRYPT_ECC_PRIME_MONTGOMERY_CURVE = 0x3 |
| | } ECC_CURVE_TYPE_ENUM; |
| | |
| | typedef enum |
| | { |
| | BCRYPT_NO_CURVE_GENERATION_ALG_ID = 0x0 |
| | } ECC_CURVE_ALG_ID_ENUM; |
| | |
| | //The full version contains the curve parameters as well |
| | //as the public and potentially private exponent. |
| | typedef struct _BCRYPT_ECCFULLKEY_BLOB |
| | { |
| | ULONG dwMagic; |
| | ULONG dwVersion; //Version of the structure |
| | ECC_CURVE_TYPE_ENUM dwCurveType; //Supported curve types. |
| | ECC_CURVE_ALG_ID_ENUM dwCurveGenerationAlgId; //For X.592 verification pur |
| | poses, if we include Seed we will need to include the algorithm ID. |
| | ULONG cbFieldLength; //Byte length of the fields |
| | P, A, B, X, Y. |
| | ULONG cbSubgroupOrder; //Byte length of the subgrou |
| | p. |
| | ULONG cbCofactor; //Byte length of cofactor of |
| | G in E. |
| | ULONG cbSeed; //Byte length of the seed us |
| | ed to generate the curve. |
| | //P[cbFieldLength] Prime specifying the base field. |
| | //A[cbFieldLength] Coefficient A of the equation y^2 = x^3 + A* |
| | x + B mod p |
| | //B[cbFieldLength] Coefficient B of the equation y^2 = x^3 + A* |
| | x + B mod p |
| | //Gx[cbFieldLength] X-coordinate of the base point. |
| | //Gy[cbFieldLength] Y-coordinate of the base point. |
| | //n[cbSubgroupOrder] Order of the group generated by G = (x,y) |
| | //h[cbCofactor] Cofactor of G in E. |
| | //S[cbSeed] Seed of the curve. |
| | //Qx[cbFieldLength] X-coordinate of the public point. |
| | //Qy[cbFieldLength] Y-coordinate of the public point. |
| | //d[cbSubgroupOrder] Private key. Not always present. |
| | } BCRYPT_ECCFULLKEY_BLOB, *PBCRYPT_ECCFULLKEY_BLOB; |
| | #endif |
| | |
| // The BCRYPT_DH_PUBLIC_BLOB and BCRYPT_DH_PRIVATE_BLOB blob types are used | | // The BCRYPT_DH_PUBLIC_BLOB and BCRYPT_DH_PRIVATE_BLOB blob types are used |
| // to transport plaintext DH keys. These blob types will be supported by | | // to transport plaintext DH keys. These blob types will be supported by |
| // all DH primitive providers. | | // all DH primitive providers. |
| #define BCRYPT_DH_PUBLIC_BLOB L"DHPUBLICBLOB" | | #define BCRYPT_DH_PUBLIC_BLOB L"DHPUBLICBLOB" |
| #define BCRYPT_DH_PRIVATE_BLOB L"DHPRIVATEBLOB" | | #define BCRYPT_DH_PRIVATE_BLOB L"DHPRIVATEBLOB" |
| #define LEGACY_DH_PUBLIC_BLOB L"CAPIDHPUBLICBLOB" | | #define LEGACY_DH_PUBLIC_BLOB L"CAPIDHPUBLICBLOB" |
| #define LEGACY_DH_PRIVATE_BLOB L"CAPIDHPRIVATEBLOB" | | #define LEGACY_DH_PRIVATE_BLOB L"CAPIDHPRIVATEBLOB" |
| | |
| #define BCRYPT_DH_PUBLIC_MAGIC 0x42504844 // DHPB | | #define BCRYPT_DH_PUBLIC_MAGIC 0x42504844 // DHPB |
| #define BCRYPT_DH_PRIVATE_MAGIC 0x56504844 // DHPV | | #define BCRYPT_DH_PRIVATE_MAGIC 0x56504844 // DHPV |
| | |
| skipping to change at line 450 | | skipping to change at line 547 |
| // all DSA primitive providers. | | // all DSA primitive providers. |
| #define BCRYPT_DSA_PUBLIC_BLOB L"DSAPUBLICBLOB" | | #define BCRYPT_DSA_PUBLIC_BLOB L"DSAPUBLICBLOB" |
| #define BCRYPT_DSA_PRIVATE_BLOB L"DSAPRIVATEBLOB" | | #define BCRYPT_DSA_PRIVATE_BLOB L"DSAPRIVATEBLOB" |
| #define LEGACY_DSA_PUBLIC_BLOB L"CAPIDSAPUBLICBLOB" | | #define LEGACY_DSA_PUBLIC_BLOB L"CAPIDSAPUBLICBLOB" |
| #define LEGACY_DSA_PRIVATE_BLOB L"CAPIDSAPRIVATEBLOB" | | #define LEGACY_DSA_PRIVATE_BLOB L"CAPIDSAPRIVATEBLOB" |
| #define LEGACY_DSA_V2_PUBLIC_BLOB L"V2CAPIDSAPUBLICBLOB" | | #define LEGACY_DSA_V2_PUBLIC_BLOB L"V2CAPIDSAPUBLICBLOB" |
| #define LEGACY_DSA_V2_PRIVATE_BLOB L"V2CAPIDSAPRIVATEBLOB" | | #define LEGACY_DSA_V2_PRIVATE_BLOB L"V2CAPIDSAPRIVATEBLOB" |
| | |
| #define BCRYPT_DSA_PUBLIC_MAGIC 0x42505344 // DSPB | | #define BCRYPT_DSA_PUBLIC_MAGIC 0x42505344 // DSPB |
| #define BCRYPT_DSA_PRIVATE_MAGIC 0x56505344 // DSPV | | #define BCRYPT_DSA_PRIVATE_MAGIC 0x56505344 // DSPV |
|
| | |
| | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| #define BCRYPT_DSA_PUBLIC_MAGIC_V2 0x32425044 // DPB2 | | #define BCRYPT_DSA_PUBLIC_MAGIC_V2 0x32425044 // DPB2 |
|
| #define BCRYPT_DSA_PRIVATE_MAGIC_V2 0x32565044 // DPV2 | | #define BCRYPT_DSA_PRIVATE_MAGIC_V2 0x32565044 // DPV2 |
| | #endif |
| | |
| typedef struct _BCRYPT_DSA_KEY_BLOB | | typedef struct _BCRYPT_DSA_KEY_BLOB |
| { | | { |
| ULONG dwMagic; | | ULONG dwMagic; |
| ULONG cbKey; | | ULONG cbKey; |
| UCHAR Count[4]; | | UCHAR Count[4]; |
| UCHAR Seed[20]; | | UCHAR Seed[20]; |
| UCHAR q[20]; | | UCHAR q[20]; |
| } BCRYPT_DSA_KEY_BLOB, *PBCRYPT_DSA_KEY_BLOB; | | } BCRYPT_DSA_KEY_BLOB, *PBCRYPT_DSA_KEY_BLOB; |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| typedef enum | | typedef enum |
| { | | { |
| DSA_HASH_ALGORITHM_SHA1, | | DSA_HASH_ALGORITHM_SHA1, |
| DSA_HASH_ALGORITHM_SHA256, | | DSA_HASH_ALGORITHM_SHA256, |
| DSA_HASH_ALGORITHM_SHA512 | | DSA_HASH_ALGORITHM_SHA512 |
|
| }HASHALGORITHM_ENUM; | | } HASHALGORITHM_ENUM; |
| | |
| typedef enum | | typedef enum |
| { | | { |
| DSA_FIPS186_2, | | DSA_FIPS186_2, |
| DSA_FIPS186_3 | | DSA_FIPS186_3 |
| } DSAFIPSVERSION_ENUM; | | } DSAFIPSVERSION_ENUM; |
| | |
| typedef struct _BCRYPT_DSA_KEY_BLOB_V2 | | typedef struct _BCRYPT_DSA_KEY_BLOB_V2 |
| { | | { |
| ULONG dwMagic; | | ULONG dwMagic; |
| ULONG cbKey; | | ULONG cbKey; |
|
| HASHALGORITHM_ENUM hashAlgorithm; | | HASHALGORITHM_ENUM hashAlgorithm; |
| DSAFIPSVERSION_ENUM standardVersion; | | DSAFIPSVERSION_ENUM standardVersion; |
| ULONG cbSeedLength; | | ULONG cbSeedLength; |
| ULONG cbGroupSize; | | ULONG cbGroupSize; |
| UCHAR Count[4]; | | UCHAR Count[4]; |
| } BCRYPT_DSA_KEY_BLOB_V2, *PBCRYPT_DSA_KEY_BLOB_V2; | | } BCRYPT_DSA_KEY_BLOB_V2, *PBCRYPT_DSA_KEY_BLOB_V2; |
|
| | #endif |
| | |
| typedef struct _BCRYPT_KEY_DATA_BLOB_HEADER | | typedef struct _BCRYPT_KEY_DATA_BLOB_HEADER |
| { | | { |
| ULONG dwMagic; | | ULONG dwMagic; |
| ULONG dwVersion; | | ULONG dwVersion; |
| ULONG cbKeyData; | | ULONG cbKeyData; |
| } BCRYPT_KEY_DATA_BLOB_HEADER, *PBCRYPT_KEY_DATA_BLOB_HEADER; | | } BCRYPT_KEY_DATA_BLOB_HEADER, *PBCRYPT_KEY_DATA_BLOB_HEADER; |
| | |
| #define BCRYPT_KEY_DATA_BLOB_MAGIC 0x4d42444b //Key Data Blob Magic (KDBM) | | #define BCRYPT_KEY_DATA_BLOB_MAGIC 0x4d42444b //Key Data Blob Magic (KDBM) |
| | |
| #define BCRYPT_KEY_DATA_BLOB_VERSION1 0x1 | | #define BCRYPT_KEY_DATA_BLOB_VERSION1 0x1 |
| | |
| // Property Strings for DSA | | // Property Strings for DSA |
| #define BCRYPT_DSA_PARAMETERS L"DSAParameters" | | #define BCRYPT_DSA_PARAMETERS L"DSAParameters" |
| | |
|
| #define BCRYPT_DSA_PARAMETERS_MAGIC 0x4d505344 // DSPM | | #define BCRYPT_DSA_PARAMETERS_MAGIC 0x4d505344 // DSPM |
| | |
|
| #define BCRYPT_DSA_PARAMETERS_MAGIC_V2 0x324d5044 // DPM2 | | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| | #define BCRYPT_DSA_PARAMETERS_MAGIC_V2 0x324d5044 // DPM2 |
| | #endif |
| | |
| typedef struct _BCRYPT_DSA_PARAMETER_HEADER | | typedef struct _BCRYPT_DSA_PARAMETER_HEADER |
| { | | { |
| ULONG cbLength; | | ULONG cbLength; |
| ULONG dwMagic; | | ULONG dwMagic; |
| ULONG cbKeyLength; | | ULONG cbKeyLength; |
| UCHAR Count[4]; | | UCHAR Count[4]; |
| UCHAR Seed[20]; | | UCHAR Seed[20]; |
| UCHAR q[20]; | | UCHAR q[20]; |
| } BCRYPT_DSA_PARAMETER_HEADER; | | } BCRYPT_DSA_PARAMETER_HEADER; |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| typedef struct _BCRYPT_DSA_PARAMETER_HEADER_V2 | | typedef struct _BCRYPT_DSA_PARAMETER_HEADER_V2 |
| { | | { |
| ULONG cbLength; | | ULONG cbLength; |
| ULONG dwMagic; | | ULONG dwMagic; |
| ULONG cbKeyLength; | | ULONG cbKeyLength; |
| HASHALGORITHM_ENUM hashAlgorithm; | | HASHALGORITHM_ENUM hashAlgorithm; |
| DSAFIPSVERSION_ENUM standardVersion; | | DSAFIPSVERSION_ENUM standardVersion; |
| ULONG cbSeedLength; | | ULONG cbSeedLength; |
| ULONG cbGroupSize; | | ULONG cbGroupSize; |
| UCHAR Count[4]; | | UCHAR Count[4]; |
| } BCRYPT_DSA_PARAMETER_HEADER_V2; | | } BCRYPT_DSA_PARAMETER_HEADER_V2; |
|
| | #endif |
| | |
| | #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) |
| | //Property Strings for ECC |
| | #define BCRYPT_ECC_PARAMETERS L"ECCParameters" |
| | #define BCRYPT_ECC_CURVE_NAME L"ECCCurveName" |
| | #define BCRYPT_ECC_CURVE_NAME_LIST L"ECCCurveNameList" |
| | |
| | #define BCRYPT_ECC_PARAMETERS_MAGIC 0x50434345 // ECCP |
| | |
| | typedef struct _BCRYPT_ECC_CURVE_NAMES |
| | { |
| | ULONG dwEccCurveNames; |
| | LPWSTR *pEccCurveNames; |
| | } BCRYPT_ECC_CURVE_NAMES; |
| | |
| | // |
| | // ECC Curve Names |
| | // |
| | #define BCRYPT_ECC_CURVE_BRAINPOOLP160R1 L"brainpoolP160r1" |
| | #define BCRYPT_ECC_CURVE_BRAINPOOLP160T1 L"brainpoolP160t1" |
| | #define BCRYPT_ECC_CURVE_BRAINPOOLP192R1 L"brainpoolP192r1" |
| | #define BCRYPT_ECC_CURVE_BRAINPOOLP192T1 L"brainpoolP192t1" |
| | #define BCRYPT_ECC_CURVE_BRAINPOOLP224R1 L"brainpoolP224r1" |
| | #define BCRYPT_ECC_CURVE_BRAINPOOLP224T1 L"brainpoolP224t1" |
| | #define BCRYPT_ECC_CURVE_BRAINPOOLP256R1 L"brainpoolP256r1" |
| | #define BCRYPT_ECC_CURVE_BRAINPOOLP256T1 L"brainpoolP256t1" |
| | #define BCRYPT_ECC_CURVE_BRAINPOOLP320R1 L"brainpoolP320r1" |
| | #define BCRYPT_ECC_CURVE_BRAINPOOLP320T1 L"brainpoolP320t1" |
| | #define BCRYPT_ECC_CURVE_BRAINPOOLP384R1 L"brainpoolP384r1" |
| | #define BCRYPT_ECC_CURVE_BRAINPOOLP384T1 L"brainpoolP384t1" |
| | #define BCRYPT_ECC_CURVE_BRAINPOOLP512R1 L"brainpoolP512r1" |
| | #define BCRYPT_ECC_CURVE_BRAINPOOLP512T1 L"brainpoolP512t1" |
| | |
| | #define BCRYPT_ECC_CURVE_25519 L"curve25519" |
| | |
| | #define BCRYPT_ECC_CURVE_EC192WAPI L"ec192wapi" |
| | |
| | #define BCRYPT_ECC_CURVE_NISTP192 L"nistP192" |
| | #define BCRYPT_ECC_CURVE_NISTP224 L"nistP224" |
| | #define BCRYPT_ECC_CURVE_NISTP256 L"nistP256" |
| | #define BCRYPT_ECC_CURVE_NISTP384 L"nistP384" |
| | #define BCRYPT_ECC_CURVE_NISTP521 L"nistP521" |
| | |
| | #define BCRYPT_ECC_CURVE_NUMSP256T1 L"numsP256t1" |
| | #define BCRYPT_ECC_CURVE_NUMSP384T1 L"numsP384t1" |
| | #define BCRYPT_ECC_CURVE_NUMSP512T1 L"numsP512t1" |
| | |
| | #define BCRYPT_ECC_CURVE_SECP160K1 L"secP160k1" |
| | #define BCRYPT_ECC_CURVE_SECP160R1 L"secP160r1" |
| | #define BCRYPT_ECC_CURVE_SECP160R2 L"secP160r2" |
| | #define BCRYPT_ECC_CURVE_SECP192K1 L"secP192k1" |
| | #define BCRYPT_ECC_CURVE_SECP192R1 L"secP192r1" |
| | #define BCRYPT_ECC_CURVE_SECP224K1 L"secP224k1" |
| | #define BCRYPT_ECC_CURVE_SECP224R1 L"secP224r1" |
| | #define BCRYPT_ECC_CURVE_SECP256K1 L"secP256k1" |
| | #define BCRYPT_ECC_CURVE_SECP256R1 L"secP256r1" |
| | #define BCRYPT_ECC_CURVE_SECP384R1 L"secP384r1" |
| | #define BCRYPT_ECC_CURVE_SECP521R1 L"secP521r1" |
| | |
| | #define BCRYPT_ECC_CURVE_WTLS7 L"wtls7" |
| | #define BCRYPT_ECC_CURVE_WTLS9 L"wtls9" |
| | #define BCRYPT_ECC_CURVE_WTLS12 L"wtls12" |
| | |
| | #define BCRYPT_ECC_CURVE_X962P192V1 L"x962P192v1" |
| | #define BCRYPT_ECC_CURVE_X962P192V2 L"x962P192v2" |
| | #define BCRYPT_ECC_CURVE_X962P192V3 L"x962P192v3" |
| | #define BCRYPT_ECC_CURVE_X962P239V1 L"x962P239v1" |
| | #define BCRYPT_ECC_CURVE_X962P239V2 L"x962P239v2" |
| | #define BCRYPT_ECC_CURVE_X962P239V3 L"x962P239v3" |
| | #define BCRYPT_ECC_CURVE_X962P256V1 L"x962P256v1" |
| | |
| | #endif |
| | |
| // Operation types used in BCRYPT_MULTI_HASH_OPERATION structures | | // Operation types used in BCRYPT_MULTI_HASH_OPERATION structures |
| typedef enum { | | typedef enum { |
| BCRYPT_HASH_OPERATION_HASH_DATA = 1, | | BCRYPT_HASH_OPERATION_HASH_DATA = 1, |
| BCRYPT_HASH_OPERATION_FINISH_HASH = 2, | | BCRYPT_HASH_OPERATION_FINISH_HASH = 2, |
| } BCRYPT_HASH_OPERATION_TYPE; | | } BCRYPT_HASH_OPERATION_TYPE; |
| | |
| typedef struct _BCRYPT_MULTI_HASH_OPERATION { | | typedef struct _BCRYPT_MULTI_HASH_OPERATION { |
| ULONG iHash; // i
ndex of hash object | | ULONG iHash; // i
ndex of hash object |
| BCRYPT_HASH_OPERATION_TYPE hashOperation; // o
peration to be performed | | BCRYPT_HASH_OPERATION_TYPE hashOperation; // o
peration to be performed |
| | |
| skipping to change at line 590 | | skipping to change at line 768 |
| #define BCRYPT_AES_CMAC_ALGORITHM L"AES-CMAC" | | #define BCRYPT_AES_CMAC_ALGORITHM L"AES-CMAC" |
| #define BCRYPT_ECDSA_P256_ALGORITHM L"ECDSA_P256" | | #define BCRYPT_ECDSA_P256_ALGORITHM L"ECDSA_P256" |
| #define BCRYPT_ECDSA_P384_ALGORITHM L"ECDSA_P384" | | #define BCRYPT_ECDSA_P384_ALGORITHM L"ECDSA_P384" |
| #define BCRYPT_ECDSA_P521_ALGORITHM L"ECDSA_P521" | | #define BCRYPT_ECDSA_P521_ALGORITHM L"ECDSA_P521" |
| #define BCRYPT_ECDH_P256_ALGORITHM L"ECDH_P256" | | #define BCRYPT_ECDH_P256_ALGORITHM L"ECDH_P256" |
| #define BCRYPT_ECDH_P384_ALGORITHM L"ECDH_P384" | | #define BCRYPT_ECDH_P384_ALGORITHM L"ECDH_P384" |
| #define BCRYPT_ECDH_P521_ALGORITHM L"ECDH_P521" | | #define BCRYPT_ECDH_P521_ALGORITHM L"ECDH_P521" |
| #define BCRYPT_RNG_ALGORITHM L"RNG" | | #define BCRYPT_RNG_ALGORITHM L"RNG" |
| #define BCRYPT_RNG_FIPS186_DSA_ALGORITHM L"FIPS186DSARNG" | | #define BCRYPT_RNG_FIPS186_DSA_ALGORITHM L"FIPS186DSARNG" |
| #define BCRYPT_RNG_DUAL_EC_ALGORITHM L"DUALECRNG" | | #define BCRYPT_RNG_DUAL_EC_ALGORITHM L"DUALECRNG" |
|
| | |
| | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| #define BCRYPT_SP800108_CTR_HMAC_ALGORITHM L"SP800_108_CTR_HMAC" | | #define BCRYPT_SP800108_CTR_HMAC_ALGORITHM L"SP800_108_CTR_HMAC" |
| #define BCRYPT_SP80056A_CONCAT_ALGORITHM L"SP800_56A_CONCAT" | | #define BCRYPT_SP80056A_CONCAT_ALGORITHM L"SP800_56A_CONCAT" |
| #define BCRYPT_PBKDF2_ALGORITHM L"PBKDF2" | | #define BCRYPT_PBKDF2_ALGORITHM L"PBKDF2" |
| #define BCRYPT_CAPI_KDF_ALGORITHM L"CAPI_KDF" | | #define BCRYPT_CAPI_KDF_ALGORITHM L"CAPI_KDF" |
|
| | #define BCRYPT_TLS1_1_KDF_ALGORITHM L"TLS1_1_KDF" |
| | #define BCRYPT_TLS1_2_KDF_ALGORITHM L"TLS1_2_KDF" |
| | #endif |
| | |
| | #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) |
| | #define BCRYPT_ECDSA_ALGORITHM L"ECDSA" |
| | #define BCRYPT_ECDH_ALGORITHM L"ECDH" |
| | #define BCRYPT_XTS_AES_ALGORITHM L"XTS-AES" |
| | #endif |
| | |
| // | | // |
| // Interfaces | | // Interfaces |
| // | | // |
| | |
| #define BCRYPT_CIPHER_INTERFACE 0x00000001 | | #define BCRYPT_CIPHER_INTERFACE 0x00000001 |
| #define BCRYPT_HASH_INTERFACE 0x00000002 | | #define BCRYPT_HASH_INTERFACE 0x00000002 |
| #define BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE 0x00000003 | | #define BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE 0x00000003 |
| #define BCRYPT_SECRET_AGREEMENT_INTERFACE 0x00000004 | | #define BCRYPT_SECRET_AGREEMENT_INTERFACE 0x00000004 |
| #define BCRYPT_SIGNATURE_INTERFACE 0x00000005 | | #define BCRYPT_SIGNATURE_INTERFACE 0x00000005 |
| #define BCRYPT_RNG_INTERFACE 0x00000006 | | #define BCRYPT_RNG_INTERFACE 0x00000006 |
|
| | |
| | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| #define BCRYPT_KEY_DERIVATION_INTERFACE 0x00000007 | | #define BCRYPT_KEY_DERIVATION_INTERFACE 0x00000007 |
|
| | #endif |
| | |
| | // |
| | // Algorithm pseudo-handles |
| | // Pseudo-handles are distinguished from normal handles by being 1 mod 16 |
| | // |
| | #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) |
| | #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) |
| | |
| | #endif |
| | |
| // | | // |
| // Primitive algorithm provider functions. | | // Primitive algorithm provider functions. |
| // | | // |
| | |
| #define BCRYPT_ALG_HANDLE_HMAC_FLAG 0x00000008 | | #define BCRYPT_ALG_HANDLE_HMAC_FLAG 0x00000008 |
|
| #define BCRYPT_CAPI_AES_FLAG 0x00000010 | | |
| #define BCRYPT_HASH_REUSABLE_FLAG 0x00000020 | | #define BCRYPT_HASH_REUSABLE_FLAG 0x00000020 |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| | #define BCRYPT_CAPI_AES_FLAG 0x00000010 |
| | #endif |
| | |
| #if (NTDDI_VERSION > NTDDI_WINBLUE || (NTDDI_VERSION == NTDDI_WINBLUE && defined
(WINBLUE_KBSPRING14))) | | #if (NTDDI_VERSION > NTDDI_WINBLUE || (NTDDI_VERSION == NTDDI_WINBLUE && defined
(WINBLUE_KBSPRING14))) |
| #define BCRYPT_MULTI_FLAG 0x00000040 | | #define BCRYPT_MULTI_FLAG 0x00000040 |
| #endif | | #endif |
| | |
| // | | // |
| // The BUFFERS_LOCKED flag used in BCryptEncrypt/BCryptDecrypt signals that | | // The BUFFERS_LOCKED flag used in BCryptEncrypt/BCryptDecrypt signals that |
| // the pbInput and pbOutput buffers have been locked (see MmProbeAndLockPages) | | // the pbInput and pbOutput buffers have been locked (see MmProbeAndLockPages) |
| // and CNG may not lock the buffers again. | | // and CNG may not lock the buffers again. |
| // This flag applies only to kernel mode, it is ignored in user mode. | | // This flag applies only to kernel mode, it is ignored in user mode. |
| // | | // |
| | |
| skipping to change at line 645 | | skipping to change at line 912 |
| // This flag indicates that the extended key size support is requested. | | // This flag indicates that the extended key size support is requested. |
| // It has the following consequences: | | // It has the following consequences: |
| // - BCryptGetProperty will report a new maximum key size for BCRYPT_KEY_LENGTHS
. | | // - BCryptGetProperty will report a new maximum key size for BCRYPT_KEY_LENGTHS
. |
| // - BCryptGenerateSymmetricKey will support the longer key sizes. | | // - BCryptGenerateSymmetricKey will support the longer key sizes. |
| // - BCryptGenerateSymmetricKey will no longer truncate keys that are too long,
but return an error instead. | | // - BCryptGenerateSymmetricKey will no longer truncate keys that are too long,
but return an error instead. |
| // | | // |
| #if (NTDDI_VERSION >= NTDDI_WINBLUE) | | #if (NTDDI_VERSION >= NTDDI_WINBLUE) |
| #define BCRYPT_EXTENDED_KEYSIZE 0x00000080 | | #define BCRYPT_EXTENDED_KEYSIZE 0x00000080 |
| #endif | | #endif |
| | |
|
| | // |
| | // By default, all ECC point multiplications occur outside of a group of low ord |
| | er. For curves |
| | // with cofactor > 1, this requires torsion clearing prior to performing point m |
| | ultiplcation. This |
| | // is done to avoid small subgroup attacks by requiring all scalar multiplcation |
| | s to include the |
| | // cofactor. That is, Q=hkP, where h is the cofactor, k is the scalar, and P is |
| | the point. If |
| | // the caller instead wants Q=kP, pass in this flag. |
| | // |
| | #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) |
| | #define BCRYPT_ECC_NO_COFACTOR_MULTIPLICATION 0x00000100 |
| | #endif |
| | |
| _Must_inspect_result_ | | _Must_inspect_result_ |
| NTSTATUS | | NTSTATUS |
| WINAPI | | WINAPI |
| BCryptOpenAlgorithmProvider( | | BCryptOpenAlgorithmProvider( |
| _Out_ BCRYPT_ALG_HANDLE *phAlgorithm, | | _Out_ BCRYPT_ALG_HANDLE *phAlgorithm, |
| _In_ LPCWSTR pszAlgId, | | _In_ LPCWSTR pszAlgId, |
| _In_opt_ LPCWSTR pszImplementation, | | _In_opt_ LPCWSTR pszImplementation, |
| _In_ ULONG dwFlags); | | _In_ ULONG dwFlags); |
| | |
| // AlgOperations flags for use with BCryptEnumAlgorithms() | | // AlgOperations flags for use with BCryptEnumAlgorithms() |
| #define BCRYPT_CIPHER_OPERATION 0x00000001 | | #define BCRYPT_CIPHER_OPERATION 0x00000001 |
| #define BCRYPT_HASH_OPERATION 0x00000002 | | #define BCRYPT_HASH_OPERATION 0x00000002 |
| #define BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION 0x00000004 | | #define BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION 0x00000004 |
| #define BCRYPT_SECRET_AGREEMENT_OPERATION 0x00000008 | | #define BCRYPT_SECRET_AGREEMENT_OPERATION 0x00000008 |
| #define BCRYPT_SIGNATURE_OPERATION 0x00000010 | | #define BCRYPT_SIGNATURE_OPERATION 0x00000010 |
| #define BCRYPT_RNG_OPERATION 0x00000020 | | #define BCRYPT_RNG_OPERATION 0x00000020 |
|
| | |
| | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| #define BCRYPT_KEY_DERIVATION_OPERATION 0x00000040 | | #define BCRYPT_KEY_DERIVATION_OPERATION 0x00000040 |
|
| | #endif |
| | |
| // USE EXTREME CAUTION: editing comments that contain "certenrolls_*" tokens | | // USE EXTREME CAUTION: editing comments that contain "certenrolls_*" tokens |
| // could break building CertEnroll idl files: | | // could break building CertEnroll idl files: |
| // certenrolls_begin -- BCRYPT_ALGORITHM_IDENTIFIER | | // certenrolls_begin -- BCRYPT_ALGORITHM_IDENTIFIER |
| typedef struct _BCRYPT_ALGORITHM_IDENTIFIER | | typedef struct _BCRYPT_ALGORITHM_IDENTIFIER |
| { | | { |
| LPWSTR pszName; | | LPWSTR pszName; |
| ULONG dwClass; | | ULONG dwClass; |
| ULONG dwFlags; | | ULONG dwFlags; |
| | |
| | |
| skipping to change at line 698 | | skipping to change at line 979 |
| | |
| _Must_inspect_result_ | | _Must_inspect_result_ |
| NTSTATUS | | NTSTATUS |
| WINAPI | | WINAPI |
| BCryptEnumProviders( | | BCryptEnumProviders( |
| _In_ LPCWSTR pszAlgId, | | _In_ LPCWSTR pszAlgId, |
| _Out_ ULONG *pImplCount, | | _Out_ ULONG *pImplCount, |
| _Out_ BCRYPT_PROVIDER_NAME **ppImplList, | | _Out_ BCRYPT_PROVIDER_NAME **ppImplList, |
| _In_ ULONG dwFlags); | | _In_ ULONG dwFlags); |
| | |
|
| // Flags for use with BCryptGetProperty and BCryptSetProperty | | // Unused flags. Kept for backward compatibility. |
| | // "Flags for use with BCryptGetProperty and BCryptSetProperty" |
| #define BCRYPT_PUBLIC_KEY_FLAG 0x00000001 | | #define BCRYPT_PUBLIC_KEY_FLAG 0x00000001 |
| #define BCRYPT_PRIVATE_KEY_FLAG 0x00000002 | | #define BCRYPT_PRIVATE_KEY_FLAG 0x00000002 |
| | |
| _Must_inspect_result_ | | _Must_inspect_result_ |
| NTSTATUS | | NTSTATUS |
| WINAPI | | WINAPI |
| BCryptGetProperty( | | BCryptGetProperty( |
| _In_ BCRYPT_HANDLE hObject, | | _In_ BCRYPT_HANDLE hObject, |
| _In_ LPCWSTR pszProperty, | | _In_ LPCWSTR pszProperty, |
| _Out_writes_bytes_to_opt_(cbOutput, *pcbResult) PUCHAR pbOutput, | | _Out_writes_bytes_to_opt_(cbOutput, *pcbResult) PUCHAR pbOutput, |
| | |
| skipping to change at line 900 | | skipping to change at line 1182 |
| WINAPI | | WINAPI |
| BCryptDeriveKey( | | BCryptDeriveKey( |
| _In_ BCRYPT_SECRET_HANDLE hSharedSecret, | | _In_ BCRYPT_SECRET_HANDLE hSharedSecret, |
| _In_ LPCWSTR pwszKDF, | | _In_ LPCWSTR pwszKDF, |
| _In_opt_ BCryptBufferDesc *pParameterList, | | _In_opt_ BCryptBufferDesc *pParameterList, |
| _Out_writes_bytes_to_opt_(cbDerivedKey, *pcbResult) PUCHAR pbDerivedKey, | | _Out_writes_bytes_to_opt_(cbDerivedKey, *pcbResult) PUCHAR pbDerivedKey, |
| _In_ ULONG cbDerivedKey, | | _In_ ULONG cbDerivedKey, |
| _Out_ ULONG *pcbResult, | | _Out_ ULONG *pcbResult, |
| _In_ ULONG dwFlags); | | _In_ ULONG dwFlags); |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| _Must_inspect_result_ | | _Must_inspect_result_ |
| NTSTATUS | | NTSTATUS |
| WINAPI | | WINAPI |
| BCryptKeyDerivation( | | BCryptKeyDerivation( |
| _In_ BCRYPT_KEY_HANDLE hKey, | | _In_ BCRYPT_KEY_HANDLE hKey, |
| _In_opt_ BCryptBufferDesc *pParameterList, | | _In_opt_ BCryptBufferDesc *pParameterList, |
| _Out_writes_bytes_to_(cbDerivedKey, *pcbResult) PUCHAR pbDerivedKey, | | _Out_writes_bytes_to_(cbDerivedKey, *pcbResult) PUCHAR pbDerivedKey, |
| _In_ ULONG cbDerivedKey, | | _In_ ULONG cbDerivedKey, |
| _Out_ ULONG *pcbResult, | | _Out_ ULONG *pcbResult, |
| _In_ ULONG dwFlags); | | _In_ ULONG dwFlags); |
|
| | #endif |
| | |
| // | | // |
| // Primitive hashing functions. | | // Primitive hashing functions. |
| // | | // |
| _Must_inspect_result_ | | _Must_inspect_result_ |
| NTSTATUS | | NTSTATUS |
| WINAPI | | WINAPI |
| BCryptCreateHash( | | BCryptCreateHash( |
| _Inout_ BCRYPT_ALG_HANDLE hAlgorithm, | | _Inout_ BCRYPT_ALG_HANDLE hAlgorithm, |
| _Out_ BCRYPT_HASH_HANDLE *phHash, | | _Out_ BCRYPT_HASH_HANDLE *phHash, |
| | |
| skipping to change at line 984 | | skipping to change at line 1268 |
| _Out_ BCRYPT_HASH_HANDLE *phNewHash, | | _Out_ BCRYPT_HASH_HANDLE *phNewHash, |
| _Out_writes_bytes_all_opt_(cbHashObject) PUCHAR pbHashObject, | | _Out_writes_bytes_all_opt_(cbHashObject) PUCHAR pbHashObject, |
| _In_ ULONG cbHashObject, | | _In_ ULONG cbHashObject, |
| _In_ ULONG dwFlags); | | _In_ ULONG dwFlags); |
| | |
| NTSTATUS | | NTSTATUS |
| WINAPI | | WINAPI |
| BCryptDestroyHash( | | BCryptDestroyHash( |
| _Inout_ BCRYPT_HASH_HANDLE hHash); | | _Inout_ BCRYPT_HASH_HANDLE hHash); |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) |
| | NTSTATUS |
| | WINAPI |
| | BCryptHash( |
| | _Inout_ BCRYPT_ALG_HANDLE hAlgorithm, |
| | _In_reads_bytes_opt_(cbSecret) PUCHAR pbSecret, // for k |
| | eyed algs |
| | _In_ ULONG cbSecret, // for k |
| | eyed algs |
| | _In_reads_bytes_(cbInput) PUCHAR pbInput, |
| | _In_ ULONG cbInput, |
| | _Out_writes_bytes_all_(cbOutput) PUCHAR pbOutput, |
| | _In_ ULONG cbOutput ); |
| | #endif |
| | |
| // | | // |
| // Primitive random number generation. | | // Primitive random number generation. |
| // | | // |
| | |
| // Flags to BCryptGenRandom | | // Flags to BCryptGenRandom |
|
| | // BCRYPT_RNG_USE_ENTROPY_IN_BUFFER is ignored in Win7 & later |
| #define BCRYPT_RNG_USE_ENTROPY_IN_BUFFER 0x00000001 | | #define BCRYPT_RNG_USE_ENTROPY_IN_BUFFER 0x00000001 |
| #define BCRYPT_USE_SYSTEM_PREFERRED_RNG 0x00000002 | | #define BCRYPT_USE_SYSTEM_PREFERRED_RNG 0x00000002 |
| | |
| _Must_inspect_result_ | | _Must_inspect_result_ |
| NTSTATUS | | NTSTATUS |
| WINAPI | | WINAPI |
| BCryptGenRandom( | | BCryptGenRandom( |
| _In_opt_ BCRYPT_ALG_HANDLE hAlgorithm, | | _In_opt_ BCRYPT_ALG_HANDLE hAlgorithm, |
|
| _Inout_updates_bytes_all_(cbBuffer) PUCHAR pbBuffer, | | _Out_writes_bytes_(cbBuffer) PUCHAR pbBuffer, |
| _In_ ULONG cbBuffer, | | _In_ ULONG cbBuffer, |
| _In_ ULONG dwFlags); | | _In_ ULONG dwFlags); |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN7) |
| // | | // |
| // Primitive key derivation functions. | | // Primitive key derivation functions. |
| // | | // |
| _Must_inspect_result_ | | _Must_inspect_result_ |
| NTSTATUS | | NTSTATUS |
| WINAPI | | WINAPI |
| BCryptDeriveKeyCapi( | | BCryptDeriveKeyCapi( |
| _In_ BCRYPT_HASH_HANDLE hHash, | | _In_ BCRYPT_HASH_HANDLE hHash, |
| _In_opt_ BCRYPT_ALG_HANDLE hTargetAlg, | | _In_opt_ BCRYPT_ALG_HANDLE hTargetAlg, |
| _Out_writes_bytes_( cbDerivedKey ) PUCHAR pbDerivedKey, | | _Out_writes_bytes_( cbDerivedKey ) PUCHAR pbDerivedKey, |
| _In_ ULONG cbDerivedKey, | | _In_ ULONG cbDerivedKey, |
| _In_ ULONG dwFlags); | | _In_ ULONG dwFlags); |
|
| | #endif |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN7) |
| _Must_inspect_result_ | | _Must_inspect_result_ |
| NTSTATUS | | NTSTATUS |
| WINAPI | | WINAPI |
| BCryptDeriveKeyPBKDF2( | | BCryptDeriveKeyPBKDF2( |
| _In_ BCRYPT_ALG_HANDLE hPrf, | | _In_ BCRYPT_ALG_HANDLE hPrf, |
| _In_reads_bytes_opt_( cbPassword ) PUCHAR pbPassword, | | _In_reads_bytes_opt_( cbPassword ) PUCHAR pbPassword, |
| _In_ ULONG cbPassword, | | _In_ ULONG cbPassword, |
| _In_reads_bytes_opt_( cbSalt ) PUCHAR pbSalt, | | _In_reads_bytes_opt_( cbSalt ) PUCHAR pbSalt, |
| _In_ ULONG cbSalt, | | _In_ ULONG cbSalt, |
| _In_ ULONGLONG cIterations, | | _In_ ULONGLONG cIterations, |
| _Out_writes_bytes_( cbDerivedKey ) PUCHAR pbDerivedKey, | | _Out_writes_bytes_( cbDerivedKey ) PUCHAR pbDerivedKey, |
| _In_ ULONG cbDerivedKey, | | _In_ ULONG cbDerivedKey, |
| _In_ ULONG dwFlags); | | _In_ ULONG dwFlags); |
|
| | #endif |
| | |
| // | | // |
| // Interface version control... | | // Interface version control... |
| // | | // |
| typedef struct _BCRYPT_INTERFACE_VERSION | | typedef struct _BCRYPT_INTERFACE_VERSION |
| { | | { |
| USHORT MajorVersion; | | USHORT MajorVersion; |
| USHORT MinorVersion; | | USHORT MinorVersion; |
| | |
| } BCRYPT_INTERFACE_VERSION, *PBCRYPT_INTERFACE_VERSION; | | } BCRYPT_INTERFACE_VERSION, *PBCRYPT_INTERFACE_VERSION; |
| | |
| skipping to change at line 1230 | | skipping to change at line 1532 |
| } | | } |
| CRYPT_PROVIDER_REF, *PCRYPT_PROVIDER_REF; | | CRYPT_PROVIDER_REF, *PCRYPT_PROVIDER_REF; |
| | |
| typedef struct _CRYPT_PROVIDER_REFS | | typedef struct _CRYPT_PROVIDER_REFS |
| { | | { |
| ULONG cProviders; | | ULONG cProviders; |
| PCRYPT_PROVIDER_REF *rgpProviders; | | PCRYPT_PROVIDER_REF *rgpProviders; |
| } | | } |
| CRYPT_PROVIDER_REFS, *PCRYPT_PROVIDER_REFS; | | CRYPT_PROVIDER_REFS, *PCRYPT_PROVIDER_REFS; |
| | |
|
| | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM |
| | ) */ |
| | #pragma endregion |
| | |
| | #pragma region Desktop Family or OneCore Family |
| | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| ////////////////////////////////////////////////////////////////////////////// | | ////////////////////////////////////////////////////////////////////////////// |
| // CryptoConfig Functions //////////////////////////////////////////////////// | | // CryptoConfig Functions //////////////////////////////////////////////////// |
| ////////////////////////////////////////////////////////////////////////////// | | ////////////////////////////////////////////////////////////////////////////// |
| | |
| #ifndef KERNEL_MODE_CNG | | #ifndef KERNEL_MODE_CNG |
| | |
| _Must_inspect_result_ | | _Must_inspect_result_ |
| NTSTATUS | | NTSTATUS |
| WINAPI | | WINAPI |
| BCryptQueryProviderRegistration( | | BCryptQueryProviderRegistration( |
| | |
| skipping to change at line 1466 | | skipping to change at line 1774 |
| | |
| // | | // |
| // Miscellaneous queries about the crypto environment | | // Miscellaneous queries about the crypto environment |
| // | | // |
| NTSTATUS | | NTSTATUS |
| WINAPI | | WINAPI |
| BCryptGetFipsAlgorithmMode( | | BCryptGetFipsAlgorithmMode( |
| _Out_ BOOLEAN *pfEnabled | | _Out_ BOOLEAN *pfEnabled |
| ); | | ); |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | BOOLEAN |
| | CngGetFipsAlgorithmMode( |
| | VOID |
| | ); |
| | |
| | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY |
| | STEM) */ |
| #pragma endregion | | #pragma endregion |
| | |
| #ifdef __cplusplus | | #ifdef __cplusplus |
| } | | } |
| #endif | | #endif |
| | |
|
| #endif // __BCRYPT_H__ | | #if _MSC_VER >= 1200 |
| | #pragma warning(pop) |
| | #endif |
| | |
| End of changes. 56 change blocks. |
| 26 lines changed or deleted | | 354 lines changed or added |
|