RAND_bytes在OpenSSL-FIPS模式下始终返回0

时间:2017-09-14 04:05:21

标签: openssl shared-libraries fips

我试图理解为什么RAND_bytes()在OpenSSL FIPS模式下使用时总是返回0。我正在使用OpenSSL-FIPS-2.0.9。

要启用FIPS模式,我的代码首先调用FIPS_mode_set( 1 )中定义的openssl-1.0.2j/crypto/o_fips.c。这可确保设置FIPS模式。此后,如果我调用RAND_bytes(),内部触发FIPS_rand_bytes()中定义的openssl-fips-2.0.9/fips/rand/fips_rand_lib.c并且它总是返回0(基本上没有随机字节)。

在进一步调试时,我注意到“fips_rand_meth”设置为NULL,我无法推断。

我尝试使用gdb并观察此函数指针的值以及它可以设置为NULL的位置但事实证明它设置为 static RAND_METHOD *fips_rand_meth = NULL在开头,之后在fips_rand_meth = meth设置为FIPS_rand_set_method()

根据建议,我甚至在调用ERR_get_error()后立即尝试使用RAND_bytes()调用检查错误代码(如果有)。但是,它返回0(这表明没有错误)。

我理解这种设置FIPS模式然后调用其API的交互肯定存在一些差距。如果有人可以提供帮助,那就太棒了。提前谢谢。

0 个答案:

没有答案