Función NCryptSignHash (ncrypt.h)

La función NCryptSignHash crea una firma de un valor hash.

Sintaxis

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

Identificador de la clave que se va a usar para firmar el hash.

[in, optional] pPaddingInfo

Puntero a una estructura que contiene información de relleno. El tipo real de estructura a la que apunta este parámetro depende del valor del parámetro dwFlags . Este parámetro solo se usa con claves asimétricas y debe ser NULL de lo contrario.

[in] pbHashValue

Puntero a un búfer que contiene el valor hash que se va a firmar. El parámetro cbInput contiene el tamaño de este búfer.

[in] cbHashValue

Número de bytes del búfer pbHashValue que se va a firmar.

[out] pbSignature

Dirección de un búfer para recibir la firma generada por esta función. El parámetro cbSignature contiene el tamaño de este búfer.

Si este parámetro es NULL, esta función calculará el tamaño necesario para la firma y devolverá el tamaño en la ubicación a la que apunta el parámetro pcbResult .

[in] cbSignature

Tamaño, en bytes, del búfer pbSignature . Este parámetro se omite si el parámetro pbSignature es NULL.

[out] pcbResult

Puntero a una variable DWORD que recibe el número de bytes copiados en el búfer pbSignature .

Si pbSignature es NULL, recibe el tamaño, en bytes, necesario para la firma.

[in] dwFlags

Marcas que modifican el comportamiento de la función. El conjunto permitido de marcas depende del tipo de clave especificado por el parámetro hKey .

Si la clave es una clave simétrica, este parámetro no se usa y debe establecerse en cero.

Si la clave es una clave asimétrica, puede ser uno de los siguientes valores.

Valor Significado
BCRYPT_PAD_PKCS1
Use el esquema de relleno PKCS1. El parámetro pPaddingInfo es un puntero a una estructura BCRYPT_PKCS1_PADDING_INFO .
BCRYPT_PAD_PSS
Use el esquema de relleno de esquema de firma probabilística (PSS). El parámetro pPaddingInfo es un puntero a una estructura BCRYPT_PSS_PADDING_INFO .
NCRYPT_SILENT_FLAG
Solicita que el proveedor de servicios clave (KSP) no muestre ninguna interfaz de usuario. Si el proveedor debe mostrar la interfaz de usuario para funcionar, se produce un error en la llamada y el KSP debe establecer el código de error NTE_SILENT_CONTEXT como último error.

Valor devuelto

Devuelve un código de estado que indica el éxito o error de la función.

Entre los posibles códigos de retorno se incluyen, entre otros, los siguientes.

Código devuelto Descripción
ERROR_SUCCESS
La función se realizó correctamente.
NTE_BAD_ALGID
La clave representada por el parámetro hKey no admite la firma.
NTE_BAD_FLAGS
El parámetro dwFlags contiene un valor que no es válido.
NTE_INVALID_HANDLE
El parámetro hKey no es válido.
NTE_INVALID_PARAMETER
Uno o más parámetros no son válidos.
NTE_NO_MEMORY
Error de asignación de memoria.

Comentarios

Un servicio no debe llamar a esta función desde su función StartService. Si un servicio llama a esta función desde su función StartService, se puede producir un interbloqueo y el servicio puede dejar de responder.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado ncrypt.h
Library Ncrypt.lib
Archivo DLL Ncrypt.dll