【发布时间】:2010-10-11 00:04:32
【问题描述】:
我有以下 SignedXml 代码。此代码在 .NET 1.1 中完美运行,但当我在 .NET 3.5 中运行此代码时,signedXml.CheckSignature() 方法一直返回 false。
关于SignedXml 类,.Net 1.1 和 3.5 之间有什么变化吗?我很困惑!你们能帮帮我吗?
SignedXml signedXml = new SignedXml();
// Get public key
Assembly assembly = Assembly.LoadFile("MyLib.Application.dll");
Stream keyStream =
assembly.GetManifestResourceStream("MyKey.xml");
StreamReader keyReader = new StreamReader(keyStream, Encoding.UTF8);
string publicKeyXml = keyReader.ReadToEnd();
keyReader.Close();
// Load and set key
DSA dsaKeyPair = DSA.Create();
dsaKeyPair.FromXmlString(publicKeyXml);
KeyInfo keyInfo = new KeyInfo();
keyInfo.AddClause(new DSAKeyValue(dsaKeyPair));
signedXml.KeyInfo = keyInfo;
// Load and set data
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.PreserveWhitespace = true;
xmlDocument.LoadXml(signedXmlData);
XmlNodeList nodeList = xmlDocument.GetElementsByTagName("Signature");
signedXml.LoadXml((XmlElement)nodeList[0]);
string returnXml = null;
if (signedXml.CheckSignature())
{
XmlElement dataElement = signedXml.GetIdElement(xmlDocument, "LicenseElement");
returnXml = dataElement.InnerXml;
}
【问题讨论】:
标签: c# .net encryption