Vérification d’un message signé
Ces étapes vérifient la signature des données signées. L’illustration suivante illustre les tâches individuelles qui doivent être effectuées, comme indiqué dans la liste qui la suit.
Pour vérifier la signature d’un message signé
Obtenez un pointeur vers le message signé.
Ouvrez un magasin de certificats.
À l’aide de l’ID de signataire contenu dans le message, obtenez le certificat de l’expéditeur et obtenez un handle pour sa clé publique.
En guise d’alternative aux étapes 2 et 3, vous pouvez utiliser le certificat contenu dans le message pour récupérer la clé publique du signataire.
À l’aide de la clé publique du signataire, déchiffrez la signature numérique, en produisant le condensé d’origine des données dans le message.
À l’aide de l’algorithme de hachage contenu dans le message, hachez les données contenues dans le message, ce qui génère un nouveau résumé.
Comparez la synthèse récupérée à partir du message avec la nouvelle synthèse que vous venez de créer.
Si les deux synthèses correspondent, la signature est vérifiée. Cela signifie que la clé privée utilisée pour signer les données correspond à la clé publique utilisée pour déchiffrer la signature et que les données n’ont pas changé depuis la signature.
Si les deux synthèses ne correspondent pas, la signature n’est pas vérifiée et les clés privées/publiques ne correspondent pas, ou les données ont été modifiées depuis la signature des données, ou les deux.
Une seule fonction, CryptVerifyMessageSignature, peut être utilisée pour vérifier une signature, comme indiqué dans la procédure suivante.
Pour vérifier un message signé
- Obtenez un pointeur vers le message signé.
- Obtient la taille du message signé.
- Obtenir un handle sur un fournisseur de chiffrement.
- Initialisez la structure CRYPT_VERIFY_MESSAGE_PARA .
- Appelez CryptVerifyMessageSignature pour vérifier la signature.
Le code qui implémente cette procédure est inclus dans l’exemple de programme C : signature d’un message et vérification d’une signature de message.