如何在 Android Native Code 中使用 Keystore?

2024-02-09

我需要加密由用 C++ 编写的 android 本机服务创建的一些文件。我必须使用密钥库,但我不知道如何使用。有什么库或者文档吗?


我知道该线程很旧,但也许它会对将来的某人有所帮助。以下提示参考 Android Keystore v3 和 v4(分别为 Oreo 和 Pie)。

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

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

与密钥库服务的通信是通过绑定器接口(IPC)完成的。您可能想了解更多相关信息here https://developer.android.com/reference/android/os/Binder.

AOSP 包含参考客户端实现here http://androidxref.com/9.0.0_r3/xref/system/security/keystore/keystore_client_impl.cpp.

示例用法可以在库存 CLI 中找到here http://androidxref.com/9.0.0_r3/xref/system/security/keystore/keystore_cli_v2.cpp

AOSP 附带了基于软件的密钥库实现,可以找到here http://androidxref.com/9.0.0_r3/xref/system/keymaster/。默认情况下,AOSP 版本上的 keyblob 未加密。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Android Native Code 中使用 Keystore? 的相关文章

随机推荐

  • 如何在 Swift 中创建 _inline_ 递归闭包? [复制]

    这个问题在这里已经有答案了 对于 Swift 中的全局函数来说 递归是微不足道的 例如 func f f 但是 闭包不能引用自身 例如 var f Void gt Void f 产生以下错误 Variable used within its
  • 如何处理 jQuery 中的表单更改?

    在 jQuery 中 有没有一种简单的方法来测试是否any表单的元素发生了变化 假设我有一个表单和一个带有以下内容的按钮click event mybutton click function Here is where is need to
  • 如何从烂番茄上抓取一页以上的评论?

    我一直在使用这个抓取工具来抓取此网址的评论家评论 https www rottentomatoes com m avengers endgame reviews https www rottentomatoes com m avengers
  • java-8 过滤列表而不创建新列表

    我正在寻找使用简单的 lambda 来过滤 Java 8 中的列表的最干净的方法Predicate 无需创建新列表 特别是 该解决方案不合适 因为toList 返回一个新的List List
  • 回滚 Laravel 中的一项特定迁移

    I want 仅回滚 Rolled back 2015 05 15 195423 alter table web directories I run php artisan migrate rollback 我的 3 个迁移正在回滚 Rol
  • PHP Sort 函数用于对对象数组进行排序

    我有一个充满同一类对象的数组 例如 我想通过可选对象字段对该数组进行排序 case gt ID or case gt Sender 是否有内置的 array sort 函数可以执行此操作 或者我必须自己编写此排序函数 答案不必详细解释 这更
  • 沉默的例外,

    我在 64 位中遇到过这个奇怪的静默异常问题 到底是什么原因导致这种行为呢 我想了解为什么会发生这种情况以及推荐的解决方案是什么 消失的 OnLoad 异常 http blog paulbetts org index php 2010 07
  • 如何处理 IncompleteRead: 在 python 中

    我正在尝试从网站获取一些数据 然而它返回了我incomplete read 我试图获取的数据是一组巨大的嵌套链接 我在网上做了一些研究 发现这可能是由于服务器错误 之前的分块传输编码完成 达到预期大小 我还找到了上述问题的解决方法link
  • Nifi:如何使 ListenHTTP 与 SSL 配合使用

    客观的 由于 Nifi 通过 HTTP 与其他工具集成 我必须ListenHTTP处理器面向公众 所有 3 个环境上的 API 网关对我来说太贵了 所以我关闭了所有虚拟机入口端口 除了ListenHTTP 对于外部网络 Issue 我的配置
  • 从终端打开 iPhone 应用程序

    是否可以从终端打开 iPhone 应用程序或 Xcode 项目 我已经尝试过 open path to project app 但这会返回警告并由于启动模拟器时出现图像加载错误而意外退出 有没有人有什么建议 您无法从终端启动 iPhone
  • 缓存图像的 CORS 策略

    在 chrome 22 和 safari 6 中 使用启用 CORS 的 S3 存储桶从 s3 加载图像以在画布中使用 以提取为主要目的 代码如下 img src http s3 bob jpg In the javascript exec
  • 重新访问变量 X 的无效类型(列表),其中 X 是日期类

    今天早些时候 我关注了以下主题并看到了答案 变量 X 的类型 列表 无效 其中 X 是日期类 https stackoverflow com questions 27606380 invalid type list for variable
  • Google Cloud dev_appserver.py 无法在本地托管 Laravel 项目

    我正在运行 Laravel 5 4 项目 并托管在 google cloud 项目下 为了测试相同的内容 我使用了dev appserver py app yaml runtime php55它启动程序但抛出显示的错误 Warning re
  • Parallel.ForEach 内存使用量持续增长

    public string SavePath get set I files public void DownloadList List
  • 如何将matlab中的绘图设置为特定大小?

    一般来说 我希望将相当复杂的 x y 图 大量重叠曲线 绘制为 A3 格式 因此 A4 210x297 A3 A4 2 420 x 297 10mm each side 400 x 277 size of desired plot wind
  • 如何更改 Google 地图标记上的图标

    我想在 Google 地图上使用我的自定义图标 并在代码中添加了图标 url 但它仍然没有反映在地图上 谁能建议一下 我在这里缺少什么 为什么添加图标 url 后图标没有改变 http google maps icons googlecod
  • 减速器中的 React-redux Spread 运算符返回错误“意外令牌”

    我遵循 Dan Abramov 的代码https github com tayiorbeii egghead io redux course notes blob master 08 Reducer Composition with Arr
  • 有什么理由只传递第一个元素而不是整个数组? [复制]

    这个问题在这里已经有答案了 好的 昨天我有一位同事来到我的办公室 问我一个关于他必须使用的 Fortran 代码的问题 基本上 他使用的代码有一个长的多维数组 以及一个需要这个长的多维数组作为参数的子例程 但是 调用该子例程的代码仅传递数组
  • CSS 中缩放渐变背景

    第一次提问 请对我宽容一些 我正在尝试为使用 JQuery Mobile 的网络应用程序制作背景渐变 我对 CSS 和 UI 设计一无所知 我希望渐变填充整个页面的空间 现在 它填充到原始窗口的大小 但向下滚动时会 切断 大多数建议都指向这
  • 如何在 Android Native Code 中使用 Keystore?

    我需要加密由用 C 编写的 android 本机服务创建的一些文件 我必须使用密钥库 但我不知道如何使用 有什么库或者文档吗 我知道该线程很旧 但也许它会对将来的某人有所帮助 以下提示参考 Android Keystore v3 和 v4