use*_*054 5 pdf timestamp bouncycastle pki rfc3161
我们需要实现我们自己的基于X509证书(当然包括私钥)和RFC 3161的PDF时间戳机制.我已经google了,并且在这里询问SO和正确的解决方案是重新实现TSAClient类为我们在本地进行时间戳(没有在线TSA).但是,除了SecureBlackbox组件之外,我没有找到任何RFC 3161的实现.应该可以使用Bouncy Castle图书馆,但我不知道如何.
你能指点我正确的方向吗?
可以使用Bouncycastle库生成RFC3161时间戳令牌.
首先创建一个TimestampRequest.对于您的情况,它只是摘要算法和摘要值的包装器.
byte[] document = /* ... */
byte[] digest = MessageDigest.getInstance("SHA256").digest(document);
TimeStampRequestGenerator tsReqGen = new TimeStampRequestGenerator();
TimeStampRequest tsReq = tsReqGen.generate(CMSAlgorithm.SHA256, digest);
Run Code Online (Sandbox Code Playgroud)
然后生成令牌
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();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3350 次 |
最近记录: |