我正在开发基于Java的许可项目。我有一个数字证书文件和生成签名的数据。是否有一些API或手段从这些信息中获取公钥?基本上来自数据和数字证书信息的公钥。从数字签名获取公钥
1
A
回答
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();
一旦你有公钥,你可以用它来验证签名。
这是你想要的吗?
0
证书必须包含对用于验证数据的密钥ID的引用。从这个密钥中,应该能够通过提供它的id来联系相应的证书颁发机构并获得公钥。它也可以从公共存储库中获得。
证书颁发机构的ID也应出现在此证书上。
确实有API可用,但问题是,您使用哪种框架进行数字签名?你有它的名字吗?你知道证书类型吗?
2
如果数字签名的格式为PKCS#7 - 而非已分离,则发件人可能已将该证书作为数字签名的一部分包含在内。
您将被要求解析签名以获取证书。
1
Bouncy Castle API有一个SignedData
类,它有一个获取证书的方法。
相关问题
- 1. 用公钥数字签名
- 2. 从RSACryptoServiceProvider获取公钥?
- 3. 从证书获取公钥/私钥
- 4. 如何从cacert.pem获取公钥/私钥
- 5. OpenSAML C++签名验证:从证书中读取公共密钥
- 6. 获取Java中数字签名的私钥
- 7. 如何从公钥私钥对检索Facebook的签名哈希?
- 8. Java使用公钥验证xml数字签名
- 9. 在iText中应用数字签名的公钥
- 10. 使用数字签名的公用私钥
- 11. 使用iOS中的公钥验证数字签名
- 12. 如何验证给定散列和公钥的数字签名?
- 13. 获取模量和publicExponent从Java公钥
- 14. PHP:从证书获取公钥ID。
- 15. 从证书获取Sha256公钥
- 16. 获取平台签名密钥
- 17. 如何获取黑莓签名密钥?
- 18. 在PDF上应用数字签名(包括公钥 - 私钥概念)
- 19. 如何获取公钥?
- 20. RNCryptor:获取公钥为NSString
- 21. 从密钥获取字符
- 22. Javascript ECDSA获取私钥和公钥?
- 23. 获取X509Certificate2私钥和公钥
- 24. 使用公钥示例签名XML?
- 25. 使用公开密钥签名XML
- 26. C#如何从字节流中获取X509公共密钥
- 27. 从byte []/pem字符串获取公钥 - BouncyCastle C#
- 28. 从RSA公钥提取数据
- 29. 从私钥中提取公钥C#
- 30. 从EVP_PKEY密钥对提取公钥?
对不起,听起来含糊不清。让我澄清一下。我有一个数字签名和生成签名的数据。现在我想验证这个签名。我正在关注此教程 - – user496934 2011-06-13 12:59:08
http://download.oracle.com/javase/tutorial/security/apisign/versig.html。但是,我没有所需的公钥。有什么办法可以解决这个问题吗? – user496934 2011-06-13 12:59:57
签名不存储签名证书的信息。您还需要拥有该证书。这不是问题,但由于签名证书是公共文档,因此您应该拥有该证书 – Cratylus 2011-06-13 13:09:57