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