我按照这里的链接为openssl构建Android库:
http://wiki.openssl.org/index.php/Android
以下是我在Setenv-Android.sh中的设置:
_ANDROID_EABI="arm-linux-androideabi-4.6" _ANDROID_ARCH=arch-arm _ANDROID_API="android-16"
下一步是运行以下命令:
$ . ./Setenv-Andrhoid.sh
这是我得到的错误:
Error: FIPS_SIG does not specify incore module. Please edit this script.
没有提到如何在wiki中配置FIPS_SIG.看起来该脚本正在寻找名为"incore"的文件或目录.我搜索了我的$ ANDROID_NDK_ROOT.但是,我没有任何"incore"文件.
我需要运行的下一个命令如下:
$ ./config shared -no-ssl2 -no-ssl3 -no-comp -no-hw -no-engine \ --openssldir=/usr/local/ssl/$ANDROID_API
在这里,openssldir
指向绝对/usr/...
目录?我希望最终的头文件和lib文件最终在$ANDROID_NDK_ROOT/platform/android-16/arch-arm
目录中.
Here is the error I am getting: Error: FIPS_SIG does not specify incore module. Please edit this script.
哦,你说得对.这已在维基上修复.
我认为脚本中有一条关于"如果......可以安全忽略"的评论,但似乎也没有任何评论.叹....
相同的脚本用于构建OpenSSL库的FIPS Capable和非FIPS版本.如果您没有构建FIPS Capable库,则可以安全地忽略FIPS_SIG错误.
由于您使用的是OpenSSL和Android,因此可以放心使用.如果您关注FIPS库和Android,则无法忽略它.
看起来该脚本正在寻找名为"incore"的文件或目录.
为了完整incore
起见,脚本将HMAC的指纹嵌入到程序或共享对象中.FIPS对象模块将使用嵌入式HMAC在启动时对其自身进行完整性测试.它在实践中毫无用处,因为钥匙是众所周知的;)
incore
openssl-fips-2.0.7.tar.gz
和朋友一起分发.一旦放入incore
某个位置(例如目录树/usr/local/ssl/android-18/bin
),就设置FIPS_SIG
为文件名.
$ ./config shared -no-ssl2 -no-ssl3 -no-comp -no-hw -no-engine --openssldir =/usr/local/ssl/$ ANDROID_API
这是openssldir指向绝对/ usr/...目录吗?我希望最终的头文件和lib文件最终在$ ANDROID_NDK_ROOT/platform/android-16/arch-arm目录中.
--openssldir
是安装目录.$ANDROID_NDK_ROOT/platform/android-16/arch-arm
如果您希望安装库,则应将其设置为.
更多信息:默认情况下,OpenSSL将自行安装/usr/local/ssl
.当我构建iOS时,是使用--openssldir=/usr/local/ssl/ios
.当我构建Android,--openssldir=/usr/local/ssl/android-18
(或android-14
等).
例如,这是我在Mac Book上的样子:
$ ls /usr/local/ssl/ android-14 darwin macosx-x64 android-18 ios macosx-x86