Funzione CertAddCertificateContextToStore (wincrypt.h)
La funzione CertAddCertificateContextToStore aggiunge un contesto di certificato all'archivio certificati.
Sintassi
BOOL CertAddCertificateContextToStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pCertContext,
[in] DWORD dwAddDisposition,
[out, optional] PCCERT_CONTEXT *ppStoreContext
);
Parametri
[in] hCertStore
Handle di un archivio certificati.
[in] pCertContext
Puntatore alla struttura CERT_CONTEXT da aggiungere all'archivio.
[in] dwAddDisposition
Specifica l'azione da eseguire se esiste già un certificato corrispondente o un collegamento a un certificato corrispondente nell'archivio. I valori di eliminazione attualmente definiti e i relativi usi sono i seguenti.
Valore | Significato |
---|---|
|
La funzione non verifica la presenza di un certificato corrispondente esistente o di un collegamento a un certificato corrispondente. Un nuovo certificato viene sempre aggiunto all'archivio. Ciò può causare duplicati in un archivio. |
|
Se esiste un certificato corrispondente o un collegamento a un certificato corrispondente, l'operazione ha esito negativo. GetLastError restituisce il codice di CRYPT_E_EXISTS. |
|
Se esiste un certificato corrispondente o un collegamento a un certificato corrispondente e l'ora NotBefore del contesto esistente è uguale o maggiore del tempo NotBefore del nuovo contesto aggiunto, l'operazione non riesce e GetLastError restituisce il codice CRYPT_E_EXISTS.
Se l'ora NotBefore del contesto esistente è minore dell'ora di aggiunta del nuovo contesto, il certificato o il collegamento esistente viene eliminato e viene creato e aggiunto un nuovo certificato all'archivio. Se non esiste un certificato corrispondente o un collegamento a un certificato corrispondente, viene aggiunto un nuovo collegamento. Se vengono confrontati gli elenchi di revoche di certificati (CRLs) o l'elenco di attendibilità dei certificati (CTLs), viene usato l'ora di ThisUpdate. |
|
Se esiste un certificato corrispondente o un collegamento a un certificato corrispondente e l'ora NotBefore del contesto esistente è uguale o maggiore del tempo NotBefore del nuovo contesto aggiunto, l'operazione non riesce e GetLastError restituisce il codice CRYPT_E_EXISTS.
Se l'ora NotBefore del contesto esistente è minore dell'ora di aggiunta del nuovo contesto, il contesto esistente viene eliminato prima di creare e aggiungere il nuovo contesto. Il nuovo contesto aggiunto eredita le proprietà dal certificato esistente. Se vengono confrontati gli elenchi di controllo degli elenchi di controllo delle chiavi o delle dll, viene usato l'ora di ThisUpdate. |
|
Se esiste un collegamento a un certificato corrispondente, il certificato o il collegamento esistente viene eliminato e viene creato un nuovo certificato e aggiunto all'archivio. Se non esiste un certificato corrispondente o un collegamento a un certificato corrispondente, viene aggiunto un nuovo collegamento. |
|
Se esiste un certificato corrispondente nell'archivio, il contesto esistente non viene sostituito. Il contesto esistente eredita le proprietà dal nuovo certificato. |
|
Se esiste un certificato corrispondente o un collegamento a un certificato corrispondente, viene aggiunto il certificato o il collegamento esistente e le proprietà del nuovo certificato. La funzione non riesce, ma non aggiunge un nuovo contesto. Se pCertContext non è NULL, il contesto esistente viene duplicato.
Se non esiste un certificato corrispondente o un collegamento a un certificato corrispondente, viene aggiunto un nuovo certificato. |
[out, optional] ppStoreContext
Puntatore a un puntatore alla copia da creare del certificato aggiunto all'archivio.
Il parametro ppStoreContext può essere NULL, che indica che l'applicazione chiamante non richiede una copia del certificato aggiunto. Se viene eseguita una copia, deve essere liberata usando CertFreeCertificateContext.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è TRUE.
Se la funzione ha esito negativo, il valore restituito è FALSE. Per informazioni sull'errore estese, chiamare GetLastError. Alcuni codici di errore possibili seguono.
Codice restituito | Descrizione |
---|---|
|
Questo valore viene restituito se CERT_STORE_ADD_NEW è impostato e il certificato esiste già nell'archivio oppure se CERT_STORE_ADD_NEWER è impostato e un certificato esiste nell'archivio con una data NotBefore maggiore o uguale alla data NotBefore del certificato da aggiungere. |
|
Valore di eliminazione non valido specificato nel parametro dwAddDisposition . |
Gli errori delle funzioni chiamate, CertAddEncodedCertificateToStore e CertSetCertificateContextProperty, possono essere propagati a questa funzione.
Commenti
Il contesto del certificato non viene duplicato usando CertDuplicateCertificateContext. La funzione crea invece una nuova copia del contesto e la aggiunge all'archivio.
Oltre al certificato codificato, CertDuplicateCertificateContext copia anche le proprietà del contesto, ad eccezione delle proprietà CERT_KEY_PROV_HANDLE_PROP_ID e CERT_KEY_CONTEXT_PROP_ID.
Per rimuovere il contesto del certificato dall'archivio certificati, usare la funzione CertDeleteCertificateFromStore .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [app desktop | App UWP] |
Server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | wincrypt.h |
Libreria | Crypt32.lib |
DLL | Crypt32.dll |
Vedi anche
CertAddEncodedCertificateToStore