Compartilhar via


Função NCryptSignHash (ncrypt.h)

A função NCryptSignHash cria uma assinatura de um valor de hash.

Sintaxe

SECURITY_STATUS NCryptSignHash(
  [in]           NCRYPT_KEY_HANDLE hKey,
  [in, optional] VOID              *pPaddingInfo,
  [in]           PBYTE             pbHashValue,
  [in]           DWORD             cbHashValue,
  [out]          PBYTE             pbSignature,
  [in]           DWORD             cbSignature,
  [out]          DWORD             *pcbResult,
  [in]           DWORD             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.

[in] pbHashValue

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] cbHashValue

O número de bytes no buffer pbHashValue a ser assinado.

[out] pbSignature

O endereço de um buffer para receber a assinatura produzida por essa função. O parâmetro cbSignature 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] cbSignature

O tamanho, em bytes, do buffer pbSignature . Esse parâmetro será ignorado se o parâmetro pbSignature for NULL.

[out] pcbResult

Um ponteiro para uma variável DWORD que recebe o número de bytes copiados para o buffer pbSignature .

Se pbSignature for NULL, isso receberá o tamanho, em bytes, necessário para a assinatura.

[in] dwFlags

Sinalizadores que modificam o comportamento da função. O conjunto permitido de sinalizadores depende do tipo de chave especificado pelo parâmetro hKey .

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

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

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 .
NCRYPT_SILENT_FLAG Solicita que o KSP (provedor de serviços de chave) não exiba nenhuma interface do usuário. Se o provedor precisar exibir a interface do usuário para operar, a chamada falhará e o KSP deverá definir o código de erro NTE_SILENT_CONTEXT como o último erro.

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:

Os códigos de retorno possíveis incluem, mas não se limitam a, o seguinte.

Código de retorno Descrição
ERROR_SUCCESS
A função foi bem-sucedida.
NTE_BAD_ALGID
A chave representada pelo parâmetro hKey não dá suporte à assinatura.
NTE_BAD_FLAGS
O parâmetro dwFlags contém um valor que não é válido.
NTE_INVALID_HANDLE
O parâmetro hKey não é válido.
NTE_INVALID_PARAMETER
Um ou mais parâmetros não são válidos.
NTE_NO_MEMORY
Ocorreu uma falha de alocação de memória.

Observações

Um serviço não deve chamar essa função de sua Função StartService. Se um serviço chamar essa função de sua função StartService , um deadlock poderá ocorrer e o serviço poderá parar de responder.

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 ncrypt.h
Biblioteca Ncrypt.lib
de DLL Ncrypt.dll