首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将xmlns:mdssi添加到XMLObject

将xmlns:mdssi添加到XMLObject
EN

Stack Overflow用户
提问于 2011-04-02 10:06:06
回答 1查看 806关注 0票数 0

我正在执行一个关于microsoft office文件(docx、xlsx、pptx)上的数字签名的java项目。

我可以使用以下方法创建一个对象,该对象将添加到xml签名中:

代码语言:javascript
复制
XMLSignatureFactory xml_fac = XMLSignatureFactory.newInstance("DOM");

XMLObject xml_object = XMLSignatureFactory.newXMLObject(...
ArrayList<XMLObject> obj_list = new ArrayList<XMLObject>();
obj_list.add(xml_object);

XMLSignature xml_sig = xml_fac.newXMLSignature(...,...,obj_list,...

但是,这个由java生成的xml签名不包含xmlns类型的XMLObject

microsoft office要识别此xml对象:

代码语言:javascript
复制
<Object>
  <SignatureProperties>
    <SignatureProperty Id="idSignatureTime" Target="#idPackageSignature">
      <mdssi:SignatureTime>
        <mdssi:Format>YYYY-MM-DDThh:mm:ssTZD</mdssi:Format>
        <mdssi:Value>2011-04-02T10:10:10Z</mdssi:Value>
      </mdssi:SignatureTime>
    </SignatureProperty>
  </SignatureProperties>
</Object>

我必须补充:

代码语言:javascript
复制
xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature"

进入开始的<Object>标记

但是java中的XMLObject无法添加这一点,它只有IdMimeTypeEncodingContent

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2011-05-10 11:52:00

代码语言:javascript
复制
SignatureProperty property = XML_SIGNATURE_FACTORY.newSignatureProperty(
    ...);

SignatureProperties properties = XML_SIGNATURE_FACTORY.newSignatureProperties(
    Collections.singletonList(property), ...);

XMLObject object = XML_SIGNATURE_FACTORY.newXMLObject(
    Collections.singletonList(properties), ...);

第2版:

故事来了。我用Java。(JSR-105)我正在挖掘W3C部件的。

用于签名/对象的

--我第一次看到这些API似乎很容易我刚刚创建了像上面这样的XMLObject

  • ,但是,正如规范所述,我必须插入引用由1创建的XMLObjectReference

--什么?如何引用输出节点?

--我如何返回尚未创建的节点的数据?

  • --我意识到,我应该准备一个包含<Object>元素(及其子元素)的org.w3c.dom.Document,并将其用作引用。

->使用URIDereferencer,您可以从文档的getDocumentElement()结果返回一个NodeSetData

所以解决办法来了。

  1. 创建一个包含<Object>元素的org.w3c.dom.Document实例作为其根元素。您可以根据自己的意愿添加任何属性和子元素。
  2. 和您可以生成一个XML签名作为分离的或enveloping方案。

看看这个。这就是我找到解决办法的地方。我想你的问题会解决的。

http://today.java.net/pub/a/today/2006/11/21/xml-signature-with-jsr-105.html#generate-an-enveloping-signature

为我糟糕的英语感到抱歉。我是韩国人。:)

我向你问好。金权

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5522512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档