我安装了古老的OpenSSL_0_9_6-beta3
版本的OpenSSL。该功能RSA_generate_key
在那里定义如下:旧版本的OpenSSL中的cb_arg是什么意思?
RSA * RSA_generate_key(int bits, unsigned long e,void (*callback)(int,int,void *),void *cb_arg)
这是我的测试代码:
#include <openssl/rsa.h>
int main(){
unsigned long e = RSA_F4;
RSA *r = RSA_generate_key(512, e, NULL, NULL);
const BIGNUM *n = r->n;
BN_print_fp(stdout, n);
RSA_free(r);
return 0;
}
当我运行它,它只是循环永远。当Valgrind的运行下,我可以明白为什么:
Conditional jump or move depends on uninitialized value(s)
我想这是因为我不明白是什么函数签名的真正含义,我传递不正确的参数进去 - 有过与正在循环时,方法问题自永远在OpenSSL中提供不正确的参数。这就是为什么我来这里问你是否理解函数签名,因为我在互联网上找不到任何指南。
-O1没有变化。我被告知可能会有一个问题,不播种随机数发生器。 – SlowerPhoton
@SlowerPhoton - 你是否也重新编译过OpenSSL?如果你从发行版中获得它,那么它在'-O3'编译。 – jww