diff options
author | jsing <> | 2022-12-17 15:56:25 +0000 |
---|---|---|
committer | jsing <> | 2022-12-17 15:56:25 +0000 |
commit | a9f292ba0c26c0212f3cee4f53591dbdec7ee05c (patch) | |
tree | debf6c87cb5650b9a030d3c9de7f062c9bce2cd7 /src/lib/libcrypto/bn/bn_lib.c | |
parent | 1dd1001dfe28a3e1f6775d022a3d5be252da4459 (diff) | |
download | openbsd-a9f292ba0c26c0212f3cee4f53591dbdec7ee05c.tar.gz openbsd-a9f292ba0c26c0212f3cee4f53591dbdec7ee05c.tar.bz2 openbsd-a9f292ba0c26c0212f3cee4f53591dbdec7ee05c.zip |
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@
Diffstat (limited to '')
-rw-r--r-- | src/lib/libcrypto/bn/bn_lib.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/lib/libcrypto/bn/bn_lib.c b/src/lib/libcrypto/bn/bn_lib.c index 851c337ef0..c47f2fa024 100644 --- a/src/lib/libcrypto/bn/bn_lib.c +++ b/src/lib/libcrypto/bn/bn_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_lib.c,v 1.66 2022/11/30 03:08:39 jsing Exp $ */ | 1 | /* $OpenBSD: bn_lib.c,v 1.67 2022/12/17 15:56:25 jsing Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -998,11 +998,22 @@ BN_swap_ct(BN_ULONG condition, BIGNUM *a, BIGNUM *b, size_t nwords) | |||
998 | } | 998 | } |
999 | 999 | ||
1000 | void | 1000 | void |
1001 | BN_zero_ex(BIGNUM *a) | 1001 | BN_zero(BIGNUM *a) |
1002 | { | 1002 | { |
1003 | a->neg = 0; | 1003 | a->neg = 0; |
1004 | a->top = 0; | 1004 | a->top = 0; |
1005 | /* XXX: a->flags &= ~BN_FIXED_TOP */ | 1005 | } |
1006 | |||
1007 | void | ||
1008 | BN_zero_ex(BIGNUM *a) | ||
1009 | { | ||
1010 | BN_zero(a); | ||
1011 | } | ||
1012 | |||
1013 | int | ||
1014 | BN_one(BIGNUM *a) | ||
1015 | { | ||
1016 | return BN_set_word(a, 1); | ||
1006 | } | 1017 | } |
1007 | 1018 | ||
1008 | int | 1019 | int |