Подпись PDF не прошла проверку - PullRequest
0 голосов
/ 13 июля 2020

Я использую iTextSharp.LGPLv2 для подписи PDF-документов (единственная доступная опция для. Net Core прямо сейчас). Я могу поставить подпись, но большинство читателей ее отвергают. Вы можете скачать файл: https://www.dropbox.com/s/ns35fdi5tyq52cw/blank.bs.pdf?dl=0

Несколько важных проблем:

  • И Adobe Reader, и Foxit отклоняют подпись, говоря, что «документ был изменен. ... "
  • Подпись использует подфильтр adbe.pkcs7.detached". Если изменить на «ETSI.CAdES.detached», Foxit решит, что подпись подходит . Reader этого не делает.
  • SHA256 используется для всех целей хеширования.
  • Похоже, ByteRange установлен правильно.
  • Используя openssl, я смог убедиться, что подпись правильно отформатирована и содержит допустимый буфер с заполнением PKCS1.5.

Я немного озадачен здесь и буду рад выслушать любые предложения / подсказки / указания.

1 Ответ

1 голос
/ 13 июля 2020

В подписи есть (как минимум) две ошибки:

  • Несоответствие в документе ha sh:

    SHA256 ha sh подписанного диапазоны байтов:

    69CF153087670FC5D450FF23675C207BB9659A235A465202F5802ABED7BA7C21
    

    , но ваш контейнер подписи утверждает, что это

    93D5804C1A9A31B17F041DE79FB1CD598E1FCC7CDC2A37885CD0502D4FCBB5A6
    

    , что объясняет, почему валидаторы предполагают, что документ был изменен.

  • Несоответствие ha sh подписанных атрибутов:

    SHA256 ha sh подписанных атрибутов SignerInfo в вашем контейнере подписи CMS:

    C84C6600F5E11291AAD8240239B7DC09FC00BD6A9056B6BBF584E8D46C8CEBE5
    

    , но ha sh значение в вашей подписи SHA256withRSA равно

    93D5804C1A9A31B17F041DE79FB1CD598E1FCC7CDC2A37885CD0502D4FCBB5A6
    

    , что приведет к сбою проверки, даже если документ ha sh (см. выше) будет соответствовать.

    Кстати, это ha * Значение 1045 * в подписи идентично заявленному вами (неверному) документу ha sh значение.

Последнее несоответствие, вероятно, вызвано тем, что вы подписали неправильные данные.

Прежнее несоответствие может быть связано с ошибкой в ​​вычислении кода. ng ха sh диапазонов подписанных байтов, или это может быть связано с фактическим изменением подписанных данных.

Для дальнейшего анализа проблемы потребуется ваш код подписи.

PS: Также в вашем сертификате есть как минимум одна ошибка, у него отрицательный серийный номер.

...