Função BCryptSignHash (bcrypt.h)
A função BCryptSignHash cria uma assinatura de um valor de hash.
Sintaxe
NTSTATUS BCryptSignHash(
[in] BCRYPT_KEY_HANDLE hKey,
[in, optional] VOID *pPaddingInfo,
[in] PUCHAR pbInput,
[in] ULONG cbInput,
[out] PUCHAR pbOutput,
[in] ULONG cbOutput,
[out] ULONG *pcbResult,
[in] ULONG dwFlags
);
Parâmetros
[in] hKey
O identificador da chave a ser usada para assinar o hash.
[in, optional] pPaddingInfo
Um ponteiro para uma estrutura que contém informações de preenchimento. O tipo real de estrutura a que esse parâmetro aponta depende do valor do parâmetro dwFlags . Esse parâmetro só é usado com chaves assimétricas e deve ser NULL caso contrário.
[in] pbInput
Um ponteiro para um buffer que contém o valor de hash a ser assinado. O parâmetro cbInput contém o tamanho desse buffer.
[in] cbInput
O número de bytes no buffer pbInput a ser assinado.
[out] pbOutput
O endereço de um buffer para receber a assinatura produzida por essa função. O parâmetro cbOutput contém o tamanho desse buffer.
Se esse parâmetro for NULL, essa função calculará o tamanho necessário para a assinatura e retornará o tamanho no local apontado pelo parâmetro pcbResult .
[in] cbOutput
O tamanho, em bytes, do buffer pbOutput . Esse parâmetro será ignorado se o parâmetro pbOutput for NULL.
[out] pcbResult
Um ponteiro para uma variável ULONG que recebe o número de bytes copiados para o buffer pbOutput .
Se pbOutput for NULL, isso receberá o tamanho, em bytes, necessário para a assinatura.
[in] dwFlags
Um conjunto de sinalizadores que modificam o comportamento dessa função. O conjunto permitido de sinalizadores depende do tipo de chave especificado pelo parâmetro hKey .
Esse pode ser um dos valores a seguir.
Valor | Significado |
---|---|
|
Use o esquema de preenchimento PKCS1. O parâmetro pPaddingInfo é um ponteiro para uma estrutura BCRYPT_PKCS1_PADDING_INFO . |
|
Use o esquema de preenchimento PSS (Probabilistic Signature Scheme). O parâmetro pPaddingInfo é um ponteiro para uma estrutura BCRYPT_PSS_PADDING_INFO . |
Retornar valor
Retorna um código status que indica o êxito ou a falha da função.
Os códigos de retorno possíveis incluem, mas não se limitam a, o seguinte.
Código de retorno | Descrição |
---|---|
|
A função foi bem-sucedida. |
|
O identificador de chave especificado pelo parâmetro hKey não é válido. |
|
O provedor de algoritmo usado para criar o identificador de chave especificado pelo parâmetro hKey não é um algoritmo de assinatura. |
|
Ocorreu uma falha de alocação de memória. |
|
O tamanho da memória especificado pelo parâmetro cbOutput não é grande o suficiente para manter a assinatura. |
Comentários
Essa função criptografará o valor de hash com a chave especificada para criar a assinatura.
Para verificar posteriormente se a assinatura é válida, chame a função BCryptVerifySignature com uma chave idêntica e um hash idêntico dos dados originais.
Dependendo de quais modos de processador um provedor dá suporte, BCryptSignHash pode ser chamado do modo de usuário ou do modo kernel. Os chamadores do modo kernel podem ser executados em PASSIVE_LEVELIRQL ou DISPATCH_LEVEL IRQL. Se o nível IRQL atual for DISPATCH_LEVEL, o identificador fornecido no parâmetro hKey deverá ser derivado de um identificador de algoritmo retornado por um provedor que foi aberto com o sinalizador BCRYPT_PROV_DISPATCH e todos os ponteiros passados para a função BCryptSignHash deverão se referir à memória não paga (ou bloqueada).
Para chamar essa função no modo kernel, use Cng.lib, que faz parte do DDK (Driver Development Kit). Windows Server 2008 e Windows Vista: Para chamar essa função no modo kernel, use Ksecdd.lib.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | bcrypt.h |
Biblioteca | Bcrypt.lib |
DLL | Bcrypt.dll |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de