php pdf 加密 签名 时间戳,在现有PDF签名上添加签名时间戳

我假设您指的是添加PADES-5标准中定义的"document security store"和"document-level timestamp"(RFC 3161) . 这在section 5.4 of my book中有解释 .

这是一个可以添加两者的方法的示例:

public void addLtv(

String src, String dest,

OcspClient ocsp, CrlClient crl, TSAClient tsa)

throws IOException, DocumentException, GeneralSecurityException {

PdfReader r = new PdfReader(src);

FileOutputStream fos = new FileOutputStream(dest);

PdfStamper stp = PdfStamper.createSignature(r, fos, '\0', null, true);

LtvVerification v = stp.getLtvVerification();

AcroFields fields = stp.getAcroFields();

List names = fields.getSignatureNames();

String sigName = names.get(names.size() - 1);

PdfPKCS7 pkcs7 = fields.verifySignature(sigName);

if (pkcs7.isTsp())

System.out.println("TIMESTAMP!");

for (String name : names) {

v.addVerification(name, ocsp, crl,

LtvVerification.CertificateOption.WHOLE_CHAIN,

LtvVerification.Level.OCSP_CRL,

LtvVerification.CertificateInclusion.NO);

}

PdfSignatureAppearance sap = stp.getSignatureAppearance();

LtvTimestamp.timestamp(sap, tsa, null);

}

请注意,如果添加的最后一个签名是文档级时间戳,则此方法会将"TIMESTAMP"写入 System.out .

Important: 在回答了这个问题之后,我看到了mkl的评论:之后添加撤销信息只能使用超出当前PDF标准I SO 32000-1的机制,例如: PAdES第4部分 . 我的答案显然假设您正在讨论使用PAdES标准应用的签名 . 也许这在我从"I assume"开头的第一句话中并不清楚 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值