【问题标题】:Verifying POI Digital signature验证 POI 数字签名
【发布时间】: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);

任何人都幸运地实现了这一点。

【问题讨论】:

标签: java apache-poi digital-signature digital-certificate


【解决方案1】:

您必须根据颁发者Common Name = {myCer.cer} Common Name 从链中选择证书,然后尝试验证它

PublicKey pk = selectedIssuedCertificate.getPublicKey();
x509a.verify(pk);

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-24
    • 2014-01-28
    • 2011-09-22
    • 1970-01-01
    • 2014-03-16
    • 2013-04-15
    • 2020-10-01
    相关资源
    最近更新 更多