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 chaves, políticas de certificado e restrições, 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ção AddCertTypeToRequestWStr em Xenroll.dll adiciona um modelo de certificado, por nome, a uma solicitação.

Usando CertEnroll.dll, o método preferido 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 se espera que seja compreendido pela AUTORIDADE de certificação (AC), você pode usar a interface IX509ExtensionTemplateName para adicionar um modelo de versão 1 ou pode 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 objeto IX509Extensions .
  2. Crie um objeto IX509ExtensionTemplateName e chame o método InitializeEncode , especificando o nome do modelo.
  3. Adicione a extensão criada à coleção IX509Extensions chamando o método Add .
  4. Crie um objeto IX509AttributeExtensions e chame o método InitializeEncode , especificando a coleção IX509Extensions na entrada.
  5. 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 em 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 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 #10. Para adicionar extensões, execute as seguintes ações:

  1. Crie um objeto IX509Extensions .
  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 use 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 nº 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 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 em 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 em CertEnroll.dll para adicionar uma extensão SubjectKeyIdentifier a uma solicitação de certificado executando as seguintes ações:

  1. Crie um objeto IX509Extensions .
  2. 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 assinatura da AC.
  3. Adicione a extensão criada à coleção IX509Extensions chamando o método Add .
  4. Crie um objeto IX509AttributeExtensions e chame o método InitializeEncode , especificando a coleção IX509Extensions na entrada.
  5. 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 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ção IX509Extensions . Para remover todos os atributos de uma solicitação, chame o método Clear .

Mapeando Xenroll.dll para CertEnroll.dll

ICryptAttributes

IX509Extension

IX509Extensions