Как вручную проверить подпись PDF (содержимое поля: rsaEncryption)
Я хотел бы вручную проверить подписанный RSA документ PDF, но мне не удается получить подпись, отличную от той, которая закодирована в PDF. Вот шаги, которые я выполнил, любая помощь / советы действительно ценятся.
- Я сделал простой текстовый PDF (~1 КБ)
- Я сгенерировал файл openssl pfx с соответствующим 2048-битным ключом RSA
- Я сделал загрузку упомянутого ключа в пользователя Windows certmgr
- Я использовал упомянутый ключ для подписи PDF через JSignPdf 1.6.3 (алгоритм хеширования sha-256)
Результатом вышеуказанных шагов является правильно подписанный PDF-документ (зеленая верхняя панель). Затем я использовал notepad++ для удаления поля содержимого, как описано в документации Adobe, для получения необработанного файла для вычисления, соответствует ли хеш-код тому, который встроен в структуру содержимого. Этот шаг был успешным, мой SHA-256 соответствовал.
Вот вывод из декодера ASN.1 для значения поля содержимого из PDF:
2.16.840.1.101.3.4.2.1sha-256 (алгоритм NIST)
1.2.840.113549.1.9.3contentType (PKCS # 9)
1.2.840.113549.1.7.1data (PKCS # 7)
1.2.840.113549.1.9.4messageDigest (PKCS # 9) 32 байта
E271FBADC18080C7E8BD5F0FFBCA0BD77E488309E450D28B79B720D08F69F3FC
1.2.840.113549.1.1.1rsaEncryption (PKCS # 1) 256 байт
6547B3C9658AA8C1C259A97F1B336A099677013EDABE315F9C18C4CE6B6341CAA7054...
Я могу получить то же значение, вычисляющее SHA-256 для этого измененного файла вручную, что и значение, встроенное в PDF (E271FB*).
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу получить последнее значение rsaEncryption вручную в том же файле, совместимом с sha-256, или только на основе упомянутого хэша.
Вот что я пытался..
- openssl dgst -sign./domain.key file_hash.pdf> signature.bin
- openssl dgst -sha256 -sign./domain.key -out signature.bin file_hash.pdf
Где file_hash.pdf - это файл, который sha-256 соответствует файлу в зеленом PDF из JSignPDF, а domain.key - это тот же ключ, импортированный в Windows (с текстом --- начальный закрытый ключ ---).
Можете ли вы посоветовать мне, что я делаю неправильно в конце или как я могу достичь этого значения 6547B*?