I'm trying to use BouncyCastle with android to implement ECDH and EL
Gamal. I've added the bouncycastle jar file (bcprov-jdk16-144.jar) and
written some code that works with my computers jvm however when I try
and port it to my android application it throws:


java.security.NoSuchAlgorithmException: KeyPairGenerator ECDH
implementation not found


A sample of the code is:


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();


I then wrote a simple program to see what encryption algorithms are
available and ran it on my android emulator and on my computers jvm
the code was:

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());



On android I do not get any of the EC algorithms while ran normally on
my computer it's fine.

I'm also getting the following two errors when compiling for a lot of
the bouncy castle classes:

01-07 17:17:42.548: INFO/dalvikvm(1054): DexOpt: not resolving
ambiguous class 'Lorg/bouncycastle/asn1/ASN1Encodable;'

01-07 17:17:42.548: DEBUG/dalvikvm(1054): DexOpt: not verifying 'Lorg/
bouncycastle/asn1/ess/OtherSigningCertificate;': multiple definitions



One method I tried which has not worked is:

I took the bouncycastle source code and made a new jar with the
package name changed so that I wouldn't get the DexOpt errors, I also
added android.jar before creating the jar so that I wouldn't get the
"Conversion to Dalvik format failed: Unable to execute dex: null"
error when building.

This removed the DexOpt errors and when I ran the code to see what
cryptographic algorithms are allowed it said that El Gamal and ECDH
are available but I still get the same errors and exceptions thrown
when trying my sample code.


What am I doing wrong?
-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to