OpenSSL 函数在 BIGNUM
s 上将存储结果的变量作为第一个参数,例如 int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
,计算r=a+b
;在以下语句中使用a
是否安全,或者我应该声明一个新变量来保存结果?
BN_add(a, a, b);
这是安全的,您可以在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。