diff --git a/reactos/dll/win32/crypt32/cert.c b/reactos/dll/win32/crypt32/cert.c index 2bcc4f73ad5..eabea824a4b 100644 --- a/reactos/dll/win32/crypt32/cert.c +++ b/reactos/dll/win32/crypt32/cert.c @@ -731,12 +731,16 @@ BOOL WINAPI CertVerifySubjectCertificateContext(PCCERT_CONTEXT pSubject, } if (*pdwFlags & CERT_STORE_REVOCATION_FLAG) { - PCCRL_CONTEXT crl = CertFindCRLInStore(pSubject->hCertStore, - pSubject->dwCertEncodingType, 0, CRL_FIND_ISSUED_BY, pSubject, NULL); + DWORD flags = 0; + PCCRL_CONTEXT crl = CertGetCRLFromStore(pSubject->hCertStore, pSubject, + NULL, &flags); + /* FIXME: what if the CRL has expired? */ if (crl) { - FIXME("check CRL for subject\n"); + if (CertVerifyCRLRevocation(pSubject->dwCertEncodingType, + pSubject->pCertInfo, 1, (PCRL_INFO *)&crl->pCrlInfo)) + *pdwFlags &= CERT_STORE_REVOCATION_FLAG; } else *pdwFlags |= CERT_STORE_NO_CRL_FLAG; diff --git a/reactos/dll/win32/crypt32/protectdata.c b/reactos/dll/win32/crypt32/protectdata.c index 6b12f2d9751..4b7cfc9f605 100644 --- a/reactos/dll/win32/crypt32/protectdata.c +++ b/reactos/dll/win32/crypt32/protectdata.c @@ -107,7 +107,7 @@ struct protect_data_t }; /* this is used to check if an incoming structure was built by Wine */ -static const char * crypt_magic_str = "Wine Crypt32 ok"; +static const char crypt_magic_str[] = "Wine Crypt32 ok"; /* debugging tool to print strings of hex chars */ static const char * @@ -835,8 +835,8 @@ BOOL WINAPI CryptProtectData(DATA_BLOB* pDataIn, DWORD dwFlags, DATA_BLOB* pDataOut) { + static const WCHAR empty_str[1]; BOOL rc = FALSE; - HCRYPTPROV hProv; struct protect_data_t protect_data; HCRYPTHASH hHash; @@ -861,7 +861,7 @@ BOOL WINAPI CryptProtectData(DATA_BLOB* pDataIn, /* Windows appears to create an empty szDataDescr instead of maintaining * a NULL */ if (!szDataDescr) - szDataDescr=(WCHAR[]){'\0'}; + szDataDescr = empty_str; /* get crypt context */ if (!CryptAcquireContextW(&hProv,NULL,NULL,CRYPT32_PROTECTDATA_PROV,CRYPT_VERIFYCONTEXT))