Partilhar via


Função BCryptVerifySignature (bcrypt.h)

A função BCryptVerifySignature verifica se a assinatura especificada corresponde ao hash especificado.

Sintaxe

NTSTATUS BCryptVerifySignature(
  [in]           BCRYPT_KEY_HANDLE hKey,
  [in, optional] VOID              *pPaddingInfo,
  [in]           PUCHAR            pbHash,
  [in]           ULONG             cbHash,
  [in]           PUCHAR            pbSignature,
  [in]           ULONG             cbSignature,
  [in]           ULONG             dwFlags
);

Parâmetros

[in] hKey

O identificador da chave a ser usada para descriptografar a assinatura. Essa deve ser uma chave idêntica ou a parte de chave pública do par de chaves usada para assinar os dados com a função BCryptSignHash .

[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] pbHash

O endereço de um buffer que contém o hash dos dados. O parâmetro cbHash contém o tamanho desse buffer.

[in] cbHash

O tamanho, em bytes, do buffer pbHash .

[in] pbSignature

O endereço de um buffer que contém o hash assinado dos dados. A função BCryptSignHash é usada para criar a assinatura. O parâmetro cbSignature contém o tamanho desse buffer.

[in] cbSignature

O tamanho, em bytes, do buffer pbSignature . A função BCryptSignHash é usada para criar 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.

Se a chave for uma chave simétrica, esse parâmetro não será usado e deverá ser zero.

Se a chave for uma chave assimétrica, esse poderá ser um dos seguintes valores:

Valor Significado
BCRYPT_PAD_PKCS1 O esquema de preenchimento PKCS1 foi usado quando a assinatura foi criada. 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 O esquema de preenchimento PSS (Probabilistic Signature Scheme) foi usado quando a assinatura foi criada. 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_SIGNATURE A assinatura não foi verificada.
NTE_NO_MEMORY Ocorreu uma falha de alocação de memória.
STATUS_INVALID_PARAMETER Um dos parâmetros fornecidos é inválido.
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.

Observações

Essa função calcula a assinatura com a chave fornecida e compara o valor da assinatura calculada com o valor de assinatura especificado.

Para usar essa função, você deve hash dos dados usando o mesmo algoritmo de hash que foi usado para criar o valor de hash que foi assinado. Se aplicável, você também deve especificar o mesmo esquema de preenchimento especificado quando a assinatura foi criada.

Para ML-DSA e SLH-DSA, pbHash e cbHash não precisam ser valores de hash e podem ser entradas de comprimento arbitrário.

Dependendo de quais modos de processador um provedor dá suporte, BCryptVerifySignature 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 usando o sinalizador BCRYPT_PROV_DISPATCH e todos os ponteiros passados para a função BCryptVerifySignature 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

Consulte também

BCryptSignHash