4

Linux を実行している既存の組み込み powerpc システムに Openssl FIPS モジュールを追加しようとしています。ほとんどはうまくいっていますが、リンク段階で発生する問題に行き詰まっています。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」を指定しない限り、これらのエラーが発生しますが、キャスト、シード、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

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

0 に答える 0