在pdf上进行数字签名,在Java上可以使用开源库itext进行,在iOS 平台貌似还没有开源库,需要自己开发一个支持数字签名的pdf组件或者使用第三方SDK,此过程可以参考相关Java源码
1. 生成一张签名对象,一般是签名图片
2. 生成包含数字签名的签名域对象
3.生成字节数组摘要,此过程需要解析数组证书文件
4.注入自己数组摘要到签名域中
5.(可选)这样一个带有数字签名的pdf文件就生成了,可以取出数字证书信息校验签名域了
下面来重点解析下第3步操作
一个基于DER编码(Distinguished Encoding Rules,可辨别编码规则)的PKCS#7 二进制文件里包含数字签名可以被用于 摘要数据
如果是SHA1字节数组摘要 需要包装成 PKCS#7的签名数据作为字段. PKCS # 7对象必须符合 RFC 2315互联网中的PKCS # 7规范
自己数组摘要至少要包含签名者的X.509数字证书标准的签名证书,该证书用于验证签名值
PKCS # 7对象可以包含一个或多个来自签名者信任链的发行人(机构)证书