签名包含嵌入的时间戳记,但无法验证

问题描述 投票:2回答:2

我刚刚在我的pdf中添加了时间戳。签名有效。时间戳记令牌也正确(我已经检查过)。但是adobe读者告诉我“签名包含嵌入式时间戳,但无法验证”。

“在此处输入图像描述”

AttributeTable unsigned = signerInformation.getUnsignedAttributes();
Hashtable<ASN1ObjectIdentifier, Attribute> unsignedAttrHash = null;
if (unsigned == null) {
    unsignedAttrHash = new Hashtable<ASN1ObjectIdentifier, Attribute>();
} else {
    unsignedAttrHash = signerInformation.getUnsignedAttributes().toHashtable();
}

unsignedAttrHash.put(PKCSObjectIdentifiers.id_aa_signatureTimeStampToken, signatureTimeStamp);

SignerInformation newSignertInformation = SignerInformation.replaceUnsignedAttributes(si, new AttributeTable(unsignedAttrHash));

我找到this code at stackowerflow. ,它起作用了。这是正确的代码。最后,我有了新的SignerInformationStore和新的CMS签名数据,像这样

CMSSignedData.replaceSigners(oldCMSSignedData, newSignerStore);

但是也许我的PDF中缺少某些内容?证书还是类似的东西?

that's sample pdf

pdf digital-signature bouncycastle pdfbox adobe-reader
2个回答
2
投票

签名时间戳中的消息标记似乎不正确。在此消息印记中应该具有签名值的SHA256。

签名值的SHA256:1b4532052d612ca32ae96b9a8e7aa6d64ae6c69dc00e1b7b31394ac3b54c4049]

时间戳记令牌中的消息标记:E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855

希望这会有所帮助

Moez


0
投票

嗨,我对此有相同的问题,我理解您的意思,但是我不知道如何在SHA256中使用SHA256对签名值进行哈希处理,我在项目中使用pdf文档对SHA256进行哈希处理,然后使用Adobe软件验证签名注意到时间戳证书不可用,希望给我一些帮助,非常感谢!

© www.soinside.com 2019 - 2024. All rights reserved.