Funções de extensão
O formato de certificado X.509 versão 3 identifica várias extensões que podem ser adicionadas a um certificado para fornecer informações aprimoradas sobre uso de chave, políticas e restrições de certificado, formulários de nome alternativos e muito mais.
CertEnroll.dll implementa as seguintes interfaces para gerenciar extensões de certificado:
- IX509Extension
- IX509Extensions
- IX509ExtensionAlternativeNames
- IX509ExtensionAuthorityKeyIdentifier
- IX509ExtensionBasicConstraints
- IX509ExtensionCertificatePolicies
- IX509ExtensionEnhancedKeyUsage
- IX509ExtensionKeyUsage
- IX509ExtensionMSApplicationPolicies
- IX509ExtensionSmimeCapabilities
- IX509ExtensionSubjectKeyIdentifier
- IX509ExtensionTemplate
- IX509ExtensionTemplateName
Cada uma das seções a seguir discute uma função exportada por Xenroll.dll para gerenciar extensões de certificado. Cada seção também discute como usar CertEnroll.dll para substituir a função ou indica que não existe nenhum mapeamento entre as duas bibliotecas:
- AddCertTypeToRequestWStr
- AddCertTypeToRequestWStrEx
- AddExtensionsToRequest
- addExtensionToRequestWStr
- EnableSMIMECapabilities
- IncludeSubjectKeyID
- resetExtensions
- tópicos relacionados
AddCertTypeToRequestWStr
A funçãoAddCertTypeToRequestWStr em Xenroll.dll adiciona um modelo de certificado, por nome, a uma solicitação.
Usando CertEnroll.dll, o método preferencial para incorporar um modelo em uma solicitação de certificado é usar o método InitializeFromTemplateName em um objeto de solicitação PKCS#10 ou [*PKCS) ou o método InitializeFromInnerRequestTemplateName em uma solicitação CMC.
Se um modelo específico não estiver disponível no cliente, mas for esperado que seja entendido pela autoridade de certificação (AC), você poderá usar a interface IX509ExtensionTemplateName para adicionar um modelo de versão 1 ou usar a interface IX509ExtensionTemplate para adicionar um modelo de versão 2 a uma solicitação de certificado. Por exemplo, para adicionar um modelo de versão 1, execute as seguintes ações:
- Crie um objetoIX509Extensions.
- Crie um objetoIX509ExtensionTemplateNamee chame o método InitializeEncode, especificando o nome do modelo.
- Adicione a extensão criada à coleçãoIX509Extensions chamando o método Add.
- Crie um objetoIX509AttributeExtensions e chame o método InitializeEncode, especificando a coleção IX509Extensions na entrada.
- Recupere um objeto de coleção ICryptAttributes chamando a propriedadeCryptAttributes em um objeto de solicitação IX509CertificateRequestPkcs10existente ou IX509CertificateRequestCmc.
AddCertTypeToRequestWStrEx
A funçãoAddCertTypeToRequestWStrEx no Xenroll.dll adiciona um modelo de certificado a uma solicitação por nome, identificador de objeto e versão.
Para obter informações sobre como usar CertEnroll.dll para incorporar informações de modelo em uma solicitação, consulte AddCertTypeToRequestWStr.
AddExtensionsToRequest
A funçãoAddExtensionsToRequest em Xenroll.dll adiciona uma coleção de extensões a uma solicitação.
Em CertEnroll.dll, as extensões são adicionadas à coleção de atributos de uma solicitação CMC ou PKCS nº 10. Para adicionar extensões, execute as seguintes ações:
- Crie um objetoIX509Extensions.
- Crie um objeto IX509Extension e chame o método Initialize para criar uma extensão de um identificador de objeto e um valor de extensão ou usar qualquer uma das interfaces listadas anteriormente para definir uma das extensões mais comuns.
- Adicione cada nova extensão criada na etapa anterior à coleção IX509Extensions chamando o método Add.
addExtensionToRequestWStr
A função addExtensionToRequestWStr em Xenroll.dll adiciona uma extensão específica à solicitação.
Em CertEnroll.dll, uma extensão específica deve ser definida e adicionada a uma coleção de extensões antes que a coleção de extensões seja adicionada à coleção de atributos de uma solicitação CMC ou PKCS #10. Para obter mais informações, consulte a discussão AddExtensionsToRequest acima.
EnableSMIMECapabilities
A função EnableSMIMECapabilities em Xenroll.dll especifica ou recupera um valor booliano que indica se deve adicionar a extensão SMIMECapabilities à solicitação.
Você pode chamar a propriedade SmimeCapabilities no objetoIX509CertificateRequestPkcs10 para adicionar automaticamente um objeto IX509ExtensionSmimeCapabilities à solicitação antes da codificação.
IncludeSubjectKeyID
A função IncludeSubjectKeyID em Xenroll.dll especifica ou recupera um valor booliano que indica se a extensão SubjectKeyIdentifier à solicitação.
Por padrão, a extensão SubjectKeyIdentifier é criada quando o objeto de solicitação IX509CertificateRequestPkcs10 é inicializado. Você pode substituir esse comportamento chamando a propriedade SuppressOids.
Se você tiver um par de chaves público/privado, também poderá usar a interfaceIX509ExtensionSubjectKeyIdentifierno CertEnroll.dll para adicionar uma extensão SubjectKeyIdentifier a uma solicitação de certificado executando as seguintes ações:
- Crie um objetoIX509Extensions.
- Crie um objetoIX509ExtensionSubjectKeyIdentifiere chame o método InitializeEncode, especificando uma cadeia de caracteres que contém o identificador. Normalmente, esse é um hash SHA-1 de 20 bytes da chave pública contidas no certificado de autenticação da AC.
- Adicione a extensão criada à coleçãoIX509Extensions chamando o método Add.
- Crie um objetoIX509AttributeExtensions e chame o método InitializeEncode, especificando a coleção IX509Extensions na entrada.
- Recupere um objeto de coleção ICryptAttributes chamando a propriedadeCryptAttributes em um objeto de solicitação IX509CertificateRequestPkcs10existente ou IX509CertificateRequestCmc.
resetExtensions
A função resetExtensions em Xenroll.dll remove a coleção de extensões da solicitação.
Para remover uma extensão de uma solicitação por número de índice usando CertEnroll.dll, chame o método Remove na coleçãoIX509Extensions. Para remover todos os atributos de uma solicitação, chame o método Clear.
Tópicos relacionados