gpt4 book ai didi

android - 如何重现或解决 KeyStoreException?

转载 作者:行者123 更新时间:2023-12-04 23:44:54 29 4
gpt4 key购买 nike

使用下一个描述获取崩溃:

Caused by java.security.UnrecoverableKeyException: Failed to obtainX.509 form of public keyat android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStorePublicKeyFromKeystore(AndroidKeyStoreProvider.java:263)at android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStoreKeyPairFromKeystore(AndroidKeyStoreProvider.java:303)at android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStorePrivateKeyFromKeystore(AndroidKeyStoreProvider.java:324)at android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStoreKeyFromKeystore(AndroidKeyStoreProvider.java:388)at android.security.keystore.AndroidKeyStoreSpi.engineGetKey(AndroidKeyStoreSpi.java:105)at java.security.KeyStore.getKey(KeyStore.java:1062)at com.mandarine.sai.sdk.tools.keystore.KeyStoreManager.getKeyPair(KeyStoreManager.java:117)at com.mandarine.sai.sdk.tools.keystore.KeyStoreManager.deleteKeyPairs(KeyStoreManager.java:222)at com.mandarine.sai.features.authorizations.common.ConnectionKeyBuilderKt.collectConnectionsAndKeys(ConnectionKeyBuilderKt.java:73)at com.mandarine.sai.features.authorizations.common.ConnectionKeyBuilderKt.collectConnectionsAndKeys(ConnectionKeyBuilderKt.java:41)at com.mandarine.sai.features.authorizations.list.AuthorizationsListViewModel.(AuthorizationsListViewModel.java:79)at com.mandarine.sai.app.ViewModelsFactory.create(ViewModelsFactory.java:102)


KeyStoreException:无效的 key blob

Caused by android.security.KeyStoreException: Invalid key blobat android.security.KeyStore.getKeyStoreException(KeyStore.java:1301)at android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStorePublicKeyFromKeystore(AndroidKeyStoreProvider.java:265)at android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStoreKeyPairFromKeystore(AndroidKeyStoreProvider.java:303)at android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStorePrivateKeyFromKeystore(AndroidKeyStoreProvider.java:324)at android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStoreKeyFromKeystore(AndroidKeyStoreProvider.java:388)at android.security.keystore.AndroidKeyStoreSpi.engineGetKey(AndroidKeyStoreSpi.java:105)at java.security.KeyStore.getKey(KeyStore.java:1062)at com.mandarine.sai.sdk.tools.keystore.KeyStoreManager.getKeyPair(KeyStoreManager.java:117)at com.mandarine.sai.sdk.tools.keystore.KeyStoreManager.deleteKeyPairs(KeyStoreManager.java:222)at com.mandarine.sai.features.authorizations.common.ConnectionKeyBuilderKt.collectConnectionsAndKeys(ConnectionKeyBuilderKt.java:73)at com.mandarine.sai.features.authorizations.common.ConnectionKeyBuilderKt.collectConnectionsAndKeys(ConnectionKeyBuilderKt.java:41)at com.mandarine.sai.features.authorizations.list.AuthorizationsListViewModel.(AuthorizationsListViewModel.java:79)at com.mandarine.sai.app.ViewModelsFactory.create(ViewModelsFactory.java:102)at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:187)at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150)at com.mandarine.sai.features.authorizations.list.AuthorizationsListFragment.setupViewModel(AuthorizationsListFragment.java:119)at com.mandarine.sai.features.authorizations.list.AuthorizationsListFragment.onCreate(AuthorizationsListFragment.java:65)at androidx.fragment.app.Fragment.performCreate(Fragment.java:2684)


这是代码:
fun collectConnectionsAndKeys(
repository: ConnectionsRepositoryAbs,
keyStoreManager: KeyStoreManagerAbs
): Map<ConnectionID, ConnectionAndKey> {
return repository.getAllActiveConnections().mapNotNull {
it.getPrivateKeyForConnection(keyStoreManager)
}.toMap()
}




/**
* Get related private key for connection
*
* @param connection Connection
* @return ConnectionAndKey
*/
override fun createConnectionAndKeyModel(connection: ConnectionAbs): ConnectionAndKey? {
return getKeyPair(connection.guid)?.private?.let { key ->
ConnectionAndKey(connection, key)
}
}

/**
* Get RSA key pair by the given alias
*
* @param alias - the alias name
* @return KeyPair object
*/
override fun getKeyPair(alias: String?): KeyPair? {
val keyAlias = alias ?: return null
val store = androidKeyStore ?: return null
return (store.getKey(keyAlias, null) as? PrivateKey)?.let { privateKey ->
val publicKey: PublicKey? = store.getCertificate(keyAlias).publicKey
KeyPair(publicKey, privateKey)
}
}
更新 :
所以我写了这样的东西:
override fun getKeyPair(alias: String?): KeyPair? {
return try {
val keyAlias = alias ?: return null
val store = androidKeyStore ?: return null
(store.getKey(keyAlias, null) as? PrivateKey)?.let { privateKey ->
val publicKey: PublicKey? = store.getCertificate(keyAlias).publicKey
KeyPair(publicKey, privateKey)
}
} catch (e: UnrecoverableKeyException) {
null
} catch (e: Exception) {
Timber.e(e)
null
}
}
但我不明白为什么我的 android keystore 目前在我的 XIAOMI 手机上被阻止?
我见过类似的问题 herehere ,但从 keystore 中删除 key 不是我的解决方案。

最佳答案

尝试输入您的密码而不是从 ide 自动保存,这是一个已知错误

关于android - 如何重现或解决 KeyStoreException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68738332/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com