Ich versuche, einen privaten Schlüssel aus dem Android Systemspeicher mit folgendem Code verwenden zu importieren:Wie private Schlüssel von Android Speichern
PrivateKey privateKey = KeyChain.getPrivateKey(activity, alias);
wo alias
KeyChain.choosePrivateKeyAlias()
Methode abgerufen wird. KeyChain.getPrivateKey
gibt null
nicht zurück, aber PrivateKey-Objekt enthält falschen Schlüssel (alle seine signifikanten Felder sind null
). Ich dachte, dass der Schlüssel nicht exportierbar ist und versucht, es in den nächsten Code zu verwenden:
Cipher rsa;
rsa = Cipher.getInstance("RSA");
rsa.init(Cipher.ENCRYPT_MODE, privateKey);
byte[] enc = rsa.doFinal(str.getBytes());
bekam aber Nullpointer, die von BouncyCastle Einbauten kommt.
Das Zertifikat mit dem Schlüssel wurden aus einer PFX-Datei mit Android-Standard laden von der Speicherkarte Funktion importiert.
Was mache ich falsch?
UPD: Ich habe versucht, das gleiche mit verschiedenen RSA-Zertifikate zu tun, und das Ergebnis ist das gleiche :(
Ist privateKey nicht null ? –
Welches Android OS verwenden Sie? Checkout (https://code.google.com/p/ics-openvpn/source/browse/src/de/blinkt/openvpn/VpnProfile.java?r=77fc897870655adb63d53a72c72ee3e80b646d5a#403) für Beispiel Verwendung von KeyChain.getPrivateKey() –
Ein Zertifikat enthält normalerweise nicht den privaten Schlüssel. – Henry