ECDH と EL Gamal を実装するために Android で BouncyCastle を使用しようとしています。bouncycastle jar ファイル (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());
Androidでは、コンピューターで正常に実行されている間、ECアルゴリズムを取得できません。問題ありません。
多くの弾むキャッスルクラス用にコンパイルすると、次の2つのエラーも発生します。
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;' を検証していません: 複数の定義
私は何を間違っていますか?