[BCRYPT] Add ECDSA P256 to known algorithms 4233/head
authorThomas Csovcsity <thc.fr13nd@gmail.com>
Thu, 30 Dec 2021 20:23:49 +0000 (21:23 +0100)
committerStanislav Motylkov <x86corez@gmail.com>
Sat, 1 Jan 2022 12:18:06 +0000 (15:18 +0300)
Add missing structs and handler in BCryptOpenAlgorithmProvider().
Fixes CORE-16741 and similar problems.

dll/win32/bcrypt/bcrypt_main.c

index 1452313..4b80ac0 100644 (file)
@@ -266,7 +266,8 @@ enum alg_id
     ALG_ID_SHA1,
     ALG_ID_SHA256,
     ALG_ID_SHA384,
-    ALG_ID_SHA512
+    ALG_ID_SHA512,
+    ALG_ID_ECDSA_P256,
 };
 
 static const struct {
@@ -278,7 +279,8 @@ static const struct {
     /* ALG_ID_SHA1   */ { 20, BCRYPT_SHA1_ALGORITHM },
     /* ALG_ID_SHA256 */ { 32, BCRYPT_SHA256_ALGORITHM },
     /* ALG_ID_SHA384 */ { 48, BCRYPT_SHA384_ALGORITHM },
-    /* ALG_ID_SHA512 */ { 64, BCRYPT_SHA512_ALGORITHM }
+    /* ALG_ID_SHA512 */ { 64, BCRYPT_SHA512_ALGORITHM },
+    /* ALG_ID_ECDSA_P256 */ { 0, BCRYPT_ECDSA_P256_ALGORITHM },
 };
 
 struct algorithm
@@ -351,6 +353,7 @@ NTSTATUS WINAPI BCryptOpenAlgorithmProvider( BCRYPT_ALG_HANDLE *handle, LPCWSTR
     else if (!strcmpW( id, BCRYPT_SHA256_ALGORITHM )) alg_id = ALG_ID_SHA256;
     else if (!strcmpW( id, BCRYPT_SHA384_ALGORITHM )) alg_id = ALG_ID_SHA384;
     else if (!strcmpW( id, BCRYPT_SHA512_ALGORITHM )) alg_id = ALG_ID_SHA512;
+    else if (!strcmpW( id, BCRYPT_ECDSA_P256_ALGORITHM )) alg_id = ALG_ID_ECDSA_P256;
     else
     {
         FIXME( "algorithm %s not supported\n", debugstr_w(id) );