3

私はAndroid4.1キーチェーンを使用しており、次のコードは4.0で正常に機能しましたが、Nullpointer例外が発生します(暗号は一部の内部属性を読み取ることができません)

privateKey = KeyChain.getPrivateKey(context,mAlias);
byte[] data = // some biary data
Cipher rsasinger = javax.crypto.Cipher.getInstance("RSA/ECB/PKCS1PADDING");
rsasinger.init(Cipher.ENCRYPT_MODE, privkey);

byte[] signed_bytes = rsasinger.doFinal(data);

KeyChainの秘密鍵を不透明なものとして扱い、JavaセキュリティApiで使用しています。KeyChain APIを別の方法で使用する必要がありますか?

4

1 に答える 1

3

さらにデバッグし、Googleのエンジニアから連絡を受けた後(ありがとう!)、AndroidはさまざまなJAVA Cryptoプロバイダーを登録し、OpenSSLプロバイダーのみがキーストアのPrivateKeysを使用できることが判明しました。

しかし、いくつかのハックとそれを使用/system/lib/ssl/engines/libkeystore.soすることで、この問題を回避することが可能になるはずです。

http://code.google.com/p/ics-openvpn/source/browse/srcのhttp://code.google.com/p/ics-openvpn/source/browse/jni/jbcrypto.cppおよびproccessSignJellyBeanを参照してください私のソリューションの/de/blinkt/openvpn/OpenVpnManagementThread.java#446

于 2012-07-08T22:49:01.620 に答える