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
0
SECBUFFER_TOKEN
Vacía.
1
SECBUFFER_PKG_PARAMS
Método.
2
SECBUFFER_PKG_PARAMS
dirección URL.
3
SECBUFFER_PKG_PARAMS
HEntity. Para obtener más información, vea Búferes de entrada para la respuesta de desafío de resumen.
4
SECBUFFER_PADDING
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
0
SECBUFFER_TOKEN
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.
1
SECBUFFER_DATA
Mensaje que se va a firmar.
2
SECBUFFER_PADDING
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
SEC_I_RENEGOTIATE
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.
SEC_E_INVALID_HANDLE
El identificador de contexto especificado por phContext no es válido.
SEC_E_INVALID_TOKEN
pMessage no contenía un búfer de SECBUFFER_TOKEN válido ni contenía demasiados búferes.
SEC_E_OUT_OF_SEQUENCE
El recuento de nonces está fuera de secuencia.
SEC_E_NO_AUTHENTICATING_AUTHORITY
Se debe volver a validar el contexto de seguridad (phContext).
STATUS_INVALID_PARAMETER
El número de nonces no es numérico.
SEC_E_QOP_NOT_SUPPORTED
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

Consulte también

Funciones SSPI

SecBuffer

SecBufferDesc

VerifySignature