Цифровая подпись документа PDF в iOS

Недавно мне поручили проект iOS, где мне нужно подписать документ в формате pdf с помощью ключа, который приложение загрузит с сервера.

У меня еще нет четкого представления о процессе, связанном с подписанием документов, до сих пор я знаю, что я буду подписывать свой pdf-файл, используя предоставленный мне файл закрытого ключа, а затем проверка будет выполняться с использованием открытого ключа. версия того же файла.

Я видел, что цифровой знак можно получить с помощью таких библиотек, как iText для Java или iTextSharp для C#. Вот почему я хотел бы знать, есть ли что-то подобное для iOS?. И если нет, то каким будет процесс для достижения этого с использованием возможностей Quartz для управления документами в формате pdf?


Что ж... Я проверял документы Apple и нашел это:

https://developer.apple.com/documentation/security/certificate_key_and_trust_services

Я думаю, что это должно поддерживать формат X.509 ... который я мог бы использовать для подписи pdf в качестве экземпляра os CFData, я думаю. Также я проверял пример кода CryptoExercise, но я не уверен на 100%, что это то, что я ищу.

В других предложениях мне посоветовали проверить документацию Adobe, но я еще не нашел API-интерфейс C для подписи документов с использованием сертификатов.

Если кто-то использовал службы сертификатов, предоставляемые Apple... было бы здорово получить любое предложение или больше примеров кода, чтобы понять процесс.


person Pablo    schedule 28.07.2011    source источник
comment
Удалось ли вам решить эту задачу?   -  person Ege Akpinar    schedule 05.04.2013
comment
Привет, Вы нашли способ подписывать PDF-документы?   -  person ridan    schedule 26.08.2013
comment
Привет, Вы нашли способ подписывать PDF-документы?   -  person Jagadeeshwar    schedule 11.11.2013


Ответы (1)


Пабло,

подписание PDF-документов — сложная задача (моя компания занимается этим в мире Windows на Паскале).

В общем, я могу вам сказать, что вы, вероятно, не найдете пригодный для использования исходный код, который вы могли бы просто включить в свой проект. Чтобы увидеть, как это делается, источник iText является хорошей отправной точкой, потому что там все есть.

В Objective-C вы на правильном пути. Использование сертификатов X.509 с такими функциями, как SecKeyRawSign - это правильный путь (поскольку фактические данные отступы устарели, вам нужно создать свой собственный отступ для поддержки, например, SHA256. Вы можете увидеть здесь, как это делается: В чем разница между различными типами заполнения на iOS ?). «dataToSign» — это не что иное, как хэш содержимого PDF (например, SHA256), который вы хотите подписать.

Чтобы узнать, какую именно часть исходного PDF-файла вы должны подписать, вы должны проверить документацию Adobe PDF 1.6 или выполнить поиск в группах, говорящих об этом. Не имеет значения, на каком языке вы собираетесь подписывать PDF.

В конце концов, вы вставите подпись и некоторую информацию о подписи в предопределенную часть документа PDF (следите за тем, чтобы не сломать действительный хеш, сделав это;)), и это можно будет увидеть и проверить с любой другой подписью PDF. /проверочное программное обеспечение.

Мне жаль, что я не могу предоставить вам соответствующий код, но вы найдете достаточно примеров сертификатов X.509, например. создание соединения SSL/SSH. И если вы будете искать SecKeyRawSign, вы даже найдете несколько образцов для подписи (по крайней мере, с другими шаблонами). Это все, что вам нужно, если вы найдете синтаксис PDF для взятия части содержимого для подписи и встраивания подписи в окончательный PDF-файл.

Я надеюсь, что это было полезно для вас

Джимми

person Jimmy Koerting    schedule 29.08.2011