De vérifier la signature de certificat x509

J'ai:

  1. certificat x509 (Base64);
  2. Chaîne de données;
  3. Signature de la chaîne de données (Base64).

Est-il possible de vérifier la signature?

Mon code:

  bool valid = false;

  var signature = Convert.FromBase64String(base64Signature);
  var data = Encoding.UTF8.GetBytes(stringData);

  var x509 = new X509Certificate2(Convert.FromBase64String(certificate));
  var dsa = x509.PublicKey.Key as DSACryptoServiceProvider;
  if (dsa!=null)
    valid = dsa.VerifySignature(data, signature);
  else {
    var rsa = x509.PublicKey.Key as RSACryptoServiceProvider;
    if (rsa!=null)
      valid = rsa.VerifyHash(data, ???, signature);
  }

Je ne sais pas ce que je dois utiliser à la place de ???. Il est possible d'obtenir de l'algorithme de hachage de certificat?

Pouvez-vous préciser si vous souhaitez vérifier la signature du certificat (faite par son émetteur) ou de la signature de certaines données, fait avec la clé privée correspondant au certificat?
Je veux vérifier signatue de certaines données (stringData).

OriginalL'auteur Marat Faskhiev | 2010-07-16