diff options
Diffstat (limited to 'src/lib/libcrypto/bn/bn_lib.c')
-rw-r--r-- | src/lib/libcrypto/bn/bn_lib.c | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/src/lib/libcrypto/bn/bn_lib.c b/src/lib/libcrypto/bn/bn_lib.c index e4085c9d67..77ee3b1fdc 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.50 2021/12/04 15:53:01 tb Exp $ */ | 1 | /* $OpenBSD: bn_lib.c,v 1.51 2021/12/04 15:59:52 tb 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 | * |
@@ -1061,6 +1061,44 @@ BN_swap_ct(BN_ULONG condition, BIGNUM *a, BIGNUM *b, size_t nwords) | |||
1061 | return 1; | 1061 | return 1; |
1062 | } | 1062 | } |
1063 | 1063 | ||
1064 | void | ||
1065 | BN_zero_ex(BIGNUM *a) | ||
1066 | { | ||
1067 | a->neg = 0; | ||
1068 | a->top = 0; | ||
1069 | /* XXX: a->flags &= ~BN_FIXED_TOP */ | ||
1070 | } | ||
1071 | |||
1072 | int | ||
1073 | BN_abs_is_word(const BIGNUM *a, const BN_ULONG w) | ||
1074 | { | ||
1075 | return (a->top == 1 && a->d[0] == w) || (w == 0 && a->top == 0); | ||
1076 | } | ||
1077 | |||
1078 | int | ||
1079 | BN_is_zero(const BIGNUM *a) | ||
1080 | { | ||
1081 | return a->top == 0; | ||
1082 | } | ||
1083 | |||
1084 | int | ||
1085 | BN_is_one(const BIGNUM *a) | ||
1086 | { | ||
1087 | return BN_abs_is_word(a, 1) && !a->neg; | ||
1088 | } | ||
1089 | |||
1090 | int | ||
1091 | BN_is_word(const BIGNUM *a, const BN_ULONG w) | ||
1092 | { | ||
1093 | return BN_abs_is_word(a, w) && (w == 0 || !a->neg); | ||
1094 | } | ||
1095 | |||
1096 | int | ||
1097 | BN_is_odd(const BIGNUM *a) | ||
1098 | { | ||
1099 | return a->top > 0 && (a->d[0] & 1); | ||
1100 | } | ||
1101 | |||
1064 | BN_GENCB * | 1102 | BN_GENCB * |
1065 | BN_GENCB_new(void) | 1103 | BN_GENCB_new(void) |
1066 | { | 1104 | { |