【问题标题】:How to use an OnlineTSPSource with esig/dss Library?如何将 OnlineTSPSource 与 esig/dss 库一起使用?
【发布时间】:2019-10-21 07:30:07
【问题描述】:

我正在尝试将在线时间戳授权 (rfc3161) 与 Digital Signature Service Java 库一起使用。但是,以下 sn-p(来自他们的test cases,与来自他们的Cookbook 的类似):

String tspServer = "http://tsa.belgium.be/connect";
OnlineTSPSource otsp = new OnlineTSPSource(tspServer);
/* tried setting otsp.setDataLoader(new TimestampDataLoader());
   too, as it defaults to otsp.setDataLoader(new 
   NativeHTTPDataLoader()); the exception happens in both cases */
byte[] digest = DSSUtils.digest(DigestAlgorithm.SHA1, "Hello world".getBytes());
TimeStampToken timeStampResponse =
    otsp.getTimeStampResponse(DigestAlgorithm.SHA1, digest);

总是以下列异常结束:

eu.europa.esig.dss.DSSException: 
java.util.concurrent.ExecutionException: java.lang.NoSuchMethodError: 
org.apache.commons.io.IOUtils.closeQuietly(Ljava/io/Closeable;)V

已经尝试了许多不同的公共 rfc3161 服务器(一些列出了here)。当然那里有问题,但是,作为一个初学者,我不明白哪里出了问题(应该有什么方法)。

如果有人能让我找到正确的方向来让 sn-p 正常工作(或者甚至好心地评论一个可靠的关于 cades/xades/pades 和 Java 的 bouncycastle 的启动指南),我将非常感激。

【问题讨论】:

  • 该错误表明您依赖于错误版本的 Apache commons-io。
  • 这是一个静态方法,类路径中可能完全缺少 Apache IOUtils。
  • 就是这样!在我的 pom.xml 文件中定义了一个旧的 commons-io。谢谢你们的帮助。如果你们认为这是合理的,请提供它作为答案,以便我接受它。

标签: java cryptography certificate rfc3161


【解决方案1】:

正如 Marteen BodewesMark Rotteveel 在 cmets 中所述,类路径中的 Apache Commons-IO 版本有问题。该项目是使用 Apache Maven 设置的,并且有一个旧的 Commons-IO 版本在那里声明为依赖项。在这种情况下,删除该声明就足够了,因此 Maven 可以下载声明为 esig/DSS 依赖项的适当版本。

esig/DSS 版本当时是 5.4。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-23
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 2019-11-08
    相关资源
    最近更新 更多