Comprobación de un mensaje firmado
Estos pasos comprueban la firma de los datos firmados. En la ilustración siguiente se muestran las tareas individuales que se deben realizar, como se muestra en la lista siguiente.
Para comprobar la firma de un mensaje firmado
Obtenga un puntero al mensaje firmado.
Abra un almacén de certificados.
Con el identificador del firmante contenido en el mensaje, obtenga el certificado del remitente y obtenga un identificador para su clave pública.
Como alternativa a los pasos 2 y 3, puede usar el certificado contenido en el mensaje para recuperar la clave pública del firmante.
Con la clave pública del firmante, descifre la firma digital y genere el resumen original de los datos en el mensaje.
Con el algoritmo hash contenido en el mensaje, aplica un hash a los datos contenidos en el mensaje, lo que produce un nuevo resumen.
Compare el resumen recuperado del mensaje con el nuevo resumen recién creado.
Si los dos resúmenes coinciden, se comprueba la firma. Esto significa que la clave privada que se usó para firmar los datos coincide con la clave pública que acaba de usar para descifrar la firma y que los datos no han cambiado desde que los datos se han firmado.
Si los dos resúmenes no coinciden, la firma no se comprueba y las claves privadas o públicas no coinciden o los datos se han cambiado desde que los datos se han firmado o ambos.
Se puede usar una sola función, CryptVerifyMessageSignature, para comprobar una firma, como se muestra en el procedimiento siguiente.
Para comprobar un mensaje firmado
- Obtenga un puntero al mensaje firmado.
- Obtenga el tamaño del mensaje firmado.
- Obtenga un identificador en un proveedor criptográfico.
- Inicialice la estructura CRYPT_VERIFY_MESSAGE_PARA .
- Llame a CryptVerifyMessageSignature para comprobar la firma.
El código que implementa este procedimiento se incluye en el programa C de ejemplo: Firma de un mensaje y Comprobación de una firma de mensaje.