Я пытаюсь подписать PDF с rsa_sha1 (Adobe.PPKLite> adbe.x509.rsa_sha1)
Вы уверены, что вы хотите использовать этот подфильтр? Все дальнейшее развитие в области комплексного подписи PDF использует интегрированные CMS контейнеров, а не голый PKCS # 1 подписей ...
Не знает, если фактическое содержание PDF определяется ByteRange должно быть подписано, или переваривать значение, что содержание?
В отличие от adobe.pkcs7.sha1 подписей в стиле и так же, как adobe.pkcs7.detached подписи стиля, весь диапазон байтов подписан в adobe.x509.rsa_sha1 подписей в стиле, а не просто значение дайджеста этого содержимого. В этом отношении adobe.x509.rsa_sha1 предпочтительнее adobe.pkcs7.sha1, потому что (несмотря на появление sha1 в названии) он делает не силы использовать SHA1, но вы можете использовать лучше переваривать алгоритмы ,
(Это, как говорится, процесс подписания, конечно же включать в себя создание значения дайджеста подписанных данных, но это совсем другое дело ...)
Есть ли разница, если сертификат помещается перед Поле подписи или после?
Оба сертификата и подпись являются элементами в словаре словаря PDF, и по определению порядок элементов в таком словаре не имеет значения. Очевидно, что при создании подписи заказ должен оставаться фиксированным (фактически не просто порядком, а точным положением и содержимым).
Записи в словаре представляют собой ассоциативную таблицу и как таковой должен быть неупорядоченным, хотя произвольный порядок может быть наложено на них при записи в файл. Этот порядок игнорируется.
(раздел 7.3.7 в ISO 32000-1)
PS: Спецификация говорит, что подпись
должны быть вычислены в диапазоне байтов в файле, которые должны указываться в записи ByteRange в словаре подписи.Этот диапазон должен быть полным файлом, включая словарь подписи, но без значения самой подписи (запись содержимого). Могут использоваться другие диапазоны, но поскольку они не проверяют все изменения в документе, их использование не рекомендуется.
(раздел 12.8.1 в ISO 32000-1)
Это, кажется, позволяет другие диапазоны байтов, чем рекомендованное один (все, кроме фактических байтов подписи), тоже. На самом деле, однако, вы также найдете
Для подписей диапазона байта, содержание должно быть шестнадцатеричная строка с «<» и «>» разделители. Он должен соответствовать точно в пространстве между диапазонами, указанными ByteRange.
(раздел 12.8.3.3.2 в ISO 32000-1)
что делает should
в цитировании до фактического shall
, если требуется совместимость. Например. Adobe Reader требует такого определения диапазона.
Более новые стандарты, например. документы технической спецификации ETSI PAdES, еще более явно требующие этого.