Sto cercando di importare una chiave privata da stoccaggio sistema Android utilizzando il codice seguente:Come utilizzare le chiavi private da stoccaggio Android
PrivateKey privateKey = KeyChain.getPrivateKey(activity, alias);
dove alias
viene recuperato utilizzando KeyChain.choosePrivateKeyAlias()
metodo. KeyChain.getPrivateKey
non restituisce null
ma l'oggetto PrivateKey contiene chiavi errate (tutti i campi significativi sono null
). Ho pensato che la chiave non è esportabile e provato ad usarlo nel codice seguente:
Cipher rsa;
rsa = Cipher.getInstance("RSA");
rsa.init(Cipher.ENCRYPT_MODE, privateKey);
byte[] enc = rsa.doFinal(str.getBytes());
ma ho ottenuto NullPointerException che viene da interni BouncyCastle.
Il certificato con la chiave è stato importato da un file PFX utilizzando lo standard Android carico dalla scheda di memoria.
Cosa sto facendo male?
UPD: ho cercato di fare lo stesso con diversi certificati RSA e il risultato è lo stesso :(
È PrivateKey non nullo ? –
quale sistema operativo Android stai utilizzando? Checkout (https://code.google.com/p/ics-openvpn/source/browse/src/de/blinkt/openvpn/VpnProfile.java?r=77fc897870655adb63d53a72c72ee3e80b646d5a#403) per Esempio di utilizzo di KeyChain.getPrivateKey() –
Un certificato normalmente non contiene la chiave privata. – Henry