[PATCH] bcrypt/tests: Add more BCryptGetFipsAlgorithmMode tests

Bruno Jesus 00cpxxx at gmail.com
Thu Sep 8 06:53:53 CDT 2016


From: Kai Blaschke <kai.blaschke at kb-dev.net>
Signed-off-by: Bruno Jesus <00cpxxx at gmail.com>
---
 dlls/bcrypt/tests/Makefile.in |  2 +-
 dlls/bcrypt/tests/bcrypt.c    | 49 ++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 49 insertions(+), 2 deletions(-)

diff --git a/dlls/bcrypt/tests/Makefile.in b/dlls/bcrypt/tests/Makefile.in
index 0f130b1..1bf7d2c 100644
--- a/dlls/bcrypt/tests/Makefile.in
+++ b/dlls/bcrypt/tests/Makefile.in
@@ -1,5 +1,5 @@
 TESTDLL  = bcrypt.dll
-IMPORTS  = bcrypt user32
+IMPORTS  = bcrypt user32 advapi32
 
 C_SRCS = \
 	bcrypt.c
diff --git a/dlls/bcrypt/tests/bcrypt.c b/dlls/bcrypt/tests/bcrypt.c
index 9bd2cea..d16735c 100644
--- a/dlls/bcrypt/tests/bcrypt.c
+++ b/dlls/bcrypt/tests/bcrypt.c
@@ -61,14 +61,61 @@ static void test_BCryptGenRandom(void)
 
 static void test_BCryptGetFipsAlgorithmMode(void)
 {
-    NTSTATUS ret;
+    static const WCHAR policyKeyVistaW[] = {
+        'S','y','s','t','e','m','\\',
+        'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\',
+        'C','o','n','t','r','o','l','\\',
+        'L','s','a','\\',
+        'F','I','P','S','A','l','g','o','r','i','t','h','m','P','o','l','i','c','y',0};
+    static const WCHAR policyValueVistaW[] = {'E','n','a','b','l','e','d',0};
+    static const WCHAR policyKeyXPW[] = {
+        'S','y','s','t','e','m','\\',
+        'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\',
+        'C','o','n','t','r','o','l','\\',
+        'L','s','a',0};
+    static const WCHAR policyValueXPW[] = {
+        'F','I','P','S','A','l','g','o','r','i','t','h','m','P','o','l','i','c','y',0};
+    HKEY hkey;
+    BOOLEAN expected;
+    BOOLEAN result;
     BOOLEAN enabled;
+    DWORD value, count = sizeof(value);
+    NTSTATUS ret;
 
     ret = BCryptGetFipsAlgorithmMode(&enabled);
     ok(ret == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got 0x%x\n", ret);
 
     ret = BCryptGetFipsAlgorithmMode(NULL);
     ok(ret == STATUS_INVALID_PARAMETER, "Expected STATUS_INVALID_PARAMETER, got 0x%x\n", ret);
+
+    expected = FALSE;
+
+    if (!RegOpenKeyW(HKEY_LOCAL_MACHINE, policyKeyVistaW, &hkey))
+    {
+        if (!RegGetValueW(HKEY_LOCAL_MACHINE, policyKeyVistaW, policyValueVistaW,
+            RRF_RT_REG_DWORD, NULL, &enabled, &count))
+        {
+            expected = !!enabled;
+        }
+        RegCloseKey(hkey);
+    }
+    else if (!RegOpenKeyW(HKEY_LOCAL_MACHINE, policyKeyXPW, &hkey))
+    {
+        if (!RegGetValueW(HKEY_LOCAL_MACHINE, policyKeyXPW, policyValueXPW,
+            RRF_RT_REG_DWORD, NULL, &enabled, &count))
+        {
+            expected = !!enabled;
+        }
+        RegCloseKey(hkey);
+    }
+
+    ret = BCryptGetFipsAlgorithmMode(&result);
+    ok(!ret, "expected status STATUS_SUCCESS(0), got 0x%08X\n", ret);
+    ok(result == expected, "expected result %d, got %d\n", expected, result);
+
+    ret = BCryptGetFipsAlgorithmMode(NULL);
+    ok(ret == STATUS_INVALID_PARAMETER,
+       "expected status STATUS_INVALID_PARAMETER(0xC000000D), got 0x%08X\n", ret);
 }
 
 static void format_hash(const UCHAR *bytes, ULONG size, char *buf)
-- 
2.9.3




More information about the wine-patches mailing list