使用fips模块时Openssl交叉编译链接问题

时间:2013-03-14 20:09:38

标签: openssl cross-compiling fips

我正在尝试将Openssl FIPS模块添加到运行Linux的现有嵌入式powerpc系统中。它大部分进展顺利,但我坚持在链接阶段发生的问题。如果我在配置openssl时没有禁用某些密码,那么我会得到链接错误,如下所示:

passwd.o: In function `do_passwd':
passwd.c:(.text+0x70c): undefined reference to `DES_crypt'
genrsa.o: In function `genrsa_main':
genrsa.c:(.text+0x528): undefined reference to `EVP_des_cbc'
gendsa.o: In function `gendsa_main':
gendsa.c:(.text+0x3d8): undefined reference to `EVP_des_cbc'
speed.o: In function `speed_main':
speed.c:(.text+0x1078): undefined reference to `private_DES_set_key_unchecked'
speed.c:(.text+0x108c): undefined reference to `private_DES_set_key_unchecked'
speed.c:(.text+0x10a0): undefined reference to `private_DES_set_key_unchecked'
speed.c:(.text+0x1d1c): undefined reference to `DES_ncbc_encrypt'
speed.c:(.text+0x1e80): undefined reference to `DES_ede3_cbc_encrypt'
speed.c:(.text+0x3ec4): undefined reference to `EVP_mdc2'
speed.c:(.text+0x401c): undefined reference to `DES_options'

在这种情况下,除非我在配置选项中指定“no-des”,否则我会收到这些错误,但同样的问题也适用于其他密码,例如cast,seed和rc2(等等)。

一些现有的代码库引用了其中一些密码函数(尤其是DES),因此完全删除它们并不理想。我的理解是,如果启用了FIPS模式,那么库在运行时将阻止使用这些非FIPS密码(通过生成错误,我推测),而不是在编译时需要禁用所有非FIPS密码-time。

以下是我如何配置openssl-fips和openssl:

的OpenSSL-FIPS:

MACHINE=ppc \
RELEASE=2.6.11 \
SYSTEM=linux2 \
ARCH=ppc \
CROSS_COMPILE="powerpc-405-linux-gnu-" \
HOSTCC=gcc \
./config

OpenSSL的:

CC="gcc [snipped]" \
FIPSDIR=$(ROOTPREFIX)$(PREFIX)/usr/local/ssl/fips-2.0 \
./Configure \
linux-ppc \
no-idea \
no-rc5 \
no-mcs2 \
no-hw \
no-krb5 \
no-seed \
no-rc2 \
no-bf \
no-cast \
--prefix=/usr \
threads \
shared \
fips \
--cross-compile-prefix=powerpc-405-linux-gnu-; \

0 个答案:

没有答案