将CyaSSL与当前Android内核(KitKat)集成

问题描述:

我需要在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库没有烘烤进入内核(我不确定这是否可能)

任何意见或方向将不胜感激。

作为一种替代方案,我们有一个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