diff options
author | tb <> | 2021-12-04 15:59:52 +0000 |
---|---|---|
committer | tb <> | 2021-12-04 15:59:52 +0000 |
commit | 11b62384befd3820c2cb65f8efff914c802abb8f (patch) | |
tree | e53a008f830373cbac55d866e13cad37683e6e04 /src/lib/libcrypto/bn/bn_lib.c | |
parent | e37ca09a6c0f7eb15f33d536aa0fdbb4241c633f (diff) | |
download | openbsd-11b62384befd3820c2cb65f8efff914c802abb8f.tar.gz openbsd-11b62384befd3820c2cb65f8efff914c802abb8f.tar.bz2 openbsd-11b62384befd3820c2cb65f8efff914c802abb8f.zip |
Provide function implementations for various BN_* macros
BN_abs_is_word, BN_is_{zero,one,word,odd}, BN_one, BN_zero_ex are
now implemented as functions for internal use. They will be exposed
publicly to replace the macros reaching into BIGNUM in the next bump.
ok inoguchi jsing
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 | { |