mirror of
https://github.com/reactos/wine.git
synced 2025-02-10 14:23:52 +00:00
crypt32/tests: Add more tests of verifying the base policy, including flags to ignore certain errors.
This commit is contained in:
parent
c6a6541d13
commit
c4c70b608c
@ -3745,6 +3745,38 @@ static const ChainPolicyCheck basePolicyCheck[] = {
|
|||||||
{ 0, CERT_E_UNTRUSTEDROOT, 0, 0, NULL }, NULL, 0 },
|
{ 0, CERT_E_UNTRUSTEDROOT, 0, 0, NULL }, NULL, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const ChainPolicyCheck ignoredUnknownCABasePolicyCheck = {
|
||||||
|
{ sizeof(chain0) / sizeof(chain0[0]), chain0 },
|
||||||
|
{ 0, CERT_E_EXPIRED, 0, 0, NULL }, NULL, TODO_ERROR
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Windows NT 4 has a different error code when the validity period doesn't
|
||||||
|
* nest. (It's arguably more correct than other Windows versions, but since
|
||||||
|
* others do not emulate its behavior, we mark its behavior broken.)
|
||||||
|
*/
|
||||||
|
static const CERT_CHAIN_POLICY_STATUS badDateNestingStatus =
|
||||||
|
{ 0, CERT_E_VALIDITYPERIODNESTING, 0, 0, NULL };
|
||||||
|
|
||||||
|
static const ChainPolicyCheck ignoredBadDateNestingBasePolicyCheck = {
|
||||||
|
{ sizeof(chain2) / sizeof(chain2[0]), chain2 },
|
||||||
|
{ 0, CERT_E_EXPIRED, 0, 1, NULL}, &badDateNestingStatus, TODO_ERROR
|
||||||
|
};
|
||||||
|
|
||||||
|
static const ChainPolicyCheck ignoredInvalidDateBasePolicyCheck = {
|
||||||
|
{ sizeof(googleChain) / sizeof(googleChain[0]), googleChain },
|
||||||
|
{ 0, CERT_E_EXPIRED, 0, 1, NULL}, NULL, TODO_ERROR
|
||||||
|
};
|
||||||
|
|
||||||
|
static const ChainPolicyCheck ignoredInvalidUsageBasePolicyCheck = {
|
||||||
|
{ sizeof(chain15) / sizeof(chain15[0]), chain15 },
|
||||||
|
{ 0, CERT_E_EXPIRED, 0, 1, NULL}, NULL, TODO_ERROR
|
||||||
|
};
|
||||||
|
|
||||||
|
static const ChainPolicyCheck invalidUsageBasePolicyCheck = {
|
||||||
|
{ sizeof(chain15) / sizeof(chain15[0]), chain15 },
|
||||||
|
{ 0, CERT_E_WRONG_USAGE, 0, 1, NULL}, NULL, TODO_ERROR
|
||||||
|
};
|
||||||
|
|
||||||
static const ChainPolicyCheck sslPolicyCheck[] = {
|
static const ChainPolicyCheck sslPolicyCheck[] = {
|
||||||
{ { sizeof(chain0) / sizeof(chain0[0]), chain0 },
|
{ { sizeof(chain0) / sizeof(chain0[0]), chain0 },
|
||||||
{ 0, CERT_E_UNTRUSTEDROOT, 0, 1, NULL }, NULL, 0 },
|
{ 0, CERT_E_UNTRUSTEDROOT, 0, 1, NULL }, NULL, 0 },
|
||||||
@ -4039,6 +4071,39 @@ static void checkChainPolicyStatus(LPCSTR policy, HCERTCHAINENGINE engine,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void check_base_policy(void)
|
||||||
|
{
|
||||||
|
DWORD i;
|
||||||
|
CERT_CHAIN_POLICY_PARA policyPara = { 0 };
|
||||||
|
|
||||||
|
for (i = 0;
|
||||||
|
i < sizeof(basePolicyCheck) / sizeof(basePolicyCheck[0]); i++)
|
||||||
|
checkChainPolicyStatus(CERT_CHAIN_POLICY_BASE, NULL,
|
||||||
|
&basePolicyCheck[i], i, &oct2007, NULL);
|
||||||
|
policyPara.cbSize = sizeof(policyPara);
|
||||||
|
policyPara.dwFlags = CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG;
|
||||||
|
checkChainPolicyStatus(CERT_CHAIN_POLICY_BASE, NULL,
|
||||||
|
&ignoredUnknownCABasePolicyCheck, 0, &oct2007, &policyPara);
|
||||||
|
policyPara.dwFlags = CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG |
|
||||||
|
CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG;
|
||||||
|
checkChainPolicyStatus(CERT_CHAIN_POLICY_BASE, NULL,
|
||||||
|
&ignoredBadDateNestingBasePolicyCheck, 0, &oct2007, &policyPara);
|
||||||
|
policyPara.dwFlags = CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG;
|
||||||
|
checkChainPolicyStatus(CERT_CHAIN_POLICY_BASE, NULL,
|
||||||
|
&ignoredInvalidDateBasePolicyCheck, 0, &oct2007, &policyPara);
|
||||||
|
policyPara.dwFlags = CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG |
|
||||||
|
CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG;
|
||||||
|
policyPara.dwFlags = CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG |
|
||||||
|
CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG |
|
||||||
|
CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG;
|
||||||
|
checkChainPolicyStatus(CERT_CHAIN_POLICY_BASE, NULL,
|
||||||
|
&ignoredInvalidUsageBasePolicyCheck, 0, &oct2007, &policyPara);
|
||||||
|
policyPara.dwFlags = CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG |
|
||||||
|
CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG;
|
||||||
|
checkChainPolicyStatus(CERT_CHAIN_POLICY_BASE, NULL,
|
||||||
|
&invalidUsageBasePolicyCheck, 0, &oct2007, &policyPara);
|
||||||
|
}
|
||||||
|
|
||||||
static void check_ssl_policy(void)
|
static void check_ssl_policy(void)
|
||||||
{
|
{
|
||||||
DWORD i;
|
DWORD i;
|
||||||
@ -4288,10 +4353,7 @@ static void testVerifyCertChainPolicy(void)
|
|||||||
pCertFreeCertificateChain(chain);
|
pCertFreeCertificateChain(chain);
|
||||||
CertFreeCertificateContext(cert);
|
CertFreeCertificateContext(cert);
|
||||||
|
|
||||||
for (i = 0;
|
check_base_policy();
|
||||||
i < sizeof(basePolicyCheck) / sizeof(basePolicyCheck[0]); i++)
|
|
||||||
checkChainPolicyStatus(CERT_CHAIN_POLICY_BASE, NULL,
|
|
||||||
&basePolicyCheck[i], i, &oct2007, NULL);
|
|
||||||
check_ssl_policy();
|
check_ssl_policy();
|
||||||
/* The authenticode policy doesn't seem to check anything beyond the base
|
/* The authenticode policy doesn't seem to check anything beyond the base
|
||||||
* policy. It might check for chains signed by the MS test cert, but none
|
* policy. It might check for chains signed by the MS test cert, but none
|
||||||
|
Loading…
x
Reference in New Issue
Block a user