【发布时间】:2012-09-04 18:46:17
【问题描述】:
我能够按照 this question 中的指示为 Android 构建一个 openssl 共享库。
例如
cd openssl-fips-2.0/
./config
make
make install
和
cd openssl-1.0.1c/
./config fips --with-fipsdir=/usr/local/ssl/fips-2.0/ shared
make depend
make
这会生成 libcrypto.so.1.0.0 和 libssl.so.1.0.0 以及对应的符号链接,如 libcrypto.so 和 libssl.so。
由于 NDK 构建系统不支持版本化共享库,我不得不使用符号链接(使用 PREBUILT_SHARED_LIBRARY)。但是,有了这个,库最终以 libcrypto.so 和 libssl.so 而不是 libcrypto.so.1.0.0 和 libssl.so.1.0.0 的形式进入设备,导致我的库无法加载,因为它正在寻找对于具有版本名称的库。
链接的问题提到使用 System.load(libcrypto.so.1.0.0) 而不是使用 System.loadLibrary() 加载库,但正如前面提到的那样,即使使用完整路径,我也无法让它工作,该文件将作为 libcrypto.so 复制到设备中。
有人成功完成了吗?
注意:我还尝试修改 openssl-1.0.1c 配置和 makefile 以生成 libcrypto.1.0.0.so(例如,文件名和 soname 中的扩展名之前的版本号),这让我得到围绕之前的加载问题。但是,当我尝试使用 FIPS_module_mode_set (FIPS_R_FINGERPRINT_DOES_NOT_MATCH) 打开 FIPS 模式时出现错误。
我还不知道为什么会发生这种情况,但这可能是由于 NDK 剥离了“不需要”的东西(见question)...我也在看这个,但如果有人有对此也有一些信息,我们将不胜感激。
【问题讨论】:
-
在您发布问题之前,您是否在stackoverflow.com/questions/11091905/… 看到过此讨论?
-
是的,我尝试添加后续评论,因为它看起来至少 brewphone 可以正常工作,但由于我没有足够的信誉,我无法做到。当我添加“答案”时,它被删除了。
-
该问题也与此相关。
-
我设法构建了一个无版本的
libcrypto.so,参见stackoverflow.com/a/33869277/4735903。
标签: android android-ndk openssl fips