我正在按照以下语句使用 xades4j 创建一个信封签名:
Element elemToSign = doc.getDocumentElement();
XadesSigner signer = new XadesTSigningProfile(...).newSigner();
new Enveloped(signer).sign(elemToSign);
但是我还需要在签名中添加其他属性,例如 ProofOfApprova 等...
我看到在 xades4j 示例中,proofOfApprovalProperties 使用不同的签名声明添加到封装签名中,例如:
AllDataObjsCommitmentTypeProperty globalCommitment = AllDataObjsCommitmentTypeProperty.proofOfApproval();
CommitmentTypeProperty commitment = CommitmentTypeProperty.proofOfCreation();
DataObjectDesc obj1 = new DataObjectReference('#' + elemToSign.getAttribute("Id"))
.withTransform(new EnvelopedSignatureTransform())
.withDataObjectFormat(new DataObjectFormatProperty("text/xml", "MyEncoding")
.withDescription("Isto é uma descrição do elemento raiz")
.withDocumentationUri("http://doc1.txt")
.withDocumentationUri("http://doc2.txt"))
.withIdentifier("http://elem.root"))
.withCommitmentType(commitment)
.withDataObjectTimeStamp(dataObjsTimeStamp)
SignedDataObjects dataObjs = new SignedDataObjects(obj1)
.withCommitmentType(globalCommitment);
signer.sign(dataObjs, elemToSign);
我在这里看到使用了另一个签名过程,更具体地说,我创建 DataObjectreference 的语句说我对根标签使用“Id”属性对我来说是不可用的,因为在输入中我可以有任何类型的 xml 文档而我不能知道我可以使用哪种属性(如果存在)定义根标签。
简而言之,我可以有一些示例代码,在其中创建信封签名并使用“new Enveloped(signer).sign(elemToSign);”放置 proofOfApproval 属性,或者无论如何都不知道 xml 源结构?
谢谢
M。