los datos del certificado se recuperan del intercambio de información personal mediante las siguientes API de Crypto
hCertStore = PFXImportCertStore( &data, wszPassword, CRYPT_EXPORTABLE );
if ( !hCertStore )
{
hResult = GetLastError();
__leave;
} // if
pUsrCertContext = CertEnumCertificatesInStore(
hCertStore,
pUsrCertContext );
if( !pUsrCertContext )
{
hResult = GetLastError( );
__leave;
} // if
El resultado de PFXImportCertStore es certificado + clave privada. Este certificado + clave privada se agrega a la tienda como
pUsrAuthCertContext = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
pUsrCertContext->pbCertEncoded,
pUsrCertContext->cbCertEncoded );
if ( !pUsrAuthCertContext )
{
hResult = GetLastError();
__leave;
} // if
//
// Open the certificate store to add certificates to store
//
hUsrCertStore = CertOpenSystemStore(
NULL,
//L"TrustedPeople"
L"MY");
if ( ! hUsrCertStore )
{
hResult = GetLastError( );
__leave;
} // if
if ( ! CertAddCertificateContextToStore(
hUsrCertStore,
pUsrAuthCertContext ,
CERT_STORE_ADD_REPLACE_EXISTING,
0 ) )
{
hResult = GetLastError( );
__leave;
} // if
Ahora este certificado se agrega a la tienda pero no tiene la clave privada con él. ¿Cuál es el indicador que no pude especificar para agregar el certificado junto con la clave privada?