2017-11-12 5 views
0

ich die folgende Fehlermeldung, wenn ich versuche ein X509-Zertifikat zu generieren auf AndroidNPE, wenn sie versuchen, ein Zertifikat zu generieren

java.lang.NullPointerException: Der Versuch, virtuelle Methode ‚java.security.PublicKey Java aufzurufen .security.cert.X509Certificate.getPublicKey()‘auf einer null-Objekt Referenz

Unten ist der Code, den ich dies zu erreichen, verwenden:

  AssetFileDescriptor assetFileDescriptor = this.getAssets().openFd("cert.cer"); 
     FileDescriptor securityCertificate = assetFileDescriptor.getFileDescriptor(); 

     FileInputStream fin = new FileInputStream(securityCertificate); 
     CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); 
     X509Certificate certificate = (X509Certificate) cf.generateCertificate(fin); 

Th e Fehler scheinen auf cf.generateCertificate (fin) zu passieren

+0

Mögliche Duplikat [Was ist eine NullPointerException, und wie kann ich es beheben?] (https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-fix-it) – pvg

+0

Nein, es ist nicht ein Duplikate davon, ich versuchte zu überprüfen, ob die FileInputStream und CertificateFactory, wenn sie null sind, bevor Sie sie verwenden, um das X509 zu generieren, aber sie sind nicht, die Methode generateCertificate() gibt null zurück und das ist nicht meine Methode –

+0

Is cf! = null nach dem Aufruf von CertificateFactory.getInstance()? Sind Sie sicher, dass der Parameter X.509 anstelle von X509 ist? – Juan

Antwort

0

diese Input unter Verwendung anstelle von Fileinputstream zu lösen Managed unterhalb der Code funktioniert gut für mich:

 InputStream inputStream = assetManager.open("cert.cer"); 
     CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); 
     X509Certificate certificate = (X509Certificate) cf.generateCertificate(inputStream); 
Verwandte Themen