Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 é usado apenas com chaves assimétricas e deve ser NULL de outra forma.
pPaddingInfo deve ser NULL para LMS e XMSS, pois nenhuma informação adicional é necessária para gerar uma assinatura diferente da chave e da entrada.
[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 .
dwFlags deve ser zero para LMS e XMSS, pois nenhuma informação adicional é necessária para gerar uma assinatura diferente da chave e da entrada.
Esse valor pode ser um dos seguintes:
| Valor | Significado |
|---|---|
| BCRYPT_PAD_PKCS1 | Use o esquema de preenchimento PKCS1. O parâmetro pPaddingInfo é um ponteiro para uma estrutura BCRYPT_PKCS1_PADDING_INFO . |
| BCRYPT_PAD_PQDSA | Use o esquema de preenchimento PQ para ML-DSA ou SLH-DSA. O parâmetro pPaddingInfo é um ponteiro para uma estrutura BCRYPT_PQDSA_PADDING_INFO . Nota: Isso deve ser definido se estiver usando uma variante de ML-DSA pré-hash. |
| BCRYPT_PAD_PSS | Use o esquema de preenchimento PSS (Probabilistic Signature Scheme). O parâmetro pPaddingInfo é um ponteiro para uma estrutura BCRYPT_PSS_PADDING_INFO . |
Valor de retorno
Retorna um código de 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:
| Código de retorno | Descrição |
|---|---|
| STATUS_SUCCESS | A função foi bem-sucedida. |
| STATUS_INVALID_HANDLE | O identificador de chave especificado pelo parâmetro hKey não é válido. |
| STATUS_NOT_SUPPORTED | O provedor de algoritmo usado para criar o identificador de chave especificado pelo parâmetro hKey não é um algoritmo de assinatura. |
| STATUS_NO_MEMORY | Ocorreu uma falha de alocação de memória. |
| STATUS_BUFFER_TOO_SMALL | O tamanho da memória especificado pelo parâmetro cbOutput não é grande o suficiente para manter a assinatura. |
Observações
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, o BCryptSignHash pode ser chamado no modo de usuário ou no 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 aberto com o sinalizador BCRYPT_PROV_DISPATCH e quaisquer 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 suportado | Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
| Servidor mínimo compatível | Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP] |
| da Plataforma de Destino | Windows |
| cabeçalho | bcrypt.h |
| Biblioteca | Bcrypt.lib |
| de DLL | Bcrypt.dll |