我需要加密一些由用 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/