问题描述
当我在没有 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 (将#修改为@)