我正在使用Java中的Bouncy Castle库来阅读CSR。我需要从CSR中提取公钥信息。我可以看到openssl能够从CSR中提取所需的信息。
我在BouncyCastle找不到任何办法。我已经能够从CSR中读取PKCS10CertificationRequest对象。我已经看到使用SubjectPublicKeyInfo提取公钥的示例。但是代码依赖于公钥算法已经知道的事实。我可以为各种算法参数做一个“instanceof”操作并匹配,但我认为会有更好的东西。我想从CSR本身推导出算法。我试图找到这些信息,但找不到任何与此相关的信息。 谢谢你的帮助。
答案 0 :(得分:2)
解决方案是围绕PKCS10CertificateRequest创建一个新的包装器,如下所示:
JcaPKCS10CertificationRequest jcaCertRequest =
new JcaPKCS10CertificationRequest(pkcs10CertRequest.getEncoded()).setProvider("BC");
此类具有getPublicKey()
方法。
PublicKey publicKey = jcaCertRequest.getPublicKey();