在BIGNUM
上的OpenSSL函数将第一个参数作为存储结果的变量,例如
int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
,计算r=a+b
;
在以下语句中使用a
是否安全,或者我应该声明一个新变量来保存结果?
BN_add(a, a, b);
答案 0 :(得分:2)
安全,您可以在crypto/bn/bntest.c
中查找示例。在那里你可以找到如下代码:
BN_add(&c, &c, &b);
BN_sub(&c, &c, &a);
此外,根据https://www.openssl.org/docs/manmaster/crypto/BN_add.html:
BN_add()添加a和b并将结果放在r(r = a + b)中。可能是 与a或b相同的BIGNUM。