如何使用 iOS 应用程序中的 X.509 证书数据对 PDF 进行数字签名

2024-03-06

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

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

安全框架有什么帮助吗? 或者 如何才能实现这一目标?


很遗憾,iOS好像没有原生提供这个功能。搜索将数字签名应用于 PDF 的库很困难,因为许多工具都应用手写签名的图片。似乎没有任何 C 或 Objective-C 语言可以在 iOS 上使用,大多数实现都是用 Java 或 C# 实现的,或者不适用于 iPhone(例如杂技软件开发工具包 http://www.adobe.com/devnet/pdf/library.html#ms or PLOP DS http://www.pdflib.com/download/plop-and-plop-ds/).

尽管如此你还是可以自己实现数字签名,这非常简单,并且有记录的 http://www.adobe.com/devnet-docs/acrobatetk/tools/DigSig/Acrobat_DigitalSignatures_in_PDF.pdf。您将需要按照本文档中所述序列化 PDF,为签名对象腾出一些空间(这需要对 PDF 布局进行最少的解析),然后计算签名并将其存储在文件中。

对于加密部分,安全框架似乎没有提供 API 来生成所需的 PKCS#7 签名。所以你可以使用 OpenSSL 来代替。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 iOS 应用程序中的 X.509 证书数据对 PDF 进行数字签名 的相关文章

随机推荐

  • 有没有更好的方法使用 Dash by Plotly 执行多重输出?

    正如我们所看到的入门的互动部分 https plot ly dash getting started part 2 interactivity 一个回调函数可以接受多个输入 但始终只有一个输出 假设我们有两个单独的块 它们必须在输入更改后更
  • 数组“__curl_rule_01__”的大小为负数

    我在尝试编译 GIT 时遇到错误 我已经在 Google 和 GIT 源代码问题 错误中搜索了类似的问题 但没有找到任何可以帮助我的内容 最初我收到以下错误 root teemo usr src git make prefix usr in
  • 使用 Swift 3.0 将 JSON 数组解析到服务器

    我正在尝试将 JSON 数组发送到 Web 服务器 我在网上看了几个例子 即 and 使用 Swift 3 0 将 CoreData 保存到 Web 服务器 https stackoverflow com questions 4619996
  • 使用前缀或域的路由

    我正在开发一个平台 该平台允许用户在主网站域的子文件夹中运行自己的网站 或者为其网站映射自定义域 使用自定义域时 每个路由的 URL 结构略有不同 因为它以用户名为前缀 但使用自定义域时 不使用此前缀 有没有一种巧妙的方法可以在我的 Rou
  • 通过递归得出帕斯卡三角形

    有人可以告诉我我当前的代码是否可行吗 我必须使用输入创建帕斯卡三角形 而不使用任何循环 我注定要递归 我花了三天时间来做这个 这是我能想到的最好的输出 def pascal curlvl newlvl tri if curlvl newlv
  • R 中向量的子集()

    我根据以下函数编写了subset 我觉得很方便 ss lt function x subset r lt eval substitute subset data frame x parent frame if is logical r st
  • 将 JSON 解析为 MONGODB 文档

    我是新来的JAVA and MONGODB并且一直在学习尝试并了解这些技术是否能够满足我对产品的要求 我目前陷入无法插入文档 记录 的地步JAVA进入我的MONGODB收藏 我正在使用新的MONGODB version 3 0 到目前为止的
  • 如何在heroku 上托管我的discord.py 机器人?

    我目前正在尝试将我的 Discord 机器人连接到 Heroku 并 24 7 托管它 但我遇到了问题 我将我的机器人上传到 githubhttps github com zemocode flankebot tree master htt
  • 如何更改 .net Web 应用程序中的默认区域性设置?

    我们的 Web 应用程序 net C 使用 amount ToString c 格式化货币金额 显示为几个不同区域的本地化 我们的法裔加拿大用户更喜欢所有金额均采用美国格式 123 456 99 而 fr CA 的默认 Windows 格式
  • Android中如何将日志写入SD卡? [复制]

    这个问题在这里已经有答案了 我的程序在设备中崩溃 我想在我的设备中运行时准确捕获程序的日志 即我想将日志写入我的 SD 卡 直到崩溃为止 我怎样才能实现这个目标 尝试这个 Thread setDefaultUncaughtException
  • 从模块关闭用户窗体

    我正在尝试从模块关闭用户表单 但它不起作用 这是我尝试过的 Sub UpdateSheetButton Dim subStr1 As String Dim subSrrt2 As String Dim tmp As Integer Dim
  • Android Flash 切换按钮崩溃

    应用程序在四种不同的设备上运行良好 但客户端在打开 关闭闪光灯按钮时面临崩溃Xperia z2 主要活动 btnFlash setOnClickListener new OnClickListener Override public voi
  • 需要 Nest REST API 的工作示例而不使用 Firebase API

    我正在努力寻找一个使用普通休息将数据写入 Nest Thermostat API 的工作示例 尝试编写 C 应用程序但无法使用 Firebase 到目前为止发布的多个 Curl 示例不起作用 我有一个有效的 auth token 并且可以毫
  • 为分配/指派问题建立线性规划

    我在线性程序方面遇到了一些麻烦 我已经解决并使用 Excel 但现在我想在 R Python 中执行它 因为我已经达到了 Excel 和求解器的限制 因此 我就这个特定主题寻求帮助 我通过改变 lp assign 函数尝试使用 lPsovl
  • 需要在 web.config 中加密连接字符串和 stmp 信息

    我想在 web config 中保留加密的连接字符串和 stmp 信息 我可以将连接字符串和 SMTP 信息加密存储在 web config 中 并在其中解密和使用吗 OR 我可以加密连接字符串和 SMTP 并保存在 web config
  • Objective-C++ 导入 C++ 类失败,找不到 cassert

    因此 我想公开公开一个 Box2D C 指针 指向我的 cocos2d box2d 项目中的其他 Objective C 类 我在接口中声明了一个方法 getWorld 该方法引用 C 类 b2World 并导入 Box2D h 我的项目中
  • Prisma 部署 Docker 错误“无法连接到服务器”

    这是我已经完成的步骤 prisma init 我在本地 不存在 中为数据库设置了 postgresql 它创建了 3 个文件 datamodel graphql docker compose yml prisma yml docker co
  • 在Databricks(DBFS)中递归列出目录和子目录的文件

    使用python dbutils 如何在Databricks文件系统 DBFS 中递归显示当前目录和子目录的文件 关于 dbutils fs ls 和 fs 魔法命令 的令人惊讶的事情是它似乎不支持任何递归开关 然而 由于 ls 函数返回
  • 如何让VIM在写信时播放打字机声音?

    写了很多之后Windows 上的 Q10 http www baara com q10 我已经习惯了每次按键时发出的打字机声音 至少对我来说 拥有这种声音反馈感觉很棒 另一方面 在 Linux 上 我喜欢用 VIM 编写它 因为它的编辑功能
  • 如何使用 iOS 应用程序中的 X.509 证书数据对 PDF 进行数字签名

    我正在我的应用程序中生成 PDF 我想为通过我的应用程序生成的这些 pdf 提供最好的安全性 我添加了 Apple 提供的默认安全选项 例如所有者密码 允许复制 允许打印等 但我想添加我的证书信息或将其称为使用自定义证书 X 509 证书