0

私が取り組んでいるプロジェクトでは、Android で CyaSSL を使用する必要があります。私は試みてきましたが、CyaSSL の指示に従ってカーネルに組み込むことにあまり成功していません。主な問題は、ビルド構造が、説明が書かれた Android のバージョンから現在のバージョンに大幅に変更されたように見えることです。

手順と関連する問題をリストします。

1) プロバイダーの「src/external/cyassl」から Android プラットフォームの「/external」ディレクトリに「cyassl」ディレクトリをコピーします。このフォルダは次の場所にあります: /external/cyassl

この手順は問題ありません。

2) /build/core/prelink-linux-map.map を開き、「# libraries for specific apps or temporary libraries」という見出しの下に libcyassl.so の新しいエントリを追加します。次のようになります。

Android の最新バージョンでは、事前リンクが削除されているため、この手順は不要のようです。

3) ファイル /dalvik/libnativehelper/Android.mk を開き、libcyassl.so を shared_libraries リストに追加します。

このファイルは移動したようです。WORKING_DIRECTORY/libnativehelper/Android.mk の下にある正しいファイルと思われるものを見つけ、それに応じて編集しました。

4) プロバイダーソースの「src/libcore/yassl」から Android プラットフォームの「/libcore」ディレクトリに「yassl」ディレクトリをコピーします。このフォルダーは /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 プロバイダーに変更します。変更後は、次のようになります。

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

このファイルは /libcore/luni/src/main/java/java/security にあるようで、それに応じて編集しました。ただし、処理方法がわからない手順が欠落しているため、ビルドされません。私はかなりの検索を行いましたが、何も役に立ちませんでした。私の選択肢はこの時点のようです -

1)上記を機能させます。

2) 古いバージョンの Android のビルドに戻ります (および関連するすべての問題、Java、Gcc、pyhton などのダウングレード)

3) カーネルに焼き付けずに CyaSSL Android ライブラリを使用する方法を見つけます (これが可能かどうかはわかりません)。

アドバイスや指示をいただければ幸いです。

4

1 に答える 1

1

代替手段として、あなたがやろうとしていることをはるかに簡単にし、Android で問題なく動作する JNI ラッパーを利用できます。あなたがやろうとしていることよりも、仕事を始める方がはるかに簡単です。それがあなたのためのオプションかどうかわかりませんか?

とにかく、ここから 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

これがあなたのためのオプションである場合、私はそれを検討することを強くお勧めします. 上記でリンクした JNI を使用する Android SSL クライアントがまもなく Google Play ストアに公開されます。

編集: 上記のリストの例として、wolfSSL JNI を使用する SSL クライアントをダウンロードできます。https://play.google.com/store/apps/details?id=com.wolfssl.client

于 2014-06-17T19:16:29.193 に答える