Condividi tramite


Funzioni di estensione

Il formato di certificato X.509versione 3 identifica più estensioni che possono essere aggiunte a un certificato per fornire informazioni avanzate sull'utilizzo delle chiavi, i criteri e i vincoli dei certificati, i moduli di nome alternativo 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 funzioneaddCertTypeToRequestWStrin 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 su un oggetto richiesta PKCS#10 o [*PKCS ) oppure il metodo InitializeFromInnerRequestTemplateName in una richiesta CMC.

Se un modello specifico non è disponibile nel client, ma è previsto che venga compreso dall'autorità di certificazione (CA), è possibile usare l'interfaccia IX509ExtensionTemplateName per aggiungere un modello di versione 1 oppure è possibile usare l'interfacciaIX509ExtensionTemplate 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 oggettoIX509 IX509Extensions.
  2. Creare un oggetto IX509ExtensionTemplateName e chiamare il metodo InitializeEncode, specificando il nome del modello.
  3. Aggiungere l'estensione creata all'insieme IX509 IX509Extensions chiamando il metodo Add.
  4. Creare un oggetto IX509AttributeExtensions e chiamare il metodoInitializeEncode, specificando l'insieme IX509Extensions all'input.
  5. Recuperare un oggetto insieme ICryptAttributes chiamando la proprietàCryptAttributessu un oggetto richiesta IX509CertificateRequestPkcs1 0 o IX509CertificateRequestCmc.

AddCertTypeToRequestWStrEx

La funzioneaddCertTypeToRequestWStrExin 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 funzioneAddExtensionsToRequestin Xenroll.dll aggiunge una raccolta di estensioni a una richiesta.

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

  1. Creare un oggettoIX509 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 o 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 IX509Extens ions chiamando il metodo add 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

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

È possibile chiamare la proprietàSmimeCapabilities nell'oggetto IX509CertificateRequestPkcs10 per aggiungere automaticamente un oggetto IX509ExtensionSmimeCap abilities 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 oggettoIX509 IX509Extensions.
  2. Creare un oggetto IX509ExtensionSubjectKeyIdentifier e chiamare il metodoInitializeEncode, specificando una stringa contenente l'identificatore. In genere, si tratta di un hash SHA-1 a 20 byte della chiave pubblica contenuto nel certificato di firma della CA.
  3. Aggiungere l'estensione creata all'insieme IX509 IX509Extensions chiamando il metodo Add.
  4. Creare un oggetto IX509AttributeExtensions e chiamare il metodoInitializeEncode, specificando l'insieme IX509Extensions all'input.
  5. Recuperare un oggetto insieme ICryptAttributes chiamando la proprietàCryptAttributessu un oggetto richiesta IX509CertificateRequestPkcs1 0 o IX509CertificateRequestCmc.

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 metodoClear.

Mapping Xenroll.dll a CertEnroll.dll

ICryptAttributes

IX509Extension

IX509Extensions