Función EncryptMessage (NTLM)
La función EncryptMessage (NTLM) cifra un mensaje para proporcionar privacidad. EncryptMessage (NTLM) permite que una aplicación elija entre los algoritmos criptográficos admitidos por el mecanismo elegido. La función EncryptMessage (NTLM) usa el contexto de seguridad al que hace referencia el identificador de contexto. Algunos paquetes no tienen mensajes que se van a cifrar o descifrar, sino que proporcionan un hash de integridad que se puede comprobar.
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 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 EncryptMessage(
_In_ PCtxtHandle phContext,
_In_ ULONG fQOP,
_Inout_ PSecBufferDesc pMessage,
_In_ ULONG MessageSeqNo
);
Parámetros
phContext [in]
Identificador del contexto de seguridad que se va a usar para cifrar el mensaje.
fQOP [in]
Marcas específicas del paquete que indican la calidad de la protección. Un paquete de seguridad puede usar este parámetro para habilitar la selección de algoritmos criptográficos.
Este parámetro puede ser la marca siguiente.
Value | Significado |
---|---|
SECQOP_WRAP_NO_ENCRYPT |
Genere un encabezado o finalizador, pero no cifre el mensaje. Nota: KERB_WRAP_NO_ENCRYPT tiene el mismo valor y el mismo significado. |
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. Ese búfer contiene el mensaje que se va a cifrar. El mensaje se cifra en su lugar, sobrescribiendo el contenido original de la estructura.
La función no procesa búferes con el atributo SECBUFFER_READONLY.
La longitud de la estructura SecBuffer que contiene el mensaje no debe ser mayor que cbMaximumMessage, que se obtiene de la función QueryContextAttributes (NTLM) (SECPKG_ATTR_STREAM_SIZES).
Las aplicaciones que no usan SSL deben proporcionar un secBuffer de tipo SECBUFFER_PADDING.
MessageSeqNo [in]
Número de secuencia que la aplicación de transporte asignó al mensaje. Si la aplicación de transporte no mantiene números de secuencia, este parámetro debe ser cero.
Valor devuelto
Si la función se realiza correctamente, la función devuelve SEC_E_OK.
Si se produce un error en la función, devuelve uno de los siguientes códigos de error.
Código devuelto | Descripción |
---|---|
SEC_E_BUFFER_TOO_SMALL | El búfer de salida es demasiado pequeño. Para obtener más información, vea la sección Comentarios. |
SEC_E_CONTEXT_EXPIRED | La aplicación hace referencia a un contexto que ya se ha cerrado. Una aplicación escrita correctamente no debe recibir este error. |
SEC_E_CRYPTO_SYSTEM_INVALID | No se admite el cifrado elegido para el contexto de seguridad . |
SEC_E_INSUFFICIENT_MEMORY | No hay suficiente memoria disponible para completar la acción solicitada. |
SEC_E_INVALID_HANDLE | Se especificó un identificador de contexto que no es válido en el parámetro phContext . |
SEC_E_INVALID_TOKEN | No se encontró ningún SECBUFFER_DATA búfer de tipo. |
SEC_E_QOP_NOT_SUPPORTED> | Ni la confidencialidad ni la integridad son compatibles con el contexto de seguridad. |
Comentarios
La función EncryptMessage (NTLM) cifra un mensaje basado en el mensaje y la clave de sesión de un contexto de seguridad.
Si la aplicación de transporte creó el contexto de seguridad para admitir la detección de secuencias y el autor de la llamada proporciona un número de secuencia, la función incluye esta información con el mensaje cifrado. La inclusión de esta información protege contra la reproducción, la inserción y la supresión de mensajes. El paquete de seguridad incorpora el número de secuencia pasado desde la aplicación de transporte.
Nota:
Estos búferes deben proporcionarse en el orden mostrado.
Tipo de búfer | Descripción |
---|---|
SECBUFFER_STREAM_HEADER | Utilizado de forma interna. No se requiere inicialización. |
SECBUFFER_DATA | Contiene el mensaje de texto no cifrado que se va a cifrar. |
SECBUFFER_STREAM_TRAILER | Utilizado de forma interna. No se requiere inicialización. |
SECBUFFER_EMPTY | Utilizado de forma interna. No se requiere inicialización. El tamaño puede ser cero. |
Para obtener un rendimiento óptimo, las estructuras pMessage deben asignarse a partir de la memoria contigua.
Windows XP: Esta función también se conoce como SealMessage. Las aplicaciones ahora solo deben usar EncryptMessage (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 (include Security.h) |
Biblioteca | Secur32.lib |
Archivo DLL | Secur32.dll |