Dmitry Timoshkov : crypt32/tests: Add more tests for I_CryptGetDefaultCryptProv.
Alexandre Julliard
julliard at winehq.org
Tue Nov 6 15:10:05 CST 2018
Module: wine
Branch: master
Commit: ac758a2a805c61da7ac8505135f6cb4ce59ace8a
URL: https://source.winehq.org/git/wine.git/?a=commit;h=ac758a2a805c61da7ac8505135f6cb4ce59ace8a
Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date: Tue Nov 6 13:40:53 2018 +0300
crypt32/tests: Add more tests for I_CryptGetDefaultCryptProv.
Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/crypt32/tests/main.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/dlls/crypt32/tests/main.c b/dlls/crypt32/tests/main.c
index 11beff1..a490c51 100644
--- a/dlls/crypt32/tests/main.c
+++ b/dlls/crypt32/tests/main.c
@@ -305,8 +305,32 @@ static void test_readTrustedPublisherDWORD(void)
static void test_getDefaultCryptProv(void)
{
+#define ALG(id) id, #id
+ static const struct
+ {
+ ALG_ID algid;
+ const char *name;
+ BOOL optional;
+ } test_prov[] =
+ {
+ { ALG(CALG_MD2), TRUE },
+ { ALG(CALG_MD4), TRUE },
+ { ALG(CALG_MD5), TRUE },
+ { ALG(CALG_SHA), TRUE },
+ { ALG(CALG_RSA_SIGN) },
+ { ALG(CALG_DSS_SIGN) },
+ { ALG(CALG_NO_SIGN) },
+ { ALG(CALG_ECDSA), TRUE },
+ { ALG(CALG_ECDH), TRUE },
+ { ALG(CALG_RSA_KEYX) },
+ { ALG(CALG_RSA_KEYX) },
+ };
+#undef ALG
HCRYPTPROV (WINAPI *pI_CryptGetDefaultCryptProv)(DWORD w);
HCRYPTPROV prov;
+ BOOL ret;
+ DWORD size, i;
+ LPSTR name;
pI_CryptGetDefaultCryptProv = (void *)GetProcAddress(hCrypt, "I_CryptGetDefaultCryptProv");
if (!pI_CryptGetDefaultCryptProv) return;
@@ -323,6 +347,34 @@ static void test_getDefaultCryptProv(void)
prov = pI_CryptGetDefaultCryptProv(0);
ok(prov != 0, "I_CryptGetDefaultCryptProv failed: %08x\n", GetLastError());
CryptReleaseContext(prov, 0);
+
+ for (i = 0; i < ARRAY_SIZE(test_prov); i++)
+ {
+ if (winetest_debug > 1)
+ trace("%u: algid %#x (%s): class %u, type %u, sid %u\n", i, test_prov[i].algid, test_prov[i].name,
+ GET_ALG_CLASS(test_prov[i].algid) >> 13, GET_ALG_TYPE(test_prov[i].algid) >> 9, GET_ALG_SID(test_prov[i].algid));
+
+ prov = pI_CryptGetDefaultCryptProv(test_prov[i].algid);
+ if (!prov)
+ {
+todo_wine_if(!test_prov[i].optional)
+ ok(test_prov[i].optional, "%u: I_CryptGetDefaultCryptProv(%#x) failed\n", i, test_prov[i].algid);
+ continue;
+ }
+
+ ret = CryptGetProvParam(prov, PP_NAME, NULL, &size, 0);
+ if (ret) /* some provders don't support PP_NAME */
+ {
+ name = CryptMemAlloc(size);
+ ret = CryptGetProvParam(prov, PP_NAME, (BYTE *)name, &size, 0);
+ ok(ret, "%u: CryptGetProvParam failed %#x\n", i, GetLastError());
+ if (winetest_debug > 1)
+ trace("%u: algid %#x, name %s\n", i, test_prov[i].algid, name);
+ CryptMemFree(name);
+ }
+
+ CryptReleaseContext(prov, 0);
+ }
}
static void test_CryptInstallOssGlobal(void)
More information about the wine-cvs
mailing list