Partager via


Vérification de signatures

Afin de vérifier que les données sont signées par une partie particulière, vous devez posséder les informations suivantes :

  • La clé publique de la partie qui a signé les données.

  • La signature numérique.

  • Les données qui ont été signées.

  • L'algorithme de hachage utilisé par la partie qui a signé.

Pour vérifier une signature signée par la classe RSAPKCS1SignatureFormatter, utilisez la classe RSAPKCS1SignatureDeformatter. La classe RSAPKCS1SignatureDeformatter doit être fournie par la clé publique de la partie qui a signé. Vous aurez besoin des valeurs du modulo et de l'exposant pour spécifier la clé publique. (La partie qui a généré la paire de clés publique/privée doit fournir ces valeurs.) Créez dans un premier temps un objet RSACryptoServiceProvider pour stocker la clé publique qui vérifie la signature, puis initialisez une structure RSAParameters aux valeurs de l'exposant et du modulo qui spécifient la clé publique.

Le code suivant montre la création d'une structure RSAParameters. La valeur d'un tableau d'octets nommé ModulusData est affectée à la propriété Modulus et la valeur d'un tableau d'octets nommé ExponentData est affectée à la propriété Exponent.

Dim RSAKeyInfo As RSAParameters
RSAKeyInfo.Modulus = ModulusData
RSAKeyInfo.Exponent = ExponentData
RSAParameters RSAKeyInfo;
RSAKeyInfo.Modulus = ModulusData;
RSAKeyInfo.Exponent = ExponentData;

Après avoir créé l'objet RSAParameters, vous pouvez initialiser une nouvelle instance de la classe RSACryptoServiceProvider aux valeurs spécifiées dans RSAParameters. La classe RSACryptoServiceProvider est, à son tour, passée au constructeur d'un RSAPKCS1SignatureDeformatter pour transférer la clé.

L'exemple suivant illustre ce processus. Dans cet exemple, HashValue et SignedHashValue sont des tableaux d'octets fournis par une partie distante. La partie distante a signé HashValue à l'aide de l'algorithme SHA1, produisant la signature numérique SignedHashValue. La méthode RSAPKCS1SignatureDeformatter.VerifySignature vérifie que la signature numérique est valide et a été utilisée pour signer HashValue.

Dim RSA As New RSACryptoServiceProvider()
RSA.ImportParameters(RSAKeyInfo)
Dim RSADeformatter As New RSAPKCS1SignatureDeformatter(RSA)
RSADeformatter.SetHashAlgorithm("SHA1")
If RSADeformatter.VerifySignature(HashValue, SignedHashValue) Then
   Console.WriteLine("The signature is valid.")
Else
   Console.WriteLine("The signture is not valid.")
End If
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSA.ImportParameters(RSAKeyInfo);
RSAPKCS1SignatureDeformatter RSADeformatter = new RSAPKCS1SignatureDeformatter(RSA);
RSADeformatter.SetHashAlgorithm("SHA1");
if(RSADeformatter.VerifySignature(HashValue, SignedHashValue))
{
   Console.WriteLine("The signature is valid.");
}
else
{
   Console.WriteLine("The signature is not valid.");
}

Ce fragment de code affichera « The signature is valid si la signature est valide et « The signature is not valid dans le cas contraire.

Voir aussi

Concepts

Génération de signatures
Signatures de chiffrement

Autres ressources

Tâches de chiffrement
Services de chiffrement