- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要验证签名的 xml。
在 c# 中运行时,会出现下一个错误:“遇到未知转换。”。但是在java中运行它正确地验证了xml。
看起来 .net 框架无法识别 xmldsig-filter2。在 c#/.net 中可以对这个问题做些什么吗?
<dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<dsig:SignedInfo>
<dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<dsig:Reference Id="reference-data-0" URI="">
<dsig:Transforms>
<dsig:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
<xf2:XPath Filter="intersect" xmlns:xf2="http://www.w3.org/2002/06/xmldsig-filter2">here()/ancestor::SomeNS:SomeElement[1]</xf2:XPath>
</dsig:Transform>
<dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<dsig:DigestValue>...</dsig:DigestValue>
</dsig:Reference>
</dsig:SignedInfo>
<dsig:SignatureValue>
...
</dsig:SignatureValue>
</dsig:Signature>
最佳答案
您可以从 Transform
派生自己分类并实现算法并使用 CryptoConfig.AddAlgorithm
注册转换.但是 .NET 不允许转换对于规范化是安全的,因此您必须在 registry 中允许它。在 HKLM:\\SOFTWARE\Microsoft\.NETFramework\Security\SafeTransformMethods
下或使用反射来修改保存列表的私有(private)字段。
public class XmlDigSigFilter2Transform : Transform {
public static void Register() {
var self = CryptoConfig.CreateFromName(Url);
if (self == null) {
CryptoConfig.AddAlgorithm(typeof(XmlDigSigFilter2Transform), Url);
}
var signedXmlType = typeof(SignedXml);
var knownCanonicalizationMethodsField =
signedXmlType.GetField(
"s_knownCanonicalizationMethods",
BindingFlags.NonPublic | BindingFlags.Static);
if (knownCanonicalizationMethodsField == null) {
return;
}
var knownCanonicalizationMethodsValue =
knownCanonicalizationMethodsField.GetValue(new SignedXml());
if (!(knownCanonicalizationMethodsValue is IList<string> list)) {
return;
}
if (!list.Contains(Url)) {
list.Add(Url);
}
}
...
}
关于c# - SignedXml 报告 "Unknown transform has been encountered.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46664340/
我一直在努力使 .NET 中的 XMLDSIG 支持正常运行,更具体地说是 SignedXml 类。我正在实现第三方服务,他们最近才开始要求所有消息都必须进行数字签名... 我的问题是,我似乎无法生成
当我签署包含 namespace 前缀的 XML 文档时出现问题和命名空间引用,然后对其进行验证。验证总是失败(返回 false)在这种情况下。当我删除命名空间前缀和来自 XML 的 namespac
我想根据机器存储中的证书验证 SignedXml 中的签名。此代码用于验证签名: internal bool VerifySignature(XmlDocument xml) { var si
这里想请教一下SignedXml.CheckSignature的原理 我们知道,如果我们调用 verifySignatureOnly = false 的函数,它可以验证证书。 [ComVisibleA
我需要你的帮助。 因此,我在 java 上生成了带有 Xml 签名的文档,当我尝试在 C# 上进行验证时,我得到了 false。然后我在 C# 上生成了带有签名的相同文档,就可以了。返回true。 这
我正在努力让这个加密解密正常工作。我正在使用 this Wolfwyrd 和 this 提供的类(class)说明。 代码如下: RSACryptoServiceProvider rsaKey = E
在 C++ 中是否有等同于 SignedXML visual 的类(我的意思是不依赖于 .net 框架)? 最佳答案 您可以使用 libxml 从 Windows C++ 应用程序对 XML 进行数字
我连接到一个外部 Web 服务,该服务在 2018 年 5 月中旬之前一直完美无缺地运行。突然间,我开始收到带有消息“格式错误的 XML 签名”的 CryptographicException。我的调
我已经查看了此处关于此问题的其他帖子,但似乎都没有解决我的情况。 上周我一直在尝试验证 SAML 断言,我有 2 个客户向我发送了 SAML,但我无法验证它。 主要过程是我们得到一个 base64 编
我正在尝试使用 SHA256 对 XML 文档进行数字签名。 我正在尝试使用 Security.Cryptography.dll为此。 这是我的代码- CryptoConfig.AddAlgorith
我需要验证签名的 xml。 在 c# 中运行时,会出现下一个错误:“遇到未知转换。”。但是在java中运行它正确地验证了xml。 看起来 .net 框架无法识别 xmldsig-filter2。在 c
我正在为使用 XAdES 的消息签名而苦恼。我已经搜索了将我带到下面代码的解决方案。但是我尝试连接的服务告诉我签名错误。我做错了什么? public static class Signature
当 SignedXml.CheckSignature(AsymmetricAlgorithm key)返回 true (或 false ),这到底代表什么? 这是否意味着 Signature已验证;或
我知道如何使用 SignedXml 签署 XML 文档 ( https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptogra
我正在尝试遵循以下帖子中的解决方案,以便能够使用 CNG 私钥作为我的 SignedXml 的签名 key 。 "Invalid provider type specified" Cryptograp
当存在命名空间前缀时,无法通过 Id 属性对元素进行签名: void Main() { var doc = new XmlDocument(); doc.LoadXml("Zebra"
我有一个使用 .NET 3.5 Framework 构建的 Windows 窗体应用程序,该应用程序自行托管 WCF 服务。该服务和应用程序可以自行正常运行。 考虑到是否可以在 app.config
我正在编写一段代码来验证 X509 证书中的 Xml 签名,并在主题行中收到异常消息。 我的示例代码 Dim cert As X509Certificate2 = GetCertifi
我正在尝试使用存储在 HSM 中的证书来实现 XML 签名的一些演示。 我从此链接中发现了一些有趣的示例: Sign XML Document with X509Certificate2并将其修改为使
我正在尝试使用 SignedXml class 在 C# 中签署 Xml(实际上是 SOAP xml) ,签名阶段成功通过,但当我尝试验证签名时,它告诉我它无效。我对 MSDN 中的示例所做的唯一更改
我是一名优秀的程序员,十分优秀!