:
- LIBAを - >のOpenSSL + FIPS
- LibB - > OpenSLLだけ
FIPSを有効または無効にするには、FIPS_mode_set
を呼び出します。 FIPS_mode_set(1)
は、ライブラリがFIPS対応の場合はモードを有効にし、FIPS_mode_set(0)
はFIPSアルゴリズムを無効にする必要があります。
libA
がロードされているときには、一時ファイルをチェックし、そのファイルが存在する場合はFIPS_mode_set(1)
を呼び出します。
コンパイルしてFIPS対応でFIPS対応でない場合は、OPENSSL_FIPS
でコードを保護する必要があります。
そのため、おそらくのようなもの:
動的にあなたが
dlopen
や友人を使用してFIPSおよび非FIPS
を使用する方法
#ifdef OPENSSL_FIPS
int mode, ret = 0; unsigned long err = 0;
mode = FIPS_mode();
if (temp_file_exsts && mode == 0)
{
ret = FIPS_mode_set(1 /*on*/);
err = ERR_get_error();
}
else if (temp_file_exsts && mode != 0))
{
ret = FIPS_mode_set(0 /*off*/);
err = ERR_get_error();
}
else
{
printf("Who knows...");
}
if(ret != 1)
{
printf("FIPS_mode_set failed: %lx.", err);
}
#endif
。 libA
が常にロード/ランタイムリンクであることを確認するには、libB
の前にいくつかのトリックを実行する必要があります。あなたが問題を抱えている場合は、それを調べて新しい質問をしてください。
は、それは一時ファイルとどのようにプログラムでシステムを再起動するの書き方をシステム
研究にリブートし&/tmpディレクトリ内のファイルに触れます。問題がある場合は新しい質問をしてください。
出典
2016-09-21 14:31:19
jww
私は最初と最後の部分を達成することができます。 FIPSとFIPS以外のライブラリを使用している間、私はブロックされました。あなたの提案を試してみましょう。ありがとう。 – 0x07FC