Función MakeSignature (sspi.h)
La función MakeSignature genera una suma de comprobación criptográfica del mensaje y también incluye información de secuenciación para evitar la pérdida o inserción de mensajes. MakeSignature permite a la aplicación elegir entre varios algoritmos criptográficos, si es compatible con el mecanismo elegido. La función MakeSignature usa el contexto de seguridad al que hace referencia el identificador de contexto.
Esta función no es compatible con el proveedor de compatibilidad de seguridad (SSP) de Schannel.
Sintaxis
KSECDDDECLSPEC SECURITY_STATUS SEC_ENTRY MakeSignature(
[in] PCtxtHandle phContext,
[in] unsigned long fQOP,
[in, out] PSecBufferDesc pMessage,
[in] unsigned long MessageSeqNo
);
Parámetros
[in] phContext
Identificador del contexto de seguridad que se va a usar para firmar el mensaje.
[in] fQOP
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.
Al usar el SSP de resumen, este parámetro debe establecerse en cero.
[in, out] pMessage
Puntero a una estructura SecBufferDesc . En la entrada, la estructura hace referencia a una o varias estructuras secBuffer que contienen el mensaje que se va a firmar. La función no procesa búferes con el atributo SECBUFFER_READONLY_WITH_CHECKSUM.
La estructura SecBufferDesc también hace referencia a una estructura SecBuffer de tipo SECBUFFER_TOKEN que recibe la firma.
Cuando el SSP de resumen se usa como protocolo de autenticación HTTP, los búferes deben configurarse de la siguiente manera.
Tipo de búfer #/buffer | Significado |
---|---|
|
Vacía. |
|
Método. |
|
dirección URL. |
|
HEntity. Para obtener más información, vea Búferes de entrada para la respuesta de desafío de resumen. |
|
Vacía. Recibe la firma. |
Cuando el SSP de resumen se usa como mecanismo SASL, los búferes se deben configurar de la siguiente manera.
Tipo de búfer #/buffer | Significado |
---|---|
|
Vacía. Recibe la firma. Este búfer debe ser lo suficientemente grande como para contener la firma más grande posible. Determine el tamaño necesario llamando a la función QueryContextAttributes (General) y especificando SECPKG_ATTR_SIZES. Compruebe el miembro de estructura SecPkgContext_Sizes devuelto cbMaxSignature. |
|
Mensaje que se va a firmar. |
|
Vacía. |
[in] MessageSeqNo
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 es cero.
Al usar el SSP de resumen, este parámetro debe establecerse en cero. El SSP de resumen administra internamente la numeración de secuencia.
Valor devuelto
Si la función se ejecuta 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 |
---|---|
|
El usuario remoto requiere una nueva secuencia de protocolo de enlace o la aplicación acaba de iniciar un apagado. Vuelva al bucle de negociación y llame a AcceptSecurityContext (General) o InitializeSecurityContext (General). Se pasa un búfer de entrada vacío en la primera llamada. |
|
El identificador de contexto especificado por phContext no es válido. |
|
pMessage no contenía un búfer de SECBUFFER_TOKEN válido ni contenía demasiados búferes. |
|
El recuento de nonces está fuera de secuencia. |
|
Se debe volver a validar el contexto de seguridad (phContext). |
|
El número de nonces no es numérico. |
|
La calidad de la protección negociada entre el cliente y el servidor no incluye la comprobación de integridad . |
Comentarios
La función MakeSignature genera una firma basada en el mensaje y la clave de sesión para el contexto.
La función VerifySignature comprueba los mensajes firmados por la función MakeSignature .
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 en la firma. Esto protege contra la respuesta, 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.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | sspi.h (include Security.h) |
Library | Secur32.lib |
Archivo DLL | Secur32.dll |