Commit 21f82ad4 authored by Hans Leidekker's avatar Hans Leidekker Committed by Alexandre Julliard

crypt32/tests: Get rid of workarounds for old Windows versions.

parent bc81fdbf
......@@ -117,17 +117,13 @@ static void testCreateCTL(void)
"expected E_INVALIDARG, got %08lx\n", GetLastError());
SetLastError(0xdeadbeef);
ctl = CertCreateCTLContext(X509_ASN_ENCODING, NULL, 0);
ok(!ctl &&
(GetLastError() == ERROR_INVALID_DATA ||
GetLastError() == OSS_MORE_INPUT), /* win9x */
ok(!ctl && GetLastError() == ERROR_INVALID_DATA,
"expected ERROR_INVALID_DATA, got %ld (0x%08lx)\n", GetLastError(),
GetLastError());
/* An empty CTL can't be created.. */
SetLastError(0xdeadbeef);
ctl = CertCreateCTLContext(X509_ASN_ENCODING, emptyCTL, sizeof(emptyCTL));
ok(!ctl &&
(GetLastError() == ERROR_INVALID_DATA ||
GetLastError() == OSS_DATA_ERROR), /* win9x */
ok(!ctl && GetLastError() == ERROR_INVALID_DATA,
"expected ERROR_INVALID_DATA, got %ld (0x%08lx)\n", GetLastError(),
GetLastError());
/* Nor can any of these "signed" CTLs whose inner content OID isn't
......@@ -135,29 +131,20 @@ static void testCreateCTL(void)
*/
SetLastError(0xdeadbeef);
ctl = CertCreateCTLContext(X509_ASN_ENCODING, signedCTL, sizeof(signedCTL));
ok(!ctl &&
(GetLastError() == ERROR_INVALID_DATA ||
GetLastError() == CRYPT_E_UNEXPECTED_MSG_TYPE /* win9x */ ||
GetLastError() == ERROR_SUCCESS /* some win98 */),
"expected ERROR_INVALID_DATA, CRYPT_E_UNEXPECTED_MSG_TYPE, or ERROR_SUCCESS, got %ld (0x%08lx)\n", GetLastError(),
ok(!ctl && GetLastError() == ERROR_INVALID_DATA,
"expected ERROR_INVALID_DATA, got %ld (0x%08lx)\n",
GetLastError(),
GetLastError());
SetLastError(0xdeadbeef);
ctl = CertCreateCTLContext(X509_ASN_ENCODING, ctlWithOneEntry,
sizeof(ctlWithOneEntry));
ok(!ctl &&
(GetLastError() == ERROR_INVALID_DATA ||
GetLastError() == CRYPT_E_UNEXPECTED_MSG_TYPE /* win9x */ ||
GetLastError() == OSS_DATA_ERROR /* some win98 */ ||
GetLastError() == ERROR_SUCCESS /* some win98 */),
"expected ERROR_INVALID_DATA, CRYPT_E_UNEXPECTED_MSG_TYPE, OSS_DATA_ERROR, or ERROR_SUCCESS, got %ld (0x%08lx)\n", GetLastError(),
ok(!ctl && GetLastError() == ERROR_INVALID_DATA,
"expected ERROR_INVALID_DATA, got %ld (0x%08lx)\n", GetLastError(),
GetLastError());
SetLastError(0xdeadbeef);
ctl = CertCreateCTLContext(X509_ASN_ENCODING,
signedCTLWithSubjectAlgorithm, sizeof(signedCTLWithSubjectAlgorithm));
ok(!ctl &&
(GetLastError() == ERROR_INVALID_DATA ||
GetLastError() == CRYPT_E_UNEXPECTED_MSG_TYPE /* win9x */ ||
GetLastError() == ERROR_SUCCESS /* some win98 */),
ok(!ctl && GetLastError() == ERROR_INVALID_DATA,
"expected ERROR_INVALID_DATA, got %ld (0x%08lx)\n", GetLastError(),
GetLastError());
/* This signed CTL with the appropriate inner content type can be decoded.
......@@ -237,11 +224,6 @@ static void testCTLProperties(void)
ctl = CertCreateCTLContext(X509_ASN_ENCODING,
signedCTLWithCTLInnerContent, sizeof(signedCTLWithCTLInnerContent));
if (!ctl)
{
skip("CertCreateCTLContext failed: %08lx\n", GetLastError());
return;
}
/* No properties as yet */
propID = 0;
......@@ -256,12 +238,10 @@ static void testCTLProperties(void)
/* An implicit property */
ret = CertGetCTLContextProperty(ctl, CERT_ACCESS_STATE_PROP_ID, NULL,
&size);
ok(ret || broken(GetLastError() == CRYPT_E_NOT_FOUND /* some win98 */),
"CertGetCTLContextProperty failed: %08lx\n", GetLastError());
ok(ret, "CertGetCTLContextProperty failed: %08lx\n", GetLastError());
ret = CertGetCTLContextProperty(ctl, CERT_ACCESS_STATE_PROP_ID, &access,
&size);
ok(ret || broken(GetLastError() == CRYPT_E_NOT_FOUND /* some win98 */),
"CertGetCTLContextProperty failed: %08lx\n", GetLastError());
ok(ret, "CertGetCTLContextProperty failed: %08lx\n", GetLastError());
if (ret)
ok(!(access & CERT_ACCESS_STATE_WRITE_PERSIST_FLAG),
"Didn't expect a persisted cert\n");
......@@ -390,8 +370,8 @@ static void testAddCTLToStore(void)
signedCTLWithCTLInnerContentAndBadSig,
sizeof(signedCTLWithCTLInnerContentAndBadSig), CERT_STORE_ADD_NEW,
NULL);
ok(!ret && (GetLastError() == CRYPT_E_EXISTS || GetLastError() == OSS_DATA_ERROR),
"expected CRYPT_E_EXISTS or OSS_DATA_ERROR, got %d %08lx\n", ret, GetLastError());
ok(!ret && GetLastError() == CRYPT_E_EXISTS,
"expected CRYPT_E_EXISTS, got %d %08lx\n", ret, GetLastError());
CertCloseStore(store, 0);
store = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, 0,
......@@ -407,8 +387,7 @@ static void testAddCTLToStore(void)
ret = CertAddEncodedCTLToStore(store, X509_ASN_ENCODING,
signedCTLWithUsage, sizeof(signedCTLWithUsage), CERT_STORE_ADD_NEW,
NULL);
ok(ret || broken(GetLastError() == OSS_DATA_ERROR /* some win98 */),
"CertAddEncodedCTLToStore failed: %08lx\n", GetLastError());
ok(ret, "CertAddEncodedCTLToStore failed: %08lx\n", GetLastError());
if (ret)
expectedCTLs++;
/* Check that two exist */
......@@ -431,11 +410,6 @@ static void testAddCTLToStore(void)
ret = CertAddEncodedCTLToStore(store, X509_ASN_ENCODING,
signedCTLWithListID1, sizeof(signedCTLWithListID1), CERT_STORE_ADD_NEW,
NULL);
if (!ret)
{
skip("adding a CTL with an empty usage not supported\n");
return;
}
ok(ret, "CertAddEncodedCTLToStore failed: %08lx\n", GetLastError());
ret = CertAddEncodedCTLToStore(store, X509_ASN_ENCODING,
signedCTLWithListID2, sizeof(signedCTLWithListID2), CERT_STORE_ADD_NEW,
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -26,9 +26,6 @@
#include "wine/test.h"
static BOOL (WINAPI * pCryptQueryObject)(DWORD, const void *, DWORD, DWORD,
DWORD, DWORD *, DWORD *, DWORD *, HCERTSTORE *, HCRYPTMSG *, const void **);
static 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,
......@@ -105,12 +102,12 @@ static void test_query_object(void)
/* Test the usual invalid arguments */
SetLastError(0xdeadbeef);
ret = pCryptQueryObject(0, NULL, 0, 0, 0, NULL, NULL, NULL, NULL, NULL,
ret = CryptQueryObject(0, NULL, 0, 0, 0, NULL, NULL, NULL, NULL, NULL,
NULL);
ok(!ret && GetLastError() == E_INVALIDARG,
"expected E_INVALIDARG, got %08lx\n", GetLastError());
SetLastError(0xdeadbeef);
ret = pCryptQueryObject(CERT_QUERY_OBJECT_BLOB, NULL, 0, 0, 0, NULL, NULL,
ret = CryptQueryObject(CERT_QUERY_OBJECT_BLOB, NULL, 0, 0, 0, NULL, NULL,
NULL, NULL, NULL, NULL);
ok(!ret && GetLastError() == E_INVALIDARG,
"expected E_INVALIDARG, got %08lx\n", GetLastError());
......@@ -118,7 +115,7 @@ static void test_query_object(void)
blob.pbData = bigCert;
blob.cbData = sizeof(bigCert);
SetLastError(0xdeadbeef);
ret = pCryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
ret = CryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
CERT_QUERY_CONTENT_FLAG_ALL, CERT_QUERY_FORMAT_FLAG_ALL, 0, NULL, NULL,
NULL, NULL, NULL, NULL);
ok(ret, "CryptQueryObject failed: %08lx\n", GetLastError());
......@@ -126,19 +123,19 @@ static void test_query_object(void)
blob.pbData = (BYTE *)bigCertBase64;
blob.cbData = sizeof(bigCertBase64);
SetLastError(0xdeadbeef);
ret = pCryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
ret = CryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
CERT_QUERY_CONTENT_FLAG_ALL, CERT_QUERY_FORMAT_FLAG_ALL, 0, NULL, NULL,
NULL, NULL, NULL, NULL);
ok(ret, "CryptQueryObject failed: %08lx\n", GetLastError());
/* The same base64-encoded cert, restricting the format types */
SetLastError(0xdeadbeef);
ret = pCryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
ret = CryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
CERT_QUERY_CONTENT_FLAG_ALL, CERT_QUERY_FORMAT_FLAG_BINARY, 0, NULL, NULL,
NULL, NULL, NULL, NULL);
ok(!ret && GetLastError() == CRYPT_E_NO_MATCH,
"expected CRYPT_E_NO_MATCH, got %08lx\n", GetLastError());
SetLastError(0xdeadbeef);
ret = pCryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
ret = CryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
CERT_QUERY_CONTENT_FLAG_ALL, CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED, 0,
NULL, NULL, NULL, NULL, NULL, NULL);
ok(ret, "CryptQueryObject failed: %08lx\n", GetLastError());
......@@ -146,7 +143,7 @@ static void test_query_object(void)
blob.pbData = (BYTE *)bigCertBase64W;
blob.cbData = sizeof(bigCertBase64W);
SetLastError(0xdeadbeef);
ret = pCryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
ret = CryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
CERT_QUERY_CONTENT_FLAG_ALL, CERT_QUERY_FORMAT_FLAG_ALL, 0, NULL, NULL,
NULL, NULL, NULL, NULL);
ok(!ret && GetLastError() == CRYPT_E_NO_MATCH,
......@@ -159,14 +156,14 @@ static void test_query_object(void)
blob.pbData = signedWithCertWithValidPubKeyContent;
blob.cbData = sizeof(signedWithCertWithValidPubKeyContent);
SetLastError(0xdeadbeef);
ret = pCryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
ret = CryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
CERT_QUERY_CONTENT_FLAG_ALL, CERT_QUERY_FORMAT_FLAG_ALL, 0, NULL, NULL,
NULL, NULL, NULL, NULL);
ok(ret, "CryptQueryObject failed: %08lx\n", GetLastError());
blob.pbData = (BYTE *)signedWithCertWithValidPubKeyContentBase64;
blob.cbData = sizeof(signedWithCertWithValidPubKeyContentBase64);
SetLastError(0xdeadbeef);
ret = pCryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
ret = CryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
CERT_QUERY_CONTENT_FLAG_ALL, CERT_QUERY_FORMAT_FLAG_ALL, 0, NULL, NULL,
NULL, NULL, NULL, NULL);
ok(ret, "CryptQueryObject failed: %08lx\n", GetLastError());
......@@ -176,18 +173,18 @@ static void test_query_object(void)
blob.pbData = (BYTE *)signedWithCertWithValidPubKeyContentBase64W;
blob.cbData = sizeof(signedWithCertWithValidPubKeyContentBase64W);
SetLastError(0xdeadbeef);
ret = pCryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
ret = CryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
CERT_QUERY_CONTENT_FLAG_ALL, CERT_QUERY_FORMAT_FLAG_ALL, 0, NULL, NULL,
NULL, NULL, NULL, NULL);
ok(ret, "CryptQueryObject failed: %08lx\n", GetLastError());
SetLastError(0xdeadbeef);
ret = pCryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
ret = CryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
CERT_QUERY_CONTENT_FLAG_ALL, CERT_QUERY_FORMAT_FLAG_BINARY, 0, NULL, NULL,
NULL, NULL, NULL, NULL);
ok(!ret && GetLastError() == CRYPT_E_NO_MATCH,
"expected CRYPT_E_NO_MATCH, got %08lx\n", GetLastError());
SetLastError(0xdeadbeef);
ret = pCryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
ret = CryptQueryObject(CERT_QUERY_OBJECT_BLOB, &blob,
CERT_QUERY_CONTENT_FLAG_ALL, CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED, 0,
NULL, NULL, NULL, NULL, NULL, NULL);
ok(ret, "CryptQueryObject failed: %08lx\n", GetLastError());
......@@ -195,15 +192,5 @@ static void test_query_object(void)
START_TEST(object)
{
HMODULE mod = GetModuleHandleA("crypt32.dll");
pCryptQueryObject = (void *)GetProcAddress(mod, "CryptQueryObject");
if (!pCryptQueryObject)
{
win_skip("CryptQueryObject is not available\n");
return;
}
test_query_object();
}
......@@ -29,73 +29,68 @@
#include "wine/test.h"
static BOOL (WINAPI *pCryptEnumOIDInfo)(DWORD,DWORD,void*,PFN_CRYPT_ENUM_OID_INFO);
struct OIDToAlgID
{
LPCSTR oid;
LPCSTR altOid;
DWORD algID;
DWORD altAlgID;
};
static const struct OIDToAlgID oidToAlgID[] = {
{ szOID_RSA_RSA, NULL, CALG_RSA_KEYX },
{ szOID_RSA_MD2RSA, NULL, CALG_MD2 },
{ szOID_RSA_MD4RSA, NULL, CALG_MD4 },
{ szOID_RSA_MD5RSA, NULL, CALG_MD5 },
{ szOID_RSA_SHA1RSA, NULL, CALG_SHA },
{ szOID_RSA_DH, NULL, CALG_DH_SF },
{ szOID_RSA_SMIMEalgESDH, NULL, CALG_DH_EPHEM },
{ szOID_RSA_SMIMEalgCMS3DESwrap, NULL, CALG_3DES },
{ szOID_RSA_SMIMEalgCMSRC2wrap, NULL, CALG_RC2 },
{ szOID_RSA_MD2, NULL, CALG_MD2 },
{ szOID_RSA_MD4, NULL, CALG_MD4 },
{ szOID_RSA_MD5, NULL, CALG_MD5 },
{ szOID_RSA_RC2CBC, NULL, CALG_RC2 },
{ szOID_RSA_RC4, NULL, CALG_RC4 },
{ szOID_RSA_DES_EDE3_CBC, NULL, CALG_3DES },
{ szOID_ANSI_X942_DH, NULL, CALG_DH_SF },
{ szOID_X957_DSA, NULL, CALG_DSS_SIGN },
{ szOID_X957_SHA1DSA, NULL, CALG_SHA },
{ szOID_OIWSEC_md4RSA, NULL, CALG_MD4 },
{ szOID_OIWSEC_md5RSA, NULL, CALG_MD5 },
{ szOID_OIWSEC_md4RSA2, NULL, CALG_MD4 },
{ szOID_OIWSEC_desCBC, NULL, CALG_DES },
{ szOID_OIWSEC_dsa, NULL, CALG_DSS_SIGN },
{ szOID_OIWSEC_shaDSA, NULL, CALG_SHA },
{ szOID_OIWSEC_shaRSA, NULL, CALG_SHA },
{ szOID_OIWSEC_sha, NULL, CALG_SHA },
{ szOID_OIWSEC_rsaXchg, NULL, CALG_RSA_KEYX },
{ szOID_OIWSEC_sha1, NULL, CALG_SHA },
{ szOID_OIWSEC_dsaSHA1, NULL, CALG_SHA },
{ szOID_OIWSEC_sha1RSASign, NULL, CALG_SHA },
{ szOID_OIWDIR_md2RSA, NULL, CALG_MD2 },
{ szOID_INFOSEC_mosaicUpdatedSig, NULL, CALG_SHA },
{ szOID_INFOSEC_mosaicKMandUpdSig, NULL, CALG_DSS_SIGN },
{ szOID_NIST_sha256, NULL, CALG_SHA_256, -1 },
{ szOID_NIST_sha384, NULL, CALG_SHA_384, -1 },
{ szOID_NIST_sha512, NULL, CALG_SHA_512, -1 }
{ szOID_RSA_RSA, CALG_RSA_KEYX },
{ szOID_RSA_MD2RSA, CALG_MD2 },
{ szOID_RSA_MD4RSA, CALG_MD4 },
{ szOID_RSA_MD5RSA, CALG_MD5 },
{ szOID_RSA_SHA1RSA, CALG_SHA },
{ szOID_RSA_DH, CALG_DH_SF },
{ szOID_RSA_SMIMEalgESDH, CALG_DH_EPHEM },
{ szOID_RSA_SMIMEalgCMS3DESwrap, CALG_3DES },
{ szOID_RSA_SMIMEalgCMSRC2wrap, CALG_RC2 },
{ szOID_RSA_MD2, CALG_MD2 },
{ szOID_RSA_MD4, CALG_MD4 },
{ szOID_RSA_MD5, CALG_MD5 },
{ szOID_RSA_RC2CBC, CALG_RC2 },
{ szOID_RSA_RC4, CALG_RC4 },
{ szOID_RSA_DES_EDE3_CBC, CALG_3DES },
{ szOID_ANSI_X942_DH, CALG_DH_SF },
{ szOID_X957_DSA, CALG_DSS_SIGN },
{ szOID_X957_SHA1DSA, CALG_SHA },
{ szOID_OIWSEC_md4RSA, CALG_MD4 },
{ szOID_OIWSEC_md5RSA, CALG_MD5 },
{ szOID_OIWSEC_md4RSA2, CALG_MD4 },
{ szOID_OIWSEC_desCBC, CALG_DES },
{ szOID_OIWSEC_dsa, CALG_DSS_SIGN },
{ szOID_OIWSEC_shaDSA, CALG_SHA },
{ szOID_OIWSEC_shaRSA, CALG_SHA },
{ szOID_OIWSEC_sha, CALG_SHA },
{ szOID_OIWSEC_rsaXchg, CALG_RSA_KEYX },
{ szOID_OIWSEC_sha1, CALG_SHA },
{ szOID_OIWSEC_dsaSHA1, CALG_SHA },
{ szOID_OIWSEC_sha1RSASign, CALG_SHA },
{ szOID_OIWDIR_md2RSA, CALG_MD2 },
{ szOID_INFOSEC_mosaicUpdatedSig, CALG_SHA },
{ szOID_INFOSEC_mosaicKMandUpdSig, CALG_DSS_SIGN },
{ szOID_NIST_sha256, CALG_SHA_256, -1 },
{ szOID_NIST_sha384, CALG_SHA_384, -1 },
{ szOID_NIST_sha512, CALG_SHA_512, -1 }
};
static const struct OIDToAlgID algIDToOID[] = {
{ szOID_RSA_RSA, NULL, CALG_RSA_KEYX },
{ szOID_RSA_SMIMEalgESDH, NULL, CALG_DH_EPHEM },
{ szOID_RSA_MD2, NULL, CALG_MD2 },
{ szOID_RSA_MD4, NULL, CALG_MD4 },
{ szOID_RSA_MD5, NULL, CALG_MD5 },
{ szOID_RSA_RC2CBC, NULL, CALG_RC2 },
{ szOID_RSA_RC4, NULL, CALG_RC4 },
{ szOID_RSA_DES_EDE3_CBC, NULL, CALG_3DES },
{ szOID_ANSI_X942_DH, NULL, CALG_DH_SF },
{ szOID_X957_DSA, szOID_OIWSEC_dsa /* some Win98 */, CALG_DSS_SIGN },
{ szOID_OIWSEC_desCBC, NULL, CALG_DES },
{ szOID_OIWSEC_sha1, NULL, CALG_SHA },
{ szOID_RSA_RSA, CALG_RSA_KEYX },
{ szOID_RSA_SMIMEalgESDH, CALG_DH_EPHEM },
{ szOID_RSA_MD2, CALG_MD2 },
{ szOID_RSA_MD4, CALG_MD4 },
{ szOID_RSA_MD5, CALG_MD5 },
{ szOID_RSA_RC2CBC, CALG_RC2 },
{ szOID_RSA_RC4, CALG_RC4 },
{ szOID_RSA_DES_EDE3_CBC, CALG_3DES },
{ szOID_ANSI_X942_DH, CALG_DH_SF },
{ szOID_X957_DSA, CALG_DSS_SIGN },
{ szOID_OIWSEC_desCBC, CALG_DES },
{ szOID_OIWSEC_sha1, CALG_SHA },
};
static void testOIDToAlgID(void)
static void test_OIDToAlgID(void)
{
int i;
DWORD alg;
......@@ -112,7 +107,7 @@ static void testOIDToAlgID(void)
}
}
static void testAlgIDToOID(void)
static void test_AlgIDToOID(void)
{
int i;
LPCSTR oid;
......@@ -126,27 +121,9 @@ static void testAlgIDToOID(void)
{
oid = CertAlgIdToOID(algIDToOID[i].algID);
/* Allow failure, not every version of Windows supports every algo */
ok(oid != NULL || broken(!oid), "CertAlgIdToOID failed, expected %s\n", algIDToOID[i].oid);
ok(oid != NULL, "CertAlgIdToOID failed, expected %s\n", algIDToOID[i].oid);
if (oid)
{
if (strcmp(oid, algIDToOID[i].oid))
{
if (algIDToOID[i].altOid)
ok(!strcmp(oid, algIDToOID[i].altOid),
"Expected %s or %s, got %s\n", algIDToOID[i].oid,
algIDToOID[i].altOid, oid);
else
{
/* No need to rerun the test, we already know it failed. */
ok(0, "Expected %s, got %s\n", algIDToOID[i].oid, oid);
}
}
else
{
/* No need to rerun the test, we already know it succeeded. */
ok(1, "Expected %s, got %s\n", algIDToOID[i].oid, oid);
}
}
ok(!strcmp(oid, algIDToOID[i].oid), "Expected %s, got %s\n", algIDToOID[i].oid, oid);
}
}
......@@ -213,8 +190,7 @@ static void test_oidFunctionSet(void)
ret = CryptGetOIDFunctionAddress(set1, X509_ASN_ENCODING, X509_CERT, 0,
&funcAddr, &hFuncAddr);
ok((!ret && GetLastError() == ERROR_FILE_NOT_FOUND) ||
broken(ret) /* some Win98 */,
ok(!ret && GetLastError() == ERROR_FILE_NOT_FOUND,
"Expected ERROR_FILE_NOT_FOUND, got %08lx\n", GetLastError());
}
}
......@@ -266,10 +242,8 @@ static void test_installOIDFunctionAddress(void)
*/
ret = CryptGetOIDFunctionAddress(set, X509_ASN_ENCODING, 0, 0,
(void **)&funcAddr, &hFuncAddr);
ok(!ret && (GetLastError() == ERROR_FILE_NOT_FOUND ||
GetLastError() == E_INVALIDARG /* some Win98 */),
"Expected ERROR_FILE_NOT_FOUND or E_INVALIDARG, got %ld\n",
GetLastError());
ok(!ret && GetLastError() == ERROR_FILE_NOT_FOUND,
"Expected ERROR_FILE_NOT_FOUND, got %ld\n", GetLastError());
ret = CryptGetOIDFunctionAddress(set, X509_ASN_ENCODING, X509_CERT, 0,
(void **)&funcAddr, &hFuncAddr);
ok(!ret && GetLastError() == ERROR_FILE_NOT_FOUND,
......@@ -520,20 +494,14 @@ static void test_enumOIDInfo(void)
BOOL ret;
DWORD count = 0;
if (!pCryptEnumOIDInfo)
{
win_skip("CryptEnumOIDInfo() is not available\n");
return;
}
/* This crashes
ret = pCryptEnumOIDInfo(7, 0, NULL, NULL);
ret = CryptEnumOIDInfo(7, 0, NULL, NULL);
*/
/* Silly tests, check that more than one thing is enumerated */
ret = pCryptEnumOIDInfo(0, 0, &count, countOidInfo);
ret = CryptEnumOIDInfo(0, 0, &count, countOidInfo);
ok(ret && count > 0, "Expected more than item enumerated\n");
ret = pCryptEnumOIDInfo(0, 0, NULL, noOidInfo);
ret = CryptEnumOIDInfo(0, 0, NULL, noOidInfo);
ok(!ret, "Expected FALSE\n");
}
......@@ -700,11 +668,8 @@ static void test_registerOIDInfo(void)
START_TEST(oid)
{
HMODULE hCrypt32 = GetModuleHandleA("crypt32.dll");
pCryptEnumOIDInfo = (void*)GetProcAddress(hCrypt32, "CryptEnumOIDInfo");
testOIDToAlgID();
testAlgIDToOID();
test_OIDToAlgID();
test_AlgIDToOID();
test_enumOIDInfo();
test_findOIDInfo();
test_registerOIDInfo();
......
......@@ -27,9 +27,6 @@
#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";
......@@ -51,13 +48,13 @@ static void test_cryptprotectdata(void)
entropy.cbData=strlen(key)+1;
SetLastError(0xDEADBEEF);
protected = pCryptProtectData(NULL, L"Ultra secret test message", NULL, NULL, NULL, 0, &cipher);
protected = CryptProtectData(NULL, L"Ultra secret test message", NULL, NULL, NULL, 0, &cipher);
ok(!protected, "Encrypting without plain data source.\n");
r = GetLastError();
ok(r == ERROR_INVALID_PARAMETER, "Wrong (%lu) GetLastError seen\n",r);
SetLastError(0xDEADBEEF);
protected = pCryptProtectData(&plain, L"Ultra secret test message", NULL, NULL, NULL, 0, NULL);
protected = CryptProtectData(&plain, L"Ultra secret test message", NULL, NULL, NULL, 0, NULL);
ok(!protected, "Encrypting without cipher destination.\n");
r = GetLastError();
ok(r == ERROR_INVALID_PARAMETER, "Wrong (%lu) GetLastError seen\n",r);
......@@ -67,16 +64,12 @@ static void test_cryptprotectdata(void)
/* without entropy */
SetLastError(0xDEADBEEF);
protected = pCryptProtectData(&plain, L"Ultra secret test message", NULL, NULL, NULL, 0, &cipher);
ok(protected ||
broken(!protected), /* Win9x/NT4 */
"Encrypting without entropy.\n");
protected = CryptProtectData(&plain, L"Ultra secret test message", NULL, NULL, NULL, 0, &cipher);
ok(protected, "Encrypting without entropy.\n");
if (protected)
{
r = GetLastError();
ok(r == ERROR_SUCCESS ||
r == ERROR_IO_PENDING, /* win2k */
"Expected ERROR_SUCCESS or ERROR_IO_PENDING, got %ld\n",r);
ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %ld\n",r);
}
cipher_entropy.pbData=NULL;
......@@ -84,10 +77,8 @@ static void test_cryptprotectdata(void)
/* with entropy */
SetLastError(0xDEADBEEF);
protected = pCryptProtectData(&plain, L"Ultra secret test message", &entropy, NULL, NULL, 0, &cipher_entropy);
ok(protected ||
broken(!protected), /* Win9x/NT4 */
"Encrypting with entropy.\n");
protected = CryptProtectData(&plain, L"Ultra secret test message", &entropy, NULL, NULL, 0, &cipher_entropy);
ok(protected, "Encrypting with entropy.\n");
cipher_no_desc.pbData=NULL;
cipher_no_desc.cbData=0;
......@@ -96,13 +87,8 @@ static void test_cryptprotectdata(void)
plain.pbData=(void*)secret2;
plain.cbData=strlen(secret2)+1;
SetLastError(0xDEADBEEF);
protected = pCryptProtectData(&plain,NULL,&entropy,NULL,NULL,0,&cipher_no_desc);
if (!protected)
{
/* fails in win2k */
ok(GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError());
}
protected = CryptProtectData(&plain,NULL,&entropy,NULL,NULL,0,&cipher_no_desc);
ok(protected, "Encrypting with entropy.\n");
}
static void test_cryptunprotectdata(void)
......@@ -116,24 +102,17 @@ static void test_cryptunprotectdata(void)
entropy.pbData=(void*)key;
entropy.cbData=strlen(key)+1;
/* fails in win2k */
if (!protected)
{
skip("CryptProtectData failed to run\n");
return;
}
plain.pbData=NULL;
plain.cbData=0;
SetLastError(0xDEADBEEF);
okay = pCryptUnprotectData(&cipher,NULL,NULL,NULL,NULL,0,NULL);
okay = CryptUnprotectData(&cipher,NULL,NULL,NULL,NULL,0,NULL);
ok(!okay,"Decrypting without destination\n");
r = GetLastError();
ok(r == ERROR_INVALID_PARAMETER, "Wrong (%lu) GetLastError seen\n",r);
SetLastError(0xDEADBEEF);
okay = pCryptUnprotectData(NULL,NULL,NULL,NULL,NULL,0,&plain);
okay = CryptUnprotectData(NULL,NULL,NULL,NULL,NULL,0,&plain);
ok(!okay,"Decrypting without source\n");
r = GetLastError();
ok(r == ERROR_INVALID_PARAMETER, "Wrong (%lu) GetLastError seen\n",r);
......@@ -142,7 +121,7 @@ static void test_cryptunprotectdata(void)
plain.cbData=0;
SetLastError(0xDEADBEEF);
okay = pCryptUnprotectData(&cipher_entropy,NULL,NULL,NULL,NULL,0,&plain);
okay = CryptUnprotectData(&cipher_entropy,NULL,NULL,NULL,NULL,0,&plain);
ok(!okay,"Decrypting without needed entropy\n");
r = GetLastError();
ok(r == ERROR_INVALID_DATA, "Wrong (%lu) GetLastError seen\n", r);
......@@ -153,7 +132,7 @@ static void test_cryptunprotectdata(void)
/* without entropy */
SetLastError(0xDEADBEEF);
okay = pCryptUnprotectData(&cipher,&data_desc,NULL,NULL,NULL,0,&plain);
okay = CryptUnprotectData(&cipher,&data_desc,NULL,NULL,NULL,0,&plain);
ok(okay,"Decrypting without entropy\n");
ok(plain.pbData!=NULL,"Plain DATA_BLOB missing data\n");
......@@ -171,14 +150,14 @@ static void test_cryptunprotectdata(void)
/* with wrong entropy */
SetLastError(0xDEADBEEF);
okay = pCryptUnprotectData(&cipher_entropy,&data_desc,&cipher_entropy,NULL,NULL,0,&plain);
okay = CryptUnprotectData(&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 (%lu) GetLastError seen\n",r);
/* with entropy */
SetLastError(0xDEADBEEF);
okay = pCryptUnprotectData(&cipher_entropy,&data_desc,&entropy,NULL,NULL,0,&plain);
okay = CryptUnprotectData(&cipher_entropy,&data_desc,&entropy,NULL,NULL,0,&plain);
ok(okay,"Decrypting with entropy\n");
ok(plain.pbData!=NULL,"Plain DATA_BLOB missing data\n");
......@@ -196,7 +175,7 @@ static void test_cryptunprotectdata(void)
/* with entropy but no description */
SetLastError(0xDEADBEEF);
okay = pCryptUnprotectData(&cipher_no_desc,&data_desc,&entropy,NULL,NULL,0,&plain);
okay = CryptUnprotectData(&cipher_no_desc,&data_desc,&entropy,NULL,NULL,0,&plain);
ok(okay,"Decrypting with entropy and no description\n");
ok(plain.pbData!=NULL,"Plain DATA_BLOB missing data\n");
......@@ -223,16 +202,10 @@ static void test_simpleroundtrip(const char *plaintext)
emptyW[0] = 0;
input.pbData = (unsigned char *)plaintext;
input.cbData = strlen(plaintext);
res = pCryptProtectData(&input, emptyW, NULL, NULL, NULL, 0, &encrypted);
ok(res != 0 || broken(!res), "can't protect\n");
if (!res)
{
/* Fails on Win9x, NT4 */
win_skip("CryptProtectData failed\n");
return;
}
res = CryptProtectData(&input, emptyW, NULL, NULL, NULL, 0, &encrypted);
ok(res != 0, "can't protect\n");
res = pCryptUnprotectData(&encrypted, NULL, NULL, NULL, NULL, 0, &output);
res = CryptUnprotectData(&encrypted, NULL, NULL, NULL, NULL, 0, &output);
ok(res != 0, "can't unprotect; last error %lu\n", GetLastError());
ok(output.cbData == strlen(plaintext), "output wrong length %ld for input '%s', wanted %d\n", output.cbData, plaintext, lstrlenA(plaintext));
ok(!memcmp(plaintext, (char *)output.pbData, output.cbData), "output wrong contents for input '%s'\n", plaintext);
......@@ -242,16 +215,7 @@ static void test_simpleroundtrip(const char *plaintext)
START_TEST(protectdata)
{
HMODULE hCrypt32 = GetModuleHandleA("crypt32.dll");
pCryptProtectData = (void*)GetProcAddress(hCrypt32, "CryptProtectData");
pCryptUnprotectData = (void*)GetProcAddress(hCrypt32, "CryptUnprotectData");
if (!pCryptProtectData || !pCryptUnprotectData)
{
win_skip("Crypt(Un)ProtectData() is not available\n");
return;
}
protected=FALSE;
protected = FALSE;
test_cryptprotectdata();
test_cryptunprotectdata();
test_simpleroundtrip("");
......
......@@ -57,17 +57,6 @@ static void test_AddRemoveProvider(void)
/* Apparently the needed rights are checked before the existence of the provider */
skip("Need admin rights\n");
}
else
{
/* On some Win98 systems, CryptSIPRemoveProvider always succeeds if
* the arguments are correct, whether or not the registry key is
* present, so don't test ret, just check the last error if it does
* return FALSE.
*/
if (!ret)
ok (GetLastError() == ERROR_FILE_NOT_FOUND,
"Expected ERROR_FILE_NOT_FOUND, got %ld.\n", GetLastError());
}
/* Everything OK, pwszIsFunctionName and pwszIsFunctionNameFmt2 are left NULL
* as allowed */
......@@ -96,14 +85,8 @@ static void test_AddRemoveProvider(void)
*/
SetLastError(0xdeadbeef);
ret = CryptSIPRemoveProvider(&actionid);
/* On some Win98 systems, CryptSIPRemoveProvider always succeeds if
* the arguments are correct, whether or not the registry key is
* present, so don't test ret, just check the last error if it does
* return FALSE.
*/
if (!ret)
ok (GetLastError() == ERROR_FILE_NOT_FOUND,
"Expected ERROR_FILE_NOT_FOUND, got %ld.\n", GetLastError());
ok(!ret && GetLastError() == ERROR_FILE_NOT_FOUND,
"Expected ERROR_FILE_NOT_FOUND, got %ld.\n", GetLastError());
/* Everything OK */
memset(&newprov, 0, sizeof(SIP_ADD_NEWPROVIDER));
......@@ -223,11 +206,8 @@ static void test_SIPRetrieveSubjectGUID(void)
memset(&subject, 1, sizeof(GUID));
ret = CryptSIPRetrieveSubjectGuid(tempfileW, NULL, &subject);
ok ( !ret, "Expected CryptSIPRetrieveSubjectGuid to fail\n");
ok ( GetLastError() == ERROR_FILE_INVALID ||
GetLastError() == ERROR_INVALID_PARAMETER /* Vista */ ||
GetLastError() == ERROR_SUCCESS /* most Win98 */ ||
GetLastError() == TRUST_E_SUBJECT_FORM_UNKNOWN /* some Win98 */,
"Expected ERROR_FILE_INVALID, ERROR_INVALID_PARAMETER, ERROR_SUCCESS or TRUST_E_SUBJECT_FORM_UNKNOWN, got 0x%08lx\n", GetLastError());
ok ( GetLastError() == ERROR_FILE_INVALID || GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_FILE_INVALID, ERROR_INVALID_PARAMETER, got 0x%08lx\n", GetLastError());
ok(IsEqualGUID(&subject, &nullSubject),
"Expected a NULL GUID for empty file %s, not %s\n", tempfile, wine_dbgstr_guid(&subject));
......@@ -240,10 +220,8 @@ static void test_SIPRetrieveSubjectGUID(void)
memset(&subject, 1, sizeof(GUID));
ret = CryptSIPRetrieveSubjectGuid(tempfileW, NULL, &subject);
ok ( !ret, "Expected CryptSIPRetrieveSubjectGuid to fail\n");
ok ( GetLastError() == ERROR_INVALID_PARAMETER ||
GetLastError() == ERROR_SUCCESS /* most Win98 */ ||
GetLastError() == TRUST_E_SUBJECT_FORM_UNKNOWN /* some Win98 */,
"Expected ERROR_INVALID_PARAMETER, ERROR_SUCCESS or TRUST_E_SUBJECT_FORM_UNKNOWN, got 0x%08lx\n", GetLastError());
ok ( GetLastError() == ERROR_INVALID_PARAMETER,
"Expected ERROR_INVALID_PARAMETER, got 0x%08lx\n", GetLastError());
ok(IsEqualGUID(&subject, &nullSubject),
"Expected a NULL GUID for empty file %s, not %s\n", tempfile, wine_dbgstr_guid(&subject));
......@@ -256,8 +234,7 @@ static void test_SIPRetrieveSubjectGUID(void)
memset(&subject, 1, sizeof(GUID));
ret = CryptSIPRetrieveSubjectGuid(tempfileW, NULL, &subject);
ok ( !ret, "Expected CryptSIPRetrieveSubjectGuid to fail\n");
ok ( GetLastError() == TRUST_E_SUBJECT_FORM_UNKNOWN ||
GetLastError() == ERROR_SUCCESS /* Win98 */,
ok ( GetLastError() == TRUST_E_SUBJECT_FORM_UNKNOWN,
"Expected TRUST_E_SUBJECT_FORM_UNKNOWN or ERROR_SUCCESS, got 0x%08lx\n", GetLastError());
ok(IsEqualGUID(&subject, &nullSubject),
"Expected a NULL GUID for empty file %s, not %s\n", tempfile, wine_dbgstr_guid(&subject));
......
......@@ -157,14 +157,13 @@ static void testMemStore(void)
context = NULL;
ret = CertAddEncodedCertificateToStore(store1, X509_ASN_ENCODING, emptyCert,
sizeof(emptyCert), CERT_STORE_ADD_ALWAYS, &context);
/* Windows returns CRYPT_E_ASN1_EOD or OSS_DATA_ERROR, but accept
/* Windows returns CRYPT_E_ASN1_EOD, but accept
* CRYPT_E_ASN1_CORRUPT as well (because matching errors is tough in this
* case)
*/
GLE = GetLastError();
ok(!ret && (GLE == CRYPT_E_ASN1_EOD || GLE == CRYPT_E_ASN1_CORRUPT ||
GLE == OSS_DATA_ERROR),
"Expected CRYPT_E_ASN1_EOD or CRYPT_E_ASN1_CORRUPT or OSS_DATA_ERROR, got %08lx\n",
ok(!ret && (GLE == CRYPT_E_ASN1_EOD || GLE == CRYPT_E_ASN1_CORRUPT),
"Expected CRYPT_E_ASN1_EOD or CRYPT_E_ASN1_CORRUPT, got %08lx\n",
GLE);
/* add a "signed" cert--the signature isn't a real signature, so this adds
* without any check of the signature's validity
......@@ -188,9 +187,8 @@ static void testMemStore(void)
ret = CertAddEncodedCertificateToStore(store1, X509_ASN_ENCODING,
signedCRL, sizeof(signedCRL), CERT_STORE_ADD_ALWAYS, &context);
GLE = GetLastError();
ok(!ret && (GLE == CRYPT_E_ASN1_BADTAG || GLE == CRYPT_E_ASN1_CORRUPT ||
GLE == OSS_DATA_ERROR),
"Expected CRYPT_E_ASN1_BADTAG or CRYPT_E_ASN1_CORRUPT or OSS_DATA_ERROR, got %08lx\n",
ok(!ret && (GLE == CRYPT_E_ASN1_BADTAG || GLE == CRYPT_E_ASN1_CORRUPT),
"Expected CRYPT_E_ASN1_BADTAG or CRYPT_E_ASN1_CORRUPT, got %08lx\n",
GLE);
/* add a cert to store1 */
ret = CertAddEncodedCertificateToStore(store1, X509_ASN_ENCODING, bigCert,
......@@ -3232,8 +3230,7 @@ static void test_PFXImportCertStore(void)
pfx.pbData = (BYTE *)pfxdata;
pfx.cbData = sizeof(pfxdata);
store = PFXImportCertStore( &pfx, NULL, CRYPT_EXPORTABLE|CRYPT_USER_KEYSET|PKCS12_NO_PERSIST_KEY );
ok( store != NULL || broken(store == NULL) /* winxp */, "got %lu\n", GetLastError() );
if (!store) return;
ok( store != NULL, "got %lu\n", GetLastError() );
count = countCertsInStore( store );
ok( count == 1, "got %lu\n", count );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment