diff options
Diffstat (limited to 'src/lib/libcrypto')
| -rw-r--r-- | src/lib/libcrypto/bn/bn_add.c | 60 |
1 files changed, 30 insertions, 30 deletions
diff --git a/src/lib/libcrypto/bn/bn_add.c b/src/lib/libcrypto/bn/bn_add.c index aec7f1ee9a..3352e0e1d5 100644 --- a/src/lib/libcrypto/bn/bn_add.c +++ b/src/lib/libcrypto/bn/bn_add.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: bn_add.c,v 1.16 2022/11/26 16:08:51 tb Exp $ */ | 1 | /* $OpenBSD: bn_add.c,v 1.17 2023/01/20 04:49:48 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 | * |
| @@ -63,35 +63,6 @@ | |||
| 63 | #include "bn_local.h" | 63 | #include "bn_local.h" |
| 64 | 64 | ||
| 65 | int | 65 | int |
| 66 | BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) | ||
| 67 | { | ||
| 68 | int ret, r_neg; | ||
| 69 | |||
| 70 | |||
| 71 | if (a->neg == b->neg) { | ||
| 72 | r_neg = a->neg; | ||
| 73 | ret = BN_uadd(r, a, b); | ||
| 74 | } else { | ||
| 75 | int cmp = BN_ucmp(a, b); | ||
| 76 | |||
| 77 | if (cmp > 0) { | ||
| 78 | r_neg = a->neg; | ||
| 79 | ret = BN_usub(r, a, b); | ||
| 80 | } else if (cmp < 0) { | ||
| 81 | r_neg = b->neg; | ||
| 82 | ret = BN_usub(r, b, a); | ||
| 83 | } else { | ||
| 84 | r_neg = 0; | ||
| 85 | BN_zero(r); | ||
| 86 | ret = 1; | ||
| 87 | } | ||
| 88 | } | ||
| 89 | |||
| 90 | r->neg = r_neg; | ||
| 91 | return ret; | ||
| 92 | } | ||
| 93 | |||
| 94 | int | ||
| 95 | BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) | 66 | BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) |
| 96 | { | 67 | { |
| 97 | int max, min, dif; | 68 | int max, min, dif; |
| @@ -183,6 +154,35 @@ BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) | |||
| 183 | } | 154 | } |
| 184 | 155 | ||
| 185 | int | 156 | int |
| 157 | BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) | ||
| 158 | { | ||
| 159 | int ret, r_neg; | ||
| 160 | |||
| 161 | |||
| 162 | if (a->neg == b->neg) { | ||
| 163 | r_neg = a->neg; | ||
| 164 | ret = BN_uadd(r, a, b); | ||
| 165 | } else { | ||
| 166 | int cmp = BN_ucmp(a, b); | ||
| 167 | |||
| 168 | if (cmp > 0) { | ||
| 169 | r_neg = a->neg; | ||
| 170 | ret = BN_usub(r, a, b); | ||
| 171 | } else if (cmp < 0) { | ||
| 172 | r_neg = b->neg; | ||
| 173 | ret = BN_usub(r, b, a); | ||
| 174 | } else { | ||
| 175 | r_neg = 0; | ||
| 176 | BN_zero(r); | ||
| 177 | ret = 1; | ||
| 178 | } | ||
| 179 | } | ||
| 180 | |||
| 181 | r->neg = r_neg; | ||
| 182 | return ret; | ||
| 183 | } | ||
| 184 | |||
| 185 | int | ||
| 186 | BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) | 186 | BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) |
| 187 | { | 187 | { |
| 188 | int ret, r_neg; | 188 | int ret, r_neg; |
