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 para o qual 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] 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 valores a seguir.

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_PSS
Use o esquema de preenchimento PSS (Esquema de Assinatura Probabilística). 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.

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
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 dos parâmetros não são válidos.
NTE_NO_MEMORY
Ocorreu uma falha de alocação de memória.

Comentários

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