是否可以使用 iText 或任何其他组件离线为 PDF 文档添加时间戳?
我已经使用 iText 和 TSAClient 类搜索了标准解决方案,但它需要 TSA 作为在线服务。我们有来自 TSA 的证书(包括私钥),其目的是创建时间戳签名,但我找不到任何技术方法如何使用 iText 进行操作。
感谢您的任何指导。里士满
是否可以使用 iText 或任何其他组件离线为 PDF 文档添加时间戳?
我已经使用 iText 和 TSAClient 类搜索了标准解决方案,但它需要 TSA 作为在线服务。我们有来自 TSA 的证书(包括私钥),其目的是创建时间戳签名,但我找不到任何技术方法如何使用 iText 进行操作。
感谢您的任何指导。里士满
我已经使用 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)应该可以很容易地创建时间戳请求响应。