Descodificación de datos firmados

El siguiente proceso general descodifica un tipo de datos firmado .

Para descodificar un mensaje firmado

  1. Obtenga un puntero al BLOB codificado.
  2. Llame a CryptMsgOpenToDecode y pase los argumentos necesarios.
  3. Llame a CryptMsgUpdate una vez, pasando el identificador recuperado en el paso 2 y un puntero a los datos que se van a descodificar. Esto hace que se realicen las acciones adecuadas en el mensaje, en función del tipo de mensaje.
  4. Llame a CryptMsgGetParam, pasando el identificador recuperado en el paso 2 y los tipos de parámetro adecuados para acceder a los datos descodificados. Por ejemplo, pase CMSG_CONTENT_PARAM para obtener un puntero al contenido descodificado.

El siguiente proceso general comprueba la firma de un mensaje descodificado y firmado.

Para comprobar la firma de un mensaje descodificado y firmado

  1. Llame a CryptMsgGetParam, pasando el identificador de mensaje y CMSG_SIGNER_CERT_INFO_PARAM para obtener el CERT_INFO del firmante del mensaje.
  2. Llame a CertOpenStore para abrir un almacén temporal inicializado con los certificados del mensaje.
  3. Llame a CertGetSubjectCertificateFromStore para obtener el CERT_INFO del firmante de los certificados incluidos en el mensaje.
  4. Llame a CryptMsgControl y pase CMSG_CTRL_VERIFY_SIGNATURE para comprobar las firmas.
  5. Llame a CryptMsgClose para cerrar el mensaje.

El resultado de estos procedimientos es que se comprueba la firma y se recupera un puntero al contenido del mensaje descodificado obtenido en el paso 4 del procedimiento para descodificar un mensaje firmado.

Para obtener detalles de codificación de C, vea Programa C de ejemplo: Firma, Codificación, Descodificación y Comprobación de un mensaje.