不使用 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 (将#修改为@)