如何使用充气城堡将证书重新打包到 pkcs #7 证书中?

How do I repackage certificates into pkcs #7 certificate using bouncy castle?

我有根、中间和最终实体证书,我想使用充气城堡将其打包为 pkcs #7 格式。 我该怎么做?

首先,您必须阅读有关 PKCS#7/CMS 的最新 RFC。请点击此RFC Link阅读

现在要完成您的 objective,请使用 bouncycastle。您需要生成 CMSSignedData data. For that, you need to prepare private key and Certificate chain. Here, I am going to assume, you already have those. Now prepare CMSProcessableByteArray.

CMSProcessableByteArray msg = new CMSProcessableByteArray("Hello World".getBytes());

现在,使用证书列表准备商店。

Store certs = new JcaCertStore(certList);

然后声明CMSSignedDataGenerator并添加signerInfo和证书。

CMSSignedDataGenerator gen = new CMSSignedDataGenerator();
gen.addSignerInfoGenerator(new JcaSignerInfoGeneratorBuilder(......));
gen.addCertificates(certs);

然后使用 CMSSignedDataGenerator 和 CMSProcessableByteArray 生成 CMSSignedData。

CMSSignedData cmsData = gen.generate(msg, true);

最后将 CMSSignedData (cmsSignedData.getEncoded()) 的字节数组写入文件扩展名为 .p7b 的位置。打开文件查看证书链。