2011-04-02 30 views
0

我正在做一個有關微軟辦公文件(docx,xl​​sx,pptx)數字簽名的java項目。添加xmlns:mdssi到XMLObject

我可以創建將在XML簽名使用被添加的對象:

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對於Microsoft類型XMLObject

辦公室承認這個XML對象:

<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> 

我必須補充:

xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" 

入開口<Object>標籤

XMLObject在Java沒有添加這個,它只有IdMimeTypeEncoding,並且Content

有什麼建議?

+0

如何將這個問題置於今日未答覆的列表之上? – nicola 2011-04-03 09:11:09

+0

這個問題的任何答案? – nicola 2011-04-05 10:13:40

回答

0
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 Widgets挖掘XML數字簽名。

  1. 的簽名/對象
    - 這似乎很容易我第一次看到的API。我剛剛創建瞭如上所示的XMLObject

  2. 但是,作爲規範說,我一定要插入一個Reference指由1
    創建XMLObject - 什麼?我怎樣才能參考一個輸出節點?
    - 如何返回尚未創建的節點數據?

  3. 我意識到我應該準備一個org.w3c.dom.Document,其中包含<Object>元素(及其子元素)並將其用於參考。
    - >使用您的URIDereferencer,您可以從此文檔的getDocumentElement()結果中返回NodeSetData


所以來這裏的解決方案。

  1. 創建一個org.w3c.dom.Document實例,其中包含<Object>元素作爲其根元素。您可以根據需要添加任何屬性和子元素。
  2. 而且您可以生成一個XML簽名爲detach或enveloping方案。

看看這個。這是我找到解決方案的地方。我認爲你的問題將得到解決。
http://today.java.net/pub/a/today/2006/11/21/xml-signature-with-jsr-105.html#generate-an-enveloping-signature

對不起,我英文很差。我是韓國人。 :)

我最好的問候。 Jin Kwon

+0

終於有人回答了,但是,這件事尚未解決,我需要的是將名稱空間「xmlns:mdssi = ...」添加到'Object'開始標記中,如下所示: nicola 2011-05-11 04:05:56