Provide BN_zero()/BN_one() as functions and make BN_zero() always succeed.
authorjsing <jsing@openbsd.org>
Sat, 17 Dec 2022 15:56:25 +0000 (15:56 +0000)
committerjsing <jsing@openbsd.org>
Sat, 17 Dec 2022 15:56:25 +0000 (15:56 +0000)
commitce6fd31be65e36dad91d518a8860b4237b6248cf
tree75a8c3d8a2d0c843423351cadc950ec142eff936
parent85fc16eaf82518dbc1647b4313afc2359e37c2fb
Provide BN_zero()/BN_one() as functions and make BN_zero() always succeed.

BN_zero() is currently implemented using BN_set_word(), which means it can
fail, however almost nothing ever checks the return value. A long time
ago OpenSSL changed BN_zero() to always succeed and return void, however
kept BN_zero as a macro that calls a new BN_zero_ex() function, so that
it can be switched back to the "can fail" version.

Take a simpler approach - change BN_zero()/BN_one() to functions and make
BN_zero() always succeed. This will be exposed in the next bump, at which
point we can hopefully also remove the BN_zero_ex() function.

ok tb@
lib/libcrypto/bn/bn.h
lib/libcrypto/bn/bn_isqrt.c
lib/libcrypto/bn/bn_lib.c