Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: PabloОтветов: 1

Недавно мне поручили проект 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... было бы здорово получить любое предложение или больше примеров кода, чтобы понять процесс.

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

iosiphoneobjective-cpdfcore-graphics

Ответы

Ответ 1 · рейтинг 10 · Jimmy Koerting

Пабло,

подписание 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-файл.

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

Джимми

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы