【问题标题】:How can I use Keystore in Android Native Code?如何在 Android 原生代码中使用 Keystore?
【发布时间】:2017-02-09 02:13:16
【问题描述】:

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

【问题讨论】:

标签: android java-native-interface keystore pycrypto


【解决方案1】:

我知道这个帖子很旧,但也许它会在未来帮助某人。以下提示参考 Android Keystore v3 和 v4(分别为 Oreo 和 Pie)。

基本上,HAL 密钥库(如here 所述)包装在密钥库服务中。 服务 API 模仿 IKeymasterDevice.hal 中描述的接口。您可以使用字符串别名代替 blob(例如“mySecretKey”)。 该服务将密钥块(原始密钥材料 + 密钥参数)存储到文件系统。默认位置是 /data/misc/keystore/user_0/_

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

与 keystore 服务的通信是通过 binder 接口 (IPC) 完成的。您可能想了解更多关于它的信息here

AOSP 包含参考客户端实现here

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

AOSP 带有基于软件的密钥库实现,可以在here 找到。默认情况下,AOSP 构建中的 keyblob 未加密。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多