gpt4 book ai didi

java - Bouncy CaSTLe 我无法获得所有证书

转载 作者:行者123 更新时间:2023-11-29 08:52:13 26 4
gpt4 key购买 nike

我正在尝试从 smime.p7s 文件中读取证书,证书链是:

Baltimora Cyber​​ Trust --> DigitPA --> Aruba PEC

因此,当我尝试提取时,我只检索到最后两个证书,最后一个类似主题和第一个类似颁发者。我错了什么?

代码:

private List<CertificateInfo> reading(ASN1InputStream asn1Stream) throws IOException, CMSException, CertificateException {
ArrayList<CertificateInfo> infos = new ArrayList<CertificateInfo>();
ASN1Primitive obj = asn1Stream.readObject();
ContentInfo contentInfo = ContentInfo.getInstance(obj);
CMSSignedData cms = new CMSSignedData(contentInfo);
JcaX509CertificateConverter converter = new JcaX509CertificateConverter().setProvider(BouncyCastleProvider.PROVIDER_NAME);
Store store = cms.getCertificates();
SignerInformationStore signersInfoStore = cms.getSignerInfos();
Collection<SignerInformation> signers = signersInfoStore.getSigners();
logger.debug("signers num [" + signers.size() + "]");
for (SignerInformation si : signers) {
SignerId sid = si.getSID();
Collection<X509CertificateHolder> holders = store.getMatches(sid);
logger.debug("holders num [" + holders.size() + "]");
for (X509CertificateHolder certholder : holders) {
X509Certificate cert = converter.getCertificate(certholder);
logger.debug("Issuer [" + cert.getPublicKey() + "]");
CertificateInfo certInfo = util.parse(cert);
infos.add(certInfo);
}
}
return infos;
}

我正在使用这些充气城堡 jar 作为依赖:

        <dependency>
<groupId>bouncycastle</groupId>
<artifactId>bcprov-jdk15</artifactId>
<version>150</version>
</dependency>
<dependency>
<groupId>bouncycastle</groupId>
<artifactId>bcmail-jdk15</artifactId>
<version>150</version>
</dependency>
<dependency>
<groupId>bouncycastle</groupId>
<artifactId>bcpg-jdk15</artifactId>
<version>150</version>
</dependency>
<dependency>
<groupId>bouncycastle</groupId>
<artifactId>bcpkix-jdk15</artifactId>
<version>150</version>
</dependency>

提前致谢。

最佳答案

应该没什么问题。 PKI 以树状结构工作。使用 DigitPA 可以信任 Aruba PEC。但是您如何信任 DigitPA?最常见的方法是将根证书存储在信任库中。这个信任库是例如由应用程序分发(如 Web 浏览器中的信任库)。

现在,如果 Baltimora Cyber​​ Trust 已经在信任库中,则无需在 PKCS#7 容器中发送它。没有它也可以构建到可信根的证书链。

因此,您要么直接从信任库中读取证书,要么从为验证而创建的证书链中检索根证书。

关于java - Bouncy CaSTLe 我无法获得所有证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22202771/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com