2011-07-28 73 views
13

最近,我被分配了一個iOS項目,我需要使用應用程序從服務器下載的密鑰對PDF文檔進行數字簽名。 我還沒有清楚簽署文件所涉及的過程,直到現在我知道的是,我將使用提供給我的私人密鑰文件簽署我的pdf,然後使用公共密鑰進行驗證同一個文件的關鍵版本。iOS中的數字簽名pdf文檔

我已經看到了數字標牌可以使用像iText的用於Java或iTextSharp的庫C#實現。這就是爲什麼我想知道是否有類似的iOS?如果不是,那麼使用Quartz來管理pdf文檔的過程是什麼呢?任何想法都是一個很好的起點。非常感謝。


嗯......我已經檢查了蘋果的文檔,我發現這一點:

http://developer.apple.com/library/ios/#DOCUMENTATION/Security/Reference/certifkeytrustservices/Reference/reference.html

我認爲這是supossed支持X.509格式...我至極我可以用它來將pdf簽名爲一個實例os CFData。此外,我一直在檢查CryptoExercise示例代碼,但我不是100%確定是否這是我正在尋找的。

其他建議都告訴我要檢查的Adobe文件,但還沒有找到又一個C API簽署使用證書文件。

如果有人使用了由蘋果公司提供的證書服務......這將是偉大的任何建議或更多示例代碼,瞭解的過程。非常感謝。

+0

你是否能解決這一難題? –

+0

嗨,你有沒有找到一種方法來簽署PDF文件? – ridan

+0

嗨,你有沒有找到一種方法來簽署PDF文件? – Jagadeeshwar

回答

10

巴勃羅,

簽署PDF文檔是一個艱鉅的任務(我公司在帕斯卡Windows世界中這樣做)。

一般情況下,我可以告訴你,你可能找不到可用的源代碼,你可以融入你的項目。爲了瞭解它是如何完成的,iText源碼是一個很好的起點,因此所有內容都在這裏。

在Objective-c中,您處於正確的道路上。使用帶有SecKeyRawSign等功能的X.509證書是正確的方法(因爲實際給定的填充是過時的,您需要創建自己的填充以支持例如SHA256,您可以在這裏看到,這是如何完成的:What is the difference between the different padding types on iOS?)。 'dataToSign'只是您想要簽名的PDF內容(例如SHA256)的散列。

要找出你必須精確地簽署PDF源的一部分,你必須檢查的Adobe PDF文檔1.6,或談論羣體做一些搜索。您將在哪種語言上簽名PDF沒有區別。最後,您將在PDF文檔的預定義部分中嵌入簽名和一些關於簽名的信息(注意不要因此破壞有效散列;)),並且可以查看並驗證它任何其他PDF簽名/驗證軟件。

我很抱歉,我不能爲你提供相關的代碼,但你會發現周圍的X.509證書足夠多的樣本 - 例如創建一個SSL/SSH連接。如果你搜索SecKeyRawSign,你甚至可以找到一些簽名樣本(至少是其他樣式)。如果您發現用於使內容部分簽名並將簽名嵌入到最終PDF中的PDF語法,就可以滿足您的所有需求。

我希望這是幫助你

吉米