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.

Any ideas?


  DWORD dwSize = NULL;

      CRYPT_KEY_PROV_INFO* pCryptKeyProvInfo;


      //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.");