我有一个 X509 CRL 列表。我需要以某种方式识别其中一些。现在我使用发行人来做到这一点:
for(var crl: List<X509CRL> crls){
String issuer = c.getIssuerX500Principal().getName();
if(issuer.contains("searchString"))
result.add(crl);
}
但是必须有一个更好的方法来使用 CRL 文件格式的知识来做到这一点,也许可以通过比较公钥或类似的东西,但我对 X509CRL 不太了解。有人可以帮我吗?
最佳答案
如果您有权访问每个证书的公钥,则可以使用 verify(PublicKey key)
方法来验证 CRL 是否是使用与给定公钥对应的私钥进行签名的.
如果 key 不正确,它应该抛出 InvalidKeyException
,因此用 try-catch block 包围它,如下所示:
try {
crl.verify(<public_key>)
} catch(InvalidKeyException e) {
// handle exception
}
另请参阅:
关于java - 在 X509CRL 列表中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73648800/