Compartilhar via


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:

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

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:

  1. Crie um objetoIX509Extensions.
  2. Crie um objetoIX509ExtensionTemplateNamee chame o método InitializeEncode, especificando o nome do modelo.
  3. Adicione a extensão criada à coleçãoIX509Extensions chamando o método Add.
  4. Crie um objetoIX509AttributeExtensions e chame o método InitializeEncode, especificando a coleção IX509Extensions na entrada.
  5. 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:

  1. Crie um objetoIX509Extensions.
  2. 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.
  3. 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:

  1. Crie um objetoIX509Extensions.
  2. 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.
  3. Adicione a extensão criada à coleçãoIX509Extensions chamando o método Add.
  4. Crie um objetoIX509AttributeExtensions e chame o método InitializeEncode, especificando a coleção IX509Extensions na entrada.
  5. 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.

Xenroll.dll de mapeamento para CertEnroll.dll

ICryptAttributes

IX509Extension

IX509Extensions