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ção AddCertTypeToRequestWStr no 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 compreendido pela AC ( autoridade de certificação ), 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 objeto IX509Extensions .
- Crie um objeto IX509ExtensionTemplateName e chame o método InitializeEncode , especificando o nome do modelo.
- Adicione a extensão criada à coleção IX509Extensions chamando o método Add .
- Crie um objeto IX509AttributeExtensions e chame o método InitializeEncode , especificando a coleção IX509Extensions na entrada.
- Recupere um objeto de coleção ICryptAttributes chamando a propriedade CryptAttributes em um objeto de solicitação IX509CertificateRequestPkcs10 ou IX509CertificateRequestCmc existente.
AddCertTypeToRequestWStrEx
A função AddCertTypeToRequestWStrEx 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ção AddExtensionsToRequest no 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 objeto IX509Extensions .
- 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 use 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 no 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 nº 10. Para obter mais informações, consulte a discussão AddExtensionsToRequest acima.
EnableSMIMECapabilities
A função EnableSMIMECapabilities no Xenroll.dll especifica ou recupera um valor booliano que indica se a extensão SMIMECapabilities deve ser adicionada à solicitação.
Você pode chamar a propriedade SmimeCapabilities no objeto IX509CertificateRequestPkcs10 para adicionar automaticamente um objeto IX509ExtensionSmimeCapabilities à solicitação antes da codificação.
IncludeSubjectKeyID
A função IncludeSubjectKeyID no Xenroll.dll especifica ou recupera um valor booliano que indica se a extensão SubjectKeyIdentifier deve ser adicionada à 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ública/privada, também poderá usar a interface IX509ExtensionSubjectKeyIdentifier no CertEnroll.dll para adicionar uma extensão SubjectKeyIdentifier a uma solicitação de certificado executando as seguintes ações:
- Crie um objeto IX509Extensions .
- Crie um objeto IX509ExtensionSubjectKeyIdentifier e 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 contida no certificado de autenticação da AC.
- Adicione a extensão criada à coleção IX509Extensions chamando o método Add .
- Crie um objeto IX509AttributeExtensions e chame o método InitializeEncode , especificando a coleção IX509Extensions na entrada.
- Recupere um objeto de coleção ICryptAttributes chamando a propriedade CryptAttributes em um objeto de solicitação IX509CertificateRequestPkcs10 ou IX509CertificateRequestCmc existente.
resetExtensions
A função resetExtensions no Xenroll.dll remove a coleção de extensão 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ção IX509Extensions . Para remover todos os atributos de uma solicitação, chame o método Clear .
Tópicos relacionados