C 将一个BigNum与一个普通整数相乘

C 将一个BigNum与一个普通整数相乘,c,openssl,bignum,C,Openssl,Bignum,我有以下功能: BIGNUM * multiplyWithInt(BIGNUM *bn, int val){ //Logic Here } 我试图做的是计算乘法bn*val。根据文件(从命令man bn)给出的乘法如下: int BN_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx); 如您所见,我需要以某种方式将整数val转换为openssl的BIGNUM。我怎么能做到?一种方法是将其转换为无符号字符*字节数组,并使用BN_bin2bn

我有以下功能:

BIGNUM * multiplyWithInt(BIGNUM *bn, int val){
  //Logic Here
}
我试图做的是计算乘法
bn*val
。根据文件(从命令
man bn
)给出的乘法如下:

int BN_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx);

如您所见,我需要以某种方式将整数
val
转换为openssl的BIGNUM。我怎么能做到?一种方法是将其转换为
无符号字符*
字节数组,并使用
BN_bin2bn
函数,但这会给我所需的功能吗?

您正在寻找的函数是
BN_set\u word
。这将
无符号long
值分配给
BIGNUM

BIGNUM *bn_val = BN_new();
BN_set_word(bn_val , val);

然后,您可以将
bn_val
bn
传递给
bn_mul

,因此为了使用它,我只需将我的
int
键入一个
无符号长
对吗?@dimitrisdesylas无需强制转换。该值将自动转换。但是请注意,不能使用负值。