From c69d47fa49fdd4a14d7130d6d0e5bf8beac8a5a9 Mon Sep 17 00:00:00 2001 From: Francois Gouget Date: Tue, 20 Nov 2007 13:48:48 +0100 Subject: [PATCH] crypt32/tests: Get the tests running on Windows 98. --- dlls/crypt32/tests/cert.c | 109 +++++--- dlls/crypt32/tests/chain.c | 111 ++++++--- dlls/crypt32/tests/crl.c | 50 ++-- dlls/crypt32/tests/encode.c | 520 ++++++++++++++++++++------------------- dlls/crypt32/tests/oid.c | 19 +- dlls/crypt32/tests/protectdata.c | 38 ++- dlls/crypt32/tests/store.c | 258 ++++++++++++------- 7 files changed, 653 insertions(+), 452 deletions(-) diff --git a/dlls/crypt32/tests/cert.c b/dlls/crypt32/tests/cert.c index 8e4bc5d892e..cb3de1cc145 100644 --- a/dlls/crypt32/tests/cert.c +++ b/dlls/crypt32/tests/cert.c @@ -29,6 +29,11 @@ #include "wine/test.h" +static BOOL (WINAPI *pCertAddStoreToCollection)(HCERTSTORE,HCERTSTORE,DWORD,DWORD); +static PCCERT_CONTEXT (WINAPI *pCertCreateSelfSignCertificate)(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE,PCERT_NAME_BLOB,DWORD,PCRYPT_KEY_PROV_INFO,PCRYPT_ALGORITHM_IDENTIFIER,PSYSTEMTIME,PSYSTEMTIME,PCERT_EXTENSIONS); +static BOOL (WINAPI *pCertGetValidUsages)(DWORD,PCCERT_CONTEXT*,int*,LPSTR*,DWORD*); +static BOOL (WINAPI *pCryptAcquireCertificatePrivateKey)(PCCERT_CONTEXT,DWORD,void*,HCRYPTPROV_OR_NCRYPT_KEY_HANDLE*,DWORD*,BOOL*); +static BOOL (WINAPI *pCryptEncodeObjectEx)(DWORD,LPCSTR,const void*,DWORD,PCRYPT_ENCODE_PARA,void*,DWORD*); static BOOL (WINAPI * pCryptVerifyCertificateSignatureEx) (HCRYPTPROV, DWORD, DWORD, void *, DWORD, void *, DWORD, void *); @@ -45,6 +50,11 @@ static void init_function_pointers(void) if(!p ## func) \ trace("GetProcAddress(%s) failed\n", #func); + GET_PROC(hCrypt32, CertAddStoreToCollection) + GET_PROC(hCrypt32, CertCreateSelfSignCertificate) + GET_PROC(hCrypt32, CertGetValidUsages) + GET_PROC(hCrypt32, CryptAcquireCertificatePrivateKey) + GET_PROC(hCrypt32, CryptEncodeObjectEx) GET_PROC(hCrypt32, CryptVerifyCertificateSignatureEx) GET_PROC(hAdvapi32, CryptAcquireContextW) @@ -256,10 +266,10 @@ static void testAddCert(void) collection = CertOpenStore(CERT_STORE_PROV_COLLECTION, 0, 0, CERT_STORE_CREATE_NEW_FLAG, NULL); ok(collection != NULL, "CertOpenStore failed: %08x\n", GetLastError()); - if (collection) + if (collection && pCertAddStoreToCollection) { /* Add store to the collection, but disable updates */ - CertAddStoreToCollection(collection, store, 0, 0); + pCertAddStoreToCollection(collection, store, 0, 0); context = CertCreateCertificateContext(X509_ASN_ENCODING, bigCert2, sizeof(bigCert2)); @@ -1587,6 +1597,11 @@ static void testVerifyCertSig(HCRYPTPROV csp, const CRYPT_DATA_BLOB *toBeSigned, skip("no CryptVerifyCertificateSignatureEx support\n"); return; } + if (!pCryptEncodeObjectEx) + { + skip("no CryptEncodeObjectEx support\n"); + return; + } ret = pCryptVerifyCertificateSignatureEx(0, 0, 0, NULL, 0, NULL, 0, NULL); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", GetLastError()); @@ -1608,7 +1623,7 @@ static void testVerifyCertSig(HCRYPTPROV csp, const CRYPT_DATA_BLOB *toBeSigned, info.Signature.cbData = sigLen; info.Signature.pbData = (BYTE *)sig; info.Signature.cUnusedBits = 0; - ret = CryptEncodeObjectEx(X509_ASN_ENCODING, X509_CERT, &info, + ret = pCryptEncodeObjectEx(X509_ASN_ENCODING, X509_CERT, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&cert, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (cert) @@ -1791,13 +1806,19 @@ static void testCreateSelfSignCert(void) HCRYPTKEY key; CRYPT_KEY_PROV_INFO info; + if (!pCertCreateSelfSignCertificate) + { + skip("CertCreateSelfSignCertificate() is not available\n"); + return; + } + /* This crashes: - context = CertCreateSelfSignCertificate(0, NULL, 0, NULL, NULL, NULL, NULL, + context = pCertCreateSelfSignCertificate(0, NULL, 0, NULL, NULL, NULL, NULL, NULL); * Calling this with no first parameter creates a new key container, which * lasts beyond the test, so I don't test that. Nb: the generated key * name is a GUID. - context = CertCreateSelfSignCertificate(0, &name, 0, NULL, NULL, NULL, NULL, + context = pCertCreateSelfSignCertificate(0, &name, 0, NULL, NULL, NULL, NULL, NULL); */ @@ -1808,7 +1829,7 @@ static void testCreateSelfSignCert(void) CRYPT_NEWKEYSET); ok(ret, "CryptAcquireContext failed: %08x\n", GetLastError()); - context = CertCreateSelfSignCertificate(csp, &name, 0, NULL, NULL, NULL, + context = pCertCreateSelfSignCertificate(csp, &name, 0, NULL, NULL, NULL, NULL, NULL); ok(!context && GetLastError() == NTE_NO_KEY, "Expected NTE_NO_KEY, got %08x\n", GetLastError()); @@ -1816,7 +1837,7 @@ static void testCreateSelfSignCert(void) ok(ret, "CryptGenKey failed: %08x\n", GetLastError()); if (ret) { - context = CertCreateSelfSignCertificate(csp, &name, 0, NULL, NULL, NULL, + context = pCertCreateSelfSignCertificate(csp, &name, 0, NULL, NULL, NULL, NULL, NULL); ok(context != NULL, "CertCreateSelfSignCertificate failed: %08x\n", GetLastError()); @@ -1868,7 +1889,7 @@ static void testCreateSelfSignCert(void) info.dwKeySpec = AT_KEYEXCHANGE; info.pwszProvName = (LPWSTR) MS_DEF_PROV_W; info.pwszContainerName = cspNameW; - context = CertCreateSelfSignCertificate(0, &name, 0, &info, NULL, NULL, + context = pCertCreateSelfSignCertificate(0, &name, 0, &info, NULL, NULL, NULL, NULL); ok(context != NULL, "CertCreateSelfSignCertificate failed: %08x\n", GetLastError()); @@ -2220,14 +2241,20 @@ static void testGetValidUsages(void) LPSTR *oids = NULL; PCCERT_CONTEXT contexts[3]; + if (!pCertGetValidUsages) + { + skip("CertGetValidUsages() is not available\n"); + return; + } + /* Crash - ret = CertGetValidUsages(0, NULL, NULL, NULL, NULL); - ret = CertGetValidUsages(0, NULL, NULL, NULL, &size); + ret = pCertGetValidUsages(0, NULL, NULL, NULL, NULL); + ret = pCertGetValidUsages(0, NULL, NULL, NULL, &size); */ contexts[0] = NULL; numOIDs = size = 0xdeadbeef; SetLastError(0xdeadbeef); - ret = CertGetValidUsages(1, &contexts[0], &numOIDs, NULL, &size); + ret = pCertGetValidUsages(1, &contexts[0], &numOIDs, NULL, &size); ok(ret, "CertGetValidUsages failed: %d\n", GetLastError()); ok(numOIDs == -1, "Expected -1, got %d\n", numOIDs); ok(size == 0, "Expected size 0, got %d\n", size); @@ -2238,16 +2265,16 @@ static void testGetValidUsages(void) contexts[2] = CertCreateCertificateContext(X509_ASN_ENCODING, cert2WithUsage, sizeof(cert2WithUsage)); numOIDs = size = 0xdeadbeef; - ret = CertGetValidUsages(0, NULL, &numOIDs, NULL, &size); + ret = pCertGetValidUsages(0, NULL, &numOIDs, NULL, &size); ok(ret, "CertGetValidUsages failed: %08x\n", GetLastError()); ok(numOIDs == -1, "Expected -1, got %d\n", numOIDs); ok(size == 0, "Expected size 0, got %d\n", size); numOIDs = size = 0xdeadbeef; - ret = CertGetValidUsages(1, contexts, &numOIDs, NULL, &size); + ret = pCertGetValidUsages(1, contexts, &numOIDs, NULL, &size); ok(ret, "CertGetValidUsages failed: %08x\n", GetLastError()); ok(numOIDs == -1, "Expected -1, got %d\n", numOIDs); ok(size == 0, "Expected size 0, got %d\n", size); - ret = CertGetValidUsages(1, &contexts[1], &numOIDs, NULL, &size); + ret = pCertGetValidUsages(1, &contexts[1], &numOIDs, NULL, &size); ok(ret, "CertGetValidUsages failed: %08x\n", GetLastError()); ok(numOIDs == 3, "Expected 3, got %d\n", numOIDs); ok(size, "Expected non-zero size\n"); @@ -2258,10 +2285,10 @@ static void testGetValidUsages(void) DWORD smallSize = 1; SetLastError(0xdeadbeef); - ret = CertGetValidUsages(1, &contexts[1], &numOIDs, oids, &smallSize); + ret = pCertGetValidUsages(1, &contexts[1], &numOIDs, oids, &smallSize); ok(!ret && GetLastError() == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", GetLastError()); - ret = CertGetValidUsages(1, &contexts[1], &numOIDs, oids, &size); + ret = pCertGetValidUsages(1, &contexts[1], &numOIDs, oids, &size); ok(ret, "CertGetValidUsages failed: %08x\n", GetLastError()); for (i = 0; i < numOIDs; i++) ok(!lstrcmpA(oids[i], expectedOIDs[i]), "unexpected OID %s\n", @@ -2270,11 +2297,11 @@ static void testGetValidUsages(void) } numOIDs = size = 0xdeadbeef; /* Oddly enough, this crashes when the number of contexts is not 1: - ret = CertGetValidUsages(2, contexts, &numOIDs, NULL, &size); + ret = pCertGetValidUsages(2, contexts, &numOIDs, NULL, &size); * but setting size to 0 allows it to succeed: */ size = 0; - ret = CertGetValidUsages(2, contexts, &numOIDs, NULL, &size); + ret = pCertGetValidUsages(2, contexts, &numOIDs, NULL, &size); ok(ret, "CertGetValidUsages failed: %08x\n", GetLastError()); ok(numOIDs == 3, "Expected 3, got %d\n", numOIDs); ok(size, "Expected non-zero size\n"); @@ -2283,7 +2310,7 @@ static void testGetValidUsages(void) { int i; - ret = CertGetValidUsages(1, &contexts[1], &numOIDs, oids, &size); + ret = pCertGetValidUsages(1, &contexts[1], &numOIDs, oids, &size); ok(ret, "CertGetValidUsages failed: %08x\n", GetLastError()); for (i = 0; i < numOIDs; i++) ok(!lstrcmpA(oids[i], expectedOIDs[i]), "unexpected OID %s\n", @@ -2292,7 +2319,7 @@ static void testGetValidUsages(void) } numOIDs = 0xdeadbeef; size = 0; - ret = CertGetValidUsages(1, &contexts[2], &numOIDs, NULL, &size); + ret = pCertGetValidUsages(1, &contexts[2], &numOIDs, NULL, &size); ok(ret, "CertGetValidUsages failed: %08x\n", GetLastError()); ok(numOIDs == 2, "Expected 2, got %d\n", numOIDs); ok(size, "Expected non-zero size\n"); @@ -2301,7 +2328,7 @@ static void testGetValidUsages(void) { int i; - ret = CertGetValidUsages(1, &contexts[2], &numOIDs, oids, &size); + ret = pCertGetValidUsages(1, &contexts[2], &numOIDs, oids, &size); ok(ret, "CertGetValidUsages failed: %08x\n", GetLastError()); for (i = 0; i < numOIDs; i++) ok(!lstrcmpA(oids[i], expectedOIDs2[i]), "unexpected OID %s\n", @@ -2310,7 +2337,7 @@ static void testGetValidUsages(void) } numOIDs = 0xdeadbeef; size = 0; - ret = CertGetValidUsages(3, contexts, &numOIDs, NULL, &size); + ret = pCertGetValidUsages(3, contexts, &numOIDs, NULL, &size); ok(ret, "CertGetValidUsages failed: %08x\n", GetLastError()); ok(numOIDs == 2, "Expected 2, got %d\n", numOIDs); ok(size, "Expected non-zero size\n"); @@ -2319,7 +2346,7 @@ static void testGetValidUsages(void) { int i; - ret = CertGetValidUsages(3, contexts, &numOIDs, oids, &size); + ret = pCertGetValidUsages(3, contexts, &numOIDs, oids, &size); ok(ret, "CertGetValidUsages failed: %08x\n", GetLastError()); for (i = 0; i < numOIDs; i++) ok(!lstrcmpA(oids[i], expectedOIDs2[i]), "unexpected OID %s\n", @@ -2679,6 +2706,12 @@ static void testAcquireCertPrivateKey(void) HCRYPTKEY key; WCHAR ms_def_prov_w[MAX_PATH]; + if (!pCryptAcquireCertificatePrivateKey) + { + skip("CryptAcquireCertificatePrivateKey() is not available\n"); + return; + } + lstrcpyW(ms_def_prov_w, MS_DEF_PROV_W); keyProvInfo.pwszContainerName = cspNameW; @@ -2696,28 +2729,28 @@ static void testAcquireCertPrivateKey(void) sizeof(selfSignedCert)); /* Crash - ret = CryptAcquireCertificatePrivateKey(NULL, 0, NULL, NULL, NULL, NULL); - ret = CryptAcquireCertificatePrivateKey(NULL, 0, NULL, NULL, NULL, + ret = pCryptAcquireCertificatePrivateKey(NULL, 0, NULL, NULL, NULL, NULL); + ret = pCryptAcquireCertificatePrivateKey(NULL, 0, NULL, NULL, NULL, &callerFree); - ret = CryptAcquireCertificatePrivateKey(NULL, 0, NULL, NULL, &keySpec, + ret = pCryptAcquireCertificatePrivateKey(NULL, 0, NULL, NULL, &keySpec, NULL); - ret = CryptAcquireCertificatePrivateKey(NULL, 0, NULL, &csp, NULL, NULL); - ret = CryptAcquireCertificatePrivateKey(NULL, 0, NULL, &csp, &keySpec, + ret = pCryptAcquireCertificatePrivateKey(NULL, 0, NULL, &csp, NULL, NULL); + ret = pCryptAcquireCertificatePrivateKey(NULL, 0, NULL, &csp, &keySpec, &callerFree); - ret = CryptAcquireCertificatePrivateKey(cert, 0, NULL, NULL, NULL, NULL); + ret = pCryptAcquireCertificatePrivateKey(cert, 0, NULL, NULL, NULL, NULL); */ /* Missing private key */ - ret = CryptAcquireCertificatePrivateKey(cert, 0, NULL, &csp, NULL, NULL); + ret = pCryptAcquireCertificatePrivateKey(cert, 0, NULL, &csp, NULL, NULL); ok(!ret && GetLastError() == CRYPT_E_NO_KEY_PROPERTY, "Expected CRYPT_E_NO_KEY_PROPERTY, got %08x\n", GetLastError()); - ret = CryptAcquireCertificatePrivateKey(cert, 0, NULL, &csp, &keySpec, + ret = pCryptAcquireCertificatePrivateKey(cert, 0, NULL, &csp, &keySpec, &callerFree); ok(!ret && GetLastError() == CRYPT_E_NO_KEY_PROPERTY, "Expected CRYPT_E_NO_KEY_PROPERTY, got %08x\n", GetLastError()); CertSetCertificateContextProperty(cert, CERT_KEY_PROV_INFO_PROP_ID, 0, &keyProvInfo); - ret = CryptAcquireCertificatePrivateKey(cert, 0, NULL, &csp, &keySpec, + ret = pCryptAcquireCertificatePrivateKey(cert, 0, NULL, &csp, &keySpec, &callerFree); ok(!ret && GetLastError() == CRYPT_E_NO_KEY_PROPERTY, "Expected CRYPT_E_NO_KEY_PROPERTY, got %08x\n", GetLastError()); @@ -2733,20 +2766,20 @@ static void testAcquireCertPrivateKey(void) CERT_KEY_CONTEXT keyContext; /* Don't cache provider */ - ret = CryptAcquireCertificatePrivateKey(cert, 0, NULL, &certCSP, + ret = pCryptAcquireCertificatePrivateKey(cert, 0, NULL, &certCSP, &keySpec, &callerFree); ok(ret, "CryptAcquireCertificatePrivateKey failed: %08x\n", GetLastError()); ok(callerFree, "Expected callerFree to be TRUE\n"); CryptReleaseContext(certCSP, 0); - ret = CryptAcquireCertificatePrivateKey(cert, 0, NULL, &certCSP, + ret = pCryptAcquireCertificatePrivateKey(cert, 0, NULL, &certCSP, NULL, NULL); ok(ret, "CryptAcquireCertificatePrivateKey failed: %08x\n", GetLastError()); CryptReleaseContext(certCSP, 0); /* Use the key prov info's caching (there shouldn't be any) */ - ret = CryptAcquireCertificatePrivateKey(cert, + ret = pCryptAcquireCertificatePrivateKey(cert, CRYPT_ACQUIRE_USE_PROV_INFO_FLAG, NULL, &certCSP, &keySpec, &callerFree); ok(ret, "CryptAcquireCertificatePrivateKey failed: %08x\n", @@ -2755,7 +2788,7 @@ static void testAcquireCertPrivateKey(void) CryptReleaseContext(certCSP, 0); /* Cache it (and check that it's cached) */ - ret = CryptAcquireCertificatePrivateKey(cert, + ret = pCryptAcquireCertificatePrivateKey(cert, CRYPT_ACQUIRE_CACHE_FLAG, NULL, &certCSP, &keySpec, &callerFree); ok(ret, "CryptAcquireCertificatePrivateKey failed: %08x\n", GetLastError()); @@ -2775,7 +2808,7 @@ static void testAcquireCertPrivateKey(void) CertSetCertificateContextProperty(cert, CERT_KEY_PROV_INFO_PROP_ID, 0, &keyProvInfo); /* Now use the key prov info's caching */ - ret = CryptAcquireCertificatePrivateKey(cert, + ret = pCryptAcquireCertificatePrivateKey(cert, CRYPT_ACQUIRE_USE_PROV_INFO_FLAG, NULL, &certCSP, &keySpec, &callerFree); ok(ret, "CryptAcquireCertificatePrivateKey failed: %08x\n", @@ -2808,7 +2841,7 @@ static void testAcquireCertPrivateKey(void) ok(size == sizeof(exportedPublicKeyBlob), "Unexpected size %d\n", size); ok(!memcmp(buf, exportedPublicKeyBlob, size), "Unexpected value\n"); - ret = CryptEncodeObjectEx(X509_ASN_ENCODING, RSA_CSP_PUBLICKEYBLOB, + ret = pCryptEncodeObjectEx(X509_ASN_ENCODING, RSA_CSP_PUBLICKEYBLOB, buf, CRYPT_ENCODE_ALLOC_FLAG, NULL, &encodedKey, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (ret) diff --git a/dlls/crypt32/tests/chain.c b/dlls/crypt32/tests/chain.c index 0257c3ed1c9..91cae474429 100644 --- a/dlls/crypt32/tests/chain.c +++ b/dlls/crypt32/tests/chain.c @@ -52,6 +52,13 @@ static const BYTE selfSignedCert[] = { 0x0a, 0x8c, 0xb4, 0x5c, 0x34, 0x78, 0xe0, 0x3c, 0x9c, 0xe9, 0xf3, 0x30, 0x9f, 0xa8, 0x76, 0x57, 0x92, 0x36 }; +static BOOL (WINAPI *pCertCreateCertificateChainEngine)(PCERT_CHAIN_ENGINE_CONFIG,HCERTCHAINENGINE*); +static BOOL (WINAPI *pCertGetCertificateChain)(HCERTCHAINENGINE,PCCERT_CONTEXT,LPFILETIME,HCERTSTORE,PCERT_CHAIN_PARA,DWORD,LPVOID,PCCERT_CHAIN_CONTEXT*); +static VOID (WINAPI *pCertFreeCertificateChain)(PCCERT_CHAIN_CONTEXT); +static VOID (WINAPI *pCertFreeCertificateChainEngine)(HCERTCHAINENGINE); +static BOOL (WINAPI *pCertVerifyCertificateChainPolicy)(LPCSTR,PCCERT_CHAIN_CONTEXT,PCERT_CHAIN_POLICY_PARA,PCERT_CHAIN_POLICY_STATUS); + + static void testCreateCertChainEngine(void) { BOOL ret; @@ -59,43 +66,49 @@ static void testCreateCertChainEngine(void) HCERTCHAINENGINE engine; HCERTSTORE store; + if (!pCertCreateCertificateChainEngine || !pCertFreeCertificateChainEngine) + { + skip("Cert*CertificateChainEngine() functions are not available\n"); + return; + } + /* Crash - ret = CertCreateCertificateChainEngine(NULL, NULL); - ret = CertCreateCertificateChainEngine(NULL, &engine); + ret = pCertCreateCertificateChainEngine(NULL, NULL); + ret = pCertCreateCertificateChainEngine(NULL, &engine); */ - ret = CertCreateCertificateChainEngine(&config, NULL); + ret = pCertCreateCertificateChainEngine(&config, NULL); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", GetLastError()); - ret = CertCreateCertificateChainEngine(&config, &engine); + ret = pCertCreateCertificateChainEngine(&config, &engine); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", GetLastError()); /* Crashes config.cbSize = sizeof(config); - ret = CertCreateCertificateChainEngine(&config, NULL); + ret = pCertCreateCertificateChainEngine(&config, NULL); */ config.cbSize = sizeof(config); - ret = CertCreateCertificateChainEngine(&config, &engine); + ret = pCertCreateCertificateChainEngine(&config, &engine); ok(ret, "CertCreateCertificateChainEngine failed: %08x\n", GetLastError()); - CertFreeCertificateChainEngine(engine); + pCertFreeCertificateChainEngine(engine); config.dwFlags = 0xff000000; - ret = CertCreateCertificateChainEngine(&config, &engine); + ret = pCertCreateCertificateChainEngine(&config, &engine); ok(ret, "CertCreateCertificateChainEngine failed: %08x\n", GetLastError()); - CertFreeCertificateChainEngine(engine); + pCertFreeCertificateChainEngine(engine); /* Creating a cert with no root certs at all is allowed.. */ store = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, 0, CERT_STORE_CREATE_NEW_FLAG, NULL); config.hRestrictedRoot = store; - ret = CertCreateCertificateChainEngine(&config, &engine); + ret = pCertCreateCertificateChainEngine(&config, &engine); ok(ret, "CertCreateCertificateChainEngine failed: %08x\n", GetLastError()); - CertFreeCertificateChainEngine(engine); + pCertFreeCertificateChainEngine(engine); /* but creating one with a restricted root with a cert that isn't a member * of the Root store isn't allowed. */ CertAddEncodedCertificateToStore(store, X509_ASN_ENCODING, selfSignedCert, sizeof(selfSignedCert), CERT_STORE_ADD_ALWAYS, NULL); - ret = CertCreateCertificateChainEngine(&config, &engine); + ret = pCertCreateCertificateChainEngine(&config, &engine); ok(!ret && GetLastError() == CRYPT_E_NOT_FOUND, "Expected CRYPT_E_NOT_FOUND, got %08x\n", GetLastError()); @@ -1129,7 +1142,7 @@ static PCCERT_CHAIN_CONTEXT getChain(const CONST_BLOB_ARRAY *certArray, FILETIME fileTime; SystemTimeToFileTime(checkTime, &fileTime); - ret = CertGetCertificateChain(NULL, endCert, &fileTime, + ret = pCertGetCertificateChain(NULL, endCert, &fileTime, includeStore ? store : NULL, &chainPara, flags, NULL, &chain); if (todo & TODO_CHAIN) todo_wine ok(ret, "Chain %d: CertGetCertificateChain failed: %08x\n", @@ -1566,36 +1579,36 @@ static void testGetCertChain(void) DWORD i; /* Basic parameter checks */ - ret = CertGetCertificateChain(NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL); + ret = pCertGetCertificateChain(NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", GetLastError()); - ret = CertGetCertificateChain(NULL, NULL, NULL, NULL, NULL, 0, NULL, + ret = pCertGetCertificateChain(NULL, NULL, NULL, NULL, NULL, 0, NULL, &chain); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", GetLastError()); /* Crash - ret = CertGetCertificateChain(NULL, NULL, NULL, NULL, ¶, 0, NULL, NULL); - ret = CertGetCertificateChain(NULL, NULL, NULL, NULL, ¶, 0, NULL, + ret = pCertGetCertificateChain(NULL, NULL, NULL, NULL, ¶, 0, NULL, NULL); + ret = pCertGetCertificateChain(NULL, NULL, NULL, NULL, ¶, 0, NULL, &chain); */ cert = CertCreateCertificateContext(X509_ASN_ENCODING, bigCert, sizeof(bigCert)); - ret = CertGetCertificateChain(NULL, cert, NULL, NULL, NULL, 0, NULL, NULL); + ret = pCertGetCertificateChain(NULL, cert, NULL, NULL, NULL, 0, NULL, NULL); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", GetLastError()); /* Crash - ret = CertGetCertificateChain(NULL, cert, NULL, NULL, ¶, 0, NULL, NULL); + ret = pCertGetCertificateChain(NULL, cert, NULL, NULL, ¶, 0, NULL, NULL); */ /* Tests with an invalid cert (one whose signature is bad) */ SetLastError(0xdeadbeef); - ret = CertGetCertificateChain(NULL, cert, NULL, NULL, ¶, 0, NULL, + ret = pCertGetCertificateChain(NULL, cert, NULL, NULL, ¶, 0, NULL, &chain); ok(!ret && GetLastError() == ERROR_INVALID_DATA, "Expected ERROR_INVALID_DATA, got %d\n", GetLastError()); para.cbSize = sizeof(para); SetLastError(0xdeadbeef); - ret = CertGetCertificateChain(NULL, cert, NULL, NULL, ¶, 0, NULL, + ret = pCertGetCertificateChain(NULL, cert, NULL, NULL, ¶, 0, NULL, &chain); ok(!ret && GetLastError() == ERROR_INVALID_DATA, "Expected ERROR_INVALID_DATA, got %d\n", GetLastError()); @@ -1609,7 +1622,7 @@ static void testGetCertChain(void) { checkChainStatus(chain, &chainCheck[i].status, chainCheck[i].todo, i); - CertFreeCertificateChain(chain); + pCertFreeCertificateChain(chain); } } for (i = 0; i < sizeof(chainCheckNoStore) / sizeof(chainCheckNoStore[0]); @@ -1621,7 +1634,7 @@ static void testGetCertChain(void) { checkChainStatus(chain, &chainCheckNoStore[i].status, chainCheckNoStore[i].todo, i); - CertFreeCertificateChain(chain); + pCertFreeCertificateChain(chain); } } } @@ -1737,7 +1750,7 @@ static void checkChainPolicyStatus(LPCSTR policy, ChainPolicyCheck *check, if (chain) { CERT_CHAIN_POLICY_STATUS policyStatus = { 0 }; - BOOL ret = CertVerifyCertificateChainPolicy(policy, chain, NULL, + BOOL ret = pCertVerifyCertificateChainPolicy(policy, chain, NULL, &policyStatus); if (check->todo & TODO_POLICY) @@ -1775,7 +1788,7 @@ static void checkChainPolicyStatus(LPCSTR policy, ChainPolicyCheck *check, "%d: expected %d, got %d\n", testIndex, check->status.lElementIndex, policyStatus.lElementIndex); } - CertFreeCertificateChain(chain); + pCertFreeCertificateChain(chain); } } @@ -1789,34 +1802,40 @@ static void testVerifyCertChainPolicy(void) CERT_CHAIN_POLICY_PARA policyPara = { 0 }; DWORD i; + if (!pCertVerifyCertificateChainPolicy) + { + skip("CertVerifyCertificateChainPolicy() is not available\n"); + return; + } + /* Crash - ret = CertVerifyCertificateChainPolicy(NULL, NULL, NULL, NULL); - ret = CertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_BASE, NULL, NULL, + ret = pCertVerifyCertificateChainPolicy(NULL, NULL, NULL, NULL); + ret = pCertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_BASE, NULL, NULL, NULL); - ret = CertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_BASE, NULL, + ret = pCertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_BASE, NULL, &chainPara, NULL); */ SetLastError(0xdeadbeef); - ret = CertVerifyCertificateChainPolicy(NULL, NULL, NULL, &policyStatus); + ret = pCertVerifyCertificateChainPolicy(NULL, NULL, NULL, &policyStatus); ok(!ret && GetLastError() == ERROR_FILE_NOT_FOUND, "Expected ERROR_FILE_NOT_FOUND, got %08x\n", GetLastError()); /* Crashes - ret = CertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_BASE, NULL, NULL, + ret = pCertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_BASE, NULL, NULL, &policyStatus); */ cert = CertCreateCertificateContext(X509_ASN_ENCODING, selfSignedCert, sizeof(selfSignedCert)); - CertGetCertificateChain(NULL, cert, NULL, NULL, &chainPara, 0, NULL, + pCertGetCertificateChain(NULL, cert, NULL, NULL, &chainPara, 0, NULL, &chain); /* Crash - ret = CertVerifyCertificateChainPolicy(NULL, chain, NULL, NULL); - ret = CertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_BASE, chain, NULL, + ret = pCertVerifyCertificateChainPolicy(NULL, chain, NULL, NULL); + ret = pCertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_BASE, chain, NULL, NULL); - ret = CertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_BASE, chain, + ret = pCertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_BASE, chain, &chainPara, NULL); */ /* Size of policy status is apparently ignored, as is pChainPolicyPara */ - ret = CertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_BASE, chain, NULL, + ret = pCertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_BASE, chain, NULL, &policyStatus); ok(ret, "CertVerifyCertificateChainPolicy failed: %08x\n", GetLastError()); ok(policyStatus.dwError == CERT_E_UNTRUSTEDROOT, @@ -1824,7 +1843,7 @@ static void testVerifyCertChainPolicy(void) ok(policyStatus.lChainIndex == 0 && policyStatus.lElementIndex == 0, "Expected both indexes 0, got %d, %d\n", policyStatus.lChainIndex, policyStatus.lElementIndex); - ret = CertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_BASE, chain, + ret = pCertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_BASE, chain, &policyPara, &policyStatus); ok(ret, "CertVerifyCertificateChainPolicy failed: %08x\n", GetLastError()); ok(policyStatus.dwError == CERT_E_UNTRUSTEDROOT, @@ -1832,7 +1851,7 @@ static void testVerifyCertChainPolicy(void) ok(policyStatus.lChainIndex == 0 && policyStatus.lElementIndex == 0, "Expected both indexes 0, got %d, %d\n", policyStatus.lChainIndex, policyStatus.lElementIndex); - CertFreeCertificateChain(chain); + pCertFreeCertificateChain(chain); CertFreeCertificateContext(cert); for (i = 0; @@ -1855,7 +1874,21 @@ static void testVerifyCertChainPolicy(void) START_TEST(chain) { + HMODULE hCrypt32 = GetModuleHandleA("crypt32.dll"); + pCertCreateCertificateChainEngine = (void*)GetProcAddress(hCrypt32, "CertCreateCertificateChainEngine"); + pCertGetCertificateChain = (void*)GetProcAddress(hCrypt32, "CertGetCertificateChain"); + pCertFreeCertificateChain = (void*)GetProcAddress(hCrypt32, "CertFreeCertificateChain"); + pCertFreeCertificateChainEngine = (void*)GetProcAddress(hCrypt32, "CertFreeCertificateChainEngine"); + pCertVerifyCertificateChainPolicy = (void*)GetProcAddress(hCrypt32, "CertVerifyCertificateChainPolicy"); + testCreateCertChainEngine(); - testVerifyCertChainPolicy(); - testGetCertChain(); + if (!pCertGetCertificateChain) + { + skip("CertGetCertificateChain() is not available\n"); + } + else + { + testVerifyCertChainPolicy(); + testGetCertChain(); + } } diff --git a/dlls/crypt32/tests/crl.c b/dlls/crypt32/tests/crl.c index 7ecf6d4f1ae..3a65c7dc7d6 100644 --- a/dlls/crypt32/tests/crl.c +++ b/dlls/crypt32/tests/crl.c @@ -29,6 +29,7 @@ #include "wine/test.h" + static const BYTE bigCert[] = { 0x30, 0x7a, 0x02, 0x01, 0x01, 0x30, 0x02, 0x06, 0x00, 0x30, 0x15, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0a, 0x4a, 0x75, 0x61, 0x6e, 0x20, 0x4c, 0x61, 0x6e, 0x67, 0x00, 0x30, 0x22, @@ -76,11 +77,15 @@ static const BYTE signedCRL[] = { 0x30, 0x45, 0x30, 0x2c, 0x30, 0x02, 0x06, 0x30, 0x5a, 0x30, 0x02, 0x06, 0x00, 0x03, 0x11, 0x00, 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 }; +static BOOL (WINAPI *pCertFindCertificateInCRL)(PCCERT_CONTEXT,PCCRL_CONTEXT,DWORD,void*,PCRL_ENTRY*); +static PCCRL_CONTEXT (WINAPI *pCertFindCRLInStore)(HCERTSTORE,DWORD,DWORD,DWORD,const void*,PCCRL_CONTEXT); static BOOL (WINAPI *pCertIsValidCRLForCertificate)(PCCERT_CONTEXT, PCCRL_CONTEXT, DWORD, void*); static void init_function_pointers(void) { HMODULE hdll = GetModuleHandleA("crypt32.dll"); + pCertFindCertificateInCRL = (void*)GetProcAddress(hdll, "CertFindCertificateInCRL"); + pCertFindCRLInStore = (void*)GetProcAddress(hdll, "CertFindCRLInStore"); pCertIsValidCRLForCertificate = (void*)GetProcAddress(hdll, "CertIsValidCRLForCertificate"); } @@ -205,33 +210,38 @@ static void testFindCRL(void) BOOL ret; if (!store) return; + if (!pCertFindCRLInStore) + { + skip("CertFindCRLInStore() is not available\n"); + return; + } ret = CertAddEncodedCRLToStore(store, X509_ASN_ENCODING, signedCRL, sizeof(signedCRL), CERT_STORE_ADD_ALWAYS, NULL); ok(ret, "CertAddEncodedCRLToStore failed: %08x\n", GetLastError()); /* Crashes - context = CertFindCRLInStore(NULL, 0, 0, 0, NULL, NULL); + context = pCertFindCRLInStore(NULL, 0, 0, 0, NULL, NULL); */ /* Find any context */ - context = CertFindCRLInStore(store, 0, 0, CRL_FIND_ANY, NULL, NULL); + context = pCertFindCRLInStore(store, 0, 0, CRL_FIND_ANY, NULL, NULL); ok(context != NULL, "Expected a context\n"); if (context) CertFreeCRLContext(context); /* Bogus flags are ignored */ - context = CertFindCRLInStore(store, 0, 1234, CRL_FIND_ANY, NULL, NULL); + context = pCertFindCRLInStore(store, 0, 1234, CRL_FIND_ANY, NULL, NULL); ok(context != NULL, "Expected a context\n"); if (context) CertFreeCRLContext(context); /* CRL encoding type is ignored too */ - context = CertFindCRLInStore(store, 1234, 0, CRL_FIND_ANY, NULL, NULL); + context = pCertFindCRLInStore(store, 1234, 0, CRL_FIND_ANY, NULL, NULL); ok(context != NULL, "Expected a context\n"); if (context) CertFreeCRLContext(context); /* This appears to match any cert */ - context = CertFindCRLInStore(store, 0, 0, CRL_FIND_ISSUED_BY, NULL, NULL); + context = pCertFindCRLInStore(store, 0, 0, CRL_FIND_ISSUED_BY, NULL, NULL); ok(context != NULL, "Expected a context\n"); if (context) CertFreeCRLContext(context); @@ -241,7 +251,7 @@ static void testFindCRL(void) sizeof(bigCert2)); ok(cert != NULL, "CertCreateCertificateContext failed: %08x\n", GetLastError()); - context = CertFindCRLInStore(store, 0, 0, CRL_FIND_ISSUED_BY, cert, NULL); + context = pCertFindCRLInStore(store, 0, 0, CRL_FIND_ISSUED_BY, cert, NULL); ok(context == NULL, "Expected no matching context\n"); CertFreeCertificateContext(cert); @@ -250,7 +260,7 @@ static void testFindCRL(void) sizeof(bigCert)); ok(cert != NULL, "CertCreateCertificateContext failed: %08x\n", GetLastError()); - context = CertFindCRLInStore(store, 0, 0, CRL_FIND_ISSUED_BY, cert, NULL); + context = pCertFindCRLInStore(store, 0, 0, CRL_FIND_ISSUED_BY, cert, NULL); ok(context != NULL, "Expected a context\n"); if (context) CertFreeCRLContext(context); @@ -600,31 +610,37 @@ static void testFindCertInCRL(void) PCCRL_CONTEXT crl; PCRL_ENTRY entry; + if (!pCertFindCertificateInCRL) + { + skip("CertFindCertificateInCRL() is not available\n"); + return; + } + cert = CertCreateCertificateContext(X509_ASN_ENCODING, bigCert, sizeof(bigCert)); ok(cert != NULL, "CertCreateCertificateContext failed: %08x\n", GetLastError()); /* Crash - ret = CertFindCertificateInCRL(NULL, NULL, 0, NULL, NULL); - ret = CertFindCertificateInCRL(NULL, crl, 0, NULL, NULL); - ret = CertFindCertificateInCRL(cert, NULL, 0, NULL, NULL); - ret = CertFindCertificateInCRL(cert, crl, 0, NULL, NULL); - ret = CertFindCertificateInCRL(NULL, NULL, 0, NULL, &entry); - ret = CertFindCertificateInCRL(NULL, crl, 0, NULL, &entry); - ret = CertFindCertificateInCRL(cert, NULL, 0, NULL, &entry); + ret = pCertFindCertificateInCRL(NULL, NULL, 0, NULL, NULL); + ret = pCertFindCertificateInCRL(NULL, crl, 0, NULL, NULL); + ret = pCertFindCertificateInCRL(cert, NULL, 0, NULL, NULL); + ret = pCertFindCertificateInCRL(cert, crl, 0, NULL, NULL); + ret = pCertFindCertificateInCRL(NULL, NULL, 0, NULL, &entry); + ret = pCertFindCertificateInCRL(NULL, crl, 0, NULL, &entry); + ret = pCertFindCertificateInCRL(cert, NULL, 0, NULL, &entry); */ crl = CertCreateCRLContext(X509_ASN_ENCODING, verisignCRL, sizeof(verisignCRL)); - ret = CertFindCertificateInCRL(cert, crl, 0, NULL, &entry); + ret = pCertFindCertificateInCRL(cert, crl, 0, NULL, &entry); ok(ret, "CertFindCertificateInCRL failed: %08x\n", GetLastError()); ok(entry == NULL, "Expected not to find an entry in CRL\n"); CertFreeCRLContext(crl); crl = CertCreateCRLContext(X509_ASN_ENCODING, v1CRLWithIssuerAndEntry, sizeof(v1CRLWithIssuerAndEntry)); - ret = CertFindCertificateInCRL(cert, crl, 0, NULL, &entry); + ret = pCertFindCertificateInCRL(cert, crl, 0, NULL, &entry); ok(ret, "CertFindCertificateInCRL failed: %08x\n", GetLastError()); ok(entry != NULL, "Expected to find an entry in CRL\n"); CertFreeCRLContext(crl); @@ -632,7 +648,7 @@ static void testFindCertInCRL(void) /* Entry found even though CRL issuer doesn't match cert issuer */ crl = CertCreateCRLContext(X509_ASN_ENCODING, crlWithDifferentIssuer, sizeof(crlWithDifferentIssuer)); - ret = CertFindCertificateInCRL(cert, crl, 0, NULL, &entry); + ret = pCertFindCertificateInCRL(cert, crl, 0, NULL, &entry); ok(ret, "CertFindCertificateInCRL failed: %08x\n", GetLastError()); ok(entry != NULL, "Expected to find an entry in CRL\n"); CertFreeCRLContext(crl); diff --git a/dlls/crypt32/tests/encode.c b/dlls/crypt32/tests/encode.c index a06531c3293..7616ec5e644 100644 --- a/dlls/crypt32/tests/encode.c +++ b/dlls/crypt32/tests/encode.c @@ -26,6 +26,10 @@ #include "wine/test.h" + +static BOOL (WINAPI *pCryptDecodeObjectEx)(DWORD,LPCSTR,const BYTE*,DWORD,DWORD,PCRYPT_DECODE_PARA,void*,DWORD*); +static BOOL (WINAPI *pCryptEncodeObjectEx)(DWORD,LPCSTR,const void*,DWORD,PCRYPT_ENCODE_PARA,void*,DWORD*); + struct encodedInt { int val; @@ -90,28 +94,28 @@ static void test_encodeInt(DWORD dwEncoding) BYTE *buf = NULL; /* CryptEncodeObjectEx with NULL bufSize crashes.. - ret = CryptEncodeObjectEx(3, X509_INTEGER, &ints[0].val, 0, NULL, NULL, + ret = pCryptEncodeObjectEx(3, X509_INTEGER, &ints[0].val, 0, NULL, NULL, NULL); */ /* check bogus encoding */ - ret = CryptEncodeObjectEx(0, X509_INTEGER, &ints[0].val, 0, NULL, NULL, + ret = pCryptEncodeObjectEx(0, X509_INTEGER, &ints[0].val, 0, NULL, NULL, &bufSize); ok(!ret && GetLastError() == ERROR_FILE_NOT_FOUND, "Expected ERROR_FILE_NOT_FOUND, got %d\n", GetLastError()); /* check with NULL integer buffer. Windows XP incorrectly returns an * NTSTATUS. */ - ret = CryptEncodeObjectEx(dwEncoding, X509_INTEGER, NULL, 0, NULL, NULL, + ret = pCryptEncodeObjectEx(dwEncoding, X509_INTEGER, NULL, 0, NULL, NULL, &bufSize); ok(!ret && GetLastError() == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got %08x\n", GetLastError()); for (i = 0; i < sizeof(ints) / sizeof(ints[0]); i++) { /* encode as normal integer */ - ret = CryptEncodeObjectEx(dwEncoding, X509_INTEGER, &ints[i].val, 0, + ret = pCryptEncodeObjectEx(dwEncoding, X509_INTEGER, &ints[i].val, 0, NULL, NULL, &bufSize); ok(ret, "Expected success, got %d\n", GetLastError()); - ret = CryptEncodeObjectEx(dwEncoding, X509_INTEGER, &ints[i].val, + ret = pCryptEncodeObjectEx(dwEncoding, X509_INTEGER, &ints[i].val, CRYPT_ENCODE_ALLOC_FLAG, NULL, &buf, &bufSize); ok(ret, "CryptEncodeObjectEx failed: %d\n", GetLastError()); if (buf) @@ -127,10 +131,10 @@ static void test_encodeInt(DWORD dwEncoding) /* encode as multibyte integer */ blob.cbData = sizeof(ints[i].val); blob.pbData = (BYTE *)&ints[i].val; - ret = CryptEncodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, &blob, + ret = pCryptEncodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, &blob, 0, NULL, NULL, &bufSize); ok(ret, "Expected success, got %d\n", GetLastError()); - ret = CryptEncodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, &blob, + ret = pCryptEncodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, &blob, CRYPT_ENCODE_ALLOC_FLAG, NULL, &buf, &bufSize); ok(ret, "CryptEncodeObjectEx failed: %d\n", GetLastError()); if (buf) @@ -151,10 +155,10 @@ static void test_encodeInt(DWORD dwEncoding) { blob.cbData = strlen((const char*)bigInts[i].val); blob.pbData = (BYTE *)bigInts[i].val; - ret = CryptEncodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, &blob, + ret = pCryptEncodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, &blob, 0, NULL, NULL, &bufSize); ok(ret, "Expected success, got %d\n", GetLastError()); - ret = CryptEncodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, &blob, + ret = pCryptEncodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, &blob, CRYPT_ENCODE_ALLOC_FLAG, NULL, &buf, &bufSize); ok(ret, "CryptEncodeObjectEx failed: %d\n", GetLastError()); if (buf) @@ -174,10 +178,10 @@ static void test_encodeInt(DWORD dwEncoding) { blob.cbData = strlen((const char*)bigUInts[i].val); blob.pbData = (BYTE*)bigUInts[i].val; - ret = CryptEncodeObjectEx(dwEncoding, X509_MULTI_BYTE_UINT, &blob, + ret = pCryptEncodeObjectEx(dwEncoding, X509_MULTI_BYTE_UINT, &blob, 0, NULL, NULL, &bufSize); ok(ret, "Expected success, got %d\n", GetLastError()); - ret = CryptEncodeObjectEx(dwEncoding, X509_MULTI_BYTE_UINT, &blob, + ret = pCryptEncodeObjectEx(dwEncoding, X509_MULTI_BYTE_UINT, &blob, CRYPT_ENCODE_ALLOC_FLAG, NULL, &buf, &bufSize); ok(ret, "CryptEncodeObjectEx failed: %d\n", GetLastError()); if (buf) @@ -207,26 +211,26 @@ static void test_decodeInt(DWORD dwEncoding) BOOL ret; /* CryptDecodeObjectEx with NULL bufSize crashes.. - ret = CryptDecodeObjectEx(3, X509_INTEGER, &ints[0].encoded, + ret = pCryptDecodeObjectEx(3, X509_INTEGER, &ints[0].encoded, ints[0].encoded[1] + 2, 0, NULL, NULL, NULL); */ /* check bogus encoding */ - ret = CryptDecodeObjectEx(3, X509_INTEGER, (BYTE *)&ints[0].encoded, + ret = pCryptDecodeObjectEx(3, X509_INTEGER, (BYTE *)&ints[0].encoded, ints[0].encoded[1] + 2, 0, NULL, NULL, &bufSize); ok(!ret && GetLastError() == ERROR_FILE_NOT_FOUND, "Expected ERROR_FILE_NOT_FOUND, got %d\n", GetLastError()); /* check with NULL integer buffer */ - ret = CryptDecodeObjectEx(dwEncoding, X509_INTEGER, NULL, 0, 0, NULL, NULL, + ret = pCryptDecodeObjectEx(dwEncoding, X509_INTEGER, NULL, 0, 0, NULL, NULL, &bufSize); ok(!ret && GetLastError() == CRYPT_E_ASN1_EOD, "Expected CRYPT_E_ASN1_EOD, got %08x\n", GetLastError()); /* check with a valid, but too large, integer */ - ret = CryptDecodeObjectEx(dwEncoding, X509_INTEGER, bigInt, bigInt[1] + 2, + ret = pCryptDecodeObjectEx(dwEncoding, X509_INTEGER, bigInt, bigInt[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(!ret && GetLastError() == CRYPT_E_ASN1_LARGE, "Expected CRYPT_E_ASN1_LARGE, got %d\n", GetLastError()); /* check with a DER-encoded string */ - ret = CryptDecodeObjectEx(dwEncoding, X509_INTEGER, testStr, testStr[1] + 2, + ret = pCryptDecodeObjectEx(dwEncoding, X509_INTEGER, testStr, testStr[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(!ret && GetLastError() == CRYPT_E_ASN1_BADTAG, "Expected CRYPT_E_ASN1_BADTAG, got %d\n", GetLastError()); @@ -234,12 +238,12 @@ static void test_decodeInt(DWORD dwEncoding) { /* When the output buffer is NULL, this always succeeds */ SetLastError(0xdeadbeef); - ret = CryptDecodeObjectEx(dwEncoding, X509_INTEGER, + ret = pCryptDecodeObjectEx(dwEncoding, X509_INTEGER, ints[i].encoded, ints[i].encoded[1] + 2, 0, NULL, NULL, &bufSize); ok(ret && GetLastError() == NOERROR, "Expected success and NOERROR, got %d\n", GetLastError()); - ret = CryptDecodeObjectEx(dwEncoding, X509_INTEGER, + ret = pCryptDecodeObjectEx(dwEncoding, X509_INTEGER, ints[i].encoded, ints[i].encoded[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %d\n", GetLastError()); @@ -254,12 +258,12 @@ static void test_decodeInt(DWORD dwEncoding) } for (i = 0; i < sizeof(bigInts) / sizeof(bigInts[0]); i++) { - ret = CryptDecodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, + ret = pCryptDecodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, bigInts[i].encoded, bigInts[i].encoded[1] + 2, 0, NULL, NULL, &bufSize); ok(ret && GetLastError() == NOERROR, "Expected success and NOERROR, got %d\n", GetLastError()); - ret = CryptDecodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, + ret = pCryptDecodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, bigInts[i].encoded, bigInts[i].encoded[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %d\n", GetLastError()); @@ -279,12 +283,12 @@ static void test_decodeInt(DWORD dwEncoding) } for (i = 0; i < sizeof(bigUInts) / sizeof(bigUInts[0]); i++) { - ret = CryptDecodeObjectEx(dwEncoding, X509_MULTI_BYTE_UINT, + ret = pCryptDecodeObjectEx(dwEncoding, X509_MULTI_BYTE_UINT, bigUInts[i].encoded, bigUInts[i].encoded[1] + 2, 0, NULL, NULL, &bufSize); ok(ret && GetLastError() == NOERROR, "Expected success and NOERROR, got %d\n", GetLastError()); - ret = CryptDecodeObjectEx(dwEncoding, X509_MULTI_BYTE_UINT, + ret = pCryptDecodeObjectEx(dwEncoding, X509_MULTI_BYTE_UINT, bigUInts[i].encoded, bigUInts[i].encoded[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %d\n", GetLastError()); @@ -303,7 +307,7 @@ static void test_decodeInt(DWORD dwEncoding) } } /* Decode the value 1 with long-form length */ - ret = CryptDecodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, longForm, + ret = pCryptDecodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, longForm, sizeof(longForm), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -312,7 +316,7 @@ static void test_decodeInt(DWORD dwEncoding) LocalFree(buf); } /* check with extra bytes at the end */ - ret = CryptDecodeObjectEx(dwEncoding, X509_INTEGER, extraBytes, + ret = pCryptDecodeObjectEx(dwEncoding, X509_INTEGER, extraBytes, sizeof(extraBytes), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -326,7 +330,7 @@ static void test_decodeInt(DWORD dwEncoding) * Under XP it fails with CRYPT_E_ASN1_LARGE, which means there's a limit * on the size decoded, but in ME it fails with CRYPT_E_ASN1_EOD or crashes. * So this test unfortunately isn't useful. - ret = CryptDecodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, tooBig, + ret = pCryptDecodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, tooBig, 0x7fffffff, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(!ret && GetLastError() == CRYPT_E_ASN1_LARGE, "Expected CRYPT_E_ASN1_LARGE, got %08x\n", GetLastError()); @@ -337,7 +341,7 @@ static void test_decodeInt(DWORD dwEncoding) if (0) { /* a large buffer isn't guaranteed to crash, it depends on memory allocation order */ - ret = CryptDecodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, bigBogus, + ret = pCryptDecodeObjectEx(dwEncoding, X509_MULTI_BYTE_INTEGER, bigBogus, 0x01ffffff, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(!ret && GetLastError() == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got %08x\n", GetLastError()); @@ -373,7 +377,7 @@ static void test_encodeEnumerated(DWORD dwEncoding) BYTE *buf = NULL; DWORD bufSize = 0; - ret = CryptEncodeObjectEx(dwEncoding, enumeratedTypes[i], + ret = pCryptEncodeObjectEx(dwEncoding, enumeratedTypes[i], &enums[j].val, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptEncodeObjectEx failed: %d\n", GetLastError()); @@ -406,7 +410,7 @@ static void test_decodeEnumerated(DWORD dwEncoding) DWORD bufSize = sizeof(int); int val; - ret = CryptDecodeObjectEx(dwEncoding, enumeratedTypes[i], + ret = pCryptDecodeObjectEx(dwEncoding, enumeratedTypes[i], enums[j].encoded, enums[j].encoded[1] + 2, 0, NULL, (BYTE *)&val, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -434,7 +438,7 @@ static void testTimeEncoding(DWORD dwEncoding, LPCSTR structType, ret = SystemTimeToFileTime(&time->sysTime, &ft); ok(ret, "SystemTimeToFileTime failed: %d\n", GetLastError()); - ret = CryptEncodeObjectEx(dwEncoding, structType, &ft, + ret = pCryptEncodeObjectEx(dwEncoding, structType, &ft, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); /* years other than 1950-2050 are not allowed for encodings other than * X509_CHOICE_OF_TIME. @@ -505,7 +509,7 @@ static void testTimeDecoding(DWORD dwEncoding, LPCSTR structType, DWORD size = sizeof(ft); BOOL ret; - ret = CryptDecodeObjectEx(dwEncoding, structType, time->encodedTime, + ret = pCryptDecodeObjectEx(dwEncoding, structType, time->encodedTime, time->encodedTime[1] + 2, 0, NULL, &ft, &size); /* years other than 1950-2050 are not allowed for encodings other than * X509_CHOICE_OF_TIME. @@ -616,7 +620,7 @@ static void test_decodeFiletime(DWORD dwEncoding) ret = SystemTimeToFileTime(×[0].sysTime, &ft1); ok(ret, "SystemTimeToFileTime failed: %d\n", GetLastError()); size = 1; - ret = CryptDecodeObjectEx(dwEncoding, X509_CHOICE_OF_TIME, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CHOICE_OF_TIME, times[0].encodedTime, times[0].encodedTime[1] + 2, 0, NULL, &ft2, &size); ok(!ret && GetLastError() == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", GetLastError()); @@ -636,7 +640,7 @@ static void test_decodeFiletime(DWORD dwEncoding) for (i = 0; i < sizeof(bogusTimes) / sizeof(bogusTimes[0]); i++) { size = sizeof(ft1); - ret = CryptDecodeObjectEx(dwEncoding, X509_CHOICE_OF_TIME, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CHOICE_OF_TIME, bogusTimes[i], bogusTimes[i][1] + 2, 0, NULL, &ft1, &size); ok(!ret && GetLastError() == CRYPT_E_ASN1_CORRUPT, "Expected CRYPT_E_ASN1_CORRUPT, got %08x\n", GetLastError()); @@ -726,14 +730,14 @@ static void test_encodeName(DWORD dwEncoding) BOOL ret; /* Test with NULL pvStructInfo */ - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME, NULL, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME, NULL, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got %08x\n", GetLastError()); /* Test with empty CERT_NAME_INFO */ info.cRDN = 0; info.rgRDN = NULL; - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -744,7 +748,7 @@ static void test_encodeName(DWORD dwEncoding) } /* Test with bogus CERT_RDN */ info.cRDN = 1; - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got %08x\n", GetLastError()); @@ -753,7 +757,7 @@ static void test_encodeName(DWORD dwEncoding) rdn.rgRDNAttr = NULL; info.cRDN = 1; info.rgRDN = &rdn; - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -765,7 +769,7 @@ static void test_encodeName(DWORD dwEncoding) /* Test with bogus attr array */ rdn.cRDNAttr = 1; rdn.rgRDNAttr = NULL; - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got %08x\n", GetLastError()); @@ -776,7 +780,7 @@ static void test_encodeName(DWORD dwEncoding) attrs[0].Value.pbData = (BYTE *)commonName; rdn.cRDNAttr = 1; rdn.rgRDNAttr = attrs; - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret, "Expected failure, got success\n"); */ @@ -793,7 +797,7 @@ static void test_encodeName(DWORD dwEncoding) attrs[1].Value.pbData = (BYTE *)surName; rdn.cRDNAttr = 2; rdn.rgRDNAttr = attrs; - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -807,7 +811,7 @@ static void test_encodeName(DWORD dwEncoding) attrs[0].Value.pbData = (LPBYTE)twoRDNs; attrs[0].Value.cbData = sizeof(twoRDNs); rdn.cRDNAttr = 1; - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -820,7 +824,7 @@ static void test_encodeName(DWORD dwEncoding) /* CERT_RDN_ANY_TYPE is too vague for X509_NAMEs, check the return */ rdn.cRDNAttr = 1; attrs[0].dwValueType = CERT_RDN_ANY_TYPE; - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", GetLastError()); @@ -831,7 +835,7 @@ static void test_encodeName(DWORD dwEncoding) info.rgRDN = &rdn; buf = NULL; size = 0; - ret = CryptEncodeObjectEx(X509_ASN_ENCODING, X509_NAME, &info, + ret = pCryptEncodeObjectEx(X509_ASN_ENCODING, X509_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, &buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (ret) @@ -867,14 +871,14 @@ static void test_encodeUnicodeName(DWORD dwEncoding) BOOL ret; /* Test with NULL pvStructInfo */ - ret = CryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME, NULL, + ret = pCryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME, NULL, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got %08x\n", GetLastError()); /* Test with empty CERT_NAME_INFO */ info.cRDN = 0; info.rgRDN = NULL; - ret = CryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -894,7 +898,7 @@ static void test_encodeUnicodeName(DWORD dwEncoding) rdn.rgRDNAttr = attrs; info.cRDN = 1; info.rgRDN = &rdn; - ret = CryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == CRYPT_E_INVALID_PRINTABLE_STRING, "Expected CRYPT_E_INVALID_PRINTABLE_STRING, got %08x\n", GetLastError()); @@ -914,7 +918,7 @@ static void test_encodeUnicodeName(DWORD dwEncoding) rdn.rgRDNAttr = attrs; info.cRDN = 1; info.rgRDN = &rdn; - ret = CryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -928,7 +932,7 @@ static void test_encodeUnicodeName(DWORD dwEncoding) attrs[0].Value.pbData = (LPBYTE)twoRDNs; attrs[0].Value.cbData = sizeof(twoRDNs); rdn.cRDNAttr = 1; - ret = CryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -941,7 +945,7 @@ static void test_encodeUnicodeName(DWORD dwEncoding) /* Unicode names infer the type for CERT_RDN_ANY_TYPE */ rdn.cRDNAttr = 1; attrs[0].dwValueType = CERT_RDN_ANY_TYPE; - ret = CryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); todo_wine ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -1028,7 +1032,7 @@ static void test_decodeName(DWORD dwEncoding) /* test empty name */ bufSize = 0; - ret = CryptDecodeObjectEx(dwEncoding, X509_NAME, emptySequence, + ret = pCryptDecodeObjectEx(dwEncoding, X509_NAME, emptySequence, emptySequence[1] + 2, CRYPT_DECODE_ALLOC_FLAG | CRYPT_DECODE_SHARE_OID_STRING_FLAG, NULL, (BYTE *)&buf, &bufSize); @@ -1045,7 +1049,7 @@ static void test_decodeName(DWORD dwEncoding) LocalFree(buf); } /* test empty name with indefinite-length encoding */ - ret = CryptDecodeObjectEx(dwEncoding, X509_NAME, emptyIndefiniteSequence, + ret = pCryptDecodeObjectEx(dwEncoding, X509_NAME, emptyIndefiniteSequence, sizeof(emptyIndefiniteSequence), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -1059,7 +1063,7 @@ static void test_decodeName(DWORD dwEncoding) } /* test empty RDN */ bufSize = 0; - ret = CryptDecodeObjectEx(dwEncoding, X509_NAME, emptyRDNs, + ret = pCryptDecodeObjectEx(dwEncoding, X509_NAME, emptyRDNs, emptyRDNs[1] + 2, CRYPT_DECODE_ALLOC_FLAG | CRYPT_DECODE_SHARE_OID_STRING_FLAG, NULL, (BYTE *)&buf, &bufSize); @@ -1075,7 +1079,7 @@ static void test_decodeName(DWORD dwEncoding) } /* test two RDN attrs */ bufSize = 0; - ret = CryptDecodeObjectEx(dwEncoding, X509_NAME, twoRDNs, + ret = pCryptDecodeObjectEx(dwEncoding, X509_NAME, twoRDNs, twoRDNs[1] + 2, CRYPT_DECODE_ALLOC_FLAG | CRYPT_DECODE_SHARE_OID_STRING_FLAG, NULL, (BYTE *)&buf, &bufSize); @@ -1099,13 +1103,13 @@ static void test_decodeName(DWORD dwEncoding) } /* test that two RDN attrs with extra bytes succeeds */ bufSize = 0; - ret = CryptDecodeObjectEx(dwEncoding, X509_NAME, twoRDNsExtraBytes, + ret = pCryptDecodeObjectEx(dwEncoding, X509_NAME, twoRDNsExtraBytes, sizeof(twoRDNsExtraBytes), 0, NULL, NULL, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); /* And, a slightly more complicated name */ buf = NULL; bufSize = 0; - ret = CryptDecodeObjectEx(X509_ASN_ENCODING, X509_NAME, encodedRDNAttrs, + ret = pCryptDecodeObjectEx(X509_ASN_ENCODING, X509_NAME, encodedRDNAttrs, sizeof(encodedRDNAttrs), CRYPT_DECODE_ALLOC_FLAG, NULL, &buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); if (ret) @@ -1127,7 +1131,7 @@ static void test_decodeUnicodeName(DWORD dwEncoding) /* test empty name */ bufSize = 0; - ret = CryptDecodeObjectEx(dwEncoding, X509_UNICODE_NAME, emptySequence, + ret = pCryptDecodeObjectEx(dwEncoding, X509_UNICODE_NAME, emptySequence, emptySequence[1] + 2, CRYPT_DECODE_ALLOC_FLAG | CRYPT_DECODE_SHARE_OID_STRING_FLAG, NULL, (BYTE *)&buf, &bufSize); @@ -1143,7 +1147,7 @@ static void test_decodeUnicodeName(DWORD dwEncoding) } /* test empty RDN */ bufSize = 0; - ret = CryptDecodeObjectEx(dwEncoding, X509_UNICODE_NAME, emptyRDNs, + ret = pCryptDecodeObjectEx(dwEncoding, X509_UNICODE_NAME, emptyRDNs, emptyRDNs[1] + 2, CRYPT_DECODE_ALLOC_FLAG | CRYPT_DECODE_SHARE_OID_STRING_FLAG, NULL, (BYTE *)&buf, &bufSize); @@ -1159,7 +1163,7 @@ static void test_decodeUnicodeName(DWORD dwEncoding) } /* test two RDN attrs */ bufSize = 0; - ret = CryptDecodeObjectEx(dwEncoding, X509_UNICODE_NAME, twoRDNsNoNull, + ret = pCryptDecodeObjectEx(dwEncoding, X509_UNICODE_NAME, twoRDNsNoNull, sizeof(twoRDNsNoNull), CRYPT_DECODE_ALLOC_FLAG | CRYPT_DECODE_SHARE_OID_STRING_FLAG, NULL, (BYTE *)&buf, &bufSize); @@ -1265,7 +1269,7 @@ static void test_encodeNameValue(DWORD dwEncoding) value.dwValueType = CERT_RDN_ENCODED_BLOB; value.Value.pbData = printableCommonNameValue; value.Value.cbData = sizeof(printableCommonNameValue); - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME_VALUE, &value, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME_VALUE, &value, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -1278,7 +1282,7 @@ static void test_encodeNameValue(DWORD dwEncoding) } for (i = 0; i < sizeof(nameValues) / sizeof(nameValues[0]); i++) { - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME_VALUE, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME_VALUE, &nameValues[i].value, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "Type %d: CryptEncodeObjectEx failed: %08x\n", @@ -1303,7 +1307,7 @@ static void test_decodeNameValue(DWORD dwEncoding) for (i = 0; i < sizeof(nameValues) / sizeof(nameValues[0]); i++) { - ret = CryptDecodeObjectEx(dwEncoding, X509_NAME_VALUE, + ret = pCryptDecodeObjectEx(dwEncoding, X509_NAME_VALUE, nameValues[i].encoded, nameValues[i].encoded[1] + 2, CRYPT_DECODE_ALLOC_FLAG | CRYPT_DECODE_SHARE_OID_STRING_FLAG, NULL, (BYTE *)&buf, &bufSize); @@ -1350,7 +1354,7 @@ static void test_encodeAltName(DWORD dwEncoding) char oid[] = "1.2.3"; /* Test with empty info */ - ret = CryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -1361,13 +1365,13 @@ static void test_encodeAltName(DWORD dwEncoding) /* Test with an empty entry */ info.cAltEntry = 1; info.rgAltEntry = &entry; - ret = CryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", GetLastError()); /* Test with an empty pointer */ entry.dwAltNameChoice = CERT_ALT_NAME_URL; - ret = CryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -1377,7 +1381,7 @@ static void test_encodeAltName(DWORD dwEncoding) } /* Test with a real URL */ U(entry).pwszURL = (LPWSTR)url; - ret = CryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -1387,7 +1391,7 @@ static void test_encodeAltName(DWORD dwEncoding) } /* Now with the URL containing an invalid IA5 char */ U(entry).pwszURL = (LPWSTR)nihongoURL; - ret = CryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == CRYPT_E_INVALID_IA5_STRING, "Expected CRYPT_E_INVALID_IA5_STRING, got %08x\n", GetLastError()); @@ -1397,7 +1401,7 @@ static void test_encodeAltName(DWORD dwEncoding) GET_CERT_ALT_NAME_VALUE_ERR_INDEX(size)); /* Now with the URL missing a scheme */ U(entry).pwszURL = (LPWSTR)dnsName; - ret = CryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -1407,7 +1411,7 @@ static void test_encodeAltName(DWORD dwEncoding) } /* Now with a DNS name */ entry.dwAltNameChoice = CERT_ALT_NAME_DNS_NAME; - ret = CryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -1420,7 +1424,7 @@ static void test_encodeAltName(DWORD dwEncoding) entry.dwAltNameChoice = CERT_ALT_NAME_IP_ADDRESS; U(entry).IPAddress.cbData = sizeof(localhost); U(entry).IPAddress.pbData = (LPBYTE)localhost; - ret = CryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -1431,7 +1435,7 @@ static void test_encodeAltName(DWORD dwEncoding) /* Test with OID */ entry.dwAltNameChoice = CERT_ALT_NAME_REGISTERED_ID; U(entry).pszRegisteredID = oid; - ret = CryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -1443,7 +1447,7 @@ static void test_encodeAltName(DWORD dwEncoding) entry.dwAltNameChoice = CERT_ALT_NAME_DIRECTORY_NAME; U(entry).DirectoryName.cbData = sizeof(encodedCommonName); U(entry).DirectoryName.pbData = (LPBYTE)encodedCommonName; - ret = CryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -1465,18 +1469,18 @@ static void test_decodeAltName(DWORD dwEncoding) CERT_ALT_NAME_INFO *info; /* Test some bogus ones first */ - ret = CryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, + ret = pCryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, unimplementedType, sizeof(unimplementedType), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(!ret && GetLastError() == CRYPT_E_ASN1_BADTAG, "Expected CRYPT_E_ASN1_BADTAG, got %08x\n", GetLastError()); - ret = CryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, + ret = pCryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, bogusType, sizeof(bogusType), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(!ret && GetLastError() == CRYPT_E_ASN1_CORRUPT, "Expected CRYPT_E_ASN1_CORRUPT, got %08x\n", GetLastError()); /* Now expected cases */ - ret = CryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, emptySequence, + ret = pCryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, emptySequence, emptySequence[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -1488,7 +1492,7 @@ static void test_decodeAltName(DWORD dwEncoding) info->cAltEntry); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, emptyURL, + ret = pCryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, emptyURL, emptyURL[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -1505,10 +1509,10 @@ static void test_decodeAltName(DWORD dwEncoding) "Expected empty URL\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, + ret = pCryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, emptyURLExtraBytes, sizeof(emptyURLExtraBytes), 0, NULL, NULL, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); - ret = CryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, encodedURL, + ret = pCryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, encodedURL, encodedURL[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -1524,7 +1528,7 @@ static void test_decodeAltName(DWORD dwEncoding) ok(!lstrcmpW(U(info->rgAltEntry[0]).pwszURL, url), "Unexpected URL\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, encodedDnsName, + ret = pCryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, encodedDnsName, encodedDnsName[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -1541,7 +1545,7 @@ static void test_decodeAltName(DWORD dwEncoding) "Unexpected DNS name\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, encodedIPAddr, + ret = pCryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, encodedIPAddr, encodedIPAddr[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -1561,7 +1565,7 @@ static void test_decodeAltName(DWORD dwEncoding) sizeof(localhost)), "Unexpected IP address value\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, encodedOidName, + ret = pCryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, encodedOidName, sizeof(encodedOidName), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -1578,7 +1582,7 @@ static void test_decodeAltName(DWORD dwEncoding) "Expected OID 1.2.3, got %s\n", U(info->rgAltEntry[0]).pszRegisteredID); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, + ret = pCryptDecodeObjectEx(dwEncoding, X509_ALTERNATE_NAME, encodedDirectoryName, sizeof(encodedDirectoryName), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -1677,7 +1681,7 @@ static void test_encodeUnicodeNameValue(DWORD dwEncoding) BOOL ret; CERT_NAME_VALUE value; - ret = CryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, NULL, + ret = pCryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, NULL, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got %08x\n", GetLastError()); @@ -1685,23 +1689,23 @@ static void test_encodeUnicodeNameValue(DWORD dwEncoding) value.dwValueType = 0; /* aka CERT_RDN_ANY_TYPE */ value.Value.pbData = NULL; value.Value.cbData = 0; - ret = CryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, &value, + ret = pCryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, &value, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == CRYPT_E_NOT_CHAR_STRING, "Expected CRYPT_E_NOT_CHAR_STRING, got %08x\n", GetLastError()); value.dwValueType = CERT_RDN_ENCODED_BLOB; - ret = CryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, &value, + ret = pCryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, &value, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == CRYPT_E_NOT_CHAR_STRING, "Expected CRYPT_E_NOT_CHAR_STRING, got %08x\n", GetLastError()); value.dwValueType = CERT_RDN_ANY_TYPE; value.Value.pbData = (LPBYTE)oneW; - ret = CryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, &value, + ret = pCryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, &value, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == CRYPT_E_NOT_CHAR_STRING, "Expected CRYPT_E_NOT_CHAR_STRING, got %08x\n", GetLastError()); value.Value.cbData = sizeof(oneW); - ret = CryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, &value, + ret = pCryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, &value, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == CRYPT_E_NOT_CHAR_STRING, "Expected CRYPT_E_NOT_CHAR_STRING, got %08x\n", GetLastError()); @@ -1709,7 +1713,7 @@ static void test_encodeUnicodeNameValue(DWORD dwEncoding) value.dwValueType = CERT_RDN_ENCODED_BLOB; value.Value.pbData = oneUniversal; value.Value.cbData = sizeof(oneUniversal); - ret = CryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, &value, + ret = pCryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, &value, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == CRYPT_E_NOT_CHAR_STRING, "Expected CRYPT_E_NOT_CHAR_STRING, got %08x\n", GetLastError()); @@ -1719,7 +1723,7 @@ static void test_encodeUnicodeNameValue(DWORD dwEncoding) { value.Value.pbData = (LPBYTE)unicodeErrors[i].str; value.dwValueType = unicodeErrors[i].valueType; - ret = CryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, &value, + ret = pCryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, &value, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == unicodeErrors[i].error, "Value type %d: expected %08x, got %08x\n", value.dwValueType, @@ -1734,7 +1738,7 @@ static void test_encodeUnicodeNameValue(DWORD dwEncoding) { value.Value.pbData = (LPBYTE)unicodeResults[i].str; value.dwValueType = unicodeResults[i].valueType; - ret = CryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, &value, + ret = pCryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, &value, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -1755,7 +1759,7 @@ static void test_encodeUnicodeNameValue(DWORD dwEncoding) { value.Value.pbData = (LPBYTE)unicodeWeirdness[i].str; value.dwValueType = unicodeWeirdness[i].valueType; - ret = CryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, &value, + ret = pCryptEncodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, &value, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -1787,7 +1791,7 @@ static void test_decodeUnicodeNameValue(DWORD dwEncoding) BOOL ret; DWORD size = 0; - ret = CryptDecodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, + ret = pCryptDecodeObjectEx(dwEncoding, X509_UNICODE_NAME_VALUE, unicodeResults[i].encoded.pbData, unicodeResults[i].encoded.cbData, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -1841,7 +1845,7 @@ static void test_encodeOctets(DWORD dwEncoding) blob.cbData = strlen((const char*)octets[i].val); blob.pbData = (BYTE*)octets[i].val; - ret = CryptEncodeObjectEx(dwEncoding, X509_OCTET_STRING, &blob, + ret = pCryptEncodeObjectEx(dwEncoding, X509_OCTET_STRING, &blob, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptEncodeObjectEx failed: %d\n", GetLastError()); if (buf) @@ -1867,7 +1871,7 @@ static void test_decodeOctets(DWORD dwEncoding) BOOL ret; DWORD bufSize = 0; - ret = CryptDecodeObjectEx(dwEncoding, X509_OCTET_STRING, + ret = pCryptDecodeObjectEx(dwEncoding, X509_OCTET_STRING, (BYTE *)octets[i].encoded, octets[i].encoded[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -1929,7 +1933,7 @@ static void test_encodeBits(DWORD dwEncoding) blob.cbData = sizeof(bytesToEncode); blob.pbData = (BYTE *)bytesToEncode; blob.cUnusedBits = bits[i].cUnusedBits; - ret = CryptEncodeObjectEx(dwEncoding, X509_BITS, &blob, + ret = pCryptEncodeObjectEx(dwEncoding, X509_BITS, &blob, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -1956,7 +1960,7 @@ static void test_decodeBits(DWORD dwEncoding) /* normal cases */ for (i = 0; i < sizeof(bits) / sizeof(bits[0]); i++) { - ret = CryptDecodeObjectEx(dwEncoding, X509_BITS, bits[i].encoded, + ret = pCryptDecodeObjectEx(dwEncoding, X509_BITS, bits[i].encoded, bits[i].encoded[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -1979,7 +1983,7 @@ static void test_decodeBits(DWORD dwEncoding) /* special case: check that something that's valid in BER but not in DER * decodes successfully */ - ret = CryptDecodeObjectEx(dwEncoding, X509_BITS, ber, ber[1] + 2, + ret = pCryptDecodeObjectEx(dwEncoding, X509_BITS, ber, ber[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -2043,7 +2047,7 @@ static void test_encodeBasicConstraints(DWORD dwEncoding) /* First test with the simpler info2 */ for (i = 0; i < sizeof(constraints2) / sizeof(constraints2[0]); i++) { - ret = CryptEncodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS2, + ret = pCryptEncodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS2, &constraints2[i].info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); @@ -2061,7 +2065,7 @@ static void test_encodeBasicConstraints(DWORD dwEncoding) info.SubjectType.cbData = 0; info.fPathLenConstraint = FALSE; info.cSubtreesConstraint = 0; - ret = CryptEncodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -2076,7 +2080,7 @@ static void test_encodeBasicConstraints(DWORD dwEncoding) */ info.cSubtreesConstraint = 1; info.rgSubtreesConstraint = &nameBlob; - ret = CryptEncodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -2104,7 +2108,7 @@ static void test_decodeBasicConstraints(DWORD dwEncoding) /* First test with simpler info2 */ for (i = 0; i < sizeof(constraints2) / sizeof(constraints2[0]); i++) { - ret = CryptDecodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS2, + ret = pCryptDecodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS2, constraints2[i].encoded, constraints2[i].encoded[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed for item %d: %08x\n", i, @@ -2121,17 +2125,17 @@ static void test_decodeBasicConstraints(DWORD dwEncoding) } /* Check with the order of encoded elements inverted */ buf = (PBYTE)1; - ret = CryptDecodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS2, + ret = pCryptDecodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS2, inverted, inverted[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(!ret && GetLastError() == CRYPT_E_ASN1_CORRUPT, "Expected CRYPT_E_ASN1_CORRUPT, got %08x\n", GetLastError()); ok(!buf, "Expected buf to be set to NULL\n"); /* Check with a non-DER bool */ - ret = CryptDecodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS2, + ret = pCryptDecodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS2, badBool.encoded, badBool.encoded[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); - ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); + ok(ret, "pCryptDecodeObjectEx failed: %08x\n", GetLastError()); if (buf) { CERT_BASIC_CONSTRAINTS2_INFO *info = @@ -2141,13 +2145,13 @@ static void test_decodeBasicConstraints(DWORD dwEncoding) LocalFree(buf); } /* Check with a non-basic constraints value */ - ret = CryptDecodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS2, + ret = pCryptDecodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS2, (LPBYTE)encodedCommonName, encodedCommonName[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(!ret && GetLastError() == CRYPT_E_ASN1_CORRUPT, "Expected CRYPT_E_ASN1_CORRUPT, got %08x\n", GetLastError()); /* Now check with the more complex CERT_BASIC_CONSTRAINTS_INFO */ - ret = CryptDecodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS, + ret = pCryptDecodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS, emptyConstraint, sizeof(emptyConstraint), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -2160,7 +2164,7 @@ static void test_decodeBasicConstraints(DWORD dwEncoding) ok(info->cSubtreesConstraint == 0, "Expected no subtree constraints\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS, + ret = pCryptDecodeObjectEx(dwEncoding, X509_BASIC_CONSTRAINTS, constraintWithDomainName, sizeof(constraintWithDomainName), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -2228,7 +2232,7 @@ static void test_encodeRsaPublicKey(DWORD dwEncoding) memcpy(toEncode + sizeof(BLOBHEADER) + sizeof(RSAPUBKEY), modulus1, sizeof(modulus1)); - ret = CryptEncodeObjectEx(dwEncoding, RSA_CSP_PUBLICKEYBLOB, + ret = pCryptEncodeObjectEx(dwEncoding, RSA_CSP_PUBLICKEYBLOB, toEncode, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(!ret && GetLastError() == E_INVALIDARG, @@ -2236,7 +2240,7 @@ static void test_encodeRsaPublicKey(DWORD dwEncoding) /* Now with a bogus reserved field */ hdr->bType = PUBLICKEYBLOB; hdr->reserved = 1; - ret = CryptEncodeObjectEx(dwEncoding, RSA_CSP_PUBLICKEYBLOB, + ret = pCryptEncodeObjectEx(dwEncoding, RSA_CSP_PUBLICKEYBLOB, toEncode, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); if (buf) @@ -2249,7 +2253,7 @@ static void test_encodeRsaPublicKey(DWORD dwEncoding) /* Now with a bogus blob version */ hdr->reserved = 0; hdr->bVersion = 0; - ret = CryptEncodeObjectEx(dwEncoding, RSA_CSP_PUBLICKEYBLOB, + ret = pCryptEncodeObjectEx(dwEncoding, RSA_CSP_PUBLICKEYBLOB, toEncode, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); if (buf) @@ -2262,7 +2266,7 @@ static void test_encodeRsaPublicKey(DWORD dwEncoding) /* And with a bogus alg ID */ hdr->bVersion = CUR_BLOB_VERSION; hdr->aiKeyAlg = CALG_DES; - ret = CryptEncodeObjectEx(dwEncoding, RSA_CSP_PUBLICKEYBLOB, + ret = pCryptEncodeObjectEx(dwEncoding, RSA_CSP_PUBLICKEYBLOB, toEncode, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); if (buf) @@ -2274,11 +2278,11 @@ static void test_encodeRsaPublicKey(DWORD dwEncoding) } /* Check a couple of RSA-related OIDs */ hdr->aiKeyAlg = CALG_RSA_KEYX; - ret = CryptEncodeObjectEx(dwEncoding, szOID_RSA_RSA, + ret = pCryptEncodeObjectEx(dwEncoding, szOID_RSA_RSA, toEncode, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(!ret && GetLastError() == ERROR_FILE_NOT_FOUND, "Expected ERROR_FILE_NOT_FOUND, got %08x\n", GetLastError()); - ret = CryptEncodeObjectEx(dwEncoding, szOID_RSA_SHA1RSA, + ret = pCryptEncodeObjectEx(dwEncoding, szOID_RSA_SHA1RSA, toEncode, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(!ret && GetLastError() == ERROR_FILE_NOT_FOUND, "Expected ERROR_FILE_NOT_FOUND, got %08x\n", GetLastError()); @@ -2288,7 +2292,7 @@ static void test_encodeRsaPublicKey(DWORD dwEncoding) { memcpy(toEncode + sizeof(BLOBHEADER) + sizeof(RSAPUBKEY), rsaPubKeys[i].modulus, rsaPubKeys[i].modulusLen); - ret = CryptEncodeObjectEx(dwEncoding, RSA_CSP_PUBLICKEYBLOB, + ret = pCryptEncodeObjectEx(dwEncoding, RSA_CSP_PUBLICKEYBLOB, toEncode, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -2311,18 +2315,18 @@ static void test_decodeRsaPublicKey(DWORD dwEncoding) BOOL ret; /* Try with a bad length */ - ret = CryptDecodeObjectEx(dwEncoding, RSA_CSP_PUBLICKEYBLOB, + ret = pCryptDecodeObjectEx(dwEncoding, RSA_CSP_PUBLICKEYBLOB, rsaPubKeys[0].encoded, rsaPubKeys[0].encoded[1], CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(!ret && GetLastError() == CRYPT_E_ASN1_EOD, "Expected CRYPT_E_ASN1_EOD, got %08x\n", CRYPT_E_ASN1_EOD); /* Try with a couple of RSA-related OIDs */ - ret = CryptDecodeObjectEx(dwEncoding, szOID_RSA_RSA, + ret = pCryptDecodeObjectEx(dwEncoding, szOID_RSA_RSA, rsaPubKeys[0].encoded, rsaPubKeys[0].encoded[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(!ret && GetLastError() == ERROR_FILE_NOT_FOUND, "Expected ERROR_FILE_NOT_FOUND, got %08x\n", GetLastError()); - ret = CryptDecodeObjectEx(dwEncoding, szOID_RSA_SHA1RSA, + ret = pCryptDecodeObjectEx(dwEncoding, szOID_RSA_SHA1RSA, rsaPubKeys[0].encoded, rsaPubKeys[0].encoded[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(!ret && GetLastError() == ERROR_FILE_NOT_FOUND, @@ -2331,7 +2335,7 @@ static void test_decodeRsaPublicKey(DWORD dwEncoding) for (i = 0; i < sizeof(rsaPubKeys) / sizeof(rsaPubKeys[0]); i++) { bufSize = 0; - ret = CryptDecodeObjectEx(dwEncoding, RSA_CSP_PUBLICKEYBLOB, + ret = pCryptDecodeObjectEx(dwEncoding, RSA_CSP_PUBLICKEYBLOB, rsaPubKeys[i].encoded, rsaPubKeys[i].encoded[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -2394,7 +2398,7 @@ static void test_encodeSequenceOfAny(DWORD dwEncoding) seq.cValue = sizeof(ints) / sizeof(ints[0]); seq.rgValue = blobs; - ret = CryptEncodeObjectEx(dwEncoding, X509_SEQUENCE_OF_ANY, &seq, + ret = pCryptEncodeObjectEx(dwEncoding, X509_SEQUENCE_OF_ANY, &seq, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -2408,7 +2412,7 @@ static void test_encodeSequenceOfAny(DWORD dwEncoding) */ blobs[0].cbData = times[0].encodedTime[1] + 2; blobs[0].pbData = (BYTE *)times[0].encodedTime; - ret = CryptEncodeObjectEx(dwEncoding, X509_SEQUENCE_OF_ANY, &seq, + ret = pCryptEncodeObjectEx(dwEncoding, X509_SEQUENCE_OF_ANY, &seq, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -2426,7 +2430,7 @@ static void test_decodeSequenceOfAny(DWORD dwEncoding) BYTE *buf = NULL; DWORD bufSize = 0; - ret = CryptDecodeObjectEx(dwEncoding, X509_SEQUENCE_OF_ANY, intSequence, + ret = pCryptDecodeObjectEx(dwEncoding, X509_SEQUENCE_OF_ANY, intSequence, intSequence[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -2446,7 +2450,7 @@ static void test_decodeSequenceOfAny(DWORD dwEncoding) } LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_SEQUENCE_OF_ANY, mixedSequence, + ret = pCryptDecodeObjectEx(dwEncoding, X509_SEQUENCE_OF_ANY, mixedSequence, mixedSequence[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -2502,7 +2506,7 @@ static void test_encodeExtensions(DWORD dwEncoding) BYTE *buf = NULL; DWORD bufSize = 0; - ret = CryptEncodeObjectEx(dwEncoding, X509_EXTENSIONS, &exts[i].exts, + ret = pCryptEncodeObjectEx(dwEncoding, X509_EXTENSIONS, &exts[i].exts, CRYPT_ENCODE_ALLOC_FLAG, NULL, &buf, &bufSize); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -2526,7 +2530,7 @@ static void test_decodeExtensions(DWORD dwEncoding) BYTE *buf = NULL; DWORD bufSize = 0; - ret = CryptDecodeObjectEx(dwEncoding, X509_EXTENSIONS, + ret = pCryptDecodeObjectEx(dwEncoding, X509_EXTENSIONS, exts[i].encoded, exts[i].encoded[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -2629,7 +2633,7 @@ static void test_encodePublicKeyInfo(DWORD dwEncoding) BYTE *buf = NULL; DWORD bufSize = 0; - ret = CryptEncodeObjectEx(dwEncoding, X509_PUBLIC_KEY_INFO, + ret = pCryptEncodeObjectEx(dwEncoding, X509_PUBLIC_KEY_INFO, &pubKeys[i].info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); @@ -2686,7 +2690,7 @@ static void test_decodePublicKeyInfo(DWORD dwEncoding) for (i = 0; i < sizeof(pubKeys) / sizeof(pubKeys[0]); i++) { /* The NULL form decodes to the decoded member */ - ret = CryptDecodeObjectEx(dwEncoding, X509_PUBLIC_KEY_INFO, + ret = pCryptDecodeObjectEx(dwEncoding, X509_PUBLIC_KEY_INFO, pubKeys[i].encoded, pubKeys[i].encoded[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -2697,7 +2701,7 @@ static void test_decodePublicKeyInfo(DWORD dwEncoding) LocalFree(buf); } /* The non-NULL form decodes to the original */ - ret = CryptDecodeObjectEx(dwEncoding, X509_PUBLIC_KEY_INFO, + ret = pCryptDecodeObjectEx(dwEncoding, X509_PUBLIC_KEY_INFO, pubKeys[i].encodedNoNull, pubKeys[i].encodedNoNull[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -2708,7 +2712,7 @@ static void test_decodePublicKeyInfo(DWORD dwEncoding) } } /* Test with bogus (not valid DER) parameters */ - ret = CryptDecodeObjectEx(dwEncoding, X509_PUBLIC_KEY_INFO, + ret = pCryptDecodeObjectEx(dwEncoding, X509_PUBLIC_KEY_INFO, bogusPubKeyInfo, bogusPubKeyInfo[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(!ret && GetLastError() == CRYPT_E_ASN1_CORRUPT, @@ -2801,12 +2805,12 @@ static void test_encodeCertToBeSigned(DWORD dwEncoding) CERT_EXTENSION ext; /* Test with NULL pvStructInfo */ - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, NULL, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, NULL, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got %08x\n", GetLastError()); /* Test with a V1 cert */ - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -2818,7 +2822,7 @@ static void test_encodeCertToBeSigned(DWORD dwEncoding) } /* Test v2 cert */ info.dwVersion = CERT_V2; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -2829,7 +2833,7 @@ static void test_encodeCertToBeSigned(DWORD dwEncoding) } /* Test v3 cert */ info.dwVersion = CERT_V3; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -2844,7 +2848,7 @@ static void test_encodeCertToBeSigned(DWORD dwEncoding) info.dwVersion = CERT_V1; info.cExtension = 1; info.rgExtension = &criticalExt; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -2856,7 +2860,7 @@ static void test_encodeCertToBeSigned(DWORD dwEncoding) /* test v1 cert with a serial number */ info.SerialNumber.cbData = sizeof(serialNum); info.SerialNumber.pbData = (BYTE *)serialNum; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -2869,7 +2873,7 @@ static void test_encodeCertToBeSigned(DWORD dwEncoding) info.Issuer.pbData = (BYTE *)encodedCommonName; info.Subject.cbData = sizeof(encodedCommonName); info.Subject.pbData = (BYTE *)encodedCommonName; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -2881,7 +2885,7 @@ static void test_encodeCertToBeSigned(DWORD dwEncoding) info.SubjectPublicKeyInfo.Algorithm.pszObjId = oid_rsa_rsa; info.SubjectPublicKeyInfo.PublicKey.cbData = sizeof(aKey); info.SubjectPublicKeyInfo.PublicKey.pbData = (LPBYTE)aKey; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -2904,7 +2908,7 @@ static void test_encodeCertToBeSigned(DWORD dwEncoding) ext.Value.pbData = (BYTE *)octetCommonNameValue; info.cExtension = 1; info.rgExtension = &ext; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -2923,11 +2927,11 @@ static void test_decodeCertToBeSigned(DWORD dwEncoding) DWORD size = 0, i; /* Test with NULL pbEncoded */ - ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, NULL, 0, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, NULL, 0, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == CRYPT_E_ASN1_EOD, "Expected CRYPT_E_ASN1_EOD, got %08x\n", GetLastError()); - ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, NULL, 1, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, NULL, 1, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got %08x\n", GetLastError()); @@ -2937,13 +2941,13 @@ static void test_decodeCertToBeSigned(DWORD dwEncoding) */ for (i = 0; i < sizeof(corruptCerts) / sizeof(corruptCerts[0]); i++) { - ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, corruptCerts[i], corruptCerts[i][1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret, "Expected failure\n"); } /* Now check with serial number, subject and issuer specified */ - ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, bigCert, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, bigCert, sizeof(bigCert), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -2967,7 +2971,7 @@ static void test_decodeCertToBeSigned(DWORD dwEncoding) LocalFree(buf); } /* Check again with pub key specified */ - ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, v1CertWithPubKey, sizeof(v1CertWithPubKey), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -3029,7 +3033,7 @@ static void test_encodeCert(DWORD dwEncoding) BYTE *buf = NULL; DWORD bufSize = 0; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &bufSize); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -3046,7 +3050,7 @@ static void test_decodeCert(DWORD dwEncoding) BYTE *buf = NULL; DWORD size = 0; - ret = CryptDecodeObjectEx(dwEncoding, X509_CERT, signedBigCert, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CERT, signedBigCert, sizeof(signedBigCert), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -3064,7 +3068,7 @@ static void test_decodeCert(DWORD dwEncoding) LocalFree(buf); } /* A signed cert decodes as a CERT_INFO too */ - ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, signedBigCert, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, signedBigCert, sizeof(signedBigCert), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -3116,14 +3120,14 @@ static void test_encodeCRLDistPoints(DWORD dwEncoding) DWORD size = 0; /* Test with an empty info */ - ret = CryptEncodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", GetLastError()); /* Test with one empty dist point */ info.cDistPoint = 1; info.rgDistPoint = &point; - ret = CryptEncodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -3137,7 +3141,7 @@ static void test_encodeCRLDistPoints(DWORD dwEncoding) U(entry).pwszURL = (LPWSTR)nihongoURL; U(point.DistPointName).FullName.cAltEntry = 1; U(point.DistPointName).FullName.rgAltEntry = &entry; - ret = CryptEncodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == CRYPT_E_INVALID_IA5_STRING, "Expected CRYPT_E_INVALID_IA5_STRING, got %08x\n", GetLastError()); @@ -3147,7 +3151,7 @@ static void test_encodeCRLDistPoints(DWORD dwEncoding) GET_CERT_ALT_NAME_VALUE_ERR_INDEX(size)); /* A dist point with (just) a valid name */ U(entry).pwszURL = (LPWSTR)url; - ret = CryptEncodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -3159,7 +3163,7 @@ static void test_encodeCRLDistPoints(DWORD dwEncoding) point.DistPointName.dwDistPointNameChoice = CRL_DIST_POINT_NO_NAME; point.ReasonFlags.cbData = sizeof(crlReason); point.ReasonFlags.pbData = (LPBYTE)&crlReason; - ret = CryptEncodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -3171,7 +3175,7 @@ static void test_encodeCRLDistPoints(DWORD dwEncoding) point.ReasonFlags.cbData = 0; point.CRLIssuer.cAltEntry = 1; point.CRLIssuer.rgAltEntry = &entry; - ret = CryptEncodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -3181,7 +3185,7 @@ static void test_encodeCRLDistPoints(DWORD dwEncoding) } /* A dist point with both a name and an issuer */ point.DistPointName.dwDistPointNameChoice = CRL_DIST_POINT_FULL_NAME; - ret = CryptEncodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -3201,7 +3205,7 @@ static void test_decodeCRLDistPoints(DWORD dwEncoding) PCRL_DIST_POINT point; PCERT_ALT_NAME_ENTRY entry; - ret = CryptDecodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, emptyDistPoint, emptyDistPoint[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (ret) @@ -3219,7 +3223,7 @@ static void test_decodeCRLDistPoints(DWORD dwEncoding) ok(point->CRLIssuer.cAltEntry == 0, "Expected no issuer\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, distPointWithUrl, distPointWithUrl[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (ret) @@ -3245,7 +3249,7 @@ static void test_decodeCRLDistPoints(DWORD dwEncoding) ok(point->CRLIssuer.cAltEntry == 0, "Expected no issuer\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, distPointWithReason, distPointWithReason[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (ret) @@ -3267,7 +3271,7 @@ static void test_decodeCRLDistPoints(DWORD dwEncoding) ok(point->CRLIssuer.cAltEntry == 0, "Expected no issuer\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CRL_DIST_POINTS, distPointWithUrlAndIssuer, distPointWithUrlAndIssuer[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (ret) @@ -3314,7 +3318,7 @@ static void test_encodeCRLIssuingDistPoint(DWORD dwEncoding) CRL_ISSUING_DIST_POINT point = { { 0 } }; CERT_ALT_NAME_ENTRY entry; - ret = CryptEncodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, NULL, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, NULL, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (!ret && GetLastError() == ERROR_FILE_NOT_FOUND) { @@ -3323,7 +3327,7 @@ static void test_encodeCRLIssuingDistPoint(DWORD dwEncoding) } ok(!ret && GetLastError() == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got %08x\n", GetLastError()); - ret = CryptEncodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, &point, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, &point, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -3335,7 +3339,7 @@ static void test_encodeCRLIssuingDistPoint(DWORD dwEncoding) /* nonsensical flags */ point.fOnlyContainsUserCerts = TRUE; point.fOnlyContainsCACerts = TRUE; - ret = CryptEncodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, &point, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, &point, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -3347,14 +3351,14 @@ static void test_encodeCRLIssuingDistPoint(DWORD dwEncoding) /* unimplemented name type */ point.fOnlyContainsCACerts = point.fOnlyContainsUserCerts = FALSE; point.DistPointName.dwDistPointNameChoice = CRL_DIST_POINT_ISSUER_RDN_NAME; - ret = CryptEncodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, &point, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, &point, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", GetLastError()); /* empty name */ point.DistPointName.dwDistPointNameChoice = CRL_DIST_POINT_FULL_NAME; U(point.DistPointName).FullName.cAltEntry = 0; - ret = CryptEncodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, &point, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, &point, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -3368,7 +3372,7 @@ static void test_encodeCRLIssuingDistPoint(DWORD dwEncoding) U(entry).pwszURL = (LPWSTR)url; U(point.DistPointName).FullName.cAltEntry = 1; U(point.DistPointName).FullName.rgAltEntry = &entry; - ret = CryptEncodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, &point, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, &point, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -3453,7 +3457,7 @@ static void test_decodeCRLIssuingDistPoint(DWORD dwEncoding) DWORD size = 0; CRL_ISSUING_DIST_POINT point = { { 0 } }; - ret = CryptDecodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, + ret = pCryptDecodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, emptySequence, emptySequence[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (!ret && GetLastError() == ERROR_FILE_NOT_FOUND) @@ -3467,7 +3471,7 @@ static void test_decodeCRLIssuingDistPoint(DWORD dwEncoding) compareCRLIssuingDistPoints(&point, (PCRL_ISSUING_DIST_POINT)buf); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, + ret = pCryptDecodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, badFlagsIDP, badFlagsIDP[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -3477,7 +3481,7 @@ static void test_decodeCRLIssuingDistPoint(DWORD dwEncoding) compareCRLIssuingDistPoints(&point, (PCRL_ISSUING_DIST_POINT)buf); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, + ret = pCryptDecodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, emptyNameIDP, emptyNameIDP[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -3489,7 +3493,7 @@ static void test_decodeCRLIssuingDistPoint(DWORD dwEncoding) compareCRLIssuingDistPoints(&point, (PCRL_ISSUING_DIST_POINT)buf); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, + ret = pCryptDecodeObjectEx(dwEncoding, X509_ISSUING_DIST_POINT, urlIDP, urlIDP[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); if (ret) @@ -3568,7 +3572,7 @@ static void test_encodeCRLToBeSigned(DWORD dwEncoding) CERT_EXTENSION ext; /* Test with a V1 CRL */ - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -3579,7 +3583,7 @@ static void test_encodeCRLToBeSigned(DWORD dwEncoding) } /* Test v2 CRL */ info.dwVersion = CRL_V2; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -3593,7 +3597,7 @@ static void test_encodeCRLToBeSigned(DWORD dwEncoding) info.dwVersion = CRL_V1; info.Issuer.cbData = sizeof(encodedCommonName); info.Issuer.pbData = (BYTE *)encodedCommonName; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -3604,13 +3608,13 @@ static void test_encodeCRLToBeSigned(DWORD dwEncoding) } /* v1 CRL with a name and a NULL entry pointer */ info.cCRLEntry = 1; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got %08x\n", GetLastError()); /* now set an empty entry */ info.rgCRLEntry = &entry; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -3623,7 +3627,7 @@ static void test_encodeCRLToBeSigned(DWORD dwEncoding) /* an entry with a serial number */ entry.SerialNumber.cbData = sizeof(serialNum); entry.SerialNumber.pbData = (BYTE *)serialNum; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -3636,9 +3640,9 @@ static void test_encodeCRLToBeSigned(DWORD dwEncoding) /* an entry with an extension */ entry.cExtension = 1; entry.rgExtension = &criticalExt; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); - ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); + ok(ret, "pCryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) { ok(size == sizeof(v1CRLWithEntryExt), "Wrong size %d\n", size); @@ -3649,7 +3653,7 @@ static void test_encodeCRLToBeSigned(DWORD dwEncoding) entry.cExtension = 0; info.cExtension = 1; info.rgExtension = &criticalExt; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -3661,7 +3665,7 @@ static void test_encodeCRLToBeSigned(DWORD dwEncoding) /* a v2 CRL with an extension, this time non-critical */ info.dwVersion = CRL_V2; info.rgExtension = &nonCriticalExt; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -3676,7 +3680,7 @@ static void test_encodeCRLToBeSigned(DWORD dwEncoding) ext.Value.cbData = sizeof(urlIDP); ext.Value.pbData = (LPBYTE)urlIDP; entry.rgExtension = &ext; - ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -4241,14 +4245,14 @@ static void test_decodeCRLToBeSigned(DWORD dwEncoding) for (i = 0; i < sizeof(corruptCRLs) / sizeof(corruptCRLs[0]); i++) { - ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, corruptCRLs[i], corruptCRLs[i][1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && (GetLastError() == CRYPT_E_ASN1_CORRUPT), "Expected CRYPT_E_ASN1_CORRUPT, got %08x\n", GetLastError()); } /* at a minimum, a CRL must contain an issuer: */ - ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, v1CRLWithIssuer, v1CRLWithIssuer[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4266,13 +4270,13 @@ static void test_decodeCRLToBeSigned(DWORD dwEncoding) LocalFree(buf); } /* check decoding with an empty CRL entry */ - ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, v1CRLWithIssuerAndEmptyEntry, v1CRLWithIssuerAndEmptyEntry[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == CRYPT_E_ASN1_CORRUPT, "Expected CRYPT_E_ASN1_CORRUPT, got %08x\n", GetLastError()); /* with a real CRL entry */ - ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, v1CRLWithIssuerAndEntry, v1CRLWithIssuerAndEntry[1] + 2, CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4299,7 +4303,7 @@ static void test_decodeCRLToBeSigned(DWORD dwEncoding) LocalFree(buf); } /* a real CRL from verisign that has extensions */ - ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, verisignCRL, sizeof(verisignCRL), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4318,7 +4322,7 @@ static void test_decodeCRLToBeSigned(DWORD dwEncoding) LocalFree(buf); } /* another real CRL from verisign that has lots of entries */ - ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, verisignCRLWithLotsOfEntries, sizeof(verisignCRLWithLotsOfEntries), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4334,7 +4338,7 @@ static void test_decodeCRLToBeSigned(DWORD dwEncoding) LocalFree(buf); } /* and finally, with an extension */ - ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, v1CRLWithExt, sizeof(v1CRLWithExt), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4362,7 +4366,7 @@ static void test_decodeCRLToBeSigned(DWORD dwEncoding) info->cExtension); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, v2CRLWithExt, sizeof(v2CRLWithExt), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4375,7 +4379,7 @@ static void test_decodeCRLToBeSigned(DWORD dwEncoding) LocalFree(buf); } /* And again, with an issuing dist point */ - ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, + ret = pCryptDecodeObjectEx(dwEncoding, X509_CERT_CRL_TO_BE_SIGNED, v2CRLWithIssuingDistPoint, sizeof(v2CRLWithIssuingDistPoint), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4405,7 +4409,7 @@ static void test_encodeEnhancedKeyUsage(DWORD dwEncoding) /* Test with empty usage */ usage.cUsageIdentifier = 0; - ret = CryptEncodeObjectEx(dwEncoding, X509_ENHANCED_KEY_USAGE, &usage, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ENHANCED_KEY_USAGE, &usage, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -4417,7 +4421,7 @@ static void test_encodeEnhancedKeyUsage(DWORD dwEncoding) /* Test with a few usages */ usage.cUsageIdentifier = sizeof(keyUsages) / sizeof(keyUsages[0]); usage.rgpszUsageIdentifier = (LPSTR *)keyUsages; - ret = CryptEncodeObjectEx(dwEncoding, X509_ENHANCED_KEY_USAGE, &usage, + ret = pCryptEncodeObjectEx(dwEncoding, X509_ENHANCED_KEY_USAGE, &usage, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -4434,7 +4438,7 @@ static void test_decodeEnhancedKeyUsage(DWORD dwEncoding) LPBYTE buf = NULL; DWORD size = 0; - ret = CryptDecodeObjectEx(dwEncoding, X509_ENHANCED_KEY_USAGE, + ret = pCryptDecodeObjectEx(dwEncoding, X509_ENHANCED_KEY_USAGE, emptySequence, sizeof(emptySequence), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4448,7 +4452,7 @@ static void test_decodeEnhancedKeyUsage(DWORD dwEncoding) usage->cUsageIdentifier); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_ENHANCED_KEY_USAGE, + ret = pCryptDecodeObjectEx(dwEncoding, X509_ENHANCED_KEY_USAGE, encodedUsage, sizeof(encodedUsage), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4485,7 +4489,7 @@ static void test_encodeAuthorityKeyId(DWORD dwEncoding) DWORD size = 0; /* Test with empty id */ - ret = CryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -4497,7 +4501,7 @@ static void test_encodeAuthorityKeyId(DWORD dwEncoding) /* With just a key id */ info.KeyId.cbData = sizeof(keyId); info.KeyId.pbData = keyId; - ret = CryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -4510,7 +4514,7 @@ static void test_encodeAuthorityKeyId(DWORD dwEncoding) info.KeyId.cbData = 0; info.CertIssuer.cbData = sizeof(encodedCommonName); info.CertIssuer.pbData = (BYTE *)encodedCommonName; - ret = CryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -4524,7 +4528,7 @@ static void test_encodeAuthorityKeyId(DWORD dwEncoding) info.CertIssuer.cbData = 0; info.CertSerialNumber.cbData = sizeof(serialNum); info.CertSerialNumber.pbData = (BYTE *)serialNum; - ret = CryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -4542,7 +4546,7 @@ static void test_decodeAuthorityKeyId(DWORD dwEncoding) LPBYTE buf = NULL; DWORD size = 0; - ret = CryptDecodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID, + ret = pCryptDecodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID, emptySequence, sizeof(emptySequence), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4557,7 +4561,7 @@ static void test_decodeAuthorityKeyId(DWORD dwEncoding) ok(info->CertSerialNumber.cbData == 0, "Expected no serial number\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID, + ret = pCryptDecodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID, authorityKeyIdWithId, sizeof(authorityKeyIdWithId), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4574,7 +4578,7 @@ static void test_decodeAuthorityKeyId(DWORD dwEncoding) ok(info->CertSerialNumber.cbData == 0, "Expected no serial number\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID, + ret = pCryptDecodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID, authorityKeyIdWithIssuer, sizeof(authorityKeyIdWithIssuer), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4592,7 +4596,7 @@ static void test_decodeAuthorityKeyId(DWORD dwEncoding) ok(info->CertSerialNumber.cbData == 0, "Expected no serial number\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID, + ret = pCryptDecodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID, authorityKeyIdWithSerial, sizeof(authorityKeyIdWithSerial), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4625,7 +4629,7 @@ static void test_encodeAuthorityKeyId2(DWORD dwEncoding) DWORD size = 0; /* Test with empty id */ - ret = CryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -4637,7 +4641,7 @@ static void test_encodeAuthorityKeyId2(DWORD dwEncoding) /* With just a key id */ info.KeyId.cbData = sizeof(keyId); info.KeyId.pbData = keyId; - ret = CryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -4651,16 +4655,16 @@ static void test_encodeAuthorityKeyId2(DWORD dwEncoding) info.KeyId.cbData = 0; info.AuthorityCertIssuer.cAltEntry = 1; info.AuthorityCertIssuer.rgAltEntry = &entry; - ret = CryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", GetLastError()); /* With an issuer name */ entry.dwAltNameChoice = CERT_ALT_NAME_URL; U(entry).pwszURL = (LPWSTR)url; - ret = CryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); - ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); + ok(ret, "pCryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) { ok(size == sizeof(authorityKeyIdWithIssuerUrl), "Unexpected size %d\n", @@ -4673,7 +4677,7 @@ static void test_encodeAuthorityKeyId2(DWORD dwEncoding) info.AuthorityCertIssuer.cAltEntry = 0; info.AuthorityCertSerialNumber.cbData = sizeof(serialNum); info.AuthorityCertSerialNumber.pbData = (BYTE *)serialNum; - ret = CryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, &info, + ret = pCryptEncodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (buf) @@ -4691,7 +4695,7 @@ static void test_decodeAuthorityKeyId2(DWORD dwEncoding) LPBYTE buf = NULL; DWORD size = 0; - ret = CryptDecodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, + ret = pCryptDecodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, emptySequence, sizeof(emptySequence), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4708,7 +4712,7 @@ static void test_decodeAuthorityKeyId2(DWORD dwEncoding) "Expected no serial number\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, + ret = pCryptDecodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, authorityKeyIdWithId, sizeof(authorityKeyIdWithId), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4727,7 +4731,7 @@ static void test_decodeAuthorityKeyId2(DWORD dwEncoding) "Expected no serial number\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, + ret = pCryptDecodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, authorityKeyIdWithIssuerUrl, sizeof(authorityKeyIdWithIssuerUrl), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4750,7 +4754,7 @@ static void test_decodeAuthorityKeyId2(DWORD dwEncoding) "Expected no serial number\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, + ret = pCryptDecodeObjectEx(dwEncoding, X509_AUTHORITY_KEY_ID2, authorityKeyIdWithSerial, sizeof(authorityKeyIdWithSerial), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); @@ -4789,17 +4793,17 @@ static void test_encodePKCSContentInfo(DWORD dwEncoding) char oid1[] = "1.2.3"; SetLastError(0xdeadbeef); - ret = CryptEncodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, NULL, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, NULL, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got %x\n", GetLastError()); SetLastError(0xdeadbeef); - ret = CryptEncodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, &info, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %x\n", GetLastError()); info.pszObjId = oid1; - ret = CryptEncodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, &info, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %x\n", GetLastError()); if (buf) @@ -4810,7 +4814,7 @@ static void test_encodePKCSContentInfo(DWORD dwEncoding) } info.Content.pbData = bogusDER; info.Content.cbData = sizeof(bogusDER); - ret = CryptEncodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, &info, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed; %x\n", GetLastError()); if (buf) @@ -4821,7 +4825,7 @@ static void test_encodePKCSContentInfo(DWORD dwEncoding) } info.Content.pbData = (BYTE *)ints[0].encoded; info.Content.cbData = ints[0].encoded[1] + 2; - ret = CryptEncodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, &info, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -4868,7 +4872,7 @@ static void test_decodePKCSContentInfo(DWORD dwEncoding) DWORD size = 0; CRYPT_CONTENT_INFO *info; - ret = CryptDecodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, emptyPKCSContentInfo, sizeof(emptyPKCSContentInfo), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %x\n", GetLastError()); @@ -4882,12 +4886,12 @@ static void test_decodePKCSContentInfo(DWORD dwEncoding) info->Content.cbData); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, emptyPKCSContentInfoExtraBytes, sizeof(emptyPKCSContentInfoExtraBytes), 0, NULL, NULL, &size); ok(ret, "CryptDecodeObjectEx failed: %x\n", GetLastError()); SetLastError(0xdeadbeef); - ret = CryptDecodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, bogusPKCSContentInfo, sizeof(bogusPKCSContentInfo), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); /* Native fails with CRYPT_E_ASN1_EOD, accept also CRYPT_E_ASN1_CORRUPT as @@ -4897,7 +4901,7 @@ static void test_decodePKCSContentInfo(DWORD dwEncoding) GetLastError() == CRYPT_E_ASN1_CORRUPT), "Expected CRYPT_E_ASN1_EOD or CRYPT_E_ASN1_CORRUPT, got %x\n", GetLastError()); - ret = CryptDecodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, intPKCSContentInfo, sizeof(intPKCSContentInfo), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %x\n", GetLastError()); @@ -4913,7 +4917,7 @@ static void test_decodePKCSContentInfo(DWORD dwEncoding) info->Content.cbData), "Unexpected value\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS_CONTENT_INFO, indefiniteSignedPKCSContent, sizeof(indefiniteSignedPKCSContent), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %x\n", GetLastError()); @@ -4946,17 +4950,17 @@ static void test_encodePKCSAttribute(DWORD dwEncoding) char oid[] = "1.2.3"; SetLastError(0xdeadbeef); - ret = CryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTE, NULL, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTE, NULL, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got %x\n", GetLastError()); SetLastError(0xdeadbeef); - ret = CryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTE, &attr, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTE, &attr, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %x\n", GetLastError()); attr.pszObjId = oid; - ret = CryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTE, &attr, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTE, &attr, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %x\n", GetLastError()); if (buf) @@ -4969,7 +4973,7 @@ static void test_encodePKCSAttribute(DWORD dwEncoding) blob.pbData = bogusDER; attr.cValue = 1; attr.rgValue = &blob; - ret = CryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTE, &attr, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTE, &attr, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %x\n", GetLastError()); if (buf) @@ -4980,7 +4984,7 @@ static void test_encodePKCSAttribute(DWORD dwEncoding) } blob.pbData = (BYTE *)ints[0].encoded; blob.cbData = ints[0].encoded[1] + 2; - ret = CryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTE, &attr, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTE, &attr, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -4997,7 +5001,7 @@ static void test_decodePKCSAttribute(DWORD dwEncoding) DWORD size = 0; CRYPT_ATTRIBUTE *attr; - ret = CryptDecodeObjectEx(dwEncoding, PKCS_ATTRIBUTE, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS_ATTRIBUTE, emptyPKCSAttr, sizeof(emptyPKCSAttr), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %x\n", GetLastError()); @@ -5011,7 +5015,7 @@ static void test_decodePKCSAttribute(DWORD dwEncoding) LocalFree(buf); } SetLastError(0xdeadbeef); - ret = CryptDecodeObjectEx(dwEncoding, PKCS_ATTRIBUTE, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS_ATTRIBUTE, bogusPKCSAttr, sizeof(bogusPKCSAttr), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); /* Native fails with CRYPT_E_ASN1_EOD, accept also CRYPT_E_ASN1_CORRUPT as @@ -5021,7 +5025,7 @@ static void test_decodePKCSAttribute(DWORD dwEncoding) GetLastError() == CRYPT_E_ASN1_CORRUPT), "Expected CRYPT_E_ASN1_EOD or CRYPT_E_ASN1_CORRUPT, got %x\n", GetLastError()); - ret = CryptDecodeObjectEx(dwEncoding, PKCS_ATTRIBUTE, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS_ATTRIBUTE, intPKCSAttr, sizeof(intPKCSAttr), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %x\n", GetLastError()); @@ -5056,7 +5060,7 @@ static void test_encodePKCSAttributes(DWORD dwEncoding) DWORD size = 0; char oid1[] = "1.2.3", oid2[] = "1.5.6"; - ret = CryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTES, &attributes, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTES, &attributes, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %x\n", GetLastError()); if (buf) @@ -5068,12 +5072,12 @@ static void test_encodePKCSAttributes(DWORD dwEncoding) attributes.cAttr = 1; attributes.rgAttr = attr; SetLastError(0xdeadbeef); - ret = CryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTES, &attributes, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTES, &attributes, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %x\n", GetLastError()); attr[0].pszObjId = oid1; - ret = CryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTES, &attributes, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTES, &attributes, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) { @@ -5087,7 +5091,7 @@ static void test_encodePKCSAttributes(DWORD dwEncoding) blob.pbData = (BYTE *)ints[0].encoded; blob.cbData = ints[0].encoded[1] + 2; attributes.cAttr = 2; - ret = CryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTES, &attributes, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS_ATTRIBUTES, &attributes, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %x\n", GetLastError()); if (buf) @@ -5105,7 +5109,7 @@ static void test_decodePKCSAttributes(DWORD dwEncoding) DWORD size = 0; CRYPT_ATTRIBUTES *attributes; - ret = CryptDecodeObjectEx(dwEncoding, PKCS_ATTRIBUTES, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS_ATTRIBUTES, emptyPKCSAttributes, sizeof(emptyPKCSAttributes), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %x\n", GetLastError()); @@ -5116,7 +5120,7 @@ static void test_decodePKCSAttributes(DWORD dwEncoding) attributes->cAttr); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, PKCS_ATTRIBUTES, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS_ATTRIBUTES, singlePKCSAttributes, sizeof(singlePKCSAttributes), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %x\n", GetLastError()); @@ -5131,7 +5135,7 @@ static void test_decodePKCSAttributes(DWORD dwEncoding) "Expected no attributes, got %d\n", attributes->rgAttr[0].cValue); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, PKCS_ATTRIBUTES, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS_ATTRIBUTES, doublePKCSAttributes, sizeof(doublePKCSAttributes), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %x\n", GetLastError()); @@ -5206,7 +5210,7 @@ static void test_encodePKCSSignerInfo(DWORD dwEncoding) CRYPT_ATTRIBUTE attr = { oid_common_name, 1, &commonName }; SetLastError(0xdeadbeef); - ret = CryptEncodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, &info, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", GetLastError()); @@ -5217,7 +5221,7 @@ static void test_encodePKCSSignerInfo(DWORD dwEncoding) info.Issuer.cbData = sizeof(encodedCommonNameNoNull); info.Issuer.pbData = encodedCommonNameNoNull; SetLastError(0xdeadbeef); - ret = CryptEncodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, &info, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (!(dwEncoding & PKCS_7_ASN_ENCODING)) ok(!ret && GetLastError() == E_INVALIDARG, @@ -5238,7 +5242,7 @@ static void test_encodePKCSSignerInfo(DWORD dwEncoding) info.SerialNumber.cbData = sizeof(serialNum); info.SerialNumber.pbData = (BYTE *)serialNum; SetLastError(0xdeadbeef); - ret = CryptEncodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, &info, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (!(dwEncoding & PKCS_7_ASN_ENCODING)) ok(!ret && GetLastError() == E_INVALIDARG, @@ -5260,7 +5264,7 @@ static void test_encodePKCSSignerInfo(DWORD dwEncoding) } info.HashAlgorithm.pszObjId = oid1; SetLastError(0xdeadbeef); - ret = CryptEncodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, &info, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (!(dwEncoding & PKCS_7_ASN_ENCODING)) ok(!ret && GetLastError() == E_INVALIDARG, @@ -5282,7 +5286,7 @@ static void test_encodePKCSSignerInfo(DWORD dwEncoding) } info.HashEncryptionAlgorithm.pszObjId = oid2; SetLastError(0xdeadbeef); - ret = CryptEncodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, &info, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (!(dwEncoding & PKCS_7_ASN_ENCODING)) ok(!ret && GetLastError() == E_INVALIDARG, @@ -5305,7 +5309,7 @@ static void test_encodePKCSSignerInfo(DWORD dwEncoding) info.EncryptedHash.cbData = sizeof(hash); info.EncryptedHash.pbData = (BYTE *)hash; SetLastError(0xdeadbeef); - ret = CryptEncodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, &info, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (!(dwEncoding & PKCS_7_ASN_ENCODING)) ok(!ret && GetLastError() == E_INVALIDARG, @@ -5328,7 +5332,7 @@ static void test_encodePKCSSignerInfo(DWORD dwEncoding) info.AuthAttrs.cAttr = 1; info.AuthAttrs.rgAttr = &attr; SetLastError(0xdeadbeef); - ret = CryptEncodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, &info, + ret = pCryptEncodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (!(dwEncoding & PKCS_7_ASN_ENCODING)) ok(!ret && GetLastError() == E_INVALIDARG, @@ -5359,12 +5363,12 @@ static void test_decodePKCSSignerInfo(DWORD dwEncoding) /* A PKCS signer can't be decoded without a serial number. */ SetLastError(0xdeadbeef); - ret = CryptDecodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, minimalPKCSSigner, sizeof(minimalPKCSSigner), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == CRYPT_E_ASN1_CORRUPT, "Expected CRYPT_E_ASN1_CORRUPT, got %x\n", GetLastError()); - ret = CryptDecodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, PKCSSignerWithSerial, sizeof(PKCSSignerWithSerial), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptDecodeObjectEx failed: %x\n", GetLastError()); @@ -5383,7 +5387,7 @@ static void test_decodePKCSSignerInfo(DWORD dwEncoding) "Unexpected value\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, PKCSSignerWithHashAlgo, sizeof(PKCSSignerWithHashAlgo), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) @@ -5403,7 +5407,7 @@ static void test_decodePKCSSignerInfo(DWORD dwEncoding) "Expected 1.2.3, got %s\n", info->HashAlgorithm.pszObjId); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, PKCSSignerWithHashAndEncryptionAlgo, sizeof(PKCSSignerWithHashAndEncryptionAlgo), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); @@ -5426,7 +5430,7 @@ static void test_decodePKCSSignerInfo(DWORD dwEncoding) "Expected 1.5.6, got %s\n", info->HashEncryptionAlgorithm.pszObjId); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, PKCSSignerWithHash, sizeof(PKCSSignerWithHash), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) @@ -5452,7 +5456,7 @@ static void test_decodePKCSSignerInfo(DWORD dwEncoding) "Unexpected value\n"); LocalFree(buf); } - ret = CryptDecodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, + ret = pCryptDecodeObjectEx(dwEncoding, PKCS7_SIGNER_INFO, PKCSSignerWithAuthAttr, sizeof(PKCSSignerWithAuthAttr), CRYPT_DECODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); if (buf) @@ -5503,7 +5507,7 @@ static void test_encodeNameConstraints(DWORD dwEncoding) LPBYTE buf; DWORD size; - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, &constraints, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, &constraints, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (ret) @@ -5515,12 +5519,12 @@ static void test_encodeNameConstraints(DWORD dwEncoding) constraints.cPermittedSubtree = 1; constraints.rgPermittedSubtree = &permitted; SetLastError(0xdeadbeef); - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, &constraints, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, &constraints, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", GetLastError()); permitted.Base.dwAltNameChoice = CERT_ALT_NAME_DNS_NAME; - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, &constraints, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, &constraints, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (ret) @@ -5534,7 +5538,7 @@ static void test_encodeNameConstraints(DWORD dwEncoding) constraints.cExcludedSubtree = 1; constraints.rgExcludedSubtree = &excluded; excluded.Base.dwAltNameChoice = CERT_ALT_NAME_DNS_NAME; - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, &constraints, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, &constraints, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (ret) @@ -5545,7 +5549,7 @@ static void test_encodeNameConstraints(DWORD dwEncoding) LocalFree(buf); } U(excluded.Base).pwszURL = (LPWSTR)url; - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, &constraints, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, &constraints, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (ret) @@ -5559,7 +5563,7 @@ static void test_encodeNameConstraints(DWORD dwEncoding) U(permitted.Base).IPAddress.cbData = sizeof(encodedIPAddr); U(permitted.Base).IPAddress.pbData = (LPBYTE)encodedIPAddr; constraints.cPermittedSubtree = 1; - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, &constraints, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, &constraints, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (ret) @@ -5571,7 +5575,7 @@ static void test_encodeNameConstraints(DWORD dwEncoding) LocalFree(buf); } permitted.dwMinimum = 5; - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, &constraints, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, &constraints, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (ret) @@ -5585,7 +5589,7 @@ static void test_encodeNameConstraints(DWORD dwEncoding) permitted.fMaximum = TRUE; permitted.dwMaximum = 3; SetLastError(0xdeadbeef); - ret = CryptEncodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, &constraints, + ret = pCryptEncodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, &constraints, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError()); if (ret) @@ -5652,7 +5656,7 @@ static void test_decodeNameConstraints(DWORD dwEncoding) { DWORD size; - ret = CryptDecodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, + ret = pCryptDecodeObjectEx(dwEncoding, X509_NAME_CONSTRAINTS, encodedNameConstraints[i].encoded.pbData, encodedNameConstraints[i].encoded.cbData, CRYPT_DECODE_ALLOC_FLAG, NULL, &constraints, &size); @@ -5852,8 +5856,18 @@ START_TEST(encode) { static const DWORD encodings[] = { X509_ASN_ENCODING, PKCS_7_ASN_ENCODING, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING }; + HMODULE hCrypt32; DWORD i; + hCrypt32 = GetModuleHandleA("crypt32.dll"); + pCryptDecodeObjectEx = (void*)GetProcAddress(hCrypt32, "CryptDecodeObjectEx"); + pCryptEncodeObjectEx = (void*)GetProcAddress(hCrypt32, "CryptEncodeObjectEx"); + if (!pCryptDecodeObjectEx || !pCryptEncodeObjectEx) + { + skip("CryptDecodeObjectEx() is not available\n"); + return; + } + for (i = 0; i < sizeof(encodings) / sizeof(encodings[0]); i++) { test_encodeInt(encodings[i]); diff --git a/dlls/crypt32/tests/oid.c b/dlls/crypt32/tests/oid.c index f4f11f08ebc..b4950fcda2e 100644 --- a/dlls/crypt32/tests/oid.c +++ b/dlls/crypt32/tests/oid.c @@ -27,6 +27,10 @@ #include "wine/test.h" + +static BOOL (WINAPI *pCryptEnumOIDInfo)(DWORD,DWORD,void*,PFN_CRYPT_ENUM_OID_INFO); + + struct OIDToAlgID { LPCSTR oid; @@ -471,14 +475,20 @@ static void test_enumOIDInfo(void) BOOL ret; DWORD count = 0; + if (!pCryptEnumOIDInfo) + { + skip("CryptEnumOIDInfo() is not available\n"); + return; + } + /* This crashes - ret = CryptEnumOIDInfo(7, 0, NULL, NULL); + ret = pCryptEnumOIDInfo(7, 0, NULL, NULL); */ /* Silly tests, check that more than one thing is enumerated */ - ret = CryptEnumOIDInfo(0, 0, &count, countOidInfo); + ret = pCryptEnumOIDInfo(0, 0, &count, countOidInfo); ok(ret && count > 0, "Expected more than item enumerated\n"); - ret = CryptEnumOIDInfo(0, 0, NULL, noOidInfo); + ret = pCryptEnumOIDInfo(0, 0, NULL, noOidInfo); ok(!ret, "Expected FALSE\n"); } @@ -532,6 +542,9 @@ static void test_findOIDInfo(void) START_TEST(oid) { + HMODULE hCrypt32 = GetModuleHandleA("crypt32.dll"); + pCryptEnumOIDInfo = (void*)GetProcAddress(hCrypt32, "CryptEnumOIDInfo"); + testOIDToAlgID(); testAlgIDToOID(); test_enumOIDInfo(); diff --git a/dlls/crypt32/tests/protectdata.c b/dlls/crypt32/tests/protectdata.c index 64ffa68cedf..0dfad9aaf30 100644 --- a/dlls/crypt32/tests/protectdata.c +++ b/dlls/crypt32/tests/protectdata.c @@ -27,6 +27,9 @@ #include "wine/test.h" +static BOOL (WINAPI *pCryptProtectData)(DATA_BLOB*,LPCWSTR,DATA_BLOB*,PVOID,CRYPTPROTECT_PROMPTSTRUCT*,DWORD,DATA_BLOB*); +static BOOL (WINAPI *pCryptUnprotectData)(DATA_BLOB*,LPWSTR*,DATA_BLOB*,PVOID,CRYPTPROTECT_PROMPTSTRUCT*,DWORD,DATA_BLOB*); + static char secret[] = "I am a super secret string that no one can see!"; static char secret2[] = "I am a super secret string indescribable string"; static char key[] = "Wibble wibble wibble"; @@ -49,13 +52,13 @@ static void test_cryptprotectdata(void) entropy.cbData=strlen(key)+1; SetLastError(0xDEADBEEF); - protected = CryptProtectData(NULL,desc,NULL,NULL,NULL,0,&cipher); + protected = pCryptProtectData(NULL,desc,NULL,NULL,NULL,0,&cipher); ok(!protected, "Encrypting without plain data source.\n"); r = GetLastError(); ok(r == ERROR_INVALID_PARAMETER, "Wrong (%u) GetLastError seen\n",r); SetLastError(0xDEADBEEF); - protected = CryptProtectData(&plain,desc,NULL,NULL,NULL,0,NULL); + protected = pCryptProtectData(&plain,desc,NULL,NULL,NULL,0,NULL); ok(!protected, "Encrypting without cipher destination.\n"); r = GetLastError(); ok(r == ERROR_INVALID_PARAMETER, "Wrong (%u) GetLastError seen\n",r); @@ -65,7 +68,7 @@ static void test_cryptprotectdata(void) /* without entropy */ SetLastError(0xDEADBEEF); - protected = CryptProtectData(&plain,desc,NULL,NULL,NULL,0,&cipher); + protected = pCryptProtectData(&plain,desc,NULL,NULL,NULL,0,&cipher); ok(protected, "Encrypting without entropy.\n"); r = GetLastError(); ok(r == ERROR_SUCCESS, "Wrong (%u) GetLastError seen\n",r); @@ -75,7 +78,7 @@ static void test_cryptprotectdata(void) /* with entropy */ SetLastError(0xDEADBEEF); - protected = CryptProtectData(&plain,desc,&entropy,NULL,NULL,0,&cipher_entropy); + protected = pCryptProtectData(&plain,desc,&entropy,NULL,NULL,0,&cipher_entropy); ok(protected, "Encrypting with entropy.\n"); r = GetLastError(); ok(r == ERROR_SUCCESS, "Wrong (%u) GetLastError seen\n",r); @@ -87,7 +90,7 @@ static void test_cryptprotectdata(void) plain.pbData=(void*)secret2; plain.cbData=strlen(secret2)+1; SetLastError(0xDEADBEEF); - protected = CryptProtectData(&plain,NULL,&entropy,NULL,NULL,0,&cipher_no_desc); + protected = pCryptProtectData(&plain,NULL,&entropy,NULL,NULL,0,&cipher_no_desc); ok(protected, "Encrypting with entropy and no description.\n"); r = GetLastError(); ok(r == ERROR_SUCCESS, "Wrong (%u) GetLastError seen\n",r); @@ -111,13 +114,13 @@ static void test_cryptunprotectdata(void) plain.cbData=0; SetLastError(0xDEADBEEF); - okay = CryptUnprotectData(&cipher,NULL,NULL,NULL,NULL,0,NULL); + okay = pCryptUnprotectData(&cipher,NULL,NULL,NULL,NULL,0,NULL); ok(!okay,"Decrypting without destination\n"); r = GetLastError(); ok(r == ERROR_INVALID_PARAMETER, "Wrong (%u) GetLastError seen\n",r); SetLastError(0xDEADBEEF); - okay = CryptUnprotectData(NULL,NULL,NULL,NULL,NULL,0,&plain); + okay = pCryptUnprotectData(NULL,NULL,NULL,NULL,NULL,0,&plain); ok(!okay,"Decrypting without source\n"); r = GetLastError(); ok(r == ERROR_INVALID_PARAMETER, "Wrong (%u) GetLastError seen\n",r); @@ -126,7 +129,7 @@ static void test_cryptunprotectdata(void) plain.cbData=0; SetLastError(0xDEADBEEF); - okay = CryptUnprotectData(&cipher_entropy,NULL,NULL,NULL,NULL,0,&plain); + okay = pCryptUnprotectData(&cipher_entropy,NULL,NULL,NULL,NULL,0,&plain); ok(!okay,"Decrypting without needed entropy\n"); r = GetLastError(); ok(r == ERROR_INVALID_DATA, "Wrong (%u) GetLastError seen\n", r); @@ -137,7 +140,7 @@ static void test_cryptunprotectdata(void) /* without entropy */ SetLastError(0xDEADBEEF); - okay = CryptUnprotectData(&cipher,&data_desc,NULL,NULL,NULL,0,&plain); + okay = pCryptUnprotectData(&cipher,&data_desc,NULL,NULL,NULL,0,&plain); ok(okay,"Decrypting without entropy\n"); r = GetLastError(); ok(r == ERROR_SUCCESS, "Wrong (%u) GetLastError seen\n",r); @@ -157,14 +160,14 @@ static void test_cryptunprotectdata(void) /* with wrong entropy */ SetLastError(0xDEADBEEF); - okay = CryptUnprotectData(&cipher_entropy,&data_desc,&cipher_entropy,NULL,NULL,0,&plain); + okay = pCryptUnprotectData(&cipher_entropy,&data_desc,&cipher_entropy,NULL,NULL,0,&plain); ok(!okay,"Decrypting with wrong entropy\n"); r = GetLastError(); ok(r == ERROR_INVALID_DATA, "Wrong (%u) GetLastError seen\n",r); /* with entropy */ SetLastError(0xDEADBEEF); - okay = CryptUnprotectData(&cipher_entropy,&data_desc,&entropy,NULL,NULL,0,&plain); + okay = pCryptUnprotectData(&cipher_entropy,&data_desc,&entropy,NULL,NULL,0,&plain); ok(okay,"Decrypting with entropy\n"); r = GetLastError(); ok(r == ERROR_SUCCESS, "Wrong (%u) GetLastError seen\n",r); @@ -184,7 +187,7 @@ static void test_cryptunprotectdata(void) /* with entropy but no description */ SetLastError(0xDEADBEEF); - okay = CryptUnprotectData(&cipher_no_desc,&data_desc,&entropy,NULL,NULL,0,&plain); + okay = pCryptUnprotectData(&cipher_no_desc,&data_desc,&entropy,NULL,NULL,0,&plain); ok(okay,"Decrypting with entropy and no description\n"); r = GetLastError(); ok(r == ERROR_SUCCESS, "Wrong (%u) GetLastError seen\n",r); @@ -204,8 +207,17 @@ static void test_cryptunprotectdata(void) START_TEST(protectdata) { - protected=FALSE; + HMODULE hCrypt32 = GetModuleHandleA("crypt32.dll"); + hCrypt32 = GetModuleHandleA("crypt32.dll"); + pCryptProtectData = (void*)GetProcAddress(hCrypt32, "CryptProtectData"); + pCryptUnprotectData = (void*)GetProcAddress(hCrypt32, "CryptUnprotectData"); + if (!pCryptProtectData || !pCryptUnprotectData) + { + skip("Crypt(Un)ProtectData() is not available\n"); + return; + } + protected=FALSE; test_cryptprotectdata(); test_cryptunprotectdata(); diff --git a/dlls/crypt32/tests/store.c b/dlls/crypt32/tests/store.c index 05ea5e069e7..95c8054d0a2 100644 --- a/dlls/crypt32/tests/store.c +++ b/dlls/crypt32/tests/store.c @@ -94,6 +94,15 @@ static const BYTE bigCert2[] = { 0x30, 0x7a, 0x02, 0x01, 0x01, 0x30, 0x02, 0x06, 0x00, 0xa3, 0x16, 0x30, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x01 }; + +static BOOL (WINAPI *pCertAddStoreToCollection)(HCERTSTORE,HCERTSTORE,DWORD,DWORD); +static BOOL (WINAPI *pCertControlStore)(HCERTSTORE,DWORD,DWORD,void const*); +static PCCRL_CONTEXT (WINAPI *pCertEnumCRLsInStore)(HCERTSTORE,PCCRL_CONTEXT); +static BOOL (WINAPI *pCertEnumSystemStore)(DWORD,void*,void*,PFN_CERT_ENUM_SYSTEM_STORE); +static BOOL (WINAPI *pCertGetStoreProperty)(HCERTSTORE,DWORD,void*,DWORD*); +static void (WINAPI *pCertRemoveStoreFromCollection)(HCERTSTORE,HCERTSTORE); +static BOOL (WINAPI *pCertSetStoreProperty)(HCERTSTORE,DWORD,DWORD,const void*); + static void testMemStore(void) { HCERTSTORE store1, store2; @@ -274,6 +283,12 @@ static void testCollectionStore(void) PCCERT_CONTEXT context; BOOL ret; + if (!pCertAddStoreToCollection) + { + skip("CertAddStoreToCollection() is not available\n"); + return; + } + collection = CertOpenStore(CERT_STORE_PROV_COLLECTION, 0, 0, CERT_STORE_CREATE_NEW_FLAG, NULL); @@ -290,7 +305,7 @@ static void testCollectionStore(void) bigCert, sizeof(bigCert), CERT_STORE_ADD_ALWAYS, NULL); ok(ret, "CertAddEncodedCertificateToStore failed: %08x\n", GetLastError()); /* Add the memory store to the collection, without allowing adding */ - ret = CertAddStoreToCollection(collection, store1, 0, 0); + ret = pCertAddStoreToCollection(collection, store1, 0, 0); ok(ret, "CertAddStoreToCollection failed: %08x\n", GetLastError()); /* Verify the cert is in the collection */ context = CertEnumCertificatesInStore(collection, NULL); @@ -310,26 +325,26 @@ static void testCollectionStore(void) store2 = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, 0, CERT_STORE_CREATE_NEW_FLAG, NULL); /* Try adding a store to a non-collection store */ - ret = CertAddStoreToCollection(store1, store2, + ret = pCertAddStoreToCollection(store1, store2, CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG, 0); ok(!ret && GetLastError() == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", GetLastError()); /* Try adding some bogus stores */ /* This crashes in Windows - ret = CertAddStoreToCollection(0, store2, + ret = pCertAddStoreToCollection(0, store2, CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG, 0); */ /* This "succeeds"... */ - ret = CertAddStoreToCollection(collection, 0, + ret = pCertAddStoreToCollection(collection, 0, CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG, 0); ok(ret, "CertAddStoreToCollection failed: %08x\n", GetLastError()); /* while this crashes. - ret = CertAddStoreToCollection(collection, 1, + ret = pCertAddStoreToCollection(collection, 1, CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG, 0); */ /* Add it to the collection, this time allowing adding */ - ret = CertAddStoreToCollection(collection, store2, + ret = pCertAddStoreToCollection(collection, store2, CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG, 0); ok(ret, "CertAddStoreToCollection failed: %08x\n", GetLastError()); /* Check that adding to the collection is allowed */ @@ -397,7 +412,7 @@ static void testCollectionStore(void) /* Adding a collection to a collection is legal */ collection2 = CertOpenStore(CERT_STORE_PROV_COLLECTION, 0, 0, CERT_STORE_CREATE_NEW_FLAG, NULL); - ret = CertAddStoreToCollection(collection2, collection, + ret = pCertAddStoreToCollection(collection2, collection, CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG, 0); ok(ret, "CertAddStoreToCollection failed: %08x\n", GetLastError()); /* check the contents of collection2 */ @@ -457,10 +472,10 @@ static void testCollectionStore(void) CERT_STORE_CREATE_NEW_FLAG, NULL); ok(collection != 0, "CertOpenStore failed: %08x\n", GetLastError()); - ret = CertAddStoreToCollection(collection, store1, + ret = pCertAddStoreToCollection(collection, store1, CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG, 0); ok(ret, "CertAddStoreToCollection failed: %08x\n", GetLastError()); - ret = CertAddStoreToCollection(collection, store2, + ret = pCertAddStoreToCollection(collection, store2, CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG, 0); ok(ret, "CertAddStoreToCollection failed: %08x\n", GetLastError()); @@ -528,25 +543,32 @@ static void testCollectionStore(void) ok(context == NULL, "Unexpected cert\n"); } - /* Finally, test removing stores from the collection. No return value, so - * it's a bit funny to test. - */ - /* This crashes - CertRemoveStoreFromCollection(NULL, NULL); - */ - /* This "succeeds," no crash, no last error set */ - SetLastError(0xdeadbeef); - CertRemoveStoreFromCollection(store2, collection); - ok(GetLastError() == 0xdeadbeef, - "Didn't expect an error to be set: %08x\n", GetLastError()); - - /* After removing store2, the collection should be empty */ - SetLastError(0xdeadbeef); - CertRemoveStoreFromCollection(collection, store2); - ok(GetLastError() == 0xdeadbeef, - "Didn't expect an error to be set: %08x\n", GetLastError()); - context = CertEnumCertificatesInStore(collection, NULL); - ok(!context, "Unexpected cert\n"); + if (!pCertRemoveStoreFromCollection) + { + skip("CertRemoveStoreFromCollection() is not available\n"); + } + else + { + /* Finally, test removing stores from the collection. No return + * value, so it's a bit funny to test. + */ + /* This crashes + * pCertRemoveStoreFromCollection(NULL, NULL); + */ + /* This "succeeds," no crash, no last error set */ + SetLastError(0xdeadbeef); + pCertRemoveStoreFromCollection(store2, collection); + ok(GetLastError() == 0xdeadbeef, + "Didn't expect an error to be set: %08x\n", GetLastError()); + + /* After removing store2, the collection should be empty */ + SetLastError(0xdeadbeef); + pCertRemoveStoreFromCollection(collection, store2); + ok(GetLastError() == 0xdeadbeef, + "Didn't expect an error to be set: %08x\n", GetLastError()); + context = CertEnumCertificatesInStore(collection, NULL); + ok(!context, "Unexpected cert\n"); + } CertCloseStore(collection, 0); CertCloseStore(store2, 0); @@ -614,6 +636,13 @@ static void testRegStore(void) todo_wine ok(store != 0, "CertOpenStore failed: %08x\n", GetLastError()); CertCloseStore(store, 0); + /* It looks like the remainder pretty much needs CertControlStore() */ + if (!pCertControlStore) + { + skip("CertControlStore() is not available\n"); + return; + } + rc = RegCreateKeyExA(HKEY_CURRENT_USER, tempKey, 0, NULL, 0, KEY_ALL_ACCESS, NULL, &key, NULL); ok(!rc, "RegCreateKeyExA failed: %d\n", rc); @@ -637,7 +666,7 @@ static void testRegStore(void) ok(ret, "CertAddEncodedCertificateToStore failed: %08x\n", GetLastError()); /* so flush the cache to force a commit.. */ - ret = CertControlStore(store, 0, CERT_STORE_CTRL_COMMIT, NULL); + ret = pCertControlStore(store, 0, CERT_STORE_CTRL_COMMIT, NULL); ok(ret, "CertControlStore failed: %08x\n", GetLastError()); /* and check that the expected subkey was written. */ size = sizeof(hash); @@ -696,7 +725,7 @@ static void testRegStore(void) ok(context != NULL, "Expected a cert context\n"); if (context) CertDeleteCertificateFromStore(context); - ret = CertControlStore(store, 0, CERT_STORE_CTRL_COMMIT, NULL); + ret = pCertControlStore(store, 0, CERT_STORE_CTRL_COMMIT, NULL); ok(ret, "CertControlStore failed: %08x\n", GetLastError()); /* Add a serialized cert with a bogus hash directly to the registry */ @@ -733,7 +762,7 @@ static void testRegStore(void) sizeof(buf)); ok(!rc, "RegSetValueExA failed: %d\n", rc); - ret = CertControlStore(store, 0, CERT_STORE_CTRL_RESYNC, NULL); + ret = pCertControlStore(store, 0, CERT_STORE_CTRL_RESYNC, NULL); ok(ret, "CertControlStore failed: %08x\n", GetLastError()); /* Make sure the bogus hash cert gets loaded. */ @@ -790,7 +819,7 @@ static void testRegStore(void) sizeof(buf)); ok(!rc, "RegSetValueExA failed: %d\n", rc); - ret = CertControlStore(store, 0, CERT_STORE_CTRL_RESYNC, NULL); + ret = pCertControlStore(store, 0, CERT_STORE_CTRL_RESYNC, NULL); ok(ret, "CertControlStore failed: %08x\n", GetLastError()); /* and make sure just one cert still gets loaded. */ @@ -811,7 +840,7 @@ static void testRegStore(void) sizeof(buf)); ok(!rc, "RegSetValueExA failed: %d\n", rc); - ret = CertControlStore(store, 0, CERT_STORE_CTRL_RESYNC, NULL); + ret = pCertControlStore(store, 0, CERT_STORE_CTRL_RESYNC, NULL); ok(ret, "CertControlStore failed: %08x\n", GetLastError()); /* and make sure two certs get loaded. */ @@ -893,10 +922,12 @@ static void testSystemRegStore(void) CERT_STORE_CREATE_NEW_FLAG, NULL); if (memStore) { - BOOL ret = CertAddStoreToCollection(store, memStore, 0, 0); - - ok(!ret && GetLastError() == E_INVALIDARG, - "Expected E_INVALIDARG, got %08x\n", GetLastError()); + if (pCertAddStoreToCollection) + { + BOOL ret = pCertAddStoreToCollection(store, memStore, 0, 0); + ok(!ret && GetLastError() == E_INVALIDARG, + "Expected E_INVALIDARG, got %08x\n", GetLastError()); + } CertCloseStore(memStore, 0); } CertCloseStore(store, 0); @@ -984,10 +1015,12 @@ static void testSystemStore(void) /* Check that it's a collection store */ if (memStore) { - BOOL ret = CertAddStoreToCollection(store, memStore, 0, 0); - - /* FIXME: this'll fail on NT4, but what error will it give? */ - ok(ret, "CertAddStoreToCollection failed: %08x\n", GetLastError()); + if (pCertAddStoreToCollection) + { + BOOL ret = pCertAddStoreToCollection(store, memStore, 0, 0); + /* FIXME: this'll fail on NT4, but what error will it give? */ + ok(ret, "CertAddStoreToCollection failed: %08x\n", GetLastError()); + } CertCloseStore(memStore, 0); } CertCloseStore(store, 0); @@ -1073,7 +1106,13 @@ static void testFileStore(void) BOOL ret; PCCERT_CONTEXT cert; HANDLE file; - + + if (!pCertControlStore) + { + skip("CertControlStore() is not available\n"); + return; + } + store = CertOpenStore(CERT_STORE_PROV_FILE, 0, 0, 0, NULL); ok(!store && GetLastError() == ERROR_INVALID_HANDLE, "Expected ERROR_INVALID_HANDLE, got %08x\n", GetLastError()); @@ -1109,7 +1148,7 @@ static void testFileStore(void) /* apparently allows adding certificates.. */ ok(ret, "CertAddEncodedCertificateToStore failed: %d\n", ret); /* but not commits.. */ - ret = CertControlStore(store, 0, CERT_STORE_CTRL_COMMIT, NULL); + ret = pCertControlStore(store, 0, CERT_STORE_CTRL_COMMIT, NULL); ok(!ret && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED, "Expected ERROR_CALL_NOT_IMPLEMENTED, got %08x\n", GetLastError()); /* It still has certs in memory.. */ @@ -1133,7 +1172,7 @@ static void testFileStore(void) ret = CertAddEncodedCertificateToStore(store, X509_ASN_ENCODING, bigCert, sizeof(bigCert), CERT_STORE_ADD_ALWAYS, NULL); ok(ret, "CertAddEncodedCertificateToStore failed: %d\n", ret); - ret = CertControlStore(store, 0, CERT_STORE_CTRL_COMMIT, NULL); + ret = pCertControlStore(store, 0, CERT_STORE_CTRL_COMMIT, NULL); ok(!ret && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED, "Expected ERROR_CALL_NOT_IMPLEMENTED, got %08x\n", GetLastError()); CertCloseStore(store, 0); @@ -1148,7 +1187,7 @@ static void testFileStore(void) ret = CertAddEncodedCertificateToStore(store, X509_ASN_ENCODING, bigCert, sizeof(bigCert), CERT_STORE_ADD_ALWAYS, NULL); ok(ret, "CertAddEncodedCertificateToStore failed: %d\n", ret); - ret = CertControlStore(store, 0, CERT_STORE_CTRL_COMMIT, NULL); + ret = pCertControlStore(store, 0, CERT_STORE_CTRL_COMMIT, NULL); ok(!ret && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED, "Expected ERROR_CALL_NOT_IMPLEMENTED, got %08x\n", GetLastError()); CertCloseStore(store, 0); @@ -1164,7 +1203,7 @@ static void testFileStore(void) ok(ret, "CertAddEncodedCertificateToStore failed: %08x\n", GetLastError()); /* with commits enabled, commit is allowed */ - ret = CertControlStore(store, 0, CERT_STORE_CTRL_COMMIT, NULL); + ret = pCertControlStore(store, 0, CERT_STORE_CTRL_COMMIT, NULL); ok(ret, "CertControlStore failed: %d\n", ret); compareFile(filename, serializedStoreWithCert, sizeof(serializedStoreWithCert)); @@ -1248,8 +1287,11 @@ static void testFileNameStore(void) GetLastError()); cert = CertEnumCertificatesInStore(store, cert); ok(!cert, "Expected only one cert\n"); - crl = CertEnumCRLsInStore(store, NULL); - ok(!crl, "Expected no CRLs\n"); + if (pCertEnumCRLsInStore) + { + crl = pCertEnumCRLsInStore(store, NULL); + ok(!crl, "Expected no CRLs\n"); + } CertCloseStore(store, 0); DeleteFileW(filename); @@ -1269,8 +1311,11 @@ static void testFileNameStore(void) GetLastError()); cert = CertEnumCertificatesInStore(store, cert); ok(!cert, "Expected only one cert\n"); - crl = CertEnumCRLsInStore(store, NULL); - ok(!crl, "Expected no CRLs\n"); + if (pCertEnumCRLsInStore) + { + crl = pCertEnumCRLsInStore(store, NULL); + ok(!crl, "Expected no CRLs\n"); + } CertCloseStore(store, 0); DeleteFileW(filename); @@ -1290,10 +1335,13 @@ static void testFileNameStore(void) GetLastError()); cert = CertEnumCertificatesInStore(store, cert); ok(!cert, "Expected only one cert\n"); - crl = CertEnumCRLsInStore(store, NULL); - ok(crl != NULL, "CertEnumCRLsInStore failed: %08x\n", GetLastError()); - crl = CertEnumCRLsInStore(store, crl); - ok(!crl, "Expected only one CRL\n"); + if (pCertEnumCRLsInStore) + { + crl = pCertEnumCRLsInStore(store, NULL); + ok(crl != NULL, "CertEnumCRLsInStore failed: %08x\n", GetLastError()); + crl = pCertEnumCRLsInStore(store, crl); + ok(!crl, "Expected only one CRL\n"); + } CertCloseStore(store, 0); /* Don't delete it this time, the next test uses it */ @@ -1416,13 +1464,16 @@ static void testMessageStore(void) } while (cert); ok(count == 0, "Expected 0 certificates, got %d\n", count); - count = 0; - do { - crl = CertEnumCRLsInStore(store, crl); - if (crl) - count++; - } while (crl); - ok(count == 0, "Expected 0 CRLs, got %d\n", count); + if (pCertEnumCRLsInStore) + { + count = 0; + do { + crl = pCertEnumCRLsInStore(store, crl); + if (crl) + count++; + } while (crl); + ok(count == 0, "Expected 0 CRLs, got %d\n", count); + } /* Can add certs to a message store */ ret = CertAddEncodedCertificateToStore(store, X509_ASN_ENCODING, @@ -1464,13 +1515,16 @@ static void testMessageStore(void) } while (cert); ok(count == 1, "Expected 1 certificate, got %d\n", count); - count = 0; - do { - crl = CertEnumCRLsInStore(store, crl); - if (crl) - count++; - } while (crl); - ok(count == 1, "Expected 1 CRL, got %d\n", count); + if (pCertEnumCRLsInStore) + { + count = 0; + do { + crl = pCertEnumCRLsInStore(store, crl); + if (crl) + count++; + } while (crl); + ok(count == 1, "Expected 1 CRL, got %d\n", count); + } CertCloseStore(store, 0); } /* Encoding appears to be ignored */ @@ -1534,17 +1588,23 @@ static void testCertEnumSystemStore(void) BOOL ret; struct EnumSystemStoreInfo info = { FALSE, 0 }; + if (!pCertEnumSystemStore) + { + skip("CertEnumSystemStore() is not available\n"); + return; + } + SetLastError(0xdeadbeef); - ret = CertEnumSystemStore(0, NULL, NULL, NULL); + ret = pCertEnumSystemStore(0, NULL, NULL, NULL); ok(!ret && GetLastError() == ERROR_FILE_NOT_FOUND, "Expected ERROR_FILE_NOT_FOUND, got %08x\n", GetLastError()); /* Crashes - ret = CertEnumSystemStore(CERT_SYSTEM_STORE_LOCAL_MACHINE, NULL, NULL, + ret = pCertEnumSystemStore(CERT_SYSTEM_STORE_LOCAL_MACHINE, NULL, NULL, NULL); */ SetLastError(0xdeadbeef); - ret = CertEnumSystemStore(CERT_SYSTEM_STORE_LOCAL_MACHINE, NULL, &info, + ret = pCertEnumSystemStore(CERT_SYSTEM_STORE_LOCAL_MACHINE, NULL, &info, enumSystemStoreCB); /* Callback returning FALSE stops enumeration */ ok(!ret, "Expected CertEnumSystemStore to stop\n"); @@ -1553,7 +1613,7 @@ static void testCertEnumSystemStore(void) info.goOn = TRUE; info.storeCount = 0; - ret = CertEnumSystemStore(CERT_SYSTEM_STORE_LOCAL_MACHINE, NULL, &info, + ret = pCertEnumSystemStore(CERT_SYSTEM_STORE_LOCAL_MACHINE, NULL, &info, enumSystemStoreCB); ok(ret, "CertEnumSystemStore failed: %08x\n", GetLastError()); /* There should always be at least My, Root, and CA stores */ @@ -1568,52 +1628,58 @@ static void testStoreProperty(void) DWORD propID, size = 0, state; CRYPT_DATA_BLOB blob; + if (!pCertGetStoreProperty || !pCertSetStoreProperty) + { + skip("CertGet/SetStoreProperty() is not available\n"); + return; + } + /* Crash - ret = CertGetStoreProperty(NULL, 0, NULL, NULL); - ret = CertGetStoreProperty(NULL, 0, NULL, &size); - ret = CertGetStoreProperty(store, 0, NULL, NULL); + ret = pCertGetStoreProperty(NULL, 0, NULL, NULL); + ret = pCertGetStoreProperty(NULL, 0, NULL, &size); + ret = pCertGetStoreProperty(store, 0, NULL, NULL); */ store = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, 0, CERT_STORE_CREATE_NEW_FLAG, NULL); /* Check a missing prop ID */ SetLastError(0xdeadbeef); - ret = CertGetStoreProperty(store, 0, NULL, &size); + ret = pCertGetStoreProperty(store, 0, NULL, &size); ok(!ret && GetLastError() == CRYPT_E_NOT_FOUND, "Expected CRYPT_E_NOT_FOUND, got %08x\n", GetLastError()); /* Contrary to MSDN, CERT_ACCESS_STATE_PROP_ID is supported for stores.. */ size = sizeof(state); - ret = CertGetStoreProperty(store, CERT_ACCESS_STATE_PROP_ID, &state, &size); + ret = pCertGetStoreProperty(store, CERT_ACCESS_STATE_PROP_ID, &state, &size); ok(ret, "CertGetStoreProperty failed for CERT_ACCESS_STATE_PROP_ID: %08x\n", GetLastError()); ok(!state, "Expected a non-persisted store\n"); /* and CERT_STORE_LOCALIZED_NAME_PROP_ID isn't supported by default. */ size = 0; - ret = CertGetStoreProperty(store, CERT_STORE_LOCALIZED_NAME_PROP_ID, NULL, + ret = pCertGetStoreProperty(store, CERT_STORE_LOCALIZED_NAME_PROP_ID, NULL, &size); ok(!ret && GetLastError() == CRYPT_E_NOT_FOUND, "Expected CRYPT_E_NOT_FOUND, got %08x\n", GetLastError()); /* Delete an arbitrary property on a store */ - ret = CertSetStoreProperty(store, CERT_FIRST_USER_PROP_ID, 0, NULL); + ret = pCertSetStoreProperty(store, CERT_FIRST_USER_PROP_ID, 0, NULL); ok(ret, "CertSetStoreProperty failed: %08x\n", GetLastError()); /* Set an arbitrary property on a store */ blob.pbData = (LPBYTE)&state; blob.cbData = sizeof(state); - ret = CertSetStoreProperty(store, CERT_FIRST_USER_PROP_ID, 0, &blob); + ret = pCertSetStoreProperty(store, CERT_FIRST_USER_PROP_ID, 0, &blob); ok(ret, "CertSetStoreProperty failed: %08x\n", GetLastError()); /* Get an arbitrary property that's been set */ - ret = CertGetStoreProperty(store, CERT_FIRST_USER_PROP_ID, NULL, &size); + ret = pCertGetStoreProperty(store, CERT_FIRST_USER_PROP_ID, NULL, &size); ok(ret, "CertGetStoreProperty failed: %08x\n", GetLastError()); ok(size == sizeof(state), "Unexpected data size %d\n", size); - ret = CertGetStoreProperty(store, CERT_FIRST_USER_PROP_ID, &propID, &size); + ret = pCertGetStoreProperty(store, CERT_FIRST_USER_PROP_ID, &propID, &size); ok(ret, "CertGetStoreProperty failed: %08x\n", GetLastError()); ok(propID == state, "CertGetStoreProperty got the wrong value\n"); /* Delete it again */ - ret = CertSetStoreProperty(store, CERT_FIRST_USER_PROP_ID, 0, NULL); + ret = pCertSetStoreProperty(store, CERT_FIRST_USER_PROP_ID, 0, NULL); ok(ret, "CertSetStoreProperty failed: %08x\n", GetLastError()); /* And check that it's missing */ SetLastError(0xdeadbeef); - ret = CertGetStoreProperty(store, CERT_FIRST_USER_PROP_ID, NULL, &size); + ret = pCertGetStoreProperty(store, CERT_FIRST_USER_PROP_ID, NULL, &size); ok(!ret && GetLastError() == CRYPT_E_NOT_FOUND, "Expected CRYPT_E_NOT_FOUND, got %08x\n", GetLastError()); CertCloseStore(store, 0); @@ -1621,13 +1687,13 @@ static void testStoreProperty(void) /* Recheck on the My store.. */ store = CertOpenSystemStoreW(0, MyW); size = sizeof(state); - ret = CertGetStoreProperty(store, CERT_ACCESS_STATE_PROP_ID, &state, &size); + ret = pCertGetStoreProperty(store, CERT_ACCESS_STATE_PROP_ID, &state, &size); ok(ret, "CertGetStoreProperty failed for CERT_ACCESS_STATE_PROP_ID: %08x\n", GetLastError()); ok(state, "Expected a persisted store\n"); SetLastError(0xdeadbeef); size = 0; - ret = CertGetStoreProperty(store, CERT_STORE_LOCALIZED_NAME_PROP_ID, NULL, + ret = pCertGetStoreProperty(store, CERT_STORE_LOCALIZED_NAME_PROP_ID, NULL, &size); ok(!ret && GetLastError() == CRYPT_E_NOT_FOUND, "Expected CRYPT_E_NOT_FOUND, got %08x\n", GetLastError()); @@ -1807,7 +1873,7 @@ static DWORD countCRLsInStore(HCERTSTORE store) DWORD crls = 0; do { - crl = CertEnumCRLsInStore(store, crl); + crl = pCertEnumCRLsInStore(store, crl); if (crl) crls++; } while (crl); @@ -1869,8 +1935,11 @@ static void test_I_UpdateStore(void) ok(ret, "I_CertUpdateStore failed: %08x\n", GetLastError()); certs = countCertsInStore(store1); ok(certs == 1, "Expected 1 cert, got %d\n", certs); - certs = countCRLsInStore(store1); - ok(certs == 1, "Expected 1 CRL, got %d\n", certs); + if (pCertEnumCRLsInStore) + { + certs = countCRLsInStore(store1); + ok(certs == 1, "Expected 1 CRL, got %d\n", certs); + } CertDeleteCertificateFromStore(cert); /* If a context is deleted from store2, I_CertUpdateStore delets it @@ -1888,6 +1957,17 @@ static void test_I_UpdateStore(void) START_TEST(store) { + HMODULE hdll; + + hdll = GetModuleHandleA("Crypt32.dll"); + pCertAddStoreToCollection = (void*)GetProcAddress(hdll, "CertAddStoreToCollection"); + pCertControlStore = (void*)GetProcAddress(hdll, "CertControlStore"); + pCertEnumCRLsInStore = (void*)GetProcAddress(hdll, "CertEnumCRLsInStore"); + pCertEnumSystemStore = (void*)GetProcAddress(hdll, "CertEnumSystemStore"); + pCertGetStoreProperty = (void*)GetProcAddress(hdll, "CertGetStoreProperty"); + pCertRemoveStoreFromCollection = (void*)GetProcAddress(hdll, "CertRemoveStoreFromCollection"); + pCertSetStoreProperty = (void*)GetProcAddress(hdll, "CertSetStoreProperty"); + /* various combinations of CertOpenStore */ testMemStore(); testCollectionStore(); -- 2.11.4.GIT