我能夠按照this question中的說明構建Android的共享庫openssl。在Android中使用openssl-fips-2.0共享庫
E.g.
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)...我仍然在看這個,但如果有人有一些這方面的信息以及它將非常感謝。
你見過這個討論http://stackoverflow.com/questions/11091905/android-build-openssl-fips-2-0在你發佈你的問題之前? –
是的,我試着給它添加後續評論,因爲它至少看起來像是brewphone正常工作,但由於我沒有足夠的信譽,我無法做到這一點。當我添加一個'答案'它被刪除。 –
這個問題也與此有關。 –