2014-04-21 32 views
0

我需要在Android上使用CyaSSL來處理我正在處理的項目。我一直在努力,沒有太多成功遵循CyassL的指令將其構建到內核中。主要問題是構建結構似乎已經從指令所寫的Android版本到當前版本發生了顯着變化。將CyaSSL與當前Android內核(KitKat)集成

我將列出步驟和相關的問題。

1)將「cyassl」目錄從提供程序的「src/external/cyassl」複製到Android平臺的「/ external」目錄下。此文件夾應位於:/ external/cyassl

這一步很好。

2)打開/build/core/prelink-linux-map.map並在標題爲「#庫for specific apps or temporary libraries」標題下添加一個新的libcyassl.so條目。它應該看起來類似於以下內容:ibcyassl.so

由於預鏈接已被刪除,所以對於最新版本的Android,此步驟似乎沒有必要。

3)打開文件/dalvik/libnativehelper/Android.mk並將libcyassl.so添加到shared_libraries列表中。

該文件看起來已經移動了,我發現我認爲是WORKING_DIRECTORY/libnativehelper/Android.mk下的正確文件並進行了相應編輯。

4)將「yassl」目錄從提供程序源的「src/libcore/yassl」複製到Android平臺的「/ libcore」目錄。這個文件夾現在應該位於:/ libcore/yassl

這裏沒問題。

5)SSL提供程序啓動方法必須在Android平臺上註冊。打開文件/dalvik/libnativehelper/Register.c。在現有提供商的條目下添加「register_com_yassl_xnet_provider_jsse_NativeCrypto」方法。添加時,它看起來應該如下:

if (register_org_apache_harmony_xnet_provider_jsse_NativeCrypto(env) != 0) 
    goto bail; 
if (register_com_yassl_xnet_provider_jsse_NativeCrypto(env) != 0) 
    goto bail; 

此文件,Register.c不存在,我不知道該怎麼辦步驟5

6)提供的初始化方法必須也可以添加到/dalvik/libnativehelper/include/nativehelper/AndroidSystemNatives.h的頭文件中。在現有SSL提供程序的聲明下向此文件添加以下方法聲明。添加時,它看起來應該如下:

int register_org_apache_harmony_xnet_provider_jsse_NativeCrypto(JNIEnv *env); 
int register_com_yassl_xnet_provider_jsee_NativeCrypto(JNIEnv *env); 

這個文件,AndroidSystemNatives.h也似乎不存在,如此反覆,不知道在這裏做什麼。

7)打開「security.properties」文件(位於/libcore/securit/src/main/java/java/security/security.properties)。進行以下更改以配置CyaSSL提供程序:

a)將以下行添加到提供程序列表中。此行需要位於默認的「org.apache.harmony.xnet.provider.jsse.JSSEProvider」提供程序之上。請注意每個提供商旁邊的數字。插入新提供商後,可能需要重新編號列表。

"security.provider.3=com.yassl.xnet.provider.jsse.JSSEProvider" 

b)將「ssl.SocketFactory.provider」條目更改爲新的Cyassl Provider。修改完畢後,應該如下:

"ssl.SocketFactory.provider=com.yassl.xnet.provider.jsse.SocketFactoryImpl" 

這個文件現在似乎是在/ libcore /盧尼/ src目錄/主/ JAVA/JAVA /安全性,我因此編輯。但是,由於缺少我不知道如何處理的步驟,因此無法構建它。我做了很多搜索,並沒有提供任何有用的東西。我的選擇似乎在這一點 -

1)獲得上述工作。

2)恢復到構建Android的舊版本(和所有相關的麻煩,與去,降級的Java,GCC,pyhton等)

3)找到一個方法來使用CyaSSL的Android庫沒有烘烤進入內核(我不確定這是否可能)

任何意見或方向將不勝感激。

回答

1

作爲一種替代方案,我們有一個JNI Wrapper,它可以讓您試圖做的更容易,並且應該可以完美地與Android一起工作。比你想要做的事更容易工作。我不確定這是否是您的選擇?

不管怎麼說,你可以從這裏得到我們的JNI: http://wolfssl.com/yaSSL/Products-wolfssljni.html

而且因爲你將需要建立併爲了使用JNI安裝CyaSSL你可以得到 這裏: http://wolfssl.com/yaSSL/Products-cyassl.html

你可以通過以下指南找到使所有設置和工作的說明: http://wolfssl.com/yaSSL/Docs-wolfssl-jni-manual.html

如果這是您的選擇,我強烈建議您查看它。我們很快就會在Google Play商店中使用Android SSL客戶端,該客戶端使用上面鏈接的JNI I。

編輯:有關我上面列出的示例,可以下載使用我們的wolfSSL JNI的SSL客戶端。 https://play.google.com/store/apps/details?id=com.wolfssl.client