我想在证书中显示时间戳属性,如图所示
我应该在签名中设置什么?
这是我添加标志信息的代码:
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 证书的扩展,其中该证书的颁发者提供时间戳服务的地址,该时间戳服务可用于为与该证书关联的私钥创建的签名添加时间戳。
因此,该条目does not必然包含服务器用于创建实际时间戳,它只是一个提议或建议。
因此,如果屏幕截图中连接两个标记的框声称标记的 TSA URL 与安全时间戳时间引用之间存在某种必然关系,那么这是错误的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)