我正在构建AOSP,所以假设我拥有Android中所有模块的root权限。当然有OpenSSL库可以在其他模块中构建和重用。
我们有基本应用程序(系统,外部,等等),它们也与本机代码通信。 我的问题是:如何在本地项目中包含现有的Android OpenSSL库,以便与之合作?
另一个说法是,如何在本机代码中获取OpenSSL / BoringSSL的活动实例。 此外,如何获取Android Keystore engine的实例并使用它?
谢谢!
答案 0 :(得分:1)
来自release notes of Android 6.0:
如果您在应用中使用Android NDK,请勿链接到不属于NDK API的加密库,例如libcrypto.so和libssl.so 。这些库不是公共API,可能会在不同版本和设备之间发生更改或中断,恕不另行通知。此外,您可能会暴露自己的安全漏洞。相反,修改您的本机代码以通过JNI调用Java加密API或静态链接到您选择的加密库。
在除C / native API之外的本机代码中,您也可以访问Java API。因此,您可以编写调用常规Java API的C代码来访问AndroidKeyStore。您只需将Java代码转换为C代码即可。以这种方式访问Java API有点复杂,但它是最安全的方式(关于兼容性)。
另见