为什么KeyPairGeneratorSpec在API上抛出InvalidAlgorithmParameterException< 24

时间:2016-11-04 11:38:55

标签: android android-keystore key-pair

当我在API 24中使用此KeyPairGeneratorSpec对象时,我的课程正常工作。

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时,我收到此错误:

java.security.InvalidAlgorithmParameterException: Only RSAKeyGenParameterSpec supported

我不明白,因为KeyPairGeneratorSpec应该来自api 18?

1 个答案:

答案 0 :(得分:2)

今天早些时候出现了这个问题,Pixel模拟器(API 23)引发了“仅支持RSAKeyGenParameterSpec”异常,而Nexus 5X(API 24)则没问题。

可以确认修复是将'AndroidKeyStore'添加为KeyPairGenerator上对getInstance的调用的第二个参数,如上面提到的@estoke:

即:

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