ChainConfig.cbSize = sizeof(CERT_CHAIN_ENGINE_CONFIG);
ChainConfig.hRestrictedRoot = NULL;
ChainConfig.hRestrictedTrust = NULL;
ChainConfig.hRestrictedOther = NULL;
ChainConfig.cAdditionalStore = 0;
ChainConfig.rghAdditionalStore = NULL;
ChainConfig.dwFlags = CERT_CHAIN_CACHE_END_CERT;
ChainConfig.dwUrlRetrievalTimeout = 0;
ChainConfig.MaximumCachedCertificates = 0;
ChainConfig.CycleDetectionModulus = 0;
//---------------------------------------------------------
// Create the nondefault certificate chain engine.
if (CertCreateCertificateChainEngine(
&ChainConfig,
&hChainEngine)){
printf("A chain engine has been created.\n");}
Getting error 0x80070057 (-2147024809) The parameter is incorrect, can someone help here ?
I hope you've managed to solve this issue already. If not, here's my somewhat late answer:
It looks like you're working with Microsoft's example code for creating a certificate chain. Unfortunately it seems to be out of date; if you examine the documentation for CERT_CHAIN_ENGINE_CONFIG, you'll see that there are two more member variables that need to be initialized in Windows 7, hExclusiveRoot and hExclusiveTrustedPeople.
You could set them to NULL (if you don't need them) to take care of the error:
ChainConfig.hExclusiveRoot = NULL;
ChainConfig.hExclusiveTrustedPeople = NULL;
User contributions licensed under CC BY-SA 3.0