【问题标题】:How to digitally sign a PDF using X.509 certificate data from iOS application如何使用来自 iOS 应用程序的 X.509 证书数据对 PDF 进行数字签名
【发布时间】:2013-11-22 23:07:15
【问题描述】:

我正在我的应用程序中生成 PDF。我想为通过我的应用程序生成的这些 pdf 文件提供最好的安全性。我添加了 Apple 提供的默认安全选项,例如所有者密码、允许复制、允许打印等...

但我想添加我的证书信息或将其称为使用自定义证书(X.509 证书)文件对 pdf 进行数字签名。

安全框架有什么帮助吗? 要么 如何实现?

【问题讨论】:

  • 好奇搜一下,是不是类似这样的问题:stackoverflow.com/questions/16100109/…,它是从PHP生成的,你的应用是基于什么语言开发的?
  • >您的应用基于哪种语言进行开发? iOS (Objective-c)
  • 已经有mac的应用程序itunes.apple.com/in/app/pdf-signet-digital-signatures/…我们如何在iOS中做同样的事情??
  • 我对如何在 iOS 上实现这一点感到疑惑和挣扎。如果 Java、C#、C 和 C++ 等其他语言可以做到,为什么在 Objective-c 中不能做到这一点?
  • 你会在应用程序中暴露你的私钥,所以它有点不安全

标签: ios objective-c cgpdfdocument


【解决方案1】:

很遗憾,iOS 似乎没有原生提供此功能。搜索将数字签名应用于 PDF 的库很困难,因为许多工具都应用手写签名的图片。似乎没有任何可以在 iOS 上使用的 C 或 Objective-C,大多数实现都是 Java 或 C#,或者不适用于 iPhone(例如 Acrobat SDKPLOP DS)。

您仍然可以自己实现数字签名,这非常简单,documented。您需要按照本文档中的说明序列化您的 PDF,为签名对象腾出一些空间(这需要对 PDF 布局进行最少的解析),然后计算签名并将其存储在文件中。

对于加密部分,Security Framework 似乎没有提供 API 来生成所需的 PKCS#7 签名。所以你可以改用 OpenSSL。

【讨论】:

  • 我相信应该用私钥签署一些东西。因此,如果您想在手机中执行此操作,您至少会在操作内存中公开它
  • 确实,这需要一个私钥。如果应用程序使用用户的私钥(如所指的 MacOS X 应用程序 OP),这不是一个真正的问题。主要问题是如何获取以及如何在 iOS 设备上存储私钥。
猜你喜欢
  • 2017-11-28
  • 2014-09-30
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 2010-11-14
  • 2013-12-13
  • 2014-09-15
  • 1970-01-01
相关资源
最近更新 更多