Native Linux 签名工作流
带版本的 Callback ABI 对已加载文档或显式输入 Callback 执行 schemaVersion 1 的 sign 任务;原始源修订、文档 ID 与已认证的 AES-256 R5/R6 策略全部保留
签名身份
提供 certificatePEM 与 privateKeyPEM,或提供规范 padding 的 pfxBase64 与 pfxPassword;混用这两种身份形式无效
password 用于认证显式 PDF 输入;已加载上下文保留自己的 PDF 密码,单独的 PFX 密码用于认证签名容器
PFX 解码在 OpenSSL 解析这个有界容器之前先检查字母表、padding 与未用位;私有身份缓冲区在操作结束后清零
签名字段与外观
field 选择一个已有的未签名签名字段;设置 createField: true 可在从零计数的 page 上创建新的完全限定字段名
新字段坐标使用 PDF 用户空间:left、bottom、right、top 默认为 36、36、240、108;已存在的名称不能重复创建
可选的 caption 会生成显式 Unicode 外观,内嵌 TrueType 字体、ToUnicode 映射与原生复杂文字 Shaping;fontFamily 默认 DejaVu Sans,fontSize 默认 12
Profile 与认证
cades 选择 ETSI.CAdES.detached;trustedCAFile 提供显式 CA 策略用于签名时的信任校验,reservedCMSBytes 默认 16384
certificationPermission 为 0 表示审批签名,为 1、2 或 3 表示首文档认证签名;写入器会创建匹配的 DocMDP transform 与 catalog 权限绑定
用户口令权限限制、只读字段、既有签名与认证约束仍由原生文档签名策略强制执行
事务化发布
可移植的 Pascal TimestampToFile API 基于 PDF ByteRange 创建独立的 DocTimeStamp(ETSI.RFC3161),包含其 ESIC 声明、显式 TSA 信任与 CRL 策略,以及已认证的 DocMDP/FieldMDP 时间戳例外
这个文档时间戳入口是 Pascal API;下面的 ABI 时间戳 Callback 为既有 sign 任务提供签名时间戳
扩展 ABI 时间戳传输通过同步的调用方自有 Callback 提供真实 RFC 3161 响应,带有界响应字节数、共享取消与显式 TSA 信任/吊销策略
输出与结果 Callback 收到的是完整就绪的签名;在 Callback 发布之前,ABI 会重新加载候选结果以校验已签名文档上下文
只有发布成功才会替换已加载上下文;身份无效、字段创建失败、预算耗尽、取消或 Callback 失败都保留之前的文档及其字段树
输出 Callback 由调用方持有,后续 Callback 失败时前面的字节可能已被消费;需要外部回滚的调用方必须自行暂存这些字节
验收
Linux FPC 3.2.2 与 3.3.1 各自通过 270 个真实 ctypes 断言、228 项独立的 PDF/图像/安全/CMS 检查、33 个 C ABI 断言以及 80 个并发共享句柄操作
独立检查会认证 AES ID 与安全策略、用 OpenSSL 校验 CMS 与 CAdES、拒绝被篡改的内容、检查认证 transform 与内嵌外观字体,并验证实际可见签名像素