Ответ 1
У вас есть неправильный класс, импортированный для X509Certificate
.
Вероятно вы ищете java.security.cert.X509Certificate
not codec.x509.X509Certificate
.
Я пытаюсь получить открытый ключ сертификата с помощью метода:
FileInputStream fin = new FileInputStream("PathToCertificate");
CertificateFactory f = CertificateFactory.getInstance("X.509");
X509Certificate certificate = (X509Certificate)f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();
но я получаю следующую ошибку:
Exception in thread "main" java.lang.ClassCastException: sun.security.x509.X509CertImpl cannot be cast to codec.x509.X509Certificate
at sergas_testcertificates.Main.main(Main.java:54)
Кто-нибудь знает, что это за ошибка?
Заранее спасибо
У вас есть неправильный класс, импортированный для X509Certificate
.
Вероятно вы ищете java.security.cert.X509Certificate
not codec.x509.X509Certificate
.
X509Certificate certificate = (X509Certificate)f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();
поскольку вы только вытаскиваете открытый ключ, вы можете использовать класс сертификата. Класс factory определит тип возвращаемого сертификата.
Certificate certificate = f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();
Если вам нужно отдать это по причине antoher, проверьте импорт и измените его, X509Certificate должен поступать из javax.security.cert