i dati del certificato vengono recuperati dallo scambio di informazioni personali utilizzando le seguenti API di Crypto
hCertStore = PFXImportCertStore( &data, wszPassword, CRYPT_EXPORTABLE );
if ( !hCertStore )
{
hResult = GetLastError();
__leave;
} // if
pUsrCertContext = CertEnumCertificatesInStore(
hCertStore,
pUsrCertContext );
if( !pUsrCertContext )
{
hResult = GetLastError( );
__leave;
} // if
Il risultato di PFXImportCertStore è certificato + chiave privata. Questo certificato + chiave privata viene aggiunto all'archivio come
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
Ora questo certificato viene aggiunto all'archivio ma non ha la chiave privata con esso. Qual è la bandiera che ho dimenticato di specificare per aggiungere il certificato insieme alla chiave privata?