crypt32: (Re)introduce helper function to get issuer certificate.
This commit is contained in:
parent
f0d2766fdc
commit
05492ae907
|
@ -511,6 +511,17 @@ static void CRYPT_CheckSimpleChain(PCertificateChainEngine engine,
|
||||||
CRYPT_CombineTrustStatus(&chain->TrustStatus, &rootElement->TrustStatus);
|
CRYPT_CombineTrustStatus(&chain->TrustStatus, &rootElement->TrustStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static PCCERT_CONTEXT CRYPT_GetIssuer(HCERTSTORE store, PCCERT_CONTEXT subject,
|
||||||
|
PCCERT_CONTEXT prevIssuer)
|
||||||
|
{
|
||||||
|
PCCERT_CONTEXT issuer;
|
||||||
|
DWORD flags = 0;
|
||||||
|
|
||||||
|
issuer = CertGetIssuerCertificateFromStore(store, subject, prevIssuer,
|
||||||
|
&flags);
|
||||||
|
return issuer;
|
||||||
|
}
|
||||||
|
|
||||||
/* Builds a simple chain by finding an issuer for the last cert in the chain,
|
/* Builds a simple chain by finding an issuer for the last cert in the chain,
|
||||||
* until reaching a self-signed cert, or until no issuer can be found.
|
* until reaching a self-signed cert, or until no issuer can be found.
|
||||||
*/
|
*/
|
||||||
|
@ -523,9 +534,7 @@ static BOOL CRYPT_BuildSimpleChain(PCertificateChainEngine engine,
|
||||||
while (ret && !CRYPT_IsSimpleChainCyclic(chain) &&
|
while (ret && !CRYPT_IsSimpleChainCyclic(chain) &&
|
||||||
!CRYPT_IsCertificateSelfSigned(cert))
|
!CRYPT_IsCertificateSelfSigned(cert))
|
||||||
{
|
{
|
||||||
DWORD flags = 0;
|
PCCERT_CONTEXT issuer = CRYPT_GetIssuer(world, cert, NULL);
|
||||||
PCCERT_CONTEXT issuer =
|
|
||||||
CertGetIssuerCertificateFromStore(world, cert, NULL, &flags);
|
|
||||||
|
|
||||||
if (issuer)
|
if (issuer)
|
||||||
{
|
{
|
||||||
|
@ -782,7 +791,7 @@ static PCertificateChain CRYPT_BuildAlternateContextFromChain(
|
||||||
alternate = NULL;
|
alternate = NULL;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DWORD i, j, flags;
|
DWORD i, j;
|
||||||
PCCERT_CONTEXT alternateIssuer = NULL;
|
PCCERT_CONTEXT alternateIssuer = NULL;
|
||||||
|
|
||||||
alternate = NULL;
|
alternate = NULL;
|
||||||
|
@ -795,9 +804,8 @@ static PCertificateChain CRYPT_BuildAlternateContextFromChain(
|
||||||
PCCERT_CONTEXT prevIssuer = CertDuplicateCertificateContext(
|
PCCERT_CONTEXT prevIssuer = CertDuplicateCertificateContext(
|
||||||
chain->context.rgpChain[i]->rgpElement[j + 1]->pCertContext);
|
chain->context.rgpChain[i]->rgpElement[j + 1]->pCertContext);
|
||||||
|
|
||||||
flags = CERT_STORE_REVOCATION_FLAG | CERT_STORE_SIGNATURE_FLAG;
|
alternateIssuer = CRYPT_GetIssuer(prevIssuer->hCertStore,
|
||||||
alternateIssuer = CertGetIssuerCertificateFromStore(
|
subject, prevIssuer);
|
||||||
prevIssuer->hCertStore, subject, prevIssuer, &flags);
|
|
||||||
}
|
}
|
||||||
if (alternateIssuer)
|
if (alternateIssuer)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue