Método IX509CertificateRequestPkcs10::InitializeFromPrivateKey (certenroll.h)

O método InitializeFromPrivateKey inicializa a solicitação de certificado usando um objeto IX509PrivateKey e, opcionalmente, um modelo. Esse método está habilitado para a Web.

Sintaxe

HRESULT InitializeFromPrivateKey(
  [in]           X509CertificateEnrollmentContext Context,
  [in]           IX509PrivateKey                  *pPrivateKey,
  [in, optional] BSTR                             strTemplateName
);

Parâmetros

[in] Context

Um valor de enumeração X509CertificateEnrollmentContext que especifica se o certificado solicitado destina-se a um usuário final, um computador ou um administrador agindo em nome do computador. Esse pode ser um dos valores a seguir. No entanto, se a propriedade MachineContext da chave privada estiver definida, você deverá especificar o valor de enumeração ContextMachine .

Valor Significado
ContextUser
O certificado está sendo solicitado para um usuário final.
ContextMachine
O certificado está sendo solicitado para um computador.
ContextAdministratorForceMachine
O certificado está sendo solicitado por um administrador que atua em nome de um computador.

[in] pPrivateKey

Ponteiro para uma interface IX509PrivateKey que representa a chave privada.

[in, optional] strTemplateName

Uma variável BSTR que contém o CN (Nome Comum) do modelo como ele aparece no Active Directory ou no identificador de objeto decimal pontilhado. Esse é um parâmetro opcional.

Retornar valor

Se a função for bem-sucedida, a função retornará S_OK.

Se a função falhar, ela retornará um valor HRESULT que indica o erro. Os possíveis valores incluem, mas sem limitação, aqueles na tabela a seguir. Para obter uma lista de códigos de erro comuns, consulte Valores HRESULT comuns.

Código de retorno Descrição
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
O objeto de solicitação de certificado já foi inicializado.

Comentários

Se você especificar um modelo, o método InitializeFromPrivateKey executará as seguintes ações:

  • Adiciona as extensões especificadas pelo modelo a uma coleção IX509Extensions .
  • Cria uma coleção IObjectIds e a preenche com os identificadores de objeto XCN_OID_KEY_USAGE e XCN_OID_BASIC_CONSTRAINTS2 padrão. Se o modelo indicar que esses OIDs não são críticos, eles serão removidos da coleção. Os OIDs marcados como críticos pelo modelo são adicionados.
  • Define a propriedade SmimeCapabilities se o modelo der suporte a algoritmos simétricos.
  • Define a propriedade AlternateSignatureAlgorithm se o modelo exigir um OID de algoritmo de assinatura discreto.
  • Cria um objeto IX509SignatureInformation .
  • Cria um algoritmo de hash OID se o algoritmo for especificado no modelo e o definir no objeto IX509SignatureInformation .
  • Recupera um OID de algoritmo de criptografia assimétrica, se existir, do modelo e o define no objeto IX509SignatureInformation .
  • Preenche muitas das propriedades IX509PrivateKey das configurações do modelo.

Se você especificar um modelo ou não, se a propriedade CSPInformations não for especificada, o método criará uma coleção ICspInformations dos provedores instalados no computador.

Nenhuma chave privada é criada neste momento. Se o objeto IX509PrivateKey passado para o método não representar uma chave existente, uma chave será criada quando o método Encode for chamado. A chave será criada usando o provedor padrão se nenhum modelo tiver sido especificado e a propriedade ProviderName no IX509PrivateKey não estiver definida. Quando existe uma chave privada, ela é definida na propriedade PrivateKey .

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho certenroll.h
DLL CertEnroll.dll

Confira também

IX509CertificateRequestPkcs10