私は現在、Androidでデジタル署名アプリを開発しています。
しかし、Eclipseが次のメッセージを表示するため、apkファイルを作成できませんでした
[2013-01-27 20:43:25-BlowfishCipher] Dx予期しないトップレベルの例外: java.lang.IllegalArgumentException:すでに追加されています:Lorg / bouncycastle / Mozilla / SignedPublicKeyAndChallenge;
[2013-01-27 20:43:25-BlowfishCipher] Dx at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)[2013-01-27 20:43:25-BlowfishCipher] com.android.dx.dex.file.DexFile.add(DexFile.java:163)のDx
エラーメッセージが重複したjarファイルを示していることは知っていますが、重複したjar(Lorg / bouncycastle / Mozilla / SignedPublicKeyAndChallenge;)が弾力のあるcaslteライブラリのコアファイルであるため、解決方法がわかりません。
次のJavaコードは構文エラーを示しませんが、java.lang.IllegalArgumentExceptionが発生します:すでに追加された例外
package exam.blowfishcipher;
import java.io.FileWriter;
import java.io.OutputStreamWriter;
import java.security.KeyPair;
import java.security.SecureRandom;
import javax.security.auth.x500.X500Principal;
import org.bouncycastle.jce.PKCS10CertificationRequest;
import org.bouncycastle.openssl.PEMWriter;
import android.os.Environment;
import chapter6.PKCS10ExtensionExample;
public class PKCS10Generater
{
public static PKCS10CertificationRequest generateRequest(
KeyPair pair)
throws Exception
{
return new PKCS10CertificationRequest(
"SHA256withRSA",
new X500Principal("CN=Test CA Certificate"),
//new X500Principal("CN=end"),
pair.getPublic(),
null,
pair.getPrivate());
}
public static void pemEncodeToFile(String filename, Object obj, char[] password) throws Exception{
PEMWriter pw = new PEMWriter(new FileWriter(filename));
if (password != null && password.length > 0) {
pw.writeObject(obj, "DESEDE", password, new SecureRandom());
} else {
pw.writeObject(obj);
}
pw.flush();
pw.close();
}
public static void reqGen() throws Exception
{
//create the keys
/*
KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC");
//KeyPairGenerator kpGen = KeyPairGenerator.getInstance()
kpGen.initialize(512, chapter4.Utils.createFixedRandom());
KeyPair pair=kpGen.generateKeyPair();
*/
//PKCS10CertificationRequest request = generateRequest(pair);
KeyPair pair = chapter8.Utils.generateRSAKeyPair();
PKCS10CertificationRequest request = PKCS 10ExtensionExample.generateRequest(pair);
pemEncodeToFile(Environment.getExternalStorageDirectory()+"pkcs10.req", request, null);
PEMWriter pemWrt = new PEMWriter( new OutputStreamWriter(System.out));
pemWrt.writeObject(request);
pemWrt.close();
}
}