首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Bouncy城堡构建RFC 3161时间戳

如何使用Bouncy城堡构建RFC 3161时间戳
EN

Stack Overflow用户
提问于 2014-01-27 08:46:44
回答 1查看 4.5K关注 0票数 5

我们需要实现基于X509证书(当然包括私钥)和RFC 3161的PDF时间戳机制。我已经搜索并询问了here on SO,正确的解决方案是重新实现TSAClient类,为我们在本地完成时间戳(没有在线TSA)。然而,除了SecureBlackbox组件之外,我没有找到RFC 3161的任何实现。这应该是有可能的,但我不知道怎么做。

请你指出正确的方向好吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-05 15:05:34

可以使用Bouncy城堡库生成RFC3161时间戳令牌。

首先创建一个TimestampRequest。对于您的情况,它只是摘要算法和摘要值的包装器。

代码语言:javascript
运行
复制
byte[] document = /* ... */
byte[] digest = MessageDigest.getInstance("SHA256").digest(document);
TimeStampRequestGenerator tsReqGen = new TimeStampRequestGenerator();
TimeStampRequest tsReq = tsReqGen.generate(CMSAlgorithm.SHA256, digest);

然后生成令牌

代码语言:javascript
运行
复制
DigestCalculator dgCalc = new JcaDigestCalculatorProviderBuilder().build();
ContentSigner signer = new JcaContentSignerBuilder().build(getPrivateKey());
SignerInfoGenerator siGen = new JcaSignerInfoGeneratorBuilder(new JcaDigestCalculatorProviderBuilder()).build(signer, getCertificate());
ASN1ObjectIdentifier policy = new ASN1ObjectIdentifier("1.2.3.4.5.6"); // Replace by your timestamping policy OID
TimeStampTokenGenerator tstGen = new TimeStampTokenGenerator(siGen, dgCalc, policy);
/* Set the parameters e.g. set the accuracy or include the signing certificate */
TimeStampToken tst = tstGen.generate(tsReq, generateSerialNumber(), new Date());
byte[] encoding = tst.getEncoded();
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21376359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档