Función DecryptMessage (Kerberos)
La función DecryptMessage (Kerberos) 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 (Kerberos) y DecryptMessage (Kerberos) al mismo tiempo desde dos subprocesos diferentes en un único contexto de interfaz del proveedor de compatibilidad de seguridad (SSPI) si se cifra un subproceso 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(
_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 que pueden ser de tipo SECBUFFER_DATA. El 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.
Valor | Significado |
---|---|
SECQOP_WRAP_NO_ENCRYPT | el mensaje no estaba cifrado, pero se produjo 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 necesita leer más datos del servidor y llamar de nuevo a DecryptMessage (Kerberos). |
SEC_E_OUT_OF_SEQUENCE | El mensaje no se recibió en la secuencia correcta. |
Comentarios
A veces, una aplicación leerá datos de la entidad remota, intentará descifrarlos mediante DecryptMessage (Kerberos) y detectará que DecryptMessage (Kerberos) 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.
Para obtener información sobre cómo interoperar con GSSAPI, consulte Interoperabilidad de SSPI/Kerberos con GSSAPI.
Windows XP: Esta función también se conocía como UnsealMessage. Las aplicaciones ahora solo deben usar DecryptMessage (Kerberos).
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 (include Security.h) |
Biblioteca | Secur32.lib |
Archivo DLL | Secur32.dll |