问题标签 [xml-signature]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2938 浏览

xml - 如何使用 Windows Crypto API 为 XMLDSIG 创建 rsa-sha1 签名

假设 XMLDSig 文档 SignedInfo 如下:

上述 SignedInfo 节点的 SHA1 为

要在 Windows CryptoAPI 中生成 SignatureValue,我运行以下命令:

我能够生成一个签名并使用我不确定我是否按照 XMLDSig 规范执行的 CryptoAPI 对其进行验证。

为了进一步验证我是否做得对,我尝试了在线验证器:http ://www.aleksey.com/xmlsec/xmldsig-verifier.html

我替换了以下 XMLDSig 文档的模数和 SignatureValue,并使用在线验证器对其进行了验证:

显然它失败了。

我想我没有正确生成签名值。

0 投票
1 回答
2954 浏览

.net - SignedXml.CheckSignature 引发异常:值不能为空。参数名称:名称

我正在编写一段代码来验证 X509 证书中 Xml 中的签名,并在主题行中收到异常消息。

我的示例代码

我已成功从我的证书存储加载证书(代码的第一行)。我已经成功填充了signedXml(代码的第二行)。

当我调用signedXml.CheckSignature(cert, True)函数时抛出异常。该消息非常不清楚:

值不能为空。
参数名称:名称

任何线索这里有什么问题?

调用堆栈:

System.ArgumentNullException 未由用户代码处理
Message=Value 不能为空。参数名称:名称 ParamName=name
Source=mscorlib StackTrace:在 System.Security.Cryptography.CryptoConfig.CreateFromName(String name, Object[] args) 在 System.Security.Cryptography.Xml.SignedXml.CheckSignedInfo(AsymmetricAlgorithm key) 在系统。 D:\Projects\MyProject\Test 中 MyNamespace.MyClass.MyFunction() 中 System.Security.Cryptography.Xml.SignedXml.CheckSignature(X509Certificate2 证书,布尔 verifySignatureOnly) 中的 Security.Cryptography.Xml.SignedXml.CheckSignature(AsymmetricAlgorithm key)。 VB:第 117 行

更新1 我打开.Net Framework源码调试,SignedXml.CheckSignedInfo方法抛出异常,有一行代码

SignatureDescription signatureDescription = CryptoConfig.CreateFromName(SignatureMethod) as SignatureDescription;

很明显 SignatureMethod 是一个包装

m_signature.SignedInfo.SignatureMethod一个空值。我从 MSDN 再次阅读了在http://msdn.microsoft.com/en-us/library/system.security.cryptography.xml.signedxml.signaturemethod.aspx上对 SignatureMethod 的解释,并检查了带有签名部分的 Xml 代码粘贴在下面. 我有一个SignatureMethod包含值的标签,但为什么 SignedXml 无法处理它?

0 投票
1 回答
384 浏览

xml-signature - XML签名说明

几天以来,我正在阅读有关 xml 签名的内容,因为它是我的一项任务的一部分。到目前为止,我的理解是我们可以用它签署任何类型的数据。我已经经历了所有的元素。当我看着它们时,它们似乎都很容易理解。但是当我深入阅读它们时,我发现很难理解其中的大多数。我的意思是一些元素,如Signaturevalue、CanonicalizationMethod、transform 等。所以我的问题是是否有任何材料可以详细解释 xmlsignature?其中还提供了一些基本示例,以更好地理解概念。

0 投票
1 回答
2620 浏览

xml - 什么是 xml 签名中的规范化?

xml 签名中使用的规范化标签是什么。它存在于<signed info>元素中。我在网上浏览了各种文件。但是所有这些都太抽象了,我无法理解。如果有人可以解释规范化标签中应该包含什么以及应该如何使用它会很有帮助?我对元素
也有疑问。<signature value>它包含什么签名?

0 投票
0 回答
125 浏览

xml-signature - xmlSignature 还是普通的数字签名?

哪个更好?使用 xml 数字签名 (xmlDsig) 或普通数字签名对 SAML 文档进行签名。我想知道性能方面哪个更好,为什么更好?据我阅读,我觉得两者都可以使用。没什么大的区别。我在签名上有什么遗漏的吗?

0 投票
1 回答
1681 浏览

java - xml 签名中的引用验证

我在我的程序中使用 ml 签名来检查消息是否已被篡改并检查它是否已由有效人员签名。第二部分我明白了。问题在于第一部分——即检查参考有效性。这是我正在使用的代码。xmldoc是一个包含 xml 封装签名的文档对象。

如您所见,valContext 仅包含签名元素和公钥(验证签名时需要此密钥)。但在下面的代码中,您可以看到只有通过使用valContext对象,才能验证引用。这怎么可能?要验证引用,它需要访问实际的 xmldoc,从中提取引用的元素<reference>,然后找到其值的哈希/摘要并将它们与<digest value>.
但不知何故,下面的代码有效。我不知道怎么办?有人请解释一下。

0 投票
1 回答
694 浏览

java - xml签名中的签名方法

在 xml 签名中的签名方法中,您已经指定了这种格式:SignatureMethod.RSA_SHA1但是当使用普通签名时,您只需执行

那么这两者有什么区别呢?

0 投票
2 回答
736 浏览

java - 当使用 xml 签名时,整个 xml 文档是混乱的

我正在使用 xml 签名来验证 saml 请求:

签名前的初始 saml 请求:

签署 xml 文档然后将其转换为字符串(使用转换器)后,我得到以下信息:


如您所见,初始字符串中的第一个属性是 ID 但签名后的第一个属性是 AssertionConsumerServiceURL。为什么会变得杂乱无章?此外,在已签署的文件中参见#here(倒数第三行),有一个换行符。为什么会有换行符。我认为加密值不包含换行符。我不明白发生了什么。请帮忙。

0 投票
2 回答
311 浏览

java - 由于 xml 签名导致的错误

我有一个 xml 文档。当我使用 java 库打印文档时,我得到了正确的 xml 输出。然后我使用 xmlsignatures 对 xml 文档进行签名。签名后,我尝试再次打印文档。但是这一次文档的打印方式是所有元素都是 JUMBLED。所以我想知道xml签名是否修改了xml文档?如果是,那为什么?

0 投票
3 回答
1767 浏览

java - xmlSignature java中的XSLT转换?

我有一个 XML 文档。我正在使用 xmlsignature 对文档的一部分进行签名。在找到摘要之前,我想应用 XSLT 转换。

根据我阅读的内容,XSLT 将XML 文档转换为另一种格式(也可以是 XML)。现在我很困惑,
转换后的新文件在哪里可用?

如果我想将它显示给用户,如何从这个新创建的文档中检索值?

我的 XML 文档

转换代码

根据 xpath 转换,只要用户元素的值发生更改,就不应该验证 xmlsignature。如果 person 元素的值发生变化,则应验证 Signature。但是当我更改 person 元素的值时,签名不会被验证。为什么?