【发布时间】:2016-05-16 11:31:37
【问题描述】:
我最近使用 apache POI 库实现了办公文档的数字签名和验证。我现在希望为此添加验证,以便我可以证明该文档是由受信任的用户签名的。我已经尝试了以下代码,但没有成功我认为对“getSigningCertificateChain”的调用是空的,但我不确定如何让它正确加载,所以签名会在那里?这是我当前的代码:
pkg = OPCPackage.open(Dir, PackageAccess.READ);
sic = new SignatureConfig();
sic.setOpcPackage(pkg);
SignatureInfo si = new SignatureInfo();
si.setSignatureConfig(sic);
isValid = si.verifySignature();
X509Certificate x509a = (X509Certificate) sic.getSigningCertificateChain().get(0);
FileInputStream fin = new FileInputStream("C:\myCer.cer");
CertificateFactory f = CertificateFactory.getInstance("X.509");
X509Certificate certificate = (X509Certificate)f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();
x509a.verify(pk);
任何人都幸运地实现了这一点。
【问题讨论】:
-
您尝试阅读the Apache POI unit tests around document signatures 吗? encryption section on the website 涵盖了基础知识,但单元测试可能是最好的完整细节
标签: java apache-poi digital-signature digital-certificate