【问题标题】:SignedXml.CheckSignature works in .NET 1.1, but fails in .NET 3.5SignedXml.CheckSignature 在 .NET 1.1 中有效,但在 .NET 3.5 中失败
【发布时间】: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


    【解决方案1】:

    我发现signedXml.KeyInfo = keyInfo;对我来说是个问题。当我将密钥用作 CheckSignature() 的参数时,它起作用了——我能够在 2.0 应用程序中加载 1.1 签名的 xml。

    只需完全删除 KeyInfo:

      string returnXml = null;
        if (signedXml.CheckSignature(dsaKeyPair))
        {
            XmlElement dataElement = signedXml.GetIdElement(xmlDocument, "LicenseElement");
            returnXml = dataElement.InnerXml;
        }
    

    【讨论】:

      猜你喜欢
      • 2012-11-17
      • 2011-04-04
      • 2012-09-05
      • 2014-07-10
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      • 1970-01-01
      • 2012-03-14
      相关资源
      最近更新 更多