1
다음 SignedXml 코드가 있습니다. 이 코드는 .NET 1.1에서 완벽하게 작동하지만 .NET 3.5에서이 메서드를 실행하면 signedXml.CheckSignature()
메서드가 false를 계속 반환합니다. SignedXml
클래스와 관련하여 .Net 1.1과 3.5 사이에서 변경된 사항이 있습니까? 나는 여기에 puzzeled 해요! 너희들이 여기서 나를 도울 수 있니?SignedXml.CheckSignature는 .NET 1.1에서는 작동하지만 .NET 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;
}