Недавно я реализовал цифровую подпись и проверку офисных документов с использованием библиотеки POI apache. Теперь я хочу добавить подтверждение, чтобы подтвердить, что документ был подписан доверенным пользователем. Я пробовал следующий код, но без успеха я думаю, что вызов 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