私が取り組んでいるプロジェクトでは、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 ライブラリを使用する方法を見つけます (これが可能かどうかはわかりません)。
アドバイスや指示をいただければ幸いです。