【发布时间】:2016-02-15 13:07:47
【问题描述】:
BIGNUMs 上的 OpenSSL 函数将存储结果的变量作为第一个参数,例如
int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);,计算r=a+b;
下面语句中的 usea 是否安全,或者我应该声明一个新变量来保存结果?
BN_add(a, a, b);
【问题讨论】:
BIGNUMs 上的 OpenSSL 函数将存储结果的变量作为第一个参数,例如
int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);,计算r=a+b;
下面语句中的 usea 是否安全,或者我应该声明一个新变量来保存结果?
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)。 r 可能是 与 a 或 b 相同的 BIGNUM。
【讨论】: