Vse*_*lod 9 java eclipse android bouncycastle jce
我正在尝试使用下一代码从Android系统存储中导入私钥:
PrivateKey privateKey = KeyChain.getPrivateKey(activity, alias);
Run Code Online (Sandbox Code Playgroud)
其中alias使用检索KeyChain.choosePrivateKeyAlias()方法.KeyChain.getPrivateKey不返回null但PrivateKey对象包含错误的键(所有重要字段都是null).我认为密钥不可导出,并尝试在下一个代码中使用它:
Cipher rsa;
rsa = Cipher.getInstance("RSA");
rsa.init(Cipher.ENCRYPT_MODE, privateKey);
byte[] enc = rsa.doFinal(str.getBytes());
Run Code Online (Sandbox Code Playgroud)
但得到了来自BouncyCastle内部的NullPointerException.
带有密钥的证书是使用来自存储卡功能的Android标准负载从 PFX文件导入的.
我做错了什么?
UPD:我试过用不同的RSA证书做同样的事情,结果是一样的:(
尝试以下对我来说非常有效的代码:
KeyStore ks;
ks = KeyStore.getInstance("AndroidCAStore");
ks.load(null, null);
keyChain = KeyChain.getCertificateChain(ctx, certificateAlias);
privateKey = KeyChain.getPrivateKey(ctx, certificateAlias);
Run Code Online (Sandbox Code Playgroud)