1

是否可以使用 iText 或任何其他组件离线为 PDF 文档添加时间戳?

我已经使用 iText 和 TSAClient 类搜索了标准解决方案,但它需要 TSA 作为在线服务。我们有来自 TSA 的证书(包括私钥),其目的是创建时间戳签名,但我找不到任何技术方法如何使用 iText 进行操作。

感谢您的任何指导。里士满

4

1 回答 1

1

我已经使用 iText 和 TSAClient 类搜索了标准解决方案,但它需要 TSA 作为在线服务。

TSAClient不是最终类,而仅仅是一个接口:

/**
 * Time Stamp Authority client (caller) interface.
 * <p>
 * Interface used by the PdfPKCS7 digital signature builder to call
 * Time Stamp Authority providing RFC 3161 compliant time stamp token.
 * @author Martin Brunecky, 07/17/2007
 * @since   2.1.6
 */
public interface TSAClient {
    /**
     * Get the time stamp token size estimate.
     * Implementation must return value large enough to accomodate the entire token
     * returned by getTimeStampToken() _prior_ to actual getTimeStampToken() call.
     * @return  an estimate of the token size
     */
    public int getTokenSizeEstimate();

    /**
     * Get RFC 3161 timeStampToken.
     * Method may return null indicating that timestamp should be skipped.
     * @param caller PdfPKCS7 - calling PdfPKCS7 instance (in case caller needs it)
     * @param imprint byte[] - data imprint to be time-stamped
     * @return byte[] - encoded, TSA signed data of the timeStampToken
     * @throws Exception - TSA request failed
     */
    public byte[] getTimeStampToken(PdfPKCS7 caller, byte[] imprint) throws Exception;

}

因此,您所要做的就是实现该接口,以您想要的任何方式生成时间戳。尽管这些评论似乎暗示了一些在线服务,但您只需要返回一些byte[]时间戳记给定的byte[] imprint.

话虽如此,像这样的时间戳并不真正值得这个名字。你能保证你打算创建的时间戳在可接受的错误范围内是正确的吗?

因此,您几乎找不到现有的TSAClient实现。但是现有的安全库(如 Bouncy Castle)应该可以很容易地创建时间戳请求响应。

于 2014-01-24T15:26:26.357 回答