From 29a0cfa47bae221906199b6e77a63f232541f199 Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <nathbap...@gmail.com>
Date: Thu, 4 Jul 2024 17:36:19 +0000
Subject: [PATCH] headers: Add new symbols in bcrypt.h

Required for https://github.com/googleapis/google-cloud-cpp

Signed-off-by: Biswapriyo Nath <nathbap...@gmail.com>
---
 mingw-w64-headers/include/bcrypt.h | 135 +++++++++++++++++++++++++++++
 1 file changed, 135 insertions(+)

diff --git a/mingw-w64-headers/include/bcrypt.h 
b/mingw-w64-headers/include/bcrypt.h
index 6369fd1..cb7a7c1 100644
--- a/mingw-w64-headers/include/bcrypt.h
+++ b/mingw-w64-headers/include/bcrypt.h
@@ -150,6 +150,15 @@ extern "C" {
 #define BCRYPT_HKDF_PRK_AND_FINALIZE L"HkdfPrkAndFinalize"
 #endif
 
+#if NTDDI_VERSION >= NTDDI_WIN11_ZN
+#define BCRYPT_FUNCTION_NAME_STRING L"FunctionNameString"
+#define BCRYPT_CUSTOMIZATION_STRING L"CustomizationString"
+#endif
+
+#if NTDDI_VERSION >= NTDDI_WIN11_GA
+#define BCRYPT_CHAIN_MODE_KWP L"ChainingModeKWP"
+#endif
+
 #define BCRYPT_SUPPORTED_PAD_ROUTER 0x00000001
 #define BCRYPT_SUPPORTED_PAD_PKCS1_ENC 0x00000002
 #define BCRYPT_SUPPORTED_PAD_PKCS1_SIG 0x00000004
@@ -160,6 +169,10 @@ extern "C" {
 
 #define BCRYPT_BLOCK_PADDING 0x00000001
 
+#if NTDDI_VERSION >= NTDDI_WIN10_CO
+#define BCRYPT_GENERATE_IV 0x00000020
+#endif
+
 #define BCRYPT_PAD_NONE 0x00000001
 #define BCRYPT_PAD_PKCS1 0x00000002
 #define BCRYPT_PAD_OAEP 0x00000004
@@ -264,6 +277,7 @@ extern "C" {
 #define BCRYPT_ECCFULLPRIVATE_BLOB L"ECCFULLPRIVATEBLOB"
 #define SSL_ECCPUBLIC_BLOB L"SSLECCPUBLICBLOB"
 #endif
+#define TLS_13_PRE_SHARED_KEY L"TLS13PRESHAREDKEY"
 
 #define BCRYPT_ECDH_PUBLIC_P256_MAGIC 0x314b4345
 #define BCRYPT_ECDH_PRIVATE_P256_MAGIC 0x324b4345
@@ -362,6 +376,97 @@ extern "C" {
 #define BCRYPT_RNG_INTERFACE 0x00000006
 #define BCRYPT_KEY_DERIVATION_INTERFACE 0x00000007
 
+#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)
+
+#define BCRYPT_HKDF_ALG_HANDLE ((BCRYPT_ALG_HANDLE) 0x00000391)
+
+#endif
+
+#if NTDDI_VERSION >= NTDDI_WIN10_FE
+#define BCRYPT_CHACHA20_POLY1305_ALG_HANDLE ((BCRYPT_ALG_HANDLE) 0x000003A1)
+#endif
+
+#if NTDDI_VERSION >= NTDDI_WIN11_ZN
+#define BCRYPT_SHA3_256_ALG_HANDLE ((BCRYPT_ALG_HANDLE) 0x000003B1)
+#define BCRYPT_SHA3_384_ALG_HANDLE ((BCRYPT_ALG_HANDLE) 0x000003C1)
+#define BCRYPT_SHA3_512_ALG_HANDLE ((BCRYPT_ALG_HANDLE) 0x000003D1)
+#define BCRYPT_HMAC_SHA3_256_ALG_HANDLE ((BCRYPT_ALG_HANDLE) 0x000003E1)
+#define BCRYPT_HMAC_SHA3_384_ALG_HANDLE ((BCRYPT_ALG_HANDLE) 0x000003F1)
+#define BCRYPT_HMAC_SHA3_512_ALG_HANDLE ((BCRYPT_ALG_HANDLE) 0x00000401)
+#define BCRYPT_CSHAKE128_ALG_HANDLE ((BCRYPT_ALG_HANDLE) 0x00000411)
+#define BCRYPT_CSHAKE256_ALG_HANDLE ((BCRYPT_ALG_HANDLE) 0x00000421)
+#define BCRYPT_KMAC128_ALG_HANDLE ((BCRYPT_ALG_HANDLE) 0x00000431)
+#define BCRYPT_KMAC256_ALG_HANDLE ((BCRYPT_ALG_HANDLE) 0x00000441)
+#endif
+
+#if NTDDI_VERSION >= NTDDI_WIN11_GA
+#define BCRYPT_AES_KWP_ALG_HANDLE ((BCRYPT_ALG_HANDLE) 0x00000451)
+#endif
+
 #define BCRYPT_ALG_HANDLE_HMAC_FLAG 0x00000008
 #define BCRYPT_CAPI_AES_FLAG 0x00000010
 #define BCRYPT_HASH_REUSABLE_FLAG 0x00000020
@@ -442,6 +547,36 @@ typedef PVOID BCRYPT_HANDLE;
     ULONG cbKey;
   } BCRYPT_ECCKEY_BLOB,*PBCRYPT_ECCKEY_BLOB;
 
+#if NTDDI_VERSION >= NTDDI_WINTHRESHOLD
+  typedef struct _SSL_ECCKEY_BLOB {
+    ULONG dwCurveType;
+    ULONG cbKey;
+  } SSL_ECCKEY_BLOB, *PSSL_ECCKEY_BLOB;
+
+#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;
+
+  typedef struct _BCRYPT_ECCFULLKEY_BLOB {
+    ULONG dwMagic;
+    ULONG dwVersion;
+    ECC_CURVE_TYPE_ENUM dwCurveType;
+    ECC_CURVE_ALG_ID_ENUM dwCurveGenerationAlgId;
+    ULONG cbFieldLength;
+    ULONG cbSubgroupOrder;
+    ULONG cbCofactor;
+    ULONG cbSeed;
+  } BCRYPT_ECCFULLKEY_BLOB, *PBCRYPT_ECCFULLKEY_BLOB;
+#endif /* NTDDI_VERSION >= NTDDI_WINTHRESHOLD */
+
   typedef struct _BCRYPT_DH_KEY_BLOB {
     ULONG dwMagic;
     ULONG cbKey;
-- 
2.45.2

_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to