2016-11-04 84 views
3

当我在API 24中使用此KeyPairGeneratorSpec对象时,我的类工作正常。为什么KeyPairGeneratorSpec在API中引发InvalidAlgorithmParameterException <24

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?

+0

同样的问题,你找到了一个(优雅)的方法来解决这个问题吗? – Xvolks

+1

@Xvolks我不记得我是如何解决它的,你可以尝试将这个参数添加到getInstance方法吗? :KeyPairGenerator kpg = KeyPairGenerator.getInstance(RSA,ANDROID_KEYSTORE); private static final String ANDROID_KEYSTORE =“AndroidKeyStore”; – estoke

回答

1

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

可以确认的是此修复程序是“AndroidKeyStore”添加第二个参数来调用的getInstance上的KeyPairGenerator如@estoke上面提到的:

即:这里

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

相关问题