Автономная отметка времени в формате PDF с использованием iText
Можно ли штамповать документ PDF в автономном режиме с помощью iText или любого другого компонента?
Я гуглил стандартное решение, использующее классы iText и TSAClient, но для него требуется TSA в качестве онлайн-сервиса. У нас есть сертификат от TSA (включая закрытый ключ), целью которого является создание подписей меток времени, но я не могу найти никакого технического способа сделать это с помощью iText.
Спасибо за любое руководство. Ричмонд
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) должны сделать создание ответов на метки времени довольно простым.