注意:这个问题是我关于在 Android 的 KeyStore 中安全密钥导入的其他问题的后续问题。
也就是说,当我的代码看似符合规范时,我得到了 INVALID_ARGUMENT 错误。
在尝试了 INVALID_ARGUMENT 错误的各种解决方案后,我决定尝试最基本的设置 - 运行 CTS 测试功能之一,但即使这样也会导致相同的 INVALID_ARGUMENT 错误。我真的对接下来要尝试什么没有任何想法,因为这是一个官方的 Android 测试并且(可能)代码部分是正确的,所以唯一的结论是问题出在另一个地方。
详细信息:我使用来自testKeyStore_ImportWrappedKey() CTS 测试函数的复制粘贴代码。wrap/authList/等。功能也是一样的。这些常量在Android 源代码中可以找到,但我也会在下面列出它们。
private static final int WRAPPED_FORMAT_VERSION = 0;
private static final int GCM_TAG_SIZE = 128;
public static final int KM_KEY_FORMAT_RAW = 3;
public static final int KM_ALGORITHM_AES = 32;
public static final int KM_PURPOSE_ENCRYPT = 0;
public static final int KM_PURPOSE_DECRYPT = 1;
public static final int KM_MODE_ECB = 1;
public static final int KM_MODE_CBC = 2;
public static final int KM_PAD_NONE = 1;
public static final int KM_PAD_PKCS7 = 64;
另一个重要的部分是使用的 bouncycastle 库,它们如下:
(使我能够在不替换已弃用类的情况下使用 CTS 代码的最后一个版本)
implementation 'org.bouncycastle:bcpkix-jdk15on:1.49'
implementation 'org.bouncycastle:bcprov-jdk15on:1.49'
这是一个 ASN.1 生成的 blob 示例,它可能会导致问题...有人可以给我发送一个有效的 ASN.1 blob,以便我可以比较并查看那里是否有任何错误?