Verifica dei messaggi firmati tramite elenchi di scopi consentiti

Uno dei vantaggi dell'uso degli elenchi di attendibilità certificati (CCL) è che le applicazioni possono essere progettate che possono verificare automaticamente i messaggi firmati con certificati attendibili senza disturbare l'utente con le finestre di dialogo. Fornisce inoltre a un amministratore di rete le origini di controllo da considerare attendibili.

È possibile utilizzare la procedura seguente per verificare la firma di un messaggio firmato utilizzando un elenco di scopi consentiti.

Per verificare un messaggio firmato utilizzando una durata (CTL)

  1. Decodificare il messaggio come segue:

    1. Ottenere un puntatore al messaggio ricevuto ( BLOB codificato).
    2. Chiamare CryptMsgOpenToDecode, passando gli argomenti necessari.
    3. Chiamare CryptMsgUpdate una volta, passando l'handle recuperato nel passaggio b e un puntatore ai dati da decodificare. In questo modo le azioni appropriate devono essere eseguite sul messaggio, a seconda del tipo di messaggio.
  2. Verificare la firma del messaggio decodificato, firmato e ottenere un puntatore al CERT_CONTEXT del firmatario.

    A tale scopo, chiamare CryptMsgGetAndVerifySigner, passando l'handle del messaggio recuperato nel passaggio 1c come parametro hCryptMsg . Se la chiamata di funzione restituisce TRUE, la firma è stata verificata e nel parametro ppSigner viene restituito un puntatore al PCCERT_CONTEXT del firmatario.

  3. Verificare che il firmatario sia un'origine attendibile come indicato di seguito:

    1. Aprire l'archivio certificati contenente il CTL appropriato.
    2. Ottenere un puntatore al CTL_CONTEXT chiamando CertFindCTLInStore.
    3. Per verificare che il firmatario sia un'origine attendibile, chiamare CertFindSubjectInCTL, passando il puntatore recuperato nel passaggio precedente nel parametro pCtlContext , CTL_CERT_SUBJECT_TYPE nel parametro dwSubjectType e il puntatore al CERT_CONTEXT recuperato nel passaggio 2 nel parametro pvSubject . Se la chiamata di funzione restituisce TRUE, il CERT_CONTEXT passato alla funzione è un'origine attendibile nel CTL.