2016-11-04 3 views
3

API24でこのKeyPairGeneratorSpecオブジェクトを使用している場合、クラスが機能します。 KeyPairGeneratorSpecとして、API 18から利用可能であるべき、私は理解していないKeyPairGeneratorSpecがAPI上でInvalidAlgorithmParameterExceptionをスローするのはなぜですか?

java.security.InvalidAlgorithmParameterException: Only RSAKeyGenParameterSpec supported 

KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(this) 
        .setAlias(KEY_ALIAS) 
        .setSubject(new X500Principal("CN=" + KEY_ALIAS)) 
        .setSerialNumber(BigInteger.TEN) 
        .setStartDate(start.getTime()) 
        .setEndDate(end.getTime()) 
        .build(); 
      KeyPairGenerator kpg = KeyPairGenerator.getInstance(RSA); 
      kpg.initialize(spec); 
      keyPair = kpg.generateKeyPair(); 

24より低いのコンパイル、私はこのエラーを取得しますか?

+0

同じ問題ここでは、これを修正する(エレガントな)方法を見つけましたか? – Xvolks

+1

@Xvolks私はそれをどのように修正したのかよく覚えていません。このパラメータをgetInstanceメソッドに追加してみることはできますか? :KeyPairGenerator kpg = KeyPairGenerator.getInstance(RSA、ANDROID_KEYSTORE);プライベート静的最終文字列ANDROID_KEYSTORE = "AndroidKeyStore"; – estoke

答えて

1

Nexus 5X(API 24)は問題ありませんが、Pixelエミュレータ(API 23)では「RSAKeyGenParameterSpecのみサポート」例外が発生していました。

@estokeは、上記のように修正がKeyPairGeneratorののgetInstanceへの呼び出しの2番目のパラメータとして「AndroidKeyStore」を追加したことを確認することができます:

すなわち:

KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");

関連する問題