Función NCryptEncrypt (ncrypt.h)

La función NCryptEncrypt cifra un bloque de datos.

Sintaxis

SECURITY_STATUS NCryptEncrypt(
  [in]           NCRYPT_KEY_HANDLE hKey,
  [in]           PBYTE             pbInput,
  [in]           DWORD             cbInput,
  [in, optional] VOID              *pPaddingInfo,
  [out]          PBYTE             pbOutput,
  [in]           DWORD             cbOutput,
  [out]          DWORD             *pcbResult,
  [in]           DWORD             dwFlags
);

Parámetros

[in] hKey

Identificador de la clave que se va a usar para cifrar los datos.

[in] pbInput

Dirección de un búfer que contiene los datos que se van a cifrar. El parámetro cbInput contiene el tamaño de los datos que se van a cifrar. Para obtener más información, vea la sección Comentarios.

[in] cbInput

Número de bytes del búfer pbInput que se va a cifrar.

[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.

[out] pbOutput

Dirección de un búfer que recibirá los datos cifrados generados por esta función. El parámetro cbOutput contiene el tamaño de este búfer. Para obtener más información, vea la sección Comentarios.

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

[in] cbOutput

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

[out] pcbResult

Puntero a una variable DWORD que recibe el número de bytes copiados en el búfer pbOutput . Si pbOutput es NULL, recibe el tamaño, en bytes, necesario para el texto cifrado.

[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 asimétrica, puede ser uno de los siguientes valores.

Valor Significado
NCRYPT_NO_PADDING_FLAG
No use ningún relleno. No se usa el parámetro pPaddingInfo .

Si especifica el NCRYPT_NO_PADDING_FLAG, la función NCryptEncrypt solo cifra los primeros N bits, donde N es la longitud de la clave que se pasó como parámetro hKey . Los bits después de los primeros N bits se omiten.

NCRYPT_PAD_OAEP_FLAG
Use el esquema de relleno óptimo de cifrado asimétrico (OAEP). El parámetro pPaddingInfo es un puntero a una estructura BCRYPT_OAEP_PADDING_INFO .
NCRYPT_PAD_PKCS1_FLAG
Los datos se rellenarán con un número aleatorio para redondear el tamaño del bloque. No se usa el parámetro pPaddingInfo .
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_FLAGS
El parámetro dwFlags contiene un valor que no es válido.
NTE_BAD_KEY_STATE
La clave identificada por el parámetro hKey no se ha finalizado o está incompleta.
NTE_BUFFER_TOO_SMALL
El tamaño especificado por el parámetro cbOutput no es lo suficientemente grande como para contener los datos cifrados.
NTE_INVALID_HANDLE
El parámetro hKey no es válido.
NTE_INVALID_PARAMETER
Uno o más parámetros no son válidos.

Comentarios

Los parámetros pbInput y pbOutput pueden apuntar al mismo búfer. En este caso, esta función realizará el cifrado en su lugar. Es posible que el tamaño de los datos cifrados sea mayor que el tamaño de los datos sin cifrar, por lo que el búfer debe ser lo suficientemente grande como para contener los datos cifrados.

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