Funzione CertAddEncodedCTLToStore (wincrypt.h)

La funzione CertAddEncodedCTLToStore crea un contesto CTL (Certificate Trust List) da un CTL codificato e lo aggiunge all'archivio certificati. La funzione crea una copia del contesto CTL prima di aggiungerla all'archivio.

Sintassi

BOOL CertAddEncodedCTLToStore(
  [in]            HCERTSTORE    hCertStore,
  [in]            DWORD         dwMsgAndCertEncodingType,
  [in]            const BYTE    *pbCtlEncoded,
  [in]            DWORD         cbCtlEncoded,
  [in]            DWORD         dwAddDisposition,
  [out, optional] PCCTL_CONTEXT *ppCtlContext
);

Parametri

[in] hCertStore

Handle di un archivio certificati.

[in] dwMsgAndCertEncodingType

Specifica il tipo di codifica usato. Sia i tipi di codifica del certificato che dei messaggi devono essere specificati combinandoli con un'operazione BIT-OR , come illustrato nell'esempio seguente:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

I tipi di codifica attualmente definiti sono:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pbCtlEncoded

Puntatore a un buffer contenente il CTL codificato da aggiungere all'archivio certificati.

[in] cbCtlEncoded

Dimensioni, in byte, del buffer pbCtlEncoded .

[in] dwAddDisposition

Specifica l'azione da eseguire se esiste già un CTL corrispondente o un collegamento a un CTL corrispondente. I valori di eliminazione attualmente definiti e i relativi usi sono i seguenti

Valore Significato
CERT_STORE_ADD_ALWAYS
Non verifica la presenza di un CTL corrispondente o un collegamento a un CTL corrispondente. Un nuovo CTL viene sempre aggiunto all'archivio. Ciò può causare duplicati in un archivio.
CERT_STORE_ADD_NEW
Se esiste un CTL corrispondente o un collegamento a un CTL corrispondente, l'operazione ha esito negativo. GetLastError restituisce il codice di CRYPT_E_EXISTS.
CERT_STORE_ADD_NEWER
Se esiste un CTL corrispondente o un collegamento a un CTL corrispondente, vengono confrontati i tempi di ThisUpdate nelle dll. Se il CTL esistente ha un tempo di ThisUpdate minore del tempo ThisUpdate sul nuovo CTL, il vecchio CTL o il collegamento viene sostituito esattamente come con CERT_STORE_ADD_REPLACE_EXISTING. Se il CTL esistente ha un tempo di ThisUpdate maggiore o uguale all'ora di ThisUpdate nel CTL da aggiungere, la funzione ha esito negativo con GetLastError che restituisce il codice CRYPT_E_EXISTS.

Se un CTL corrispondente o un collegamento a un CTL corrispondente non viene trovato nell'archivio, viene aggiunto un nuovo CTL all'archivio.

CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
L'azione è uguale a per CERT_STORE_ADD_NEWER, ad eccezione del fatto che se un CTL precedente viene sostituito, le proprietà del CTL precedente vengono incorporate nel CTL sostitutivo.
CERT_STORE_ADD_REPLACE_EXISTING
Se esiste un CTL corrispondente o un collegamento a un CTL corrispondente, il collegamento o CTL esistente viene eliminato e viene creato e aggiunto un nuovo CTL all'archivio. Se non esiste un collegamento CTL corrispondente o un collegamento a un CTL corrispondente, ne viene aggiunto uno.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
Se esiste un CTL corrispondente nell'archivio, tale contesto esistente viene eliminato prima di creare e aggiungere il nuovo contesto. Il contesto aggiunto eredita le proprietà dal CTL esistente.
CERT_STORE_ADD_USE_EXISTING
Se esiste un CTL corrispondente o un collegamento a un CTL corrispondente, vengono aggiunte le proprietà ETL esistenti dal nuovo CTL. La funzione non riesce, ma non viene aggiunto alcun nuovo CTL. Se ppCertContext non è NULL, il contesto esistente viene duplicato.

Se non esiste un collegamento CTL corrispondente o un collegamento a un CTL corrispondente, viene aggiunto un nuovo CTL.

[out, optional] ppCtlContext

Puntatore a un puntatore alla struttura CTL_CONTEXT decodificata. Può essere NULL che indica che l'applicazione chiamante non richiede una copia del CTL aggiunto o esistente. Se viene eseguita una copia, deve essere liberata usando CertFreeCTLContext.

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
CRYPT_E_EXISTS
CERT_STORE_ADD_NEW è impostato e il CTL esiste già nell'archivio; o CERT_STORE_ADD_NEWER è impostato ed è presente un CTL nell'archivio con un'ora di ThisUpdate maggiore o uguale all'ora di ThisUpdate nel CTL da aggiungere.
E_INVALIDARG
Valore di eliminazione non valido specificato nel parametro dwAddDisposition o un tipo di codifica non valido specificato. Attualmente sono supportati solo i tipi di codifica X509_ASN_ENCODING e PKCS_7_ASN_ENCODING.
 

Se la funzione ha esito negativo, GetLastError potrebbe restituire un errore di codifica astratta Notation One (ASN.1). Per informazioni su questi errori, vedere Codifica ASN.1/Decodifica dei valori restituiti.

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

CertAddCTLContextToStore

CertFreeCTLContext

Funzioni elenco attendibili certificati