安卓密钥库安全密钥导入 - 获取KM_ERROR_UNKNOWN_ERROR

3
我最近在开发一个关于 Android 的“安全密钥导入”功能的解决方案(详细信息),但遇到了问题。
我按照文档中的步骤进行操作。在最后一步中,调用keyStore.setEntry(...)时,我收到一个错误代码为-1000的错误,该错误代码是KM_ERROR_UNKNOWN_ERROR错误代码)。我真的不知道从这里怎么继续了。有什么想法吗?
一些相关的代码:
// (app)    send attestation challenge request to server
// (server) generate and send challenge to the app
// (app)    use challenge to generate a PURPOSE_WRAP_KEY key pair
// (app)    get certificate and send to server
// (server) do wrap operations and return a blob (ASN.1 sequence as required in docs)
// (app) code below

byte[] wrappedKeySequence = response.body().getSequenceAsBytes();
AlgorithmParameterSpec spec = new KeyGenParameterSpec.Builder(WRAP_KEY_ALIAS, KeyProperties.PURPOSE_WRAP_KEY)
                .setDigests(KeyProperties.DIGEST_SHA256)
                .build();
KeyStore.Entry wrappedKeyEntry = new WrappedKeyEntry(wrappedKeySequence, WRAP_KEY_ALIAS, WRAP_ALGORITHM, spec);
String keyAlias = "SECRET_KEY";
keyStore.setEntry(keyAlias, wrappedKeyEntry, null);

更多随机细节:

  • 我正在尝试导入一个AES128密钥
  • 它仅用于加密数据
  • 以符合文档要求,目标 API 版本为 28 及以上

再次感谢,任何帮助都将不胜感激。

谢谢, G.

1个回答

1

更新:

我找到了这个特定错误的原因,但是又遇到了另一个错误。

具体来说,我使用了标签403,它定义了MIN_SECONDS_BETWEEN_OPS。由于它在types.hal文件中,人们会期望它在任何地方都能得到实现或有效,但似乎这并不是事实。然而,我只在一部三星手机上进行测试,所以它可能被其他制造商实现,甚至在其他三星手机上也是如此。

无论如何,下一个错误是INVALID_ARGUMENT (-38),不像其名称所示,它同样晦涩难懂。文档说应该出现在RSA相关的东西中(我正在尝试导入一个AES密钥),所以故事还在继续。

如果我发现其他信息,我会更新这个答案。

更新2:

关于INVALID_ARGUMENT错误,我没有任何好消息。即使我执行未编辑的CTS测试代码,我仍然会得到这个错误,据说制造商在离开工厂之前使用CTS测试来验证设备是否正常工作。

目前我已经暂停了那个功能的工作,如果有需要重新开始,我会进行更新。


嗨Gligor,你能修好这个问题吗? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接