问题标签 [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.
java - 检查 XML 签名 +ECC 算法
我在当前的 Android 项目中达到了一个点,需要使用 .pdf 文件验证 XML 签名(pdf 文件在 XMl 文件中签名),我遇到了一个主要问题。它与绝对不能使用 iaik 库有关:
签名是使用标准 java 库无法处理的 ECC 算法(椭圆曲线)制作的。有谁知道处理这些签名的方法?
所以我正在寻找的是另一个 libarie 或 javax-Problem 的解决方法。
非常感谢您的任何想法!
附加信息:
- 我知道 Apache Santuario,但我不能使用它,因为它包含将添加到 javax 的类,而 DalvikVM 不允许这样做。
- 我知道使用 iaik 很容易做到这一点,但由于许可证问题(+ javax 问题),它不是一个选项。
- 我没有发布任何代码,因为它不能按照我的方式完成,我完全被卡住了,我需要从头开始的新想法:/
java - Bouncycastle XmlSignatureFactory NoSuchAlgorithmException
我在使用 BouncyCastle 检查 XMLSignature 以验证使用 ECDSA 的签名时遇到问题。
以下是相关的代码行:
在最后一行,抛出以下异常:
如果我将线路更改为
我明白了
任何人有任何想法是什么原因造成的?
java - 带有用户输入的 xsd 到 xml 工具
有人可以建议我在 java 中执行以下操作的工具或转换器(1)用户将向 Tool 提供 XSD 文件。(2) 工具将解释 XSD 并显示一个屏幕以允许数据输入(根据 XSD 中定义的类型)。(3) 用户将输入值并单击“生成 XML”。(4) 工具将使用用户输入的值生成符合 XSD 定义的 XML。
java - 不支持的 SignatureMethod 算法,但该算法被 BC-Provider 列为可用服务
为了简短起见,我的问题如下:
我在函数的开头添加了 BC-Provider:
当我列出所有服务时
该列表包含“RIPEMD160WITHECDSA”
在此代码段的最后一行:
我收到一条消息异常:
不支持的 SignatureMethod 算法:http ://www.w3.org/2007/05/xmldsig-more#ecdsa-ripemd160
这意味着什么?RIPEMD160WITHECDSA 与此 URL 指定的算法有什么区别?或者 url 只是没有映射到这个算法名?
这是堆栈跟踪:
java - 从 pkcs12 密钥库 usong 别名获取签名证书的简单方法
谁能告诉我 xades4j 中是否有一种简单的方法可以使用他的别名从 pkcs12 获取签名证书?
c# - 如何使用独立于 SignedXml 类的 XmlDsigEnvelopedSignatureTransform
Internet 上的所有示例都显示了 XmlDsigEnvelopedSignatureTransform 类作为 SignedXml 类的一部分的用法。
我想自己使用这个类。只需给它一个 nodeList 就可以得到没有签名节点的结果。
但是输出 nodeList 仍然包含我想摆脱的 ds:Signature 节点。
这样做的正确方法是什么?非常感谢您的帮助。
x509certificate - 如何使用 Web 应用程序的智能卡中包含的私钥对 XML 进行签名?
我正在寻找一种解决方案,使用包含在 Web 应用程序的 USB 令牌(智能卡等)中的不可导出的私钥(这需要用户输入通知密码/秘密密码以使用它创建哈希)来签署 XML。我已经制作了 ac# 类库来做到这一点,但显然代码是在服务器端执行的,所以我无法通过互联网访问客户端的 usbtoken/智能卡,除非它插入服务器 pc(所以我的解决方案可能是安装在我客户的本地网络中,并且 usbtoken 插入服务器的 usb。它今天的工作方式就是这样,但我想更改它以便客户在他的机器上使用它的令牌)
我已经使用 SignedXml、X509Certificates 和其他类创建了一个代码来实现这一点,但我正在寻找 silverlight 类库中的等价物来封装所有这些东西并在客户端执行它,但不幸的是 SignedXml 不能在 Silverlight 中使用(不存在..)。
我已经成功地创建了一个 ActiveX,但我的解决方案现在只能在 Internet Explorer/Windows 中运行,并且由于我的业务逻辑,它不是很容易维护。
任何人都可以帮助我吗?任何建议都非常受欢迎。
如果我可以将我的 activex 解决方案移植到 silverlight,或者如果可以使用可以在其他浏览器/操作系统中执行的其他 MS 技术来做到这一点。
抱歉英语不好,不是母语人士。谢谢你。
xml - XSLT 转换更改名称空间
我有以下 XML(大部分数据是虚拟的)
我要做的就是将msg
元素的名称(为newmsg
)和默认命名空间更改为http://someaddress.com/m2
. 其他一切都应保持原样。我能得到的最接近的是这个 xslt
我正在使用 xalan 进行测试,这是运行上述程序时得到的输出 xml
这有两个主要问题:
- 命名空间只是从输出中
ds
消失了,我不知道为什么。 - 第二个问题是它从 中删除了
xsi
命名空间,calcnode
并且鉴于calcnode
是用于计算(和验证)签名的节点(位于该部分下方),这样的更改将使我无法理解签名的验证。
我已经尝试了几次不同的 xslt 迭代,但没有太多结果。任何人都可以对这种情况有所了解吗?
java - 如何仅签署 XML 的特定部分
我正在尝试通过仅对部分 xml 进行签名来进行一些 XML 签名,但是经过大量搜索后,我无法找到解决方案。
我正在使用 java 使用 Xpath2 转换和 EXCLUSIVE 规范化对 XML 进行签名。如果我有以下 XML
并签名,我得到以下输出(真实数据替换为虚拟数据)
如果我验证签名,一切都很好,但是这里的问题是,在此之后,我在 XML 中执行了一个 XSLT,它对某些元素执行了一些更改,但没有对ns0:addr
保持不变的签名元素 ( ) 执行一些更改。即使我明确说应该只对“addr”元素进行签名,但如果我尝试对其任何父元素( 或 )执行更改,它也会payload
在msg
签名addr
失败时(根据我的理解)它不应该签名。如果我对其他元素(例如标题内的任何内容)进行更改,则签名仍然有效。
我已经测试了XPath//*[local-name()='addr']/*
表达式(ns2:data
msg
addr
我也尝试过使用不同的转换,例如 UNION 但这根本不起作用。
有人知道问题可能是什么吗?在 Java 中,有没有什么方法可以在为调试目的对 XML 进行签名时准确查看正在签名的内容?
编辑:
稍后运行的 xslt 将执行诸如将命名空间从 ns0:addr 元素移动到根元素 (msg) 之类的事情,并且它将主元素名称和命名空间从 msg 更改为 newmsg(以及不同的默认命名空间),但保留签名数据 ( ns2:data
) 完好无损。
用于签名的代码或多或少是这里提到的代码http://docs.oracle.com/javase/7/docs/technotes/guides/security/xmldsig/XMLDigitalSignature.html
除了我使用 XPATH2 转换而不是 ENVELOPE 转换:
而且我使用的是 EXCLUSIVE 而不是 ENVELOPED
编辑2:
我已经设法对 xml 签名过程进行了更精细的调试,并得到了以下结果:
FINER: Pre-digested input:
21-Sep-2012 10:51:39 org.jcp.xml.dsig.internal.DigesterOutputStream write
FINER: <ns2:data xmlns="http://someaddress/ad/m1" xmlns:ns0="http://someaddres/ad/m3" xmlns:ns1="http://someotheraddres/ad/m2" xmlns:ns2="http://someaddres/ad/m3"> <ns2:name>somevalue</ns2:name> <ns2:value>354</ns2:value> </ns2:data>
它似乎在签署正确的数据,但是它也在签名中添加了一些额外的命名空间,这让我想知道这是否是问题所在,因为这些命名空间是从父元素中获取的。
有人知道如何使它不添加所有额外的名称空间吗?
java - 验证 XML 签名 JAVA
是否可以验证以下 XML 文档:
问题是当我运行我的代码时,出现此错误
我已使用相同的代码成功验证了以下 XML:
这两个 XML 签名有什么区别,为什么它在第二个 XML 示例上而不是在第一个?