Commit a3c6bc68 authored by Juan Lang's avatar Juan Lang Committed by Alexandre Julliard

crypt32: Assume revocation server is offline if revocation status isn't known.

parent 9e1d31e5
...@@ -2426,7 +2426,11 @@ static void CRYPT_VerifyChainRevocation(PCERT_CHAIN_CONTEXT chain, ...@@ -2426,7 +2426,11 @@ static void CRYPT_VerifyChainRevocation(PCERT_CHAIN_CONTEXT chain,
case CRYPT_E_NO_REVOCATION_CHECK: case CRYPT_E_NO_REVOCATION_CHECK:
case CRYPT_E_NO_REVOCATION_DLL: case CRYPT_E_NO_REVOCATION_DLL:
case CRYPT_E_NOT_IN_REVOCATION_DATABASE: case CRYPT_E_NOT_IN_REVOCATION_DATABASE:
error = CERT_TRUST_REVOCATION_STATUS_UNKNOWN; /* If the revocation status is unknown, it's assumed to be
* offline too.
*/
error = CERT_TRUST_REVOCATION_STATUS_UNKNOWN |
CERT_TRUST_IS_OFFLINE_REVOCATION;
break; break;
case CRYPT_E_REVOCATION_OFFLINE: case CRYPT_E_REVOCATION_OFFLINE:
error = CERT_TRUST_IS_OFFLINE_REVOCATION; error = CERT_TRUST_IS_OFFLINE_REVOCATION;
......
...@@ -3688,7 +3688,6 @@ static void testGetCertChain(void) ...@@ -3688,7 +3688,6 @@ static void testGetCertChain(void)
/* The cert is rather old, so its revocation list can't be retrieved, /* The cert is rather old, so its revocation list can't be retrieved,
* and its revocation status should be both offline and unknown. * and its revocation status should be both offline and unknown.
*/ */
todo_wine
ok((chain->TrustStatus.dwErrorStatus & revocationFlags) == ok((chain->TrustStatus.dwErrorStatus & revocationFlags) ==
(CERT_TRUST_REVOCATION_STATUS_UNKNOWN | (CERT_TRUST_REVOCATION_STATUS_UNKNOWN |
CERT_TRUST_IS_OFFLINE_REVOCATION), CERT_TRUST_IS_OFFLINE_REVOCATION),
...@@ -3709,7 +3708,6 @@ static void testGetCertChain(void) ...@@ -3709,7 +3708,6 @@ static void testGetCertChain(void)
if (ret) if (ret)
{ {
/* Even with a CRL in the store, the revocation status doesn't change */ /* Even with a CRL in the store, the revocation status doesn't change */
todo_wine
ok((chain->TrustStatus.dwErrorStatus & revocationFlags) == ok((chain->TrustStatus.dwErrorStatus & revocationFlags) ==
(CERT_TRUST_REVOCATION_STATUS_UNKNOWN | (CERT_TRUST_REVOCATION_STATUS_UNKNOWN |
CERT_TRUST_IS_OFFLINE_REVOCATION), CERT_TRUST_IS_OFFLINE_REVOCATION),
...@@ -3744,7 +3742,6 @@ static void testGetCertChain(void) ...@@ -3744,7 +3742,6 @@ static void testGetCertChain(void)
/* The cert doesn't have a way to retrieve its CRL, so its revocation /* The cert doesn't have a way to retrieve its CRL, so its revocation
* status should be both offline and unknown. * status should be both offline and unknown.
*/ */
todo_wine
ok((chain->TrustStatus.dwErrorStatus & revocationFlags) == ok((chain->TrustStatus.dwErrorStatus & revocationFlags) ==
(CERT_TRUST_REVOCATION_STATUS_UNKNOWN | (CERT_TRUST_REVOCATION_STATUS_UNKNOWN |
CERT_TRUST_IS_OFFLINE_REVOCATION), CERT_TRUST_IS_OFFLINE_REVOCATION),
...@@ -3765,7 +3762,6 @@ static void testGetCertChain(void) ...@@ -3765,7 +3762,6 @@ static void testGetCertChain(void)
if (ret) if (ret)
{ {
/* Even with a CRL in the store, the revocation status doesn't change */ /* Even with a CRL in the store, the revocation status doesn't change */
todo_wine
ok((chain->TrustStatus.dwErrorStatus & revocationFlags) == ok((chain->TrustStatus.dwErrorStatus & revocationFlags) ==
(CERT_TRUST_REVOCATION_STATUS_UNKNOWN | (CERT_TRUST_REVOCATION_STATUS_UNKNOWN |
CERT_TRUST_IS_OFFLINE_REVOCATION), CERT_TRUST_IS_OFFLINE_REVOCATION),
...@@ -3795,7 +3791,6 @@ static void testGetCertChain(void) ...@@ -3795,7 +3791,6 @@ static void testGetCertChain(void)
if (ret) if (ret)
{ {
/* Even with a CRL in the store, the revocation status doesn't change */ /* Even with a CRL in the store, the revocation status doesn't change */
todo_wine
ok((chain->TrustStatus.dwErrorStatus & revocationFlags) == ok((chain->TrustStatus.dwErrorStatus & revocationFlags) ==
(CERT_TRUST_REVOCATION_STATUS_UNKNOWN | (CERT_TRUST_REVOCATION_STATUS_UNKNOWN |
CERT_TRUST_IS_OFFLINE_REVOCATION), CERT_TRUST_IS_OFFLINE_REVOCATION),
...@@ -3824,7 +3819,6 @@ static void testGetCertChain(void) ...@@ -3824,7 +3819,6 @@ static void testGetCertChain(void)
if (ret) if (ret)
{ {
/* Even with a CRL in the store, the revocation status doesn't change */ /* Even with a CRL in the store, the revocation status doesn't change */
todo_wine
ok((chain->TrustStatus.dwErrorStatus & revocationFlags) == ok((chain->TrustStatus.dwErrorStatus & revocationFlags) ==
(CERT_TRUST_REVOCATION_STATUS_UNKNOWN | (CERT_TRUST_REVOCATION_STATUS_UNKNOWN |
CERT_TRUST_IS_OFFLINE_REVOCATION), CERT_TRUST_IS_OFFLINE_REVOCATION),
......
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