问题标签 [signedxml]

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 投票
1 回答
2681 浏览

c# - 如何更改 RSACryptoServiceProvider 的 CSP 参数

我正在使用 SignedXML 类进行 rsa-sha256 xml 签名。但问题是我需要更改 CSP 以支持 sha256。

这就是我选择证书的方式,

这就是我尝试更改 CSP 参数的方式。

问题是我正在使用 USB 设备令牌,我怀疑私钥不可导出。在导出它时抛出一个错误'密钥在指定状态下无效。'。

任何人都可以帮助如何做到这一点?

0 投票
3 回答
12277 浏览

c# - 使用 RSA-SHA256 签名方法问题签署 Xml 文档

我正在使用以下方法对 Xml 文档进行签名:

尝试使用错误消息Invalid algorithm specified计算签名时引发 System.Security.Cryptography.CryptographicException 类型的异常。有任何想法吗?

机器:Windows Server 2008 R2

.Net 框架:4.0。

IDE:Visual Studio 2010。

0 投票
1 回答
672 浏览

x509certificate - 如何使用 Web 应用程序的智能卡中包含的私钥对 XML 进行签名?

我正在寻找一种解决方案,使用包含在 Web 应用程序的 USB 令牌(智能卡等)中的不可导出的私钥(这需要用户输入通知密码/秘密密码以使用它创建哈希)来签署 XML。我已经制作了 ac# 类库来做到这一点,但显然代码是在服务器端执行的,所以我无法通过互联网访问客户端的 usbtoken/智能卡,除非它插入服务器 pc(所以我的解决方案可能是安装在我客户的本地网络中,并且 usbtoken 插入服务器的 usb。它今天的工作方式就是这样,但我想更改它以便客户在他的机器上使用它的令牌)

我已经使用 SignedXml、X509Certificates 和其他类创建了一个代码来实现这一点,但我正在寻找 silverlight 类库中的等价物来封装所有这些东西并在客户端执行它,但不幸的是 SignedXml 不能在 Silverlight 中使用(不存在..)。

我已经成功地创建了一个 ActiveX,但我的解决方案现在只能在 Internet Explorer/Windows 中运行,并且由于我的业务逻辑,它不是很容易维护。

任何人都可以帮助我吗?任何建议都非常受欢迎。

如果我可以将我的 activex 解决方案移植到 silverlight,或者如果可以使用可以在其他浏览器/操作系统中执行的其他 MS 技术来做到这一点。

抱歉英语不好,不是母语人士。谢谢你。

0 投票
1 回答
1627 浏览

c# - 在 C# .NET 中对部分文档进行 Xml 签名验证失败

给定一个 XML 文档,其中根节点使用 RSA+SHA2 签名进行签名,其中包含一个使用 RSA+SHA2 再次单独签名的 XML 元素,我发现:

  • 根节点上的签名无效
  • 子节点上的单独签名无效

将签名的子节点复制到新的 XML 文件中时,还将 xmlns: 声明移动到该节点以维护命名空间范围,我发现

  • 签名有效

XML 结构类似于。在现实生活中,XML 是一个签名的 SAML2 ArtifactResolve 元素,其中包含一个签名的 SAML2 断言。

用于验证所有这些的代码非常简单,即 SignedXml 类。

我的主要问题是能够通过将节点复制到新的 XML 文件中来验证节点的奇怪行为。如果我通过 XPath 查询该节点并将其加载到 SignedXml 中,它将失败。

现在,如果 SignedXml 上有大量设置我可以搞砸,嘿,但没有那么多。加载 Xml,加载签名,验证。

任何人都知道为什么这种行为是这样的?已经尝试在 XmlDocument 上使用 PreserveWhitespace=true 但这没有帮助。

非常感激!

沃特

0 投票
8 回答
9930 浏览

c# - SignedXml.CheckSignature 在 .NET 4 中失败,但在 .NET 3.5、3 或 2 中有效

我收到了来自第 3 方网络服务的响应。我用该响应加载了一个 XmlDocument。

现在我想验证响应是否使用证书签名。我有一个VerifyXmlDoc(XmlDocument xmlDoc)我在msdn上找到的方法。

我知道消息是正确的。

如果我将项目的目标框架设置为 .NET 3.5 或 .NET 3 或 .NET 2,效果会很好。结果是真的。但是如果我将目标框架更改为 .NET 4 结果是错误的。(而且我必须使用 .NET 4)

关于如何解决这个问题的任何想法?

0 投票
2 回答
1270 浏览

php - Verifying windows 8 purchases (receipts) using PHP

I need to verify in-app purchases made in Windows 8 applications server-side using PHP. MSDN's documentation page has an example only in C#. Right now I've spent a whole day by searching for a way to do it in PHP. No success. All over the internet there are only .NET examples on this topic.

I've found some partial information about signed XML and x509, some libraries (xmlseclibs - useless, uses openssl_* functions which do not support sha256; phpseclib - looks promising but their documentation and examples are poor with no help).

Is it possible to do it somehow without learning everything about signed XML, RSA and x509? Right now I've read almost everything but everywhere is info only about encoding. Nothing about verifying.

0 投票
1 回答
9312 浏览

c# - .Net:SignedXml - 使用转换算法 exc-c14n 签署 xml

我正在尝试使用SignedXml 类在 C# 中签名 Xml(实际上是 SOAP xml) ,签名阶段成功通过,但是当我尝试验证签名时它告诉我它无效。我对 MSDN 中的示例所做的唯一更改是使用XmlDsigExcC14NTransform而不是转换 XmlDsigEnvelopedSignatureTransform。如果我使用 XmlDsigEnvelopedSignatureTransform 我会得到一个有效的签名。

这是我的签名代码:

上面的代码会给我一个有效的签名,但如果我使用

代替

我会得到一个无效的签名。

这是我的验证码:

谁能告诉我如何用变换算法签名http://www.w3.org/2001/10/xml-exc-c14n#

提前致谢。

0 投票
0 回答
901 浏览

c#-4.0 - SignedXml.CheckSignature(key) 总是抛出错误

我是 C#.NET 编程的新手。在在线参考的帮助下,我编写了以下代码来验证 SAML 断言的签名(由服务器 API 生成)。

我的环境:
VS 2010 Ver4.0 Win XP SP3

SAML 断言令牌看起来像这样:*


我验证签名的代码片段:


在运行代码时,它会引发错误“无法为提供的签名算法创建签名描述”。在线:bool 验证 = sig.CheckSignature(rsaKey);

在调试时,签名被正确分配给 SigElm。注意:从“X509Certificate.cer”检索到的证书与签名元素中显示的证书完全相同(在 SAML 断言中)。所以它看起来像一个有效且匹配的证书。SAML 断言令牌中的证书使用私钥签名;所以我使用“X509Certificate.cer”(最终用户可用的证书)中的公钥来验证签名(在 SAML 断言中)。

我还尝试使用以下方法验证签名: bool verify = sig.CheckSignature(X509Cert, true); 但它会引发同样的错误。

我尝试了几种方法(针对此错误使用在线参考),但无法找出问题所在。

请给个建议...

0 投票
1 回答
1253 浏览

mono - System.Security.Cryptography.Xml 在可移植类库中?

我正在使用使用签名 XML 文件作为许可证的许可工具 (Rhino.Licensing)。

由于System.Security.Cryptography.Xml命名空间在各种平台(如 MonoTouch 和 Mono for Android 等)上不可用,因此无法验证许可证及其签名。

有没有办法在可移植类库平台上读取和验证签名的 XML 文件?

我目前在 .NET、Mono、MonoTouch、Mono for Android、WinRT、Silverlight、MonoGame 上需要此功能

0 投票
4 回答
10012 浏览

c# - SSO SAML 的签名 XML 签名验证(使用 sha256)

在 Windows 2003 服务器上使用 VS 2008 和 .Net Framework 3.5。

为了安全,我们已经使用 SAML 实施了 SSO。我们在服务提供商端工作,我们验证从客户端系统生成的签名 XML SAML Assertuib 令牌。到目前为止,我们遇到的任何签名文档都使用签名算法“rsa-sha1”,但现在我们有新客户发送签名算法为“rsa-sha256”的文件,问题就开始了。

现在,当我为这个新客户尝试相同的代码(使用签名算法 rsa-sha256h)时 - 这不起作用,我收到错误“无法为提供的签名算法创建签名描述”。

最近2-3天浏览了很多博客和文章,我才知道SignedXml不支持sha256。美好的。但是接下来呢。在某处提到使用 WIF,我也检查并尝试了这个

我也在尝试使用 RSAPKCS1SignatureDeformatter 的 VerifySignature 方法。但不确定要传递的两个参数是什么。