签名包括嵌入的timeStamp,但无法验证

时间:2013-07-24 15:18:27

标签: pdf digital-signature bouncycastle pdfbox adobe-reader

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

enter image description here

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

1 个答案:

答案 0 :(得分:2)

签名时间戳中的邮件印记似乎不正确。预计在此消息印记中具有签名值的SHA256。

SHA256的签名价值:1b4532052d612ca32ae96b9a8e7aa6d64ae6c69dc00e1b7b31394ac3b54c4049

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

希望这有帮助

Moez