Добавление цифровой подписи в PDF с использованием Java

Я хочу подписать цифровой файл PDF с помощью сертификата, хранящегося на USB-токене, HSM и т. Д. Как использовать закрытый ключ, сохраненный на USB-токене, с помощью JAVA?

3 ответа

К самореференции iText добавлю

Шаги, связанные с добавлением цифровой подписи в файл PDF:

(I) Создать шаблон PDFDocument:

Создать PDFDocument с подписью шаблона:

PDSignature pdSignature;
pdSignature.setByteRange(new int[]{0, 0, 0, 0});
pdSignature.setContents(new byte[n*1024]);

где n - целое число, то есть кратное kbs.

Примечание. Размер содержимого должен быть больше или равен сумме длины файла подписи и сертификата.

(II) Обновление шаблона PDF документа:

(a) Обновить / ByteRange [abcd]:
(i) a = смещение% в "%PDF"(=0, по умолчанию)
(ii) b = смещение "
(iii) c = Смещение> в "/ Содержание<000...000>"
(iv) d = смещение F в "%%EOF" минус c сверху

(б) обновить раздел внешних ссылок:
обновить таблицу перекрестных ссылок (раздел xref), которая указывает положение объектов и

(c) Обновить раздел startxref:
update startxref, который является смещением начала таблицы перекрестных ссылок (xref).

(III) Создание цифровой подписи обновленного типового документа:
Создание обновленного типового документа, исключая временные подписанные данные ("000... 000) из" / Contents<000...000>"

(IV) Обновление контента<> Раздел:
Замените первые / начальные "0" длины подписанных данных в "/ Содержание<000...000>" на подписанные данные (в конверте) шаблона PDFFile.

Предложения:

Использовать SignatureInterface PDFBox:

(a) реализовать SignatureInterface для метода call () (b) предоставить входные, выходные файлы, хранилище ключей, псевдоним, pin (c) сохранить сохранение

(или) использовать любую библиотеку java pdf (например, iText...)

(или) Реализуйте Шаги I-IV в Java самостоятельно.

Похоже, вы хотите цифровой подписи PDF с помощью USB-токена, смарт-карты или аппаратного модуля безопасности. Это делается с помощью PKCS#11, как описано в http://itextpdf.com/book/digitalsignatures Вы можете найти исходный код здесь. Это пример, показывающий, как подписать, используя USB-токен SafeNet iKey 400.

Другие вопросы по тегам