diff options
| author | jsing <> | 2022-12-17 15:56:25 +0000 |
|---|---|---|
| committer | jsing <> | 2022-12-17 15:56:25 +0000 |
| commit | 8cb0d6719a25ad287afaef9db9c434e2ffbe86a7 (patch) | |
| tree | debf6c87cb5650b9a030d3c9de7f062c9bce2cd7 /src/lib/libcrypto/bn/bn_lib.c | |
| parent | 4f30e7935ccf9f6d7cff0669aecfdf86fd5b2d9d (diff) | |
| download | openbsd-8cb0d6719a25ad287afaef9db9c434e2ffbe86a7.tar.gz openbsd-8cb0d6719a25ad287afaef9db9c434e2ffbe86a7.tar.bz2 openbsd-8cb0d6719a25ad287afaef9db9c434e2ffbe86a7.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 'src/lib/libcrypto/bn/bn_lib.c')
| -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 |
