首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为android构建FIPS模块

为android构建FIPS模块
EN

Stack Overflow用户
提问于 2012-06-13 03:48:49
回答 2查看 1K关注 0票数 1

我正在做一个android项目,该项目要求应用程序中存在的加密库必须经过FIPS认证。据我所知,目前还没有经过FIPS验证的JAVA安全库。布西城堡是好的,但它没有得到验证。在阅读了一些论坛帖子后,我发现OpenSSL的FIPS模块可以在NDK的帮助下使用。

现在,我正在尝试为Android构建fips-openssl模块,为此,我为环境变量创建了一个用于交叉编译的脚本。

我在这个项目中使用openssl-fips和ndk-r8。我关注了我在谷歌上找到的fips guideline。我希望这能清楚地说明我正在尝试做什么。

代码语言:javascript
复制
#! /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时,这是我得到的错误。

代码语言:javascript
复制
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可执行文件出现在这个特定的目录中。

代码语言:javascript
复制
  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
EN

回答 2

Stack Overflow用户

发布于 2012-06-14 03:39:18

看起来问题出在export语句中,路径行中有一个空格,其中应该有一个破折号。更改此设置:

代码语言:javascript
复制
export PATH=$PATH:"${ANDROID_NDK}/toolchains/arm-linux-androideabi  4.4.3/prebuilt/linux-x86/bin";

要这样做:

代码语言:javascript
复制
export PATH=$PATH:"${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin";

此外,您的查找结果显示cc1可执行文件不在路径中,因此还要将其位置添加到路径导出中:

代码语言:javascript
复制
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/";
票数 3
EN

Stack Overflow用户

发布于 2014-02-15 23:47:44

现在我正在尝试为Android构建fips-openssl模块,为此,我为环境变量创建了一个用于交叉编译的脚本。

如果你感兴趣,OpenSSL提供了一个适用于安卓系统的脚本。你可以在OpenSSL维基上找到它:FIPS Library and Android

在执行make时,我得到的错误是:

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

看起来你的PATH没有包含交叉编译工具链。

你是如何调用脚本的?您需要包括一个前导点(".")以确保更改应用于当前shell (而不是执行脚本的子shell(它只是退出))。

这里是OpenSSL的Android构建过程的第一步,位于FIPS Library and Android。请注意前导圆点:

代码语言:javascript
复制
$ . .setenv-android.sh

运行脚本的结果设置了OpenSSL构建系统使用的一组变量:

代码语言:javascript
复制
$ . ./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/“

我不认为这是必要的。

导出ANDROID_NDK="~/Android/android-ndk-r8“

根据Android NDK用户列表上的人的说法,你应该同时设置ANDROID_NDK_ROOTANDROID_SDK_ROOT。各种NDK和SDK工具都使用这些环境变量。我认为对于您的安装,SDK值应该是"~/Android/android-sdk"

详情请参见Recommended NDK Directory?

我也认为你应该使用ANDROID_SYSROOT。它不被NDK或SDK工具使用;相反,它由OpenSSL使用,并在编译过程中作为sysroot传递。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11003769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档