Compartir a través de


Comprobación de mensajes firmados mediante CTL

Una de las ventajas de usar listas de confianza de certificados (CTL) es que las aplicaciones se pueden diseñar que pueden comprobar automáticamente los mensajes firmados con certificados de confianza sin molestar al usuario con cuadros de diálogo. También proporciona a un administrador de red orígenes de control de confianza.

El procedimiento siguiente se puede usar para comprobar la firma de un mensaje firmado mediante un CTL.

Para comprobar un mensaje firmado mediante un CTL

  1. Descodifique el mensaje de la siguiente manera:

    1. Obtenga un puntero al mensaje recibido (el BLOB codificado).
    2. Llame a CryptMsgOpenToDecode y pase los argumentos necesarios.
    3. Llame a CryptMsgUpdate una vez, pasando el identificador recuperado en el paso b 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.
  2. Compruebe la firma del mensaje descodificado, firmado y obtenga un puntero al CERT_CONTEXT del firmante.

    Esto se puede hacer llamando a CryptMsgGetAndVerifySigner, pasando el identificador de mensaje recuperado en el paso 1c como parámetro hCryptMsg . Si la llamada de función devuelve TRUE, se ha comprobado la firma y se devuelve un puntero al PCCERT_CONTEXT del firmante en el parámetro ppSigner .

  3. Confirme que el firmante es un origen de confianza de la siguiente manera:

    1. Abra el almacén de certificados que contiene el CTL adecuado.
    2. Obtenga un puntero al CTL_CONTEXT llamando a CertFindCTLInStore.
    3. Para confirmar que el firmante es un origen de confianza, llame a CertFindSubjectInCTL y pase el puntero recuperado en el paso anterior en el parámetro pCtlContext , CTL_CERT_SUBJECT_TYPE en el parámetro dwSubjectType y el puntero al CERT_CONTEXT recuperado en el paso 2 del parámetro pvSubject . Si la llamada de función devuelve TRUE, el CERT_CONTEXT pasado a la función es un origen de confianza en el CTL.