在iOS中对PDF文档进行数字签名

Pab*_*blo 13 pdf iphone objective-c quartz-graphics ios

最近我被分配了一个iOS项目,我需要使用应用程序从服务器下载的密钥对pdf文档进行数字签名.我还不清楚签署文档所涉及的过程,直到现在我知道我将使用提供给我的私钥文件签署我的pdf,然后使用公钥进行验证同一文件的版本.

我已经看到数字符号可以使用iText for Java或iTextSharp for C#等库来实现.这就是为什么我想知道iOS是否有类似的东西?如果没有,使用Quartz能力来管理pdf文档的过程是什么?,任何想法都将是一个很好的起点.非常感谢.


嗯......我一直在检查苹果文档,我发现了这个:

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

我认为这是支持X.509格式...我可以用它来签署pdf作为一个实例os CFData我猜.此外,我一直在检查CryptoExercise示例代码,但我不是100%确定这是否是我正在寻找的.

其他建议告诉我检查Adobe文档,但尚未找到使用证书签署文档的C api.

如果有人使用了苹果公司提供的证书服务......那么理解这个过程会有任何建议或更多的示例代码.非常感谢.

Jim*_*ing 10

巴勃罗

签署PDF文档是一项艰巨的任务(我的公司在Pascal的Windows世界中这样做).

一般来说,我可以告诉您,您可能找不到可以合并到项目中的可用源代码.要了解它是如何完成的,iText源是一个很好的起点,因为一切都在那里.

在objective-c中,您走的是正确的道路.使用具有SecKeyRawSign等功能的X.509证书是正确的方法(因为实际给定的填充是旧的,你需要创建自己的填充来支持例如SHA256.你可以在这里看到,如何做到这一点:有什么区别iOS上不同的填充类型?).'dataToSign'只是您要签名的PDF内容(例如SHA256)的哈希值.

要找出您必须准确签署PDF源的哪一部分,您必须检查adobe PDF 1.6文档,或者在组中进行一些搜索.您要使用哪种语言对PDF进行签名没有区别.

最后,您将在PDF文档的预定义部分中嵌入签名和一些有关签名的信息(通过这样做,注意不要破坏有效哈希;))并且可以使用任何其他PDF签名查看和验证它/验证软件.

很抱歉我无法向您提供相关代码,但您会在X.509证书周围找到足够的示例 - 例如创建SSL/SSH连接.如果您搜索SecKeyRawSign,您甚至可以找到一些签名样本(至少与其他模式一样).如果您找到用于记录内容部分并将签名嵌入到最终PDF中的PDF语法,那么这就是您所需要的.

我希望这对你有所帮助

吉米