为了账号安全,请及时绑定邮箱和手机立即绑定

Apache POI 是否支持对单词进行两次签名?

Apache POI 是否支持对单词进行两次签名?

慕桂英3389331 2021-09-15 17:10:11
我试图运行签名代码两次,但我发现它只是一般的 sig1.xml ,而不是 sig1.xml 和 sig2.xml 。char password[] = "test".toCharArray();File file = new File("test.pfx");KeyStore keystore = KeyStore.getInstance("PKCS12");FileInputStream fis = new FileInputStream(file);keystore.load(fis, password);fis.close();// extracting private key and certificateString alias = "xyz"; // alias of the keystore entryKey key = keystore.getKey(alias, password);X509Certificate x509 = (X509Certificate)keystore.getCertificate(alias);// filling the SignatureConfig entries (minimum fields, more options are available ...)SignatureConfig signatureConfig = new SignatureConfig();signatureConfig.setKey(keyPair.getPrivate());signatureConfig.setSigningCertificateChain(Collections.singletonList(x509));OPCPackage pkg = OPCPackage.open(..., PackageAccess.READ_WRITE);signatureConfig.setOpcPackage(pkg);// adding the signature document to the packageSignatureInfo si = new SignatureInfo();si.setSignatureConfig(signatureConfig);si.confirmSignature();
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

我已经通过#63011修复了原始问题,它将在 POI 4.1.0 中发布。

票的相关部分是。

有一个新的配置属性SignatureConfig.setAllowMultipleSignatures(true)允许添加签名,默认情况下为 false 以保持向后兼容。


查看完整回答
反对 回复 2021-09-15
?
白衣非少年

TA贡献1155条经验 获得超0个赞

在 org.apache.poi.poifs.crypt.dsig.SignatureInfo 中,有一个方法 writeDocument(Document document) 创建覆盖前一个(如果有)的 sig1.xml,这就是为什么如果你多次签署它,你只会看到最后一个签名,尽管在 docx/xlsx 的 _xmlsignatures/_rels/origin.sigs.rels 中,您可以看到与每个签名的关系。


如果你更换:


 sigPartName = PackagingURIHelper.createPartName("/_xmlsignatures/sig1.xml");

像这样:


SignatureInfo si = new SignatureInfo();

si.setSignatureConfig(signatureConfig);

Iterator<?> iterator = si.getSignatureParts().iterator();

int i = 1;

while (iterator.hasNext()) {

   iterator.next();

   i++;

 }

sigPartName = PackagingURIHelper.createPartName("/_xmlsignatures/sig" + i + ".xml");

它将创建 sig1.xml, sig2.xml, ... 当打开 docx/xlsx 时,所有签名都会在那里。


查看完整回答
反对 回复 2021-09-15
  • 2 回答
  • 0 关注
  • 302 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信