Compartir a través de


Función DecryptMessage (NTLM)

La función DecryptMessage (NTLM) descifra un mensaje. Algunos paquetes no cifran y descifran mensajes, sino que realizan y comprueban un hash de integridad.

Nota:

Se puede llamar a EncryptMessage (NTLM) y DecryptMessage (NTLM) al mismo tiempo desde dos subprocesos diferentes en un único contexto de interfaz del proveedor de compatibilidad de seguridad (SSPI) si un subproceso está cifrando y el otro está descifrado. Si se cifra más de un subproceso o se descifra más de un subproceso, cada subproceso debe obtener un contexto único.

Sintaxis

SECURITY_STATUS SEC_Entry DecryptMessage(
  _In_    PCtxtHandle    phContext,
  _Inout_ PSecBufferDesc pMessage,
  _In_    ULONG          MessageSeqNo,
  _Out_   PULONG         pfQOP
);

Parámetros

phContext [in]

Identificador del contexto de seguridad que se va a usar para descifrar el mensaje.

pMessage [in, out]

Puntero a una estructura SecBufferDesc . En la entrada, la estructura hace referencia a una o varias estructuras SecBuffer . Al menos uno de estos debe ser de tipo SECBUFFER_DATA. Ese búfer contiene el mensaje cifrado. El mensaje cifrado se descifra en su lugar, sobrescribiendo el contenido original de su búfer.

MessageSeqNo [in]

Número de secuencia esperado por la aplicación de transporte, si existe. Si la aplicación de transporte no mantiene números de secuencia, este parámetro debe establecerse en cero.

pfQOP [out]

Puntero a una variable de tipo ULONG que recibe marcas específicas del paquete que indican la calidad de la protección.

Este parámetro puede ser la marca siguiente.

Value Significado
SECQOP_WRAP_NO_ENCRYPT
El mensaje no se cifró, pero se generó un encabezado o finalizador.
Nota: KERB_WRAP_NO_ENCRYPT tiene el mismo valor y el mismo significado.

Valor devuelto

Si la función comprueba que el mensaje se recibió en la secuencia correcta, la función devuelve SEC_E_OK.

Si la función no puede descifrar el mensaje, devuelve uno de los siguientes códigos de error.

Código devuelto Descripción
SEC_E_INCOMPLETE_MESSAGE Los datos del búfer de entrada están incompletos. La aplicación debe leer más datos del servidor y llamar de nuevo a DecryptMessage (NTLM).
SEC_E_OUT_OF_SEQUENCE El mensaje no se recibió en la secuencia correcta.

Observaciones

A veces, una aplicación leerá datos de la entidad remota, intentará descifrarlos mediante DecryptMessage (NTLM) y detectará que DecryptMessage (NTLM) se realizó correctamente, pero los búferes de salida están vacíos. Este es un comportamiento normal y las aplicaciones deben ser capaces de lidiar con él.

Windows XP: Esta función también se conoce como UnsealMessage. Las aplicaciones ahora solo deben usar DecryptMessage (NTLM).

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado Sspi.h (incluya Security.h)
Biblioteca Secur32.lib
Archivo DLL Secur32.dll

Consulte también