Condividi tramite


Funzioni di estensione

Il formato del certificato X.509 versione 3 identifica più estensioni che possono essere aggiunte a un certificato per fornire informazioni avanzate sull'utilizzo delle chiavi, sui criteri e sui vincoli dei certificati, sui moduli di nome alternativi e altro ancora.

CertEnroll.dll implementa le interfacce seguenti per gestire le estensioni del certificato:

Ognuna delle sezioni seguenti illustra una funzione esportata da Xenroll.dll per gestire le estensioni del certificato. Ogni sezione illustra anche come usare CertEnroll.dll per sostituire la funzione o indica che non esiste alcun mapping tra le due librerie:

AddCertTypeToRequestWStr

La funzione AddCertTypeToRequestWStr in Xenroll.dll aggiunge un modello di certificato, per nome, a una richiesta.

Usando CertEnroll.dll, il metodo preferito per incorporare un modello in una richiesta di certificato consiste nell'usare il metodo InitializeFromTemplateName in un oggetto richiesta PKCS#10 o [*PKCS ) o il metodo InitializeFromInnerRequestTemplateName in una richiesta CMC.

Se un modello specifico non è disponibile nel client ma si prevede di essere compreso dall'autorità di certificazione (CA), è possibile usare l'interfaccia IX509ExtensionTemplateName per aggiungere un modello versione 1 oppure è possibile usare l'interfaccia IX509ExtensionTemplate per aggiungere un modello di versione 2 a una richiesta di certificato. Ad esempio, per aggiungere un modello versione 1, eseguire le azioni seguenti:

  1. Creare un oggetto IX509Extensions .
  2. Creare un oggetto IX509ExtensionTemplateName e chiamare il metodo InitializeEncode , specificando il nome del modello.
  3. Aggiungere l'estensione creata all'insieme IX509Extensions chiamando il metodo Add .
  4. Creare un oggetto IX509AttributeExtensions e chiamare il metodo InitializeEncode , specificando l'insieme IX509Extensions nell'input.
  5. Recuperare un oggetto insieme ICryptAttributes chiamando la proprietà CryptAttributes su un oggetto richiesta IX509CertificateRequestPkcs10 o IX509CertificateRequestCmc esistente.

AddCertTypeToRequestWStrEx

La funzione AddCertTypeToRequestWStrEx in Xenroll.dll aggiunge un modello di certificato a una richiesta in base al nome, all'identificatore di oggetto e alla versione.

Per informazioni su come usare CertEnroll.dll per incorporare informazioni sul modello in una richiesta, vedere AddCertTypeToRequestWStr.

AddExtensionsToRequest

La funzione AddExtensionsToRequest in Xenroll.dll aggiunge una raccolta di estensioni a una richiesta.

In CertEnroll.dll le estensioni vengono aggiunte alla raccolta di attributi di una richiesta CMC o PKCS #10. Per aggiungere estensioni, eseguire le azioni seguenti:

  1. Creare un oggetto IX509Extensions .
  2. Creare un oggetto IX509Extension e chiamare il metodo Initialize per creare un'estensione da un identificatore di oggetto e un valore di estensione oppure usare una delle interfacce elencate in precedenza per definire una delle estensioni più comuni.
  3. Aggiungere ogni nuova estensione creata nel passaggio precedente all'insieme IX509Extensions chiamando il metodo Add .

addExtensionToRequestWStr

La funzione addExtensionToRequestWStr in Xenroll.dll aggiunge un'estensione specifica alla richiesta.

In CertEnroll.dll è necessario definire e aggiungere un'estensione specifica a una raccolta di estensioni prima che la raccolta di estensioni venga aggiunta alla raccolta di attributi di una richiesta CMC o PKCS #10. Per altre informazioni, vedere la discussione addExtensionsToRequest precedente.

EnableSMIMECapabilities

La funzione EnableSMIMECapabilities in Xenroll.dll specifica o recupera un valore booleano che indica se aggiungere l'estensione SMIMECapabilities alla richiesta.

È possibile chiamare la proprietà SmimeCapabilities sull'oggetto IX509CertificateRequestPkcs10 per aggiungere automaticamente un oggetto IX509ExtensionSmimeCapabilities alla richiesta prima della codifica.

IncludeSubjectKeyID

La funzione IncludeSubjectKeyID in Xenroll.dll specifica o recupera un valore booleano che indica se aggiungere l'estensione SubjectKeyIdentifier alla richiesta.

Per impostazione predefinita, l'estensione SubjectKeyIdentifier viene creata quando viene inizializzato l'oggetto richiesta IX509CertificateRequestPkcs10 . È possibile eseguire l'override di questo comportamento chiamando la proprietà SuppressOids .

Se si dispone di una coppia di chiavi pubblica/privata, è anche possibile usare l'interfaccia IX509ExtensionSubjectKeyIdentifier in CertEnroll.dll per aggiungere un'estensione SubjectKeyIdentifier a una richiesta di certificato eseguendo le azioni seguenti:

  1. Creare un oggetto IX509Extensions .
  2. Creare un oggetto IX509ExtensionSubjectKeyIdentifier e chiamare il metodo InitializeEncode , specificando una stringa contenente l'identificatore. In genere, si tratta di un hash SHA-1 a 20 byte della chiave pubblica contenuta nel certificato di firma della CA.
  3. Aggiungere l'estensione creata all'insieme IX509Extensions chiamando il metodo Add .
  4. Creare un oggetto IX509AttributeExtensions e chiamare il metodo InitializeEncode , specificando l'insieme IX509Extensions nell'input.
  5. Recuperare un oggetto insieme ICryptAttributes chiamando la proprietà CryptAttributes su un oggetto richiesta IX509CertificateRequestPkcs10 o IX509CertificateRequestCmc esistente.

resetExtensions

La funzione resetExtensions in Xenroll.dll rimuove la raccolta di estensioni dalla richiesta.

Per rimuovere un'estensione da una richiesta in base al numero di indice utilizzando CertEnroll.dll, chiamare il metodo Remove nell'insieme IX509Extensions . Per rimuovere tutti gli attributi da una richiesta, chiamare il metodo Clear .

Mapping di Xenroll.dll a CertEnroll.dll

ICryptAttributes

IX509Extension

IX509Extensions