我正在尝试在Linux下使用openssl
g++
函数
int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
如here所述。我的示例程序如下:
RSA *rsa;
BIGNUM e = 7;
if (!RSA_generate_key_ex(rsa, 1024, e)) {
cout << "error" << endl;
}
但是我在编译期间得到的错误是
src/test.cpp: In function ‘int main(int, char**)’:
src/test.cpp:29:15: error: conversion from ‘int’ to non-scalar type ‘BIGNUM {aka bignum_st}’ requested
src/test.cpp:30:41: error: cannot convert ‘BIGNUM {aka bignum_st}’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘3’ to ‘int RSA_generate_key_ex(RSA*, int, BIGNUM*, BN_GENCB*)’
make: *** [build/test.o] Error 1
我不知道BIGNUM
是什么,也没有在链接页面上描述。
答案 0 :(得分:3)
您需要提供BIGNUM*
。
BIGNUM *e = BN_new();
BN_set_word(e, 7);
if (!RSA_generate_key_ex(rsa, 1024, e, cb)) { /* ... */ }
BN_clear_free(e);
如果您不知道应如何定义cb
,请将其替换为NULL
。也就是说,
RSA_generate_key_ex(rsa, 1024, e, NULL)