Я прочитал электронный текст цифровой подписи I-TEXT, а также предыдущие сообщения, на которые ответил MKL (который, похоже, является авторитетом в этой теме вместе с Бруно).
по сути, у меня есть служба приложений Azure, которая получает цифровую подпись (base 64) и цепочку сертификатов из API подписи компании. API подписи компании возвращает подпись в Base64 вместе с цепочкой сертификатов.
Я просто хочу вставить объект / контейнер подписи в PDF-файл, чтобы он отображался на панели подписи, когда конечный пользователь открывает PDF-файл. Я предпочитаю использовать отложенное подписание.
Я перешел от примера клиентской переподписи в главе 4 к «Отложенной подписи» в MKL «Как создать подпись PDF без предварительного знания подписывающего сертификата».
API компании возвращает обычную подпись, в чем я почти уверен, а также возвращает цепочку из трех строковых сертификатов.
Я должен отметить, что у меня есть корневой и вспомогательный сертификаты заранее (2 файла .cer), но я не использую их при подготовке pdf для хеширования прямо сейчас, поскольку в примере с отложенной подписью они явно не используются. Для кода построения контейнера (после получения ответа от API компании) я использую цепочку из 3 сертификатов, возвращенную из API компании, но я также пробовал ее с двумя файлами .cer, но безрезультатно.
Единственная разница между моим кодом и кодом в примере - это вместо byte [] certificateBytes = THE_RETRIEVED_CERTIFICATE_BYTES; X509Certificate x509Certificate = новый X509CertificateParser (). ReadCertificate (certificateBytes); Я создаю 3 сертификата x509Certificates (по одному на каждую строку в цепочке, возвращаемую API компании.
К сожалению, что-то не работает, я получаю эти ошибки в Acrobat: подпись недействительна, есть ошибки в форматировании или информации, содержащейся в этой подписи, личность подписи еще не проверена, время подписи определяется часами на компьютере подписавшего ... также, если я нажму «Сведения о сертификате» чуть ниже этой ошибки в Acrobat, это будет пусто. Это были в значительной степени ошибки, которые я получал при попытке примера clientserversigning
Я очень стараюсь и задаюсь вопросом, что это может быть ... стоит ли мне попробовать изменить расчетный размер с 12000 и увеличить его? или ошибки, которые я получаю в Acrobat, возможно, они намекают, что цепочка сертификатов из API компании не улавливается кодом построения отложенного контейнера для подписи ... Я борюсь, но любые советы были бы очень признательны
Эван
Чтобы уточнить, я следую примеру clientserversigning из главы 4, но после воссоздания моего PDF-файла с подписью из API компании я получаю следующее.
В нем говорится: 1) есть ошибки в форматировании информации 2) личность подписывающего лица не проверена 3) время подписи определяется по часам на компьютере подписавшего.
Теперь что касается подготовки pdf-файла перед его хешированием для отправки на подпись ... Я не вижу ничего в примере ClientSigning, который специально его подготавливает, могу ли я предположить, что библиотека IText подготавливает его под капотом?
new PdfReader(new RandomAccessSourceFactory().CreateSource(YOUR_BYTE_ARRAY), new ReaderProperties())
. - person mkl   schedule 14.07.2020