summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/bn/bn_lib.c
diff options
context:
space:
mode:
authorjsing <>2022-12-17 15:56:25 +0000
committerjsing <>2022-12-17 15:56:25 +0000
commita9f292ba0c26c0212f3cee4f53591dbdec7ee05c (patch)
treedebf6c87cb5650b9a030d3c9de7f062c9bce2cd7 /src/lib/libcrypto/bn/bn_lib.c
parent1dd1001dfe28a3e1f6775d022a3d5be252da4459 (diff)
downloadopenbsd-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.c17
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
1000void 1000void
1001BN_zero_ex(BIGNUM *a) 1001BN_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
1007void
1008BN_zero_ex(BIGNUM *a)
1009{
1010 BN_zero(a);
1011}
1012
1013int
1014BN_one(BIGNUM *a)
1015{
1016 return BN_set_word(a, 1);
1006} 1017}
1007 1018
1008int 1019int