0
我最近使用apache POI库实现了办公文档的数字签名和验证。我现在正在考虑为此添加验证,以便证明文档由可信用户签名。我已经尝试了下面的代码,但没有成功我认为作为“getSigningCertificateChain”的调用是空的,但我不知道如何得到这个加载正确,所以签名将在那里?这是我现在的代码:验证POI数字签名
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);
任何人都有执行此操作的运气。
你有没有尝试阅读[围绕文档签名的Apache POI单元测试](http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java?view =标记)? [网站上的加密部分](http://poi.apache.org/encryption.html)涵盖了基本知识,但单元测试可能是最全面的细节 – Gagravarr