Funzioni di estensione

Il formato 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 di certificato e sui vincoli, 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 PKCS#10 o [*PKCS ) richiesta o initializeFromInnerRequestTemplateName in una richiesta CMC.

Se un modello specifico non è disponibile nel client ma deve 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 sull'input.
  5. Recuperare un oggetto insieme ICryptAttributes chiamando la proprietà CryptAttributes in un oggetto di richiesta IX509CertificateRequestPkcs10 o IX509CertificateRequestCmc request.

AddCertTypeToRequestWStrEx

La funzione AddCertTypeToRequestWStrEx in Xenroll.dll aggiunge un modello di certificato a una richiesta per nome, identificatore di oggetto e 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 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 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 un insieme di estensioni prima che l'insieme di estensioni venga aggiunto all'insieme di attributi di una richiesta CMC o a una richiesta PKCS #10. Per altre informazioni, vedere la discussione AddExtensionsToRequest sopra.

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 nell'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 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 sull'input.
  5. Recuperare un oggetto insieme ICryptAttributes chiamando la proprietà CryptAttributes in un oggetto di richiesta IX509CertificateRequestPkcs10 o IX509CertificateRequestCmc request.

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 usando CertEnroll.dll, chiamare il metodo Remove nell'insieme IX509Extensions . Per rimuovere tutti gli attributi da una richiesta, chiamare il metodo Clear .

Mapping Xenroll.dll a CertEnroll.dll

ICryptAttributes

IX509Extension

IX509Extensions