J'essaie d'obtenir la clé publique d'un certificat en utilisant la méthode:
FileInputStream fin = new FileInputStream("PathToCertificate");
CertificateFactory f = CertificateFactory.getInstance("X.509");
X509Certificate certificate = (X509Certificate)f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();
mais je reçois l'erreur suivante:
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)
Quelqu'un sait-il de quoi il s'agit?
Merci d'avance
Vous avez importé la mauvaise classe pour X509Certificate
.
Vous recherchez probablement Java.security.cert.X509Certificate
ne pas codec.x509.X509Certificate
.
X509Certificate certificate = (X509Certificate)f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();
puisque vous ne retirez que la clé publique, vous pouvez utiliser la classe de certificat. La classe d'usine décidera du type de certificat à retourner.
Certificate certificate = f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();
Si vous devez convertir cela pour une autre raison, vérifiez vos importations et modifiez-le, le certificat X509 devrait provenir de javax.security.cert