我正在开发基于Java的许可项目。我有一个数字证书文件和生成签名的数据。是否有一些API或手段从这些信息中获取公钥?基本上公钥来自数据和数字证书信息。
答案 0 :(得分:2)
如果数字签名的格式为PKCS#7 - 不分离,则发件人可能会将证书作为数字签名的一部分包含在内。
您需要解析签名才能获得证书。
答案 1 :(得分:1)
Bouncy Castle API有一个SignedData
类,其中包含获取证书的方法。
答案 2 :(得分:0)
证书必须带有用于验证数据的密钥ID的引用。从此密钥,应该能够联系相应的证书颁发机构并通过提供其ID来获取公钥。它也可以从公共存储库中获得。
证书颁发机构的ID也应出现在此证书上。
有些API可以肯定,但问题是,您使用哪种框架进行数字签名?你有它的名字吗?你知道证书类型吗?
答案 3 :(得分:0)
你的问题很模糊恕我直言。
我有一个数字证书文件和 签名所针对的数据 产生
如果证书文件具有用于验证签名的公钥,则可以使用标准java apis加载它(假设X509证书)。
FileInputStream fin = new FileInputStream("PathToCertificate");
CertificateFactory f = CertificateFactory.getInstance("X.509");
X509Certificate certificate = (X509Certificate)f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();
获得公钥后,您可以使用它来验证签名 这是你想要的吗?