2017-10-04 7 views
0

J'essaie de générer une clé privée Elliptic Curve mais je continue d'obtenir cette erreur sur les versions Android 5 et 6. OS ci-dessous est le code pour générer la clé privée avec cryptographie EC .Android: InvalidKeySpecException: routines de courbe elliptique: EC_GROUP_new_by_curve_name: UNKNOWN_GROUP

private static java.security.PrivateKey createPrivateKey(List<PrivateKey> privateKeys, String appInstallationIdentifier) throws Exception { 
    PrivateKey privateKey = getPrivateKeyForActivation(privateKeys); 
    String key = decryptMessage(privateKey.getEncryptedPrivateKey(), appInstallationIdentifier, privateKey.getIv()); 

    key = key.replace("-----BEGIN PRIVATE KEY-----", "") 
      .replace("-----END PRIVATE KEY-----", "") 
      .replaceAll("\\s", ""); 

    byte[] privateKeyFileContent = decode(key); 

    KeyFactory keyFactory = KeyFactory.getInstance("EC"); 
    PKCS8EncodedKeySpec ks = new PKCS8EncodedKeySpec(privateKeyFileContent); 
    return keyFactory.generatePrivate(ks); 
} 

Et voici l'erreur que je reçois sur les versions OS 5 et 6

java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0f06707b:elliptic curve routines:EC_GROUP_new_by_curve_name:UNKNOWN_GROUP 

Toutes les idées pourquoi je reçois cette erreur? De plus, EC est censé être pris en charge à partir du niveau API 11 et plus, donc l'utilisation d'EC ne devrait pas poser de problème.

Répondre

0

Vous devez être prudent lorsque vous présumez quels algorithmes de cryptage sont pris en charge sur un périphérique et à partir de quelle version.

Certains fournisseurs placent même leurs propres versions de fournisseurs de sécurité rendant encore plus de problèmes. Je recommande d'essayer d'installer votre propre fournisseur de sécurité appelé SpongyCastle et si vous croyez que la CE devrait être pris en charge sur ces téléphones, vous pouvez vérifier les algorithmes disponibles comme suggéré ici:

http://mobile.developer.com/ws/android/encrypting-with-android-cryptography-api.html