1

私は、アプリケーションに存在する暗号化ライブラリが FIPS 認定を受ける必要がある Android プロジェクトに取り組んでいます。私の知る限り、FIPS で検証された JAVA セキュリティ ライブラリはありません。Boucy Castle は優れていますが、検証されていません。フォーラムの投稿をいくつか読んだ後、OpenSSL の FIPS モジュールを NDK の助けを借りて使用できることがわかりました。

現在、Android 用の fips-openssl モジュールをビルドしようとしています。そのために、クロス コンパイル用の環境変数用のスクリプトを作成しました。

このプロジェクトにはopenssl-fipsと ndk-r8 を使用しています。Google で見つけた fipsガイドラインに従いました。これにより、私がやろうとしていることの明確なイメージが得られることを願っています。

#! /bin/sh
export ANDROID_NDK="~/Android/android-ndk-r8"
export FIPS_SIG="${ANDROID_NDK}/incore"
export GCC_C1="/usr/lib/gcc/i686-pc-linux-gnu/4.7.0/"
export PATH=$PATH:"${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin";
export MACHINE=armv71
export ARCH=arm. 
export CROSS_COMPILE="arm-linux-androideabi-"
export SYSTEM=android
#export RELEASE=2.6.32.GMU 
export ANDROID_DEV="$ANDROID_NDK/platforms/android-14/arch-arm/usr" 
export HOSTCC=/usr/bin/gcc

make を実行すると、これがエラーになります。

arm-linux-androideabi-gcc: error trying to exec 'cc1': execvp: No such file or directory
make[1]: *** [cryptlib.o] Error 1
make[1]: Leaving directory `/home/abhiram/fips/openssl-fips-1.2.3/crypto'
make: *** [build_crypto] Error 1

「検索」を行うと、cc1 実行可能ファイルがこの特定のディレクトリに存在します。

  find . -name cc1 
./toolchains/mipsel-linux-android-4.4.3/prebuilt/linux-x86/libexec/gcc/mipsel-linux-android/4.4.3/cc1
./toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/libexec/gcc/arm-linux-androideabi/4.4.3/cc1
./toolchains/x86-4.4.3/prebuilt/linux-x86/libexec/gcc/i686-android-linux/4.4.3/cc1
4

2 に答える 2

3

問題はexportステートメントにあるようです。PATH行にダッシュを入れる必要のある空白スペースがあります。これを変える:

export PATH=$PATH:"${ANDROID_NDK}/toolchains/arm-linux-androideabi  4.4.3/prebuilt/linux-x86/bin";

これに:

export PATH=$PATH:"${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin";

また、検索結果はcc1実行可能ファイルがパスにないことを示しているので、その場所もパスエクスポートに追加します。

export PATH=$PATH:"${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin":"${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/libexec/gcc/arm-linux-androideabi/4.4.3/";
于 2012-06-13T19:39:18.263 に答える
0

現在、Android 用の fips-openssl モジュールをビルドしようとしています。そのために、クロス コンパイル用の環境変数用のスクリプトを作成しました。

興味があれば、OpenSSL は Android 用のスクリプトを提供します。OpenSSL wiki: FIPS Library and Androidで見つけることができます。


make を実行すると、次のエラーが表示されます。

arm-linux-androideabi-gcc: error trying to exec 'cc1'

PATHクロスコンパイル ツールチェーンが含まれていないようです。

どのようにスクリプトを呼び出していますか? 変更が現在のシェル (スクリプトを実行するサブシェル (単に終了する) ではなく) に確実に適用されるようにするには、先頭にドット (".") を含める必要があります。

FIPS Library および Androidにある Android 用の OpenSSL のビルド手順の最初のステップを次に示します。先頭のドットに注意してください。

$ . .setenv-android.sh

スクリプトを実行した結果、OpenSSL ビルド システムで使用される一連の変数が設定されます。

$ . ./setenv-android.sh 
ANDROID_NDK_ROOT: /opt/android-ndk-r9
ANDROID_EABI: arm-linux-androideabi-4.6
ANDROID_API: android-14
ANDROID_SYSROOT: /opt/android-ndk-r9/platforms/android-14/arch-arm
ANDROID_TOOLCHAIN: /opt/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/bin
FIPS_SIG: 
CROSS_COMPILE: arm-linux-androideabi-
ANDROID_DEV: /opt/android-ndk-r9/platforms/android-14/arch-arm/usr

「${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/libexec/gcc/arm-linux-androideabi/4.4.3/」

これは必要ないと思います。


export ANDROID_NDK="~/Android/android-ndk-r8"

Android NDK ユーザー リストの人々によると、 と の両方ANDROID_NDK_ROOTを設定する必要がありANDROID_SDK_ROOTます。さまざまな NDK および SDK ツールがこれらの環境変数を使用します。SDK の値は"~/Android/android-sdk"インストール用のものだと思います。

推奨 NDK ディレクトリを参照してください。詳細については。


また、使用する必要があると思いますANDROID_SYSROOT。NDK または SDK ツールでは使用されません。むしろ、OpenSSL によって使用され、sysrootコンパイル中に渡されます。

于 2014-02-15T15:47:43.737 に答える