2016-11-04 2 views
3

Wenn ich dieses KeyPairGeneratorSpec-Objekt in API 24 verwende, funktioniert meine Klasse.Warum KeyPairGeneratorSpec InvalidAlgorithmParameterException auf API wirft <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(); 

Beim Kompilieren auf niedriger als 24 ist, bekomme ich diesen Fehler:

java.security.InvalidAlgorithmParameterException: Only RSAKeyGenParameterSpec supported 

Ich verstehe nicht, wie KeyPairGeneratorSpec sollte von api 18 zur Verfügung steht?

+0

Die gleiche Problem hier, Hast du einen (eleganten) Weg gefunden, das zu beheben? – Xvolks

+1

@Xvolks Ich erinnere mich nicht gut, wie ich es behoben habe, können Sie versuchen, diesen Parameter zur getInstance-Methode hinzuzufügen? : KeyPairGenerator kpg = KeyPairGenerator.getInstance (RSA, ANDROID_KEYSTORE); private statische letzte Zeichenfolge ANDROID_KEYSTORE = "AndroidKeyStore"; – estoke

Antwort

1

Hatte dieses Problem früher heute auch mit dem Pixel-Emulator (API 23) auslösen eine "Only RSAKeyGenParameterSpec unterstützt" Ausnahme, während ein Nexus 5X (API 24) in Ordnung war.

kann bestätigen, dass das Update als zweiten Parameter an den Aufruf von getInstance auf KeyPairGenerator hinzufügen 'AndroidKeyStore' war als @estoke oben erwähnt:

dh:

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

Verwandte Themen