【问题标题】:How to see Digital Signatures in PDF files using objective C如何使用 Objective C 查看 PDF 文件中的数字签名
【发布时间】:2012-10-31 14:56:49
【问题描述】:

我的应用中有一个 PDF 查看器。我只是将 PDF 文件加载到 UIWebView 中。但是当 PDF 包含数字签名时,它不会显示在 WebView 中。显示 PDF 的所有其他内容。只有签名区域留空。我检查了预览,也检查了 OSX 中的 Safari,结果是一样的。

然后我下载了 Mac 版 Adob​​e Reader 应用程序,并尝试打开 PDF。它正确显示了签名!

谁能告诉我目标C中是否有任何机制来显示PDF文件的签名。

【问题讨论】:

  • 我相信 adobe 公开了 PDF 的元数据部分。我不太确定签名是否算作元数据(尤其是因为 PDF 规范长达 1000 多页),但通过 Core Graphics PDF API 获取它值得一试。
  • 数字签名实际上并不是元数据的一部分。数字签名存储在签名字段中。您可以在字段字典的值 (/V) 的 /Contents 条目中找到它。欲了解更多信息,请阅读itextpdf.com/book/digitalsignatures
  • PDF 规范 ISO 32000-1:2008 的相关部分也值得一读,尤其是关于 签名字段 的第 12.7.4.5 节和关于 数字签名。当然,如果所讨论的签名实际上是 XML 签名,则需要 XFA 规范。
  • 谢谢大家。除了使用 Quartz 2D 或简单的二进制解析器解析 PDF 之外,似乎没有内置的方法可以实现这一点。我会尽快实现这一点,并尽快更新!
  • 这很不幸,即使 4 年后他们还没有在 UIWebView 中包含此功能?

标签: ios pdf uiwebview digital-signature


【解决方案1】:

Adobe 记录了如何在 PDF 文件中使用数字签名。请参阅Adobe PDF 1.7 spec 第 466 页第 12.8 节。

但是,正如您所发现的,许多 pdf 文件查看器(包括 Google Chrome 内置的 pdf 查看器)都会忽略数字签名。随着数字签名变得越来越流行,这是相当不幸的。

如果您还没有这样做,请针对 UIWebView 提交错误报告。或功能增强请求。添加完整的数字签名支持并非易事,但这是一项很棒的功能。

添加数字签名支持

作为支持的第一步,您可以考虑仅显示有关文档数字签名的信息并进行验证。 -- 不仅要显示数字签名很重要,您还需要verify 他们。

验证的最重要部分,恕我直言,是验证文档自签署以来没有更改。验证您是否信任签名者证书的根证书是件好事,但在实践中,它不如文档完整性重要。另一方面,这完全取决于您的应用及其环境。

作为第二步,您可以在文档页面的正确位置显示通常包含在数字签名中的图形签名。

pdf 包含多个数字签名是很常见的。 pdf 包含多个“电子签名”以及验证数字签名也很常见。

“电子签名”只是显示在 pdf 页面上的图形签名。它不涉及任何加密功能,不保证文档完整性,也不保证签名者不可否认性(不涉及签名者证书)。

由于数字签名需要实时验证,因此 pdf 有时会包含多个电子签名,例如作为每页上的首字母缩写。然后是一个单一的数字签名来覆盖整个文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-02
    • 2016-06-22
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    相关资源
    最近更新 更多