求助, golang 签名数据放入数字信封问题

2019-10-09 16:04:05 +08:00
 jihw007

之前在 java 用 bouncycastle 库对数据进行 SHA1withRSA 签名后,将签名放置到数字信封里。 现在要用 go 重写这段代码,但是谷歌好久也找不到该如何实现,求助该如何实现。

java 代码如下:

            CertDTO certDto = CertUtil.getCertInfo(password, cert);
            X509Certificate cerx509 = certDto.getCert()[0];
            List<X509Certificate> certList = new ArrayList();
            CMSTypedData msg = new CMSProcessableByteArray(data);
            certList.add(cerx509);
            Store certs = new JcaCertStore(certList);
            CMSSignedDataGenerator gen = new CMSSignedDataGenerator();
            ContentSigner sha1Signer = (new JcaContentSignerBuilder("SHA1withRSA"))
                .setProvider("BC").build(certDto.getPriKey());
            gen.addSignerInfoGenerator((new JcaSignerInfoGeneratorBuilder((
                new JcaDigestCalculatorProviderBuilder())
                .setProvider("BC").build())).build(sha1Signer, cerx509));
            gen.addCertificates(certs);
            CMSSignedData sigData = gen.generate(msg, isDetach);
            signedData = sigData.getEncoded();

2798 次点击
所在节点    Go 编程语言
4 条回复
reus
2019-10-09 16:08:37 +08:00
搜“golang SHA1withRSA”不就有了。
jihw007
2019-10-09 16:15:12 +08:00
@reus 进行签名后还需要生成带有签名的数字信封,就是这里卡到了……
zjyl1994
2019-10-09 17:54:43 +08:00
似乎没有数字信封这种通用说法,你可能需要针对他的格式自己拼信封。一般的信封都是消息本体+消息的签名,可能再有点其他字段参与运算。你需要看 java 版怎么封信的实现
lbp0200
2019-10-14 16:59:04 +08:00
生成带有签名的数字信封——应该就是用公钥加密一下,对应的关键词是“golang public private key encryption”

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/607492

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX