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