From f6fcadbc9546803e1e01a3556a345198d5de29ce Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath <[email protected]> Date: Sun, 4 Oct 2020 19:40:54 +0530 Subject: [PATCH 4/4] headers: Update bcrypt.h header file.
Changes: * Add BCryptCreateMultiHash, BCryptProcessMultiOperations and BCryptHash function declarations. * Add related symbols of those functions. * Relocate duplicate BCryptUnregisterConfigChangeNotify function declaration. Signed-off-by: Biswapriyo Nath <[email protected]> --- mingw-w64-headers/include/bcrypt.h | 82 +++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/mingw-w64-headers/include/bcrypt.h b/mingw-w64-headers/include/bcrypt.h index 006181c..6369fd1 100644 --- a/mingw-w64-headers/include/bcrypt.h +++ b/mingw-w64-headers/include/bcrypt.h @@ -55,6 +55,14 @@ extern "C" { #define BCRYPT_KDF_TLS_PRF L"TLS_PRF" #define BCRYPT_KDF_SP80056A_CONCAT L"SP800_56A_CONCAT" +#if NTDDI_VERSION >= NTDDI_WINBLUE +#define BCRYPT_KDF_RAW_SECRET L"TRUNCATE" +#endif + +#if NTDDI_VERSION >= NTDDI_WIN10_RS4 +#define BCRYPT_KDF_HKDF L"HKDF" +#endif + #define KDF_HASH_ALGORITHM 0x0 #define KDF_SECRET_PREPEND 0x1 #define KDF_SECRET_APPEND 0x2 @@ -62,18 +70,26 @@ extern "C" { #define KDF_TLS_PRF_LABEL 0x4 #define KDF_TLS_PRF_SEED 0x5 #define KDF_SECRET_HANDLE 0x6 +#if NTDDI_VERSION >= NTDDI_WIN7 #define KDF_TLS_PRF_PROTOCOL 0x7 #define KDF_ALGORITHMID 0x8 #define KDF_PARTYUINFO 0x9 #define KDF_PARTYVINFO 0xa #define KDF_SUPPPUBINFO 0xb #define KDF_SUPPPRIVINFO 0xc +#endif +#if NTDDI_VERSION >= NTDDI_WIN8 #define KDF_LABEL 0xd #define KDF_CONTEXT 0xe #define KDF_SALT 0xf #define KDF_ITERATION_COUNT 0x10 #define KDF_GENERIC_PARAMETER 0x11 #define KDF_KEYBITLENGTH 0x12 +#endif +#if NTDDI_VERSION >= NTDDI_WIN10_RS4 +#define KDF_HKDF_SALT 0x13 +#define KDF_HKDF_INFO 0x14 +#endif #define KDF_USE_SECRET_AS_HMAC_KEY_FLAG 1 @@ -89,7 +105,9 @@ extern "C" { #define BCRYPT_OPAQUE_KEY_BLOB L"OpaqueKeyBlob" #define BCRYPT_KEY_DATA_BLOB L"KeyDataBlob" +#if NTDDI_VERSION >= NTDDI_WIN7 #define BCRYPT_AES_WRAP_KEY_BLOB L"Rfc3565KeyWrapBlob" +#endif #define BCRYPT_ALGORITHM_NAME L"AlgorithmName" #define BCRYPT_AUTH_TAG_LENGTH L"AuthTagLength" @@ -120,7 +138,17 @@ extern "C" { #define BCRYPT_PCP_PROVIDER_VERSION_PROPERTY L"PCP_PROVIDER_VERSION" #define BCRYPT_PRIMITIVE_TYPE L"PrimitiveType" #define BCRYPT_PROVIDER_HANDLE L"ProviderHandle" +#define BCRYPT_PUBLIC_KEY_LENGTH L"PublicKeyLength" #define BCRYPT_SIGNATURE_LENGTH L"SignatureLength" +#if (NTDDI_VERSION > NTDDI_WINBLUE || (NTDDI_VERSION == NTDDI_WINBLUE && defined(WINBLUE_KBSPRING14))) +#define BCRYPT_MULTI_OBJECT_LENGTH L"MultiObjectLength" +#endif +#if NTDDI_VERSION >= NTDDI_WIN10_RS4 +#define BCRYPT_IS_IFX_TPM_WEAK_KEY L"IsIfxTpmWeakKey" +#define BCRYPT_HKDF_HASH_ALGORITHM L"HkdfHashAlgorithm" +#define BCRYPT_HKDF_SALT_AND_FINALIZE L"HkdfSaltAndFinalize" +#define BCRYPT_HKDF_PRK_AND_FINALIZE L"HkdfPrkAndFinalize" +#endif #define BCRYPT_SUPPORTED_PAD_ROUTER 0x00000001 #define BCRYPT_SUPPORTED_PAD_PKCS1_ENC 0x00000002 @@ -136,6 +164,9 @@ extern "C" { #define BCRYPT_PAD_PKCS1 0x00000002 #define BCRYPT_PAD_OAEP 0x00000004 #define BCRYPT_PAD_PSS 0x00000008 +#if NTDDI_VERSION >= NTDDI_WINBLUE +#define BCRYPT_PAD_PKCS1_OPTIONAL_HASH_OID 0x00000010 +#endif #define BCRYPTBUFFER_VERSION 0 @@ -220,18 +251,30 @@ extern "C" { #define BCRYPT_RSAFULLPRIVATE_MAGIC 0x33415352 +#if NTDDI_VERSION >= NTDDI_WIN8 #define BCRYPT_GLOBAL_PARAMETERS L"SecretAgreementParam" #define BCRYPT_PRIVATE_KEY L"PrivKeyVal" +#endif #define BCRYPT_ECCPUBLIC_BLOB L"ECCPUBLICBLOB" #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 #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 +#if NTDDI_VERSION >= NTDDI_WINTHRESHOLD +#define BCRYPT_ECDH_PUBLIC_GENERIC_MAGIC 0x504B4345 +#define BCRYPT_ECDH_PRIVATE_GENERIC_MAGIC 0x564B4345 +#endif #define BCRYPT_ECDSA_PUBLIC_P256_MAGIC 0x31534345 #define BCRYPT_ECDSA_PRIVATE_P256_MAGIC 0x32534345 @@ -239,6 +282,10 @@ extern "C" { #define BCRYPT_ECDSA_PRIVATE_P384_MAGIC 0x34534345 #define BCRYPT_ECDSA_PUBLIC_P521_MAGIC 0x35534345 #define BCRYPT_ECDSA_PRIVATE_P521_MAGIC 0x36534345 +#if NTDDI_VERSION >= NTDDI_WINTHRESHOLD +#define BCRYPT_ECDSA_PUBLIC_GENERIC_MAGIC 0x50444345 +#define BCRYPT_ECDSA_PRIVATE_GENERIC_MAGIC 0x56444345 +#endif #define BCRYPT_DH_PUBLIC_BLOB L"DHPUBLICBLOB" #define BCRYPT_DH_PRIVATE_BLOB L"DHPRIVATEBLOB" @@ -460,6 +507,32 @@ typedef PVOID BCRYPT_HANDLE; UCHAR Count[4]; } BCRYPT_DSA_PARAMETER_HEADER_V2; + typedef struct _BCRYPT_ECC_CURVE_NAMES { + ULONG dwEccCurveNames; + LPWSTR *pEccCurveNames; + } BCRYPT_ECC_CURVE_NAMES; + + typedef enum { + BCRYPT_HASH_OPERATION_HASH_DATA = 1, + BCRYPT_HASH_OPERATION_FINISH_HASH = 2 + } BCRYPT_HASH_OPERATION_TYPE; + + typedef struct _BCRYPT_MULTI_HASH_OPERATION { + ULONG iHash; + BCRYPT_HASH_OPERATION_TYPE hashOperation; + PUCHAR pbBuffer; + ULONG cbBuffer; + } BCRYPT_MULTI_HASH_OPERATION; + + typedef enum { + BCRYPT_OPERATION_TYPE_HASH = 1 + } BCRYPT_MULTI_OPERATION_TYPE; + + typedef struct _BCRYPT_MULTI_OBJECT_LENGTH_STRUCT { + ULONG cbPerObject; + ULONG cbPerElement; + } BCRYPT_MULTI_OBJECT_LENGTH_STRUCT; + typedef struct _BCRYPT_ALGORITHM_IDENTIFIER { LPWSTR pszName; ULONG dwClass; @@ -577,8 +650,15 @@ typedef PVOID BCRYPT_HANDLE; NTSTATUS WINAPI BCryptCreateHash (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_HASH_HANDLE *phHash, PUCHAR pbHashObject, ULONG cbHashObject, PUCHAR pbSecret, ULONG cbSecret, ULONG dwFlags); NTSTATUS WINAPI BCryptHashData (BCRYPT_HASH_HANDLE hHash, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags); NTSTATUS WINAPI BCryptFinishHash (BCRYPT_HASH_HANDLE hHash, PUCHAR pbOutput, ULONG cbOutput, ULONG dwFlags); +#if (NTDDI_VERSION > NTDDI_WINBLUE || (NTDDI_VERSION == NTDDI_WINBLUE && defined(WINBLUE_KBSPRING14))) + NTSTATUS WINAPI BCryptCreateMultiHash (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_HASH_HANDLE *phHash, ULONG nHashes, PUCHAR pbHashObject, ULONG cbHashObject, PUCHAR pbSecret, ULONG cbSecret, ULONG dwFlags); + NTSTATUS WINAPI BCryptProcessMultiOperations (BCRYPT_HANDLE hObject, BCRYPT_MULTI_OPERATION_TYPE operationType, PVOID pOperations, ULONG cbOperations, ULONG dwFlags); +#endif NTSTATUS WINAPI BCryptDuplicateHash (BCRYPT_HASH_HANDLE hHash, BCRYPT_HASH_HANDLE *phNewHash, PUCHAR pbHashObject, ULONG cbHashObject, ULONG dwFlags); NTSTATUS WINAPI BCryptDestroyHash (BCRYPT_HASH_HANDLE hHash); +#if NTDDI_VERSION >= NTDDI_WINTHRESHOLD + NTSTATUS WINAPI BCryptHash (BCRYPT_ALG_HANDLE hAlgorithm, PUCHAR pbSecret, ULONG cbSecret, PUCHAR pbInput, ULONG cbInput, PUCHAR pbOutput, ULONG cbOutput); +#endif NTSTATUS WINAPI BCryptGenRandom (BCRYPT_ALG_HANDLE hAlgorithm, PUCHAR pbBuffer, ULONG cbBuffer, ULONG dwFlags); NTSTATUS WINAPI BCryptDeriveKeyCapi (BCRYPT_HASH_HANDLE hHash, BCRYPT_ALG_HANDLE hTargetAlg, PUCHAR pbDerivedKey, ULONG cbDerivedKey, ULONG dwFlags); NTSTATUS WINAPI BCryptDeriveKeyPBKDF2 (BCRYPT_ALG_HANDLE hPrf, PUCHAR pbPassword, ULONG cbPassword, PUCHAR pbSalt, ULONG cbSalt, ULONGLONG cIterations, PUCHAR pbDerivedKey, ULONG cbDerivedKey, ULONG dwFlags); @@ -603,10 +683,10 @@ typedef PVOID BCRYPT_HANDLE; NTSTATUS WINAPI BCryptSetContextFunctionProperty (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, LPCWSTR pszProperty, ULONG cbValue, PUCHAR pbValue); NTSTATUS WINAPI BCryptQueryContextFunctionProperty (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, LPCWSTR pszProperty, ULONG *pcbValue, PUCHAR *ppbValue); NTSTATUS WINAPI BCryptRegisterConfigChangeNotify (HANDLE *phEvent); + NTSTATUS WINAPI BCryptUnregisterConfigChangeNotify (HANDLE hEvent); #else NTSTATUS WINAPI BCryptRegisterConfigChangeNotify (PRKEVENT pEvent); NTSTATUS WINAPI BCryptUnregisterConfigChangeNotify (PRKEVENT pEvent); - NTSTATUS WINAPI BCryptUnregisterConfigChangeNotify (HANDLE hEvent); #endif #endif -- 2.27.0
_______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
