I have created a certificate using Openssl. All works fine and I can encrypt and decrypt a file just using openssl from command prompt, so I know certificate is working ok.
I need to do the same programatically, but I am having problems.
When calling CertGetCertificateContextProperty() to obtain the CRYPT_KEY_PROV_INFO* structure, it fails with error code CRYPT_E_NO_KEY_PROPERTY.
I have got it to work using a Certificate I have in "my" store, but not with the onr in "root" created using openssl.
DWORD dwSize = NULL;
//Get Length of data to be returned
if(!(CertGetCertificateContextProperty(pRecipientCert,CERT_KEY_PROV_INFO_PROP_ID, NULL, &dwSize)))
printf("The property length was not retrieved.");
if(!(pCryptKeyProvInfo = (CRYPT_KEY_PROV_INFO*) malloc(dwSize)))
printf("Error in allocation of memory.");
//call again with length & pointer to structure
if(!(CertGetCertificateContextProperty(pRecipientCert, CERT_KEY_PROV_INFO_PROP_ID, pCryptKeyProvInfo, &dwSize)))
printf("Error getting key property.");