如何在签名pdf文件时向证书详细信息添加时间戳属性 [英] How to add Timestamp attribute to certification detail when signing pdf file

查看:16
本文介绍了如何在签名pdf文件时向证书详细信息添加时间戳属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要显示证书中的时间戳属性,如图所示

我应该在签名中设置什么?

这是我添加标志信息的代码:

private SignerInformation signTimeStamp(SignerInformation signer) throws IOException, TSPException {
    AttributeTable unsignedAttributes = signer.getUnsignedAttributes();

    ASN1EncodableVector vector = new ASN1EncodableVector();
    if (unsignedAttributes != null) {
        vector = unsignedAttributes.toASN1EncodableVector();
    }

    byte[] token = this.tsaClient.getTimeStampToken(signer.getSignature());

    ASN1ObjectIdentifier oid = PKCSObjectIdentifiers.id_aa_signatureTimeStampToken;
    ASN1Encodable signatureTimeStamp = new Attribute(oid, new DERSet(ASN1Primitive.fromByteArray(token)));

    vector.add(signatureTimeStamp);
    Attributes signedAttributes = new Attributes(vector);
    // replace unsignedAttributes with the signed once
    return SignerInformation.replaceUnsignedAttributes(signer, new AttributeTable(signedAttributes));
}

推荐答案

汇总评论...

检查您的示例文档,可以清楚地看到您应用的时间戳是正确的。特别是,您应该会看到您在证书查看器对话框屏幕截图中标记的较低消息:

另一方面,您的代码不会影响您是否获得在该屏幕截图中标记的其他条目:

该条目是签名者X.509证书的扩展,其中该证书的颁发者提供时间戳服务的地址,该时间戳服务可用于对由与该证书关联的私钥创建的签名进行时间戳。

因此,条目不一定包含用于创建实际时间戳服务器,它只是一个建议或建议。

因此,如果屏幕截图中连接这两个标记的框声称标记的TSA URL和对安全时间戳时间的引用之间存在某种必然关系,则它是错误的。

这篇关于如何在签名pdf文件时向证书详细信息添加时间戳属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆