如何解决不使用 adb 时出现 Android KeyStore Unknown 错误
当我在没有 adb/电缆连接到我的电脑的情况下使用应用程序时,我很难让我的代码运行。 我试图找到我可以在 googles pixel 4a StrongBox 芯片中存储的最大数量的密钥。所以我的代码看起来像这样:
do {
val alias = generateTestKeyPair(kPairGenerator)
checkGeneratedKeyAvailable(alias,fwriter)
Log.i(
TAG,"challenge: generated: ${result} keys (${result * keySize} bits / ${result * keySize / 8} bytes)"
)
if (result % 10 == 0) { // Check every 10 generated keys to ensure older keys are still in StrongBox
val validateRandomSignature = validateRandomSignature(fwriter)
if (!validateRandomSignature)
throw IllegalStateException("Signature of random Key can not be validated. -> Key not found??")
}
} while (true)
生成测试密钥对:
private fun generateTestKeyPair(kPairGenerator: KeyPairGenerator): String {
val parameterSpec = KeyGenParameterSpec.Builder(
"max-key-aes-${++result}",KeyProperties.PURPOSE_SIGN or KeyProperties.PURPOSE_VERIFY
).run {
setKeySize(keySize)
// setKeyValidityEnd(
// Date.from(
// Instant.now().plus(10,ChronoUnit.HOURS)
// )
// )
setDigests(KeyProperties.DIGEST_SHA256)
setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PKCS1)
setIsStrongBoxBacked(true)
build()
}
kPairGenerator.initialize(parameterSpec)
kPairGenerator.genKeyPair()
return parameterSpec.keystoreAlias
}
我的问题是,在设备上的循环中生成 1-3 个密钥后,我总是收到此错误/异常,而未将其连接到 PC/使用 adb:
ERROR: java.security.ProviderException: Failed to generate key pair
at android.security.keystore.AndroidKeyStoreKeyPairGeneratorSpi.generateKeystoreKeyPair(AndroidKeyStoreKeyPairGeneratorSpi.java:515)
at android.security.keystore.AndroidKeyStoreKeyPairGeneratorSpi.generateKeyPair(AndroidKeyStoreKeyPairGeneratorSpi.java:471)
at java.security.KeyPairGenerator$Delegate.generateKeyPair(KeyPairGenerator.java:727)
at java.security.KeyPairGenerator.genKeyPair(KeyPairGenerator.java:497)
at de.seemo.tpm.experiment.implementation.challenge.MaxKeysStrongboxChallenge.generateTestKeyPair(MaxKeysStrongboxChallenge.kt:105)
at de.seemo.tpm.experiment.implementation.challenge.MaxKeysStrongboxChallenge.challenge(MaxKeysStrongboxChallenge.kt:40)
at de.seemo.tpm.experiment.implementation.KeyStoreExperiment.run(KeyStoreExperiment.kt:33)
at de.seemo.tpm.experiment.ExperimentManager.run(ExperimentManager.kt:18)
at de.seemo.tpm.experiment.ExperimentViewModel$startTests$1.invokeSuspend(ExperimentViewModel.kt:42)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: android.security.KeyStoreException: Unknown error
at android.security.KeyStore.getKeyStoreException(KeyStore.java:1301)
... 15 more
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。