none
Erreur de signature avec signedXML.ComputeSignature() RRS feed

  • Question

  • La code de signature suivant retourne une erreur sur .NET 2.0 selon le certificat utilisé:


    SignedXml signedXml = new SignedXml();
    signedXml.SigningKey = cert.PrivateKey; // le certificat X509Certificate2 utilisé
    Reference reference = new Reference();
    reference.Uri = URIString; // la référence au fichier XML à signer
    signedXml.AddReference(reference);
    KeyInfo keyInfo = new KeyInfo();
    KeyInfoX509Data kdata = new KeyInfoX509Data(cert);
    keyInfo.AddClause(kdata);
    signedXml.KeyInfo = keyInfo;
    signedXml.ComputeSignature();

    L'erreur retournée est « Hash non valide pour l’utilisation dans cet état »
    La trace de l'exception est:
     System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr)
     à System.Security.Cryptography.Utils._SignValue(SafeKeyHandle hKey, Int32 keyNumber, Int32 calgKey, Int32 calgHash, Byte[] hash, Int32 dwFlags)
     à System.Security.Cryptography.RSACryptoServiceProvider.SignHash(Byte[] rgbHash, String str)
     à System.Security.Cryptography.RSAPKCS1SignatureFormatter.CreateSignature(Byte[] rgbHash)
     à System.Security.Cryptography.AsymmetricSignatureFormatter.CreateSignature(HashAlgorithm hash)
     à System.Security.Cryptography.Xml.SignedXml.ComputeSignature()
     à FileSignatureLibrary.FileSignature.SignerXMLRessourceDetachee(String URIString, String XmlSigFileName, X509Certificate2 cert, String& msgErreur)

    L'erreur survient avec un certificat ChamberSign sur clé USB Cyberflex e-gate 32K.
    Si la clé n'est pas insérée lors de l'appel de la fonction, une boite de dialogue reste ouverte jusqu'à insertion de la clé, ce qui tend à démontrer que c'est bien le certificat de la clé qui est accédé.
    L'utilisation d'autres fonctions comme RSACryptoServiceProvider.SignData() provoquent la même erreur.

     

    Ce code fonctionne avec un certificat Crédit Agricole ou un certificat maison fabriqué avec OpenSSL et chargé sur une carte à puce.


    mercredi 21 novembre 2007 17:16