У меня есть 1 java-программа, использующая API-интерфейсы Android Keystore. Мы запускаем эту программу (как программу Java, но не приложение Android), чтобы использовать криптографические операции на плате на базе Android.
Запуск этой программы через студию Android работает нормально, т.е. создает образец приложения (которое внутренне использует API-интерфейсы хранилища ключей через поставщика безопасности AndroidKeystore) и устанавливает этот apk. Но нам нужно запустить эту программу через командную строку, так как реальная программа не будет в формате apk.
Похоже, что Security Provider AndroidKeyStore работает только во время работы с приложением, но не через командную строку.
Пробовал следующие способы:
1) Скомпилил прогу через javac, создал jar и потом конвертировал в dex для запуска через cli
2) создал банку из студии Android, а затем преобразовал в dex для запуска через cli
3) Android-приложение работает как на эмуляторе, так и на плате,
126|u0_a82@msm8916_64:/data/data/berserker.android.apps.sshdroid/home $ dalvikvm -cp apiclient.dex com.example.test_jar.ApiClientAndr>
in api client main
java.security.KeyStoreException: java.security.NoSuchAlgorithmException: KeyStore AndroidKeyStore implementation not found
at java.security.KeyStore.getInstance(KeyStore.java:119)
at com.example.test_jar.ApiClientAndroidKeyStore.main(ApiClientAndroidKeyStore.java:279)
Caused by: java.security.NoSuchAlgorithmException: KeyStore AndroidKeyStore implementation not found
at org.apache.harmony.security.fortress.Engine.notFound(Engine.java:190)
at org.apache.harmony.security.fortress.Engine.getInstance(Engine.java:139)
at java.security.KeyStore.getInstance(KeyStore.java:116)
... 1 more
Ниже приведен список поставщиков безопасности.
1) При работе в эмуляторе/плате
Name: AndroidKeyStoreBCWorkaround, Information:Android KeyStore security provider to work around Bouncy Castle
Name: AndroidOpenSSL, Information: Android's OpenSSL-backed security provider
Name: BC, Information: BouncyCastle Security Provider v1.52
Name: Crypto, Information: HARMONY (SHA1 digest; SecureRandom; SHA1withDSA signature)
Name: HarmonyJSSE, Information: Harmony JSSE Provider
Name: AndroidKeyStore, Information:Android KeyStore security provider
2) При запуске через cli
Name: AndroidOpenSSL, Information: Android's OpenSSL-backed security provider
Name: BC, Information: BouncyCastle Security Provider v1.52
Name: Crypto, Information: HARMONY (SHA1 digest; SecureRandom; SHA1withDSA signature)
Name: HarmonyJSSE, Information: Harmony JSSE Provider