我需要加密一些由C++编写的Android本地服务创建的文件。我必须使用Keystore,但我不知道如何使用。是否有任何库或文档可以帮助我?
我需要加密一些由C++编写的Android本地服务创建的文件。我必须使用Keystore,但我不知道如何使用。是否有任何库或文档可以帮助我?
虽然这篇帖子已经有些年头了,但或许它会在未来帮到某个人。以下提示适用于Android Keystore v3和v4(分别对应Oreo和Pie)。
基本上,HAL keystore(如此处所述)被包装在keystore服务中。 服务API模拟了IKeymasterDevice.hal中描述的接口。您可以使用字符串别名(例如“mySecretKey”)代替blob作为密钥。服务将keyblobs(原始密钥材料+密钥参数)存储到文件系统中。默认位置是/data/misc/keystore/user_0/<uid>_<key_alias>。
Keystore服务还是检查请求进程是否有权使用密钥的层。
与keystore服务通信通过binder接口(IPC)进行。您可在此处阅读更多相关信息。
AOSP包含参考客户端实现,在此处。
示例用法可在股票CLI此处中找到。
AOSP带有SW-based keystore实现,在这里可以找到。默认情况下,AOSP构建的keyblob未加密。
请注意,股票keystore_cli_v2不支持键导入。如果您计划离线加密数据(例如pycrypto),则必须扩展它。如果您计划这样做,请记住,keystore_client_impl.cpp链接到libkeystore_binder.so而不是keystore_cli_v2。
对于非对称密钥密码,您可以使用API导出公共密钥组件。
getPrivateKey()
来获取密钥,我错过了什么吗? - Scis