4

我正在尝试将 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 密码都需要在编译时禁用-时间。

以下是我配置 openssl-fips 和 openssl 的方式:

openssl-fips:

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

打开ssl:

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-; \
4

0 回答 0