Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La función DecryptMessage (digest) descifra un mensaje. Algunos paquetes no cifran ni descifran mensajes, sino que realizan y comprueban un hash de integridad.
El proveedor de compatibilidad con la seguridad implícita (SSP) proporciona confidencialidad de cifrado y descifrado para los mensajes intercambiados entre el cliente y el servidor como un mecanismo SASL únicamente.
Nota:
Se puede llamar a EncryptMessage (Digest) y DecryptMessage (Digest) al mismo tiempo desde dos subprocesos diferentes en un único contexto de interfaz de proveedor de compatibilidad de seguridad (SSPI) si un subproceso está cifrando y el otro se descifra. 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(
PCtxtHandle phContext,
PSecBufferDesc pMessage,
unsigned long MessageSeqNo,
unsigned long *pfQOP
);
Parámetros
phContext [en]
Identificador del contexto de seguridad que se va a usar para descifrar el mensaje.
pMessage [entrada, salida]
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 y sobrescribe el contenido original de su búfer.
Cuando se usa el SSP de resumen, en la entrada, la estructura hace referencia a una o varias estructuras secBuffer . Uno de estos debe ser de tipo SECBUFFER_DATA o SECBUFFER_STREAM, y debe contener el mensaje cifrado.
MessageSeqNo [en]
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.
Al usar el SSP de síntesis, este parámetro debe establecerse en cero. El SSP de resumen administra la numeración de secuencia internamente.
pfQOP [fuera]
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 una de las marcas siguientes.
| Valor | Significado |
|---|---|
|
SECQOP_WRAP_NO_ENCRYPT |
El mensaje no se cifró, pero se produjo un encabezado o finalizador. Nota: KERB_WRAP_NO_ENCRYPT tiene el mismo valor y el mismo significado. |
|
Al usar el SSP de resumen, use esta marca cuando el contexto de seguridad esté establecido para comprobar solo la firma . Para obtener más información, consulte Calidad de protección. |
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 de retorno | Descripción |
|---|---|
| SEC_E_BUFFER_TOO_SMALL | El búfer de mensajes es demasiado pequeño. Se usa con el SSP de síntesis. |
| SEC_E_CRYPTO_SYSTEM_INVALID | No se admite el cifrado elegido para el contexto de seguridad . Se usa con el SSP de síntesis. |
| SEC_E_INCOMPLETE_MESSAGE | Los datos del búfer de entrada están incompletos. La aplicación necesita leer más datos del servidor y volver a llamar a DecryptMessage (Digest). |
| SEC_E_INVALID_HANDLE | Se especificó un identificador de contexto que no es válido en el parámetro phContext . Se usa con el SSP de síntesis. |
| SEC_E_MESSAGE_ALTERED | El mensaje se ha modificado. Se usa con el SSP de síntesis. |
| SEC_E_OUT_OF_SEQUENCE | El mensaje no se recibió en la secuencia correcta. |
| SEC_E_QOP_NOT_SUPPORTED | Ni la confidencialidad ni la integridad son compatibles con el contexto de seguridad. Se usa con el SSP de síntesis. |
Observaciones
A veces, una aplicación leerá datos de la entidad remota, intentará descifrarlos mediante DecryptMessage (Digest) y detectará que DecryptMessage (Digest) 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 tratar con él.
Windows XP: Esta función también se conoce como UnsealMessage. Las aplicaciones ahora solo deben usar DecryptMessage (Digest).
Requisitos
| Requisito | Valor |
|---|---|
| Mínima versión de cliente admitida | Windows XP [solo aplicaciones de escritorio] |
| Servidor mínimo admitido | Windows Server 2003 [solo aplicaciones de escritorio] |
| Cabecera | Sspi.h (incluye Security.h) |
| Biblioteca | Secur32.lib |
| DLL | Secur32.dll |