Verifica di un messaggio firmato
Questi passaggi verificano la firma dei dati firmati. La figura seguente illustra le singole attività che devono essere eseguite, come illustrato nell'elenco che lo segue.
Per verificare la firma di un messaggio firmato
Ottenere un puntatore al messaggio firmato.
Aprire un archivio certificati.
Usando l'ID firmatario contenuto nel messaggio, ottenere il certificato del mittente e ottenere un handle per la chiave pubblica.
In alternativa ai passaggi 2 e 3, è possibile usare il certificato contenuto nel messaggio per recuperare la chiave pubblica del firmatario.
Usando la chiave pubblica del firmatario, decrittografare la firma digitale, generando il digest originale dei dati nel messaggio.
Usando l'algoritmo hash contenuto nel messaggio, eseguire l'hash dei dati contenuti nel messaggio, ottenendo un nuovo digest.
Confrontare il digest recuperato dal messaggio con il nuovo digest appena creato.
Se i due digest corrispondono, la firma viene verificata. Ciò significa che la chiave privata usata per firmare i dati corrisponde alla chiave pubblica appena usata per decrittografare la firma e che i dati non sono stati modificati dopo la firma dei dati.
Se i due digest non corrispondono, la firma non viene verificata e le chiavi private/pubbliche non corrispondono oppure i dati sono stati modificati dopo la firma o entrambi.
Una singola funzione , CryptVerifyMessageSignature, può essere usata per verificare una firma, come illustrato nella procedura seguente.
Per verificare un messaggio firmato
- Ottenere un puntatore al messaggio firmato.
- Ottiene le dimensioni del messaggio firmato.
- Ottenere un handle in un provider di crittografia.
- Inizializzare la struttura CRYPT_VERIFY_MESSAGE_PARA .
- Chiamare CryptVerifyMessageSignature per verificare la firma.
Il codice che implementa questa procedura è incluso nel programma C di esempio: firma di un messaggio e verifica di una firma del messaggio.