2016-07-26 46 views
0

我正在構建AOSP,因此可以說我在Android中擁有所有模塊的根。當然有OpenSSL庫在其他模塊中構建和重用。Android中的OpenSSL現有庫

而且我們有基礎應用程序(系統,外部,無論),它們也與本機代碼進行通信。 而我的問題是:如何在本地項目中包含現有的Android OpenSSL庫以使用它?

另一種說法是,我如何在本地代碼中獲得OpenSSL/BoringSSL的活動實例。 還有,如何獲得Android Keystore engine的實例並使用它?

謝謝!

回答

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以訪問AndroidKeyStore的C代碼。您只需將Java代碼翻譯成C代碼即可。以這種方式訪問​​Java API有點複雜,但它是最安全的方式(關於兼容性)。

又見

+0

嘿!謝謝你的回答,它回答了我的第一個問題。也許你也知道Android Keystore引擎(上面的鏈接)。我可以用它的原生類嗎? – GensaGames

+0

問題是我想從AndroidKeystore中使用PrivateKey,我可以不加密地加載,並用於加密,在Java中解密。但!我想在本地代碼中使用該PrivateKey,但我無法在本地代碼中傳輸它們的密鑰(密鑰沒有指數),這是問題! – GensaGames

+0

正如我寫的,使用Java代碼訪問AndroidKeystore並將其轉換爲本機代碼。由此產生的代碼會有點複雜,但它是Google推薦的方式。 – Robert