Função CryptSignAndEncodeCertificate (wincrypt.h)
A função CryptSignAndEncodeCertificate codifica e assina um certificado, uma CRL ( lista de certificados revogados ), uma CTL ( lista de certificados confiáveis ) ou uma solicitação de certificado.
Essa função executa as seguintes operações:
- Chama CryptEncodeObject usando lpszStructType para codificar as informações "a serem assinadas".
- Chama CryptSignCertificate para assinar essas informações codificadas.
- Chama CryptEncodeObject novamente, com lpszStructType definido como X509_CERT, para codificar ainda mais as informações assinadas e codificadas resultantes.
Sintaxe
BOOL CryptSignAndEncodeCertificate(
[in] BCRYPT_KEY_HANDLE hBCryptKey,
[in] DWORD dwKeySpec,
[in] DWORD dwCertEncodingType,
[in] LPCSTR lpszStructType,
[in] const void *pvStructInfo,
[in] PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
[in] const void *pvHashAuxInfo,
[out] BYTE *pbEncoded,
[in, out] DWORD *pcbEncoded
);
Parâmetros
[in] hBCryptKey
Um identificador do CSP ( provedor de serviços criptográficos ) para fazer a assinatura. Esse identificador é 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 um identificador NCRYPT_KEY_HANDLE de um CNG CSP.
[in] dwKeySpec
Identifica a chave privada a ser usada do contêiner do provedor. Esse deve ser um dos valores a seguir. Esse parâmetro será ignorado se uma chave CNG for passada no parâmetro hCryptProvOrNCryptKey .
Valor | Significado |
---|---|
|
Use a chave de troca de chaves. |
|
Use a chave de assinatura digital. |
[in] dwCertEncodingType
Especifica o tipo de codificação usado. Esse pode ser o valor a seguir.
Valor | Significado |
---|---|
|
Especifica a codificação de certificado X.509 . |
[in] lpszStructType
Um ponteiro para uma cadeia de caracteres ANSI terminada em nulo que contém o tipo de dados a serem codificados e assinados. As seguintes constantes lpszStructType predefinidas são usadas com operações de codificação.
Valor | Significado |
---|---|
|
pvStructInfo é o endereço de uma estrutura CRL_INFO . |
|
pvStructInfo é o endereço de uma estrutura CERT_REQUEST_INFO . |
|
pvStructInfo é o endereço de uma estrutura CERT_INFO . |
|
pvStructInfo é o endereço de uma estrutura CERT_KEYGEN_REQUEST_INFO . |
[in] pvStructInfo
O endereço de uma estrutura que contém os dados a serem assinados e codificados. O formato dessa estrutura é determinado pelo parâmetro lpszStructType .
[in] pSignatureAlgorithm
Um ponteiro para uma estrutura CRYPT_ALGORITHM_IDENTIFIER que contém o OID ( identificador de objeto ) do algoritmo de assinatura e quaisquer parâmetros adicionais necessários. Essa função usa os seguintes OIDs de algoritmo:
- szOID_RSA_MD5RSA
- szOID_RSA_SHA1RSA
- szOID_X957_SHA1DSA
[in] pvHashAuxInfo
Reservado. Deve ser NULL.
[out] pbEncoded
Um ponteiro para um buffer para receber a saída assinada e codificada.
Esse parâmetro pode ser NULL para definir o tamanho dessas informações para fins de alocação de memória. Para obter mais informações, consulte Recuperando dados de comprimento desconhecido.
[in, out] pcbEncoded
Um ponteiro para um DWORD que contém o tamanho, em bytes, do buffer apontado pelo parâmetro pbEncoded . Quando a função retorna, o DWORD contém o número de bytes armazenados ou a serem armazenados no buffer.
Retornar valor
Se a função for bem-sucedida, o valor retornado será diferente de zero (TRUE).
Se a função falhar, o valor retornado será zero (FALSE). Para obter informações de erro estendidas, chame GetLastError.
Código de retorno | Descrição |
---|---|
|
Se o buffer especificado pelo parâmetro pbEncoded não for grande o suficiente para manter os dados retornados, a função definirá o código ERROR_MORE_DATA e armazenará o tamanho do buffer necessário, em bytes, na variável apontada por pcbEncoded. |
|
Tipo de codificação de certificado inválido. Atualmente, há suporte apenas para X509_ASN_ENCODING. |
|
O OID do algoritmo de assinatura não é mapeado para um algoritmo de hash conhecido ou com suporte. |
|
Erro ao codificar ou decodificar. A causa mais provável desse erro é a inicialização inadequada dos campos na estrutura apontada por pvStructInfo. |
Se a função falhar, GetLastError poderá retornar um erro de codificação/decodificação ASN.1 ( Abstract Syntax Notation One ). Para obter informações sobre esses erros, consulte Valores retornados de codificação/decodificação asn.1.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | wincrypt.h |
Biblioteca | Crypt32.lib |
DLL | Crypt32.dll |