android - 如何在 Android Native Code 中使用 Keystore?

标签 android java-native-interface keystore pycrypto

我需要加密一些由用 C++ 编写的 android native 服务创建的文件。我必须使用 Keystore 但我不知道如何使用。有没有图书馆或文件?

最佳答案

我知道这个帖子已经过时了,但也许它会对将来的人有所帮助。以下提示涉及 Android Keystore v3 和 v4(分别为 Oreo 和 Pie)。

基本上,HAL keystore (如 here 所述)包含在 keystore 服务中。 服务 API 模仿 IKeymasterDevice.hal 中描述的接口(interface)。您可以为 key 使用字符串别名而不是 blob(例如“mySecretKey”)。 该服务将 key block (原始 key Material + key 参数)存储到文件系统。默认位置是/data/misc/keystore/user_0/_

Keystore 服务也是检查是否允许请求进程使用 key 的层(基于进程 uid)。

与 keystore 服务的通信是通过绑定(bind)器接口(interface) (IPC) 完成的。您可能想阅读更多相关信息 here .

AOSP 包含引用客户端实现 here .

可以在常用 CLI 中找到示例用法 here

AOSP 带有基于 SW 的 keystore 实现,可以在 here 中找到.默认情况下,AOSP 构建中的 key block 未加密。

请注意,库存 keystore_cli_v2 不支持 key 导入。如果您计划离线加密数据(例如 pycrypto),您必须扩展它。如果您打算这样做,请记住 keystore_client_impl.cpp 链接到 libkeystore_binder.so 而不是 keystore_cli_v2。

对于非对称 key 密码,您可以使用 API 导出公钥组件。

关于android - 如何在 Android Native Code 中使用 Keystore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42127072/

相关文章:

java - Android - 更改了 java 版本,现在改回应用程序无法运行

android - SearchView:键盘不显示按钮完成

java - JNI system.out 和 printf 行为

java - SSL上下文。我应该重新加载它吗?

java - 配置 mobileFirst keystore 后仍然遇到证书错误

java - 如何使用 java 设置 keystore 的加密服务提供程序

android - 监听来自 java 的 javascript 函数调用 - Android

java - 通过 Dagger 将 Presenter 注入(inject) Activity

java - JNI & C - 指向指针的指针

android - 从需要上下文 (this) 的 JNI 调用 Java 方法来接收帐户名称