Я пытаюсь использовать BouncyCastle с Android для реализации ECDH и EL Gamal. Я добавил jar-файл bouncycastle (bcprov-jdk16-144.jar) и написал некоторый код, который работает с моими компьютерами jvm, однако, когда я пытаюсь перенести его в приложение для Android, он выдает:
java.security.NoSuchAlgorithmException: KeyPairGenerator ECDH implementation not found
Пример кода:
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
java.security.KeyPairGenerator keyGen = org.bouncycastle.jce.provider.asymmetric.ec.KeyPairGenerator.getInstance("ECDH", "BC");
ECGenParameterSpec ecSpec = new ECGenParameterSpec("prime192v1");
keyGen.initialize(ecSpec, SecureRandom.getInstance("SHA1PRNG"));
KeyPair pair = keyGen.generateKeyPair();
PublicKey pubk = pair.getPublic();
PrivateKey prik = pair.getPrivate();
Затем я написал простую программу, чтобы увидеть, какие алгоритмы шифрования доступны, и запустил ее на моем эмуляторе Android и на моих компьютерах jvm код был:
Set<Provider.Service> rar = new org.bouncycastle.jce.provider.BouncyCastleProvider().getServices();
Iterator<Provider.Service> ir = rar.iterator();
while(ir.hasNext())
System.out.println(ir.next().getAlgorithm());
На андроиде я не получаю ни одного алгоритма EC, хотя на моем компьютере работает нормально, все нормально.
Я также получаю следующие две ошибки при компиляции для многих классов надувных замков:
01-07 17: 17: 42.548: INFO / dalvikvm (1054): DexOpt: не разрешается неоднозначный класс 'Lorg / bouncycastle / asn1 / ASN1Encodable;'
01-07 17: 17: 42.548: DEBUG / dalvikvm (1054): DexOpt: не проверяется 'Lorg / bouncycastle / asn1 / ess / OtherSigningCertificate;': несколько определений
Что я делаю не так?