J'ai récemment mis en œuvre la signature numérique et la validation de documents Office à l'aide de la bibliothèque Apache POI. Je cherche maintenant à ajouter une vérification à ceci afin que je puisse prouver que le document a été signé par un utilisateur de confiance. J'ai essayé le code suivant mais sans succès je pense que l'appel à "getSigningCertificateChain" est vide mais je ne suis pas sûr de savoir comment le charger correctement afin que la signature soit là? ceci est mon code actuel:Vérification de la POI Signature numérique
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);
tout le monde a eu de la chance avec cette implémentation.
Avez-vous essayez de lire [les tests unitaires Apache POI autour des signatures de documents] (http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java?view = balisage)? La [section de cryptage sur le site Web] (http://poi.apache.org/encryption.html) couvre les bases, mais les tests unitaires sont probablement les meilleurs pour tous les détails – Gagravarr