当我在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获得?
最佳答案 今天早些时候这个问题以及Pixel模拟器(API 23)引发了“仅支持RSAKeyGenParameterSpec”异常,而Nexus 5X(API 24)则没问题.
可以确认修复是将’AndroidKeyStore’添加为KeyPairGenerator上调用getInstance的第二个参数,如上面提到的@estoke:
即:
KeyPairGenerator.getInstance(“RSA”,“AndroidKeyStore”);