[CRYPT32_WINETEST] Sync with Wine Staging 1.9.4. CORE-10912
[reactos.git] / rostests / winetests / crypt32 / store.c
index d0c51df..b5b35d5 100644 (file)
@@ -317,11 +317,7 @@ static void compareStore(HCERTSTORE store, LPCSTR name, const BYTE *pb,
     ret = CertSaveStore(store, X509_ASN_ENCODING, CERT_STORE_SAVE_AS_STORE,
      CERT_STORE_SAVE_TO_MEMORY, &blob, 0);
     ok(ret, "CertSaveStore failed: %08x\n", GetLastError());
-    if (todo)
-        todo_wine
-        ok(blob.cbData == cb, "%s: expected size %d, got %d\n", name, cb,
-         blob.cbData);
-    else
+    todo_wine_if (todo)
         ok(blob.cbData == cb, "%s: expected size %d, got %d\n", name, cb,
          blob.cbData);
     blob.pbData = HeapAlloc(GetProcessHeap(), 0, blob.cbData);
@@ -330,10 +326,7 @@ static void compareStore(HCERTSTORE store, LPCSTR name, const BYTE *pb,
         ret = CertSaveStore(store, X509_ASN_ENCODING, CERT_STORE_SAVE_AS_STORE,
          CERT_STORE_SAVE_TO_MEMORY, &blob, 0);
         ok(ret, "CertSaveStore failed: %08x\n", GetLastError());
-        if (todo)
-            todo_wine
-            ok(!memcmp(pb, blob.pbData, cb), "%s: unexpected value\n", name);
-        else
+        todo_wine_if (todo)
             ok(!memcmp(pb, blob.pbData, cb), "%s: unexpected value\n", name);
         HeapFree(GetProcessHeap(), 0, blob.pbData);
     }
@@ -2203,6 +2196,35 @@ static const BYTE serializedStoreWithCertAndHash[] = {
 0xff,0x04,0x08,0x30,0x06,0x01,0x01,0xff,0x02,0x01,0x01,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
 
+static void delete_test_key(void)
+{
+    HKEY root_key, test_key;
+    static const WCHAR SysCertW[] = {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',
+        'S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s',0};
+    static const WCHAR WineTestW[] = {'W','i','n','e','T','e','s','t',0};
+    WCHAR subkey_name[32];
+    DWORD num_subkeys, subkey_name_len;
+    int idx;
+
+    if (RegOpenKeyExW(HKEY_CURRENT_USER, SysCertW, 0, KEY_READ, &root_key))
+        return;
+    if (RegOpenKeyExW(root_key, WineTestW, 0, KEY_READ, &test_key))
+    {
+        RegCloseKey(root_key);
+        return;
+    }
+    RegQueryInfoKeyW(test_key, NULL, NULL, NULL, &num_subkeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+    for (idx = num_subkeys; idx-- > 0;)
+    {
+        subkey_name_len = sizeof(subkey_name)/sizeof(WCHAR);
+        RegEnumKeyExW(test_key, idx, subkey_name, &subkey_name_len, NULL, NULL, NULL, NULL);
+        RegDeleteKeyW(test_key, subkey_name);
+    }
+    RegCloseKey(test_key);
+    RegDeleteKeyW(root_key, WineTestW);
+    RegCloseKey(root_key);
+}
+
 static void testAddCertificateLink(void)
 {
     BOOL ret;
@@ -2499,6 +2521,8 @@ static void testAddCertificateLink(void)
 
     CertFreeCertificateContext(source);
     CertCloseStore(store1, 0);
+
+    delete_test_key();
 }
 
 static DWORD countCertsInStore(HCERTSTORE store)