Nous avons développé une petite méthode qui extrait une clé cryptographique à partir d'un document XML signé, puis vérifie la signature à l'aide de la méthode SignedXml.CheckSignature.Cryptographic Licensing Module ne fonctionne pas à partir du site Web?
Lorsqu'elle est exécutée à partir d'une application de ligne de commande, la clé valide correctement. Cependant, dès que je l'appelle à partir d'une application Web, il cesse de fonctionner. Tout le monde sait ce qui pourrait arriver ?:
// Verify the signature of an XML file against an asymmetric
// algorithm and return the result.XmlDocument Doc, RSA Key
public static Boolean VerifyLicenceFile(string xmlLicFilePathArg)
{
bool isVerified = false;
try
{
CspParameters cspParams = new CspParameters();
cspParams.KeyContainerName = containerName;
RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider(cspParams);
// Create a new XML document.
XmlDocument xmlDoc = new XmlDocument();
// Load an XML file into the XmlDocument object.
xmlDoc.PreserveWhitespace = true;
xmlDoc.Load(xmlLicFilePathArg);
// Check arguments.
if (xmlDoc == null)
throw new ArgumentException("Doc");
if (rsaKey == null)
throw new ArgumentException("Key");
// Create a new SignedXml object and pass it
// the XML document class.
SignedXml signedXml = new SignedXml(xmlDoc);
// Find the "Signature" node and create a new
// XmlNodeList object.
XmlNodeList nodeList = xmlDoc.GetElementsByTagName("Signature");
// Throw an exception if no signature was found.
if (nodeList.Count <= 0)
{
throw new CryptographicException("Verification failed: No Signature was found in the document.");
}
// This example only supports one signature for
// the entire XML document. Throw an exception
// if more than one signature was found.
if (nodeList.Count >= 2)
{
throw new CryptographicException("Verification failed: More that one signature was found for the document.");
}
// Load the first <signature> node.
signedXml.LoadXml((XmlElement)nodeList[0]);
// Check the signature and return the result.
isVerified = signedXml.CheckSignature(rsaKey);
}
catch (Exception ex)
{
}
return isVerified;
}
OK, quelle est l'erreur? Qu'est-ce que 'arrête de travailler' veut dire? D'où viennent les pathArgs? –
Salut désolé, j'aurais dû être plus explicite. 'Arrête de travailler' signifie que la valeur isVerified est juste fausse. Il n'y a pas d'erreur et je ne vois pas de différence dans ce qui se passe. Je ne peux pas réellement entrer dans l'une des classes C# (évidemment) donc pas sûr. Le pathArg est le chemin vers un fichier de licence qui existe définitivement et qui fonctionne définitivement lorsqu'il est appelé depuis une ligne de commande .... – Exitos
Les applications Consaole et ASP s'exécutent-elles sur le même PC? –