2017-11-30 20 views
1

私のアプリはminSDK 15です - 私はBouncyCastleを直接使うことができると思いました。残念ながら、私はNoSuchAlgorithmExceptionを取得します。 SpongyCastleを使用する必要がありますか? libはJVMアプリケーションでうまく動作しますが、アンドロイドでは失敗します。このようなアルゴリズムはありません:プロバイダーのECDSA

Caused by: java.security.NoSuchAlgorithmException: no such algorithm: ECDSA for provider BC 
    at sun.security.jca.GetInstance.getService(GetInstance.java:87) 
    at sun.security.jca.GetInstance.getInstance(GetInstance.java:206) 
    at java.security.KeyPairGenerator.getInstance(KeyPairGenerator.java:307) 
    at org.kethereum.crypto.Keys.createSecp256k1KeyPair$crypto(Keys.kt:43) 
    at org.kethereum.crypto.Keys.createEcKeyPair(Keys.kt:51) 
    at org.walleth.data.keystore.KethereumWallethKeyStore.newAddress(KethereumWallethKeyStore.kt:43) 
    at org.walleth.activities.CreateAccountActivity$onCreate$4.onClick(CreateAccountActivity.kt:95) 
    at android.view.View.performClick(View.java:6256) 
    at android.view.View$PerformClick.run(View.java:24701) 
    at android.os.Handler.handleCallback(Handler.java:789) 
    at android.os.Handler.dispatchMessage(Handler.java:98) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6541) 

答えて

1

ECDSAのためのAndroidのサポートはデフォルトの暗号化プロバイダとしてはBouncyCastle(v1.46)を使用して、バージョン4.0以降に導入されました。ブログを参照してくださいhttps://nelenkov.blogspot.com.es/2011/12/using-ecdh-on-android.html?m=1

しかし、AndroidにはBouncycastleの短縮版が含まれており、ECDSAの完全なサポートはありません。このリンクではアルゴリズムKeyPairGenerator/ECDSAがサポートされていないことがわかります。これはエーテルキーを生成するために必要なものです。

パッケージ名org.bouncycastleと競合するため、bouncycastleライブラリを直接含めることはできません。あなたのプロジェクトにスポンジキャスルを含めることをお勧めします。それはAndroid org.spongycastle用のバウンシーキャスルのリパッケージ版です。

新しいアンドロイドバージョンではパッケージ名の競合が解決されましたが、ターゲットが古いバージョンの場合は、どの暗号プロバイダが使用されているかを確認する必要があります。

関連する問題