Função CertCreateSelfSignCertificate (wincrypt.h)

A função CertCreateSelfSignCertificate cria um certificado autoassinado e retorna um ponteiro para uma estrutura CERT_CONTEXT que representa o certificado.

Sintaxe

PCCERT_CONTEXT CertCreateSelfSignCertificate(
  [in, optional] HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
  [in]           PCERT_NAME_BLOB                 pSubjectIssuerBlob,
  [in]           DWORD                           dwFlags,
  [in, optional] PCRYPT_KEY_PROV_INFO            pKeyProvInfo,
  [in, optional] PCRYPT_ALGORITHM_IDENTIFIER     pSignatureAlgorithm,
  [in, optional] PSYSTEMTIME                     pStartTime,
  [in, optional] PSYSTEMTIME                     pEndTime,
  [optional]     PCERT_EXTENSIONS                pExtensions
);

Parâmetros

[in, optional] hCryptProvOrNCryptKey

Um identificador de um provedor criptográfico usado para assinar o certificado criado. Se FOR NULL, as informações do parâmetro pKeyProvInfo serão usadas para adquirir o identificador necessário. Se pKeyProvInfo também for NULL, o tipo de provedor padrão, PROV_RSA_FULL tipo de provedor, a especificação de chave padrão, AT_SIGNATURE e um contêiner de chave recém-criado com um nome de contêiner exclusivo serão usados.

Esse identificador deve ser um identificador HCRYPTPROV que foi criado usando a função CryptAcquireContext ou um identificador NCRYPT_KEY_HANDLE que foi criado usando a função NCryptOpenKey . Os novos aplicativos sempre devem passar o identificador NCRYPT_KEY_HANDLE de um CSP ( provedor de serviços criptográficos ) CNG.

[in] pSubjectIssuerBlob

Um ponteiro para um BLOB que contém o DN (nome diferenciado) para a entidade do certificado. Esse parâmetro não pode ser NULL. Minimamente, um ponteiro para um DN vazio deve ser fornecido. Esse BLOB normalmente é criado usando a função CertStrToName . Ele também pode ser criado usando a função CryptEncodeObject e especificando o X509_NAME ou X509_UNICODE_NAME StructType.

[in] dwFlags

Um conjunto de sinalizadores que substituem o comportamento padrão dessa função. Isso pode ser zero ou uma combinação de um ou mais dos valores a seguir.

Valor Significado
CERT_CREATE_SELFSIGN_NO_KEY_INFO
2
Por padrão, o PCCERT_CONTEXT retornado faz referência às chaves privadas definindo o CERT_KEY_PROV_INFO_PROP_ID. Se você não quiser que o PCCERT_CONTEXT retornado faça referência a chaves privadas definindo o CERT_KEY_PROV_INFO_PROP_ID, especifique CERT_CREATE_SELFSIGN_NO_KEY_INFO.
CERT_CREATE_SELFSIGN_NO_SIGN
1
Por padrão, o certificado que está sendo criado é assinado. Se o certificado que está sendo criado for apenas um espaço reservado fictício, talvez o certificado não precise ser assinado. A assinatura do certificado será ignorada se CERT_CREATE_SELFSIGN_NO_SIGN for especificado.

[in, optional] pKeyProvInfo

Um ponteiro para uma estrutura CRYPT_KEY_PROV_INFO . Antes de um certificado ser criado, o CSP é consultado para o provedor de chaves, o tipo de provedor de chave e o nome do contêiner de chave . Se o CSP consultado não oferecer suporte a essas consultas, a função falhará. Se o provedor padrão não der suporte a essas consultas, um valor pKeyProvInfo deverá ser especificado. O RSA BASE dá suporte a essas consultas.

Se o parâmetro pKeyProvInfo não for NULL, os valores correspondentes serão definidos no valor CERT_KEY_PROV_INFO_PROP_ID do certificado gerado. Você deve garantir que todos os parâmetros da estrutura fornecida sejam especificados corretamente.

[in, optional] pSignatureAlgorithm

Um ponteiro para uma estrutura CRYPT_ALGORITHM_IDENTIFIER . Se FOR NULL, o algoritmo padrão, SHA1RSA, será usado.

[in, optional] pStartTime

Um ponteiro para uma estrutura SYSTEMTIME . Se FOR NULL, a hora atual do sistema será usada por padrão.

[in, optional] pEndTime

Um ponteiro para uma estrutura SYSTEMTIME . Se NULL, o valor pStartTime mais um ano será usado por padrão.

[optional] pExtensions

Um ponteiro para uma matriz CERT_EXTENSIONS de estruturas CERT_EXTENSION . Por padrão, a matriz está vazia. Um nome de assunto alternativo, se desejado, pode ser especificado como uma dessas extensões.

Valor retornado

Se a função for bem-sucedida, uma variável PCCERT_CONTEXT que aponta para o certificado criado será retornada. Se a função falhar, ela retornará NULL. Para obter informações de erro estendidas, chame GetLastError.

Comentários

Como o pEndTime deve ser uma data válida e é gerado automaticamente se não for fornecido pelo usuário, falhas inesperadas podem ser facilmente causadas quando essa API é chamada em um dia bissexto sem acompanhar a lógica do aplicativo para compensar. Para obter mais informações, consulte preparação para o ano bissexto.

Requisitos

   
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho wincrypt.h
Biblioteca Crypt32.lib
DLL Crypt32.dll

Confira também

CERT_EXTENSION

CERT_EXTENSIONS

CRYPT_ALGORITHM_IDENTIFIER

CertStrToName

Cryptencodeobject

Obter Último Erro

PCCERT_CONTEXT

SYSTEMTIME