2014-07-04 51 views
0

這是我的代碼簽名XML文檔:xades4j如何添加口令

KeyingDataProvider kp = new FileSystemKeyStoreKeyingDataProvider(keyStoreType, 
    keyStorePath, certificateSelector, keyStorePasswordProvider, 
    entryPasswordProvider, returnFullChain); 
XadesSigningProfile p = new XadesBesSigningProfile(kp); 

XadesSigner signer = p.newSigner(); 

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
factory.setNamespaceAware(true); 

DocumentBuilder builder = factory.newDocumentBuilder();  

docSource = builder.parse(new FileInputStream(pathToXmlFile)); 
docDest = builder.newDocument(); 

Node objContent = docDest.importNode(docSource.getDocumentElement(), true); 

DataObjectDesc obj = new EnvelopedXmlObject(objContent, "text/xml", null); 

new Enveloped(signer).sign(docSource.getDocumentElement()); 

現在,我需要添加計數器簽名相同的XML文件。你能給我一些關於如何做的建議嗎?目前,我沒有任何想法:(

我的XML文件是這樣的:

<rootElement> 
    <A> 
    <A1> 
    </A1> 
    </A> 
</rootElement> 

先簽字後我有:

<rootElement> 
    <A> 
    <A1> 
    </A1> 
    </A> 
    <ds:Signature> 
    </ds:Signature> 
</rootElement> 

問候 約翰S.

回答

0

查看this test庫的源代碼,它生成一個包含計數器簽名的簽名。基本上,您需要定義一個SignaturePropertiesProvider,它添加CounterSignature屬性並將其添加到您的簽名配置文件。請注意,CounterSignatureProperty收到另一個簽名者,用於生成計數器簽名。

+0

謝謝。不幸的是,所提供的示例顯示瞭如何與常規簽名一起共同簽署文件。我已經簽署了XML,我想用聯署擴展它。我發現這個話題:http://stackoverflow.com/questions/14696429/xades-countersign-document,但它並沒有真正解釋我如何實現這一點。我現在可能是一個愚蠢的問題,但我在JAVA中是begginer,並不知道如何使它工作。 – user3805907

+0

您可以嘗試直接使用XadesSignatureFormatExtender - https://code.google.com/p/xades4j/wiki/SignatureEnrichment – lgoncalves