我的应用是minSDK 15 - 所以我想我可以直接使用BouncyCastle。不幸的是我收到NoSuchAlgorithmException。我必须使用SpongyCastle吗? lib在JVM应用程序中运行良好 - 但在android上失败。
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)
答案 0 :(得分:4)
但是Android包含缩短版的Bouncycastle,而且没有完全支持ECDSA。您可以在链接中看到不支持算法KeyPairGenerator/ECDSA
,这是生成以太坊密钥所必需的算法。
您不能直接包含bouncycastle库,因为与包名org.bouncycastle
存在冲突。我建议在你的项目中加入spongycastle,它是Android org.spongycastle
的bouncycastle的重新打包版本。
新的Android版本已经解决了包名冲突,但如果您的目标是旧版本,那么您需要确保使用哪个加密提供程序。