diff options
author | jsing <> | 2022-11-26 13:56:33 +0000 |
---|---|---|
committer | jsing <> | 2022-11-26 13:56:33 +0000 |
commit | bcbac728558eebfaa4404c405e7dc22769585345 (patch) | |
tree | 9f1339c5b70b0cfa4e8a0a5c70345e837a21ce77 /src/lib | |
parent | 90d0616c736d954d327f399daa636de8e6a2c4d5 (diff) | |
download | openbsd-bcbac728558eebfaa4404c405e7dc22769585345.tar.gz openbsd-bcbac728558eebfaa4404c405e7dc22769585345.tar.bz2 openbsd-bcbac728558eebfaa4404c405e7dc22769585345.zip |
Remove BIGNUM consistency macros.
Compiling with BN_DEBUG (and if you want to take it further, BN_DEBUG_RAND)
supposedly adds consistency checks to the BN code. These are rarely if ever
used and introduce a bunch of clutter in the code. Furthermore, there are
hacks in place to undo things that the debugging code does.
Remove all of this mess and instead rely on always enabled checks, more
readable code and proper regress coverage to ensure correct behaviour.
"Good riddance." tb@
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/libcrypto/bn/bn_add.c | 13 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_blind.c | 6 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_ctx.c | 3 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_div.c | 17 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_exp.c | 19 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_exp2.c | 8 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_gcd.c | 17 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_gf2m.c | 55 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_kron.c | 4 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_lcl.h | 97 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_lib.c | 33 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_mod.c | 10 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_mont.c | 6 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_mpi.c | 3 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_mul.c | 6 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_prime.c | 6 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_print.c | 4 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_rand.c | 4 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_recp.c | 6 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_shift.c | 14 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_sqr.c | 5 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_sqrt.c | 5 | ||||
-rw-r--r-- | src/lib/libcrypto/bn/bn_word.c | 11 |
23 files changed, 24 insertions, 328 deletions
diff --git a/src/lib/libcrypto/bn/bn_add.c b/src/lib/libcrypto/bn/bn_add.c index 3a8c0e847a..a81dd0ce75 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.14 2022/11/24 01:30:01 jsing Exp $ */ | 1 | /* $OpenBSD: bn_add.c,v 1.15 2022/11/26 13:56:33 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 | * |
@@ -67,8 +67,6 @@ BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) | |||
67 | { | 67 | { |
68 | int ret, r_neg; | 68 | int ret, r_neg; |
69 | 69 | ||
70 | bn_check_top(a); | ||
71 | bn_check_top(b); | ||
72 | 70 | ||
73 | if (a->neg == b->neg) { | 71 | if (a->neg == b->neg) { |
74 | r_neg = a->neg; | 72 | r_neg = a->neg; |
@@ -90,7 +88,6 @@ BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) | |||
90 | } | 88 | } |
91 | 89 | ||
92 | r->neg = r_neg; | 90 | r->neg = r_neg; |
93 | bn_check_top(r); | ||
94 | return ret; | 91 | return ret; |
95 | } | 92 | } |
96 | 93 | ||
@@ -101,8 +98,6 @@ BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) | |||
101 | const BN_ULONG *ap, *bp; | 98 | const BN_ULONG *ap, *bp; |
102 | BN_ULONG *rp, carry, t1, t2; | 99 | BN_ULONG *rp, carry, t1, t2; |
103 | 100 | ||
104 | bn_check_top(a); | ||
105 | bn_check_top(b); | ||
106 | 101 | ||
107 | if (a->top < b->top) { | 102 | if (a->top < b->top) { |
108 | const BIGNUM *tmp; | 103 | const BIGNUM *tmp; |
@@ -139,7 +134,6 @@ BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) | |||
139 | r->top += carry; | 134 | r->top += carry; |
140 | 135 | ||
141 | r->neg = 0; | 136 | r->neg = 0; |
142 | bn_check_top(r); | ||
143 | return 1; | 137 | return 1; |
144 | } | 138 | } |
145 | 139 | ||
@@ -150,8 +144,6 @@ BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) | |||
150 | const BN_ULONG *ap, *bp; | 144 | const BN_ULONG *ap, *bp; |
151 | BN_ULONG t1, t2, borrow, *rp; | 145 | BN_ULONG t1, t2, borrow, *rp; |
152 | 146 | ||
153 | bn_check_top(a); | ||
154 | bn_check_top(b); | ||
155 | 147 | ||
156 | max = a->top; | 148 | max = a->top; |
157 | min = b->top; | 149 | min = b->top; |
@@ -195,8 +187,6 @@ BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) | |||
195 | { | 187 | { |
196 | int ret, r_neg; | 188 | int ret, r_neg; |
197 | 189 | ||
198 | bn_check_top(a); | ||
199 | bn_check_top(b); | ||
200 | 190 | ||
201 | if (a->neg != b->neg) { | 191 | if (a->neg != b->neg) { |
202 | r_neg = a->neg; | 192 | r_neg = a->neg; |
@@ -218,6 +208,5 @@ BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) | |||
218 | } | 208 | } |
219 | 209 | ||
220 | r->neg = r_neg; | 210 | r->neg = r_neg; |
221 | bn_check_top(r); | ||
222 | return ret; | 211 | return ret; |
223 | } | 212 | } |
diff --git a/src/lib/libcrypto/bn/bn_blind.c b/src/lib/libcrypto/bn/bn_blind.c index ecd6718279..412338ec02 100644 --- a/src/lib/libcrypto/bn/bn_blind.c +++ b/src/lib/libcrypto/bn/bn_blind.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_blind.c,v 1.17 2017/01/29 17:49:22 beck Exp $ */ | 1 | /* $OpenBSD: bn_blind.c,v 1.18 2022/11/26 13:56:33 jsing Exp $ */ |
2 | /* ==================================================================== | 2 | /* ==================================================================== |
3 | * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. |
4 | * | 4 | * |
@@ -141,7 +141,6 @@ BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod) | |||
141 | { | 141 | { |
142 | BN_BLINDING *ret = NULL; | 142 | BN_BLINDING *ret = NULL; |
143 | 143 | ||
144 | bn_check_top(mod); | ||
145 | 144 | ||
146 | if ((ret = calloc(1, sizeof(BN_BLINDING))) == NULL) { | 145 | if ((ret = calloc(1, sizeof(BN_BLINDING))) == NULL) { |
147 | BNerror(ERR_R_MALLOC_FAILURE); | 146 | BNerror(ERR_R_MALLOC_FAILURE); |
@@ -232,7 +231,6 @@ BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *ctx) | |||
232 | { | 231 | { |
233 | int ret = 1; | 232 | int ret = 1; |
234 | 233 | ||
235 | bn_check_top(n); | ||
236 | 234 | ||
237 | if ((b->A == NULL) || (b->Ai == NULL)) { | 235 | if ((b->A == NULL) || (b->Ai == NULL)) { |
238 | BNerror(BN_R_NOT_INITIALIZED); | 236 | BNerror(BN_R_NOT_INITIALIZED); |
@@ -267,7 +265,6 @@ BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, BN_CTX *ctx) | |||
267 | { | 265 | { |
268 | int ret; | 266 | int ret; |
269 | 267 | ||
270 | bn_check_top(n); | ||
271 | 268 | ||
272 | if (r != NULL) | 269 | if (r != NULL) |
273 | ret = BN_mod_mul(n, n, r, b->mod, ctx); | 270 | ret = BN_mod_mul(n, n, r, b->mod, ctx); |
@@ -279,7 +276,6 @@ BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, BN_CTX *ctx) | |||
279 | ret = BN_mod_mul(n, n, b->Ai, b->mod, ctx); | 276 | ret = BN_mod_mul(n, n, b->Ai, b->mod, ctx); |
280 | } | 277 | } |
281 | 278 | ||
282 | bn_check_top(n); | ||
283 | return (ret); | 279 | return (ret); |
284 | } | 280 | } |
285 | 281 | ||
diff --git a/src/lib/libcrypto/bn/bn_ctx.c b/src/lib/libcrypto/bn/bn_ctx.c index 0d64ccab93..8ac1685a00 100644 --- a/src/lib/libcrypto/bn/bn_ctx.c +++ b/src/lib/libcrypto/bn/bn_ctx.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_ctx.c,v 1.16 2019/08/20 10:59:09 schwarze Exp $ */ | 1 | /* $OpenBSD: bn_ctx.c,v 1.17 2022/11/26 13:56:33 jsing Exp $ */ |
2 | /* Written by Ulf Moeller for the OpenSSL project. */ | 2 | /* Written by Ulf Moeller for the OpenSSL project. */ |
3 | /* ==================================================================== | 3 | /* ==================================================================== |
4 | * Copyright (c) 1998-2004 The OpenSSL Project. All rights reserved. | 4 | * Copyright (c) 1998-2004 The OpenSSL Project. All rights reserved. |
@@ -471,7 +471,6 @@ BN_POOL_release(BN_POOL *p, unsigned int num) | |||
471 | 471 | ||
472 | p->used -= num; | 472 | p->used -= num; |
473 | while (num--) { | 473 | while (num--) { |
474 | bn_check_top(p->current->vals + offset); | ||
475 | if (!offset) { | 474 | if (!offset) { |
476 | offset = BN_CTX_POOL_SIZE - 1; | 475 | offset = BN_CTX_POOL_SIZE - 1; |
477 | p->current = p->current->prev; | 476 | p->current = p->current->prev; |
diff --git a/src/lib/libcrypto/bn/bn_div.c b/src/lib/libcrypto/bn/bn_div.c index f641386eb8..288ec92ef4 100644 --- a/src/lib/libcrypto/bn/bn_div.c +++ b/src/lib/libcrypto/bn/bn_div.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_div.c,v 1.26 2022/11/24 01:30:01 jsing Exp $ */ | 1 | /* $OpenBSD: bn_div.c,v 1.27 2022/11/26 13:56:33 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 | * |
@@ -127,23 +127,16 @@ BN_div_internal(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor | |||
127 | int num_n, div_n; | 127 | int num_n, div_n; |
128 | int no_branch = 0; | 128 | int no_branch = 0; |
129 | 129 | ||
130 | /* Invalid zero-padding would have particularly bad consequences | 130 | /* Invalid zero-padding would have particularly bad consequences. */ |
131 | * in the case of 'num', so don't just rely on bn_check_top() for this one | ||
132 | * (bn_check_top() works only for BN_DEBUG builds) */ | ||
133 | if (num->top > 0 && num->d[num->top - 1] == 0) { | 131 | if (num->top > 0 && num->d[num->top - 1] == 0) { |
134 | BNerror(BN_R_NOT_INITIALIZED); | 132 | BNerror(BN_R_NOT_INITIALIZED); |
135 | return 0; | 133 | return 0; |
136 | } | 134 | } |
137 | 135 | ||
138 | bn_check_top(num); | ||
139 | 136 | ||
140 | if (ct) | 137 | if (ct) |
141 | no_branch = 1; | 138 | no_branch = 1; |
142 | 139 | ||
143 | bn_check_top(dv); | ||
144 | bn_check_top(rm); | ||
145 | /* bn_check_top(num); */ /* 'num' has been checked already */ | ||
146 | bn_check_top(divisor); | ||
147 | 140 | ||
148 | if (BN_is_zero(divisor)) { | 141 | if (BN_is_zero(divisor)) { |
149 | BNerror(BN_R_DIV_BY_ZERO); | 142 | BNerror(BN_R_DIV_BY_ZERO); |
@@ -234,10 +227,6 @@ BN_div_internal(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor | |||
234 | 227 | ||
235 | if (!no_branch) { | 228 | if (!no_branch) { |
236 | if (BN_ucmp(&wnum, sdiv) >= 0) { | 229 | if (BN_ucmp(&wnum, sdiv) >= 0) { |
237 | /* If BN_DEBUG_RAND is defined BN_ucmp changes (via | ||
238 | * bn_pollute) the const bignum arguments => | ||
239 | * clean the values between top and max again */ | ||
240 | bn_clear_top2max(&wnum); | ||
241 | bn_sub_words(wnum.d, wnum.d, sdiv->d, div_n); | 230 | bn_sub_words(wnum.d, wnum.d, sdiv->d, div_n); |
242 | *resp = 1; | 231 | *resp = 1; |
243 | } else | 232 | } else |
@@ -365,7 +354,6 @@ BN_div_internal(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor | |||
365 | BN_rshift(rm, snum, norm_shift); | 354 | BN_rshift(rm, snum, norm_shift); |
366 | if (!BN_is_zero(rm)) | 355 | if (!BN_is_zero(rm)) |
367 | rm->neg = neg; | 356 | rm->neg = neg; |
368 | bn_check_top(rm); | ||
369 | } | 357 | } |
370 | if (no_branch) | 358 | if (no_branch) |
371 | bn_correct_top(res); | 359 | bn_correct_top(res); |
@@ -373,7 +361,6 @@ BN_div_internal(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor | |||
373 | return (1); | 361 | return (1); |
374 | 362 | ||
375 | err: | 363 | err: |
376 | bn_check_top(rm); | ||
377 | BN_CTX_end(ctx); | 364 | BN_CTX_end(ctx); |
378 | return (0); | 365 | return (0); |
379 | } | 366 | } |
diff --git a/src/lib/libcrypto/bn/bn_exp.c b/src/lib/libcrypto/bn/bn_exp.c index 64156f716f..3bb0dd1304 100644 --- a/src/lib/libcrypto/bn/bn_exp.c +++ b/src/lib/libcrypto/bn/bn_exp.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_exp.c,v 1.33 2022/11/24 01:30:01 jsing Exp $ */ | 1 | /* $OpenBSD: bn_exp.c,v 1.34 2022/11/26 13:56:33 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 | * |
@@ -168,7 +168,6 @@ err: | |||
168 | if (r != rr && rr != NULL) | 168 | if (r != rr && rr != NULL) |
169 | BN_copy(r, rr); | 169 | BN_copy(r, rr); |
170 | BN_CTX_end(ctx); | 170 | BN_CTX_end(ctx); |
171 | bn_check_top(r); | ||
172 | return (ret); | 171 | return (ret); |
173 | } | 172 | } |
174 | 173 | ||
@@ -178,9 +177,6 @@ BN_mod_exp_internal(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m | |||
178 | { | 177 | { |
179 | int ret; | 178 | int ret; |
180 | 179 | ||
181 | bn_check_top(a); | ||
182 | bn_check_top(p); | ||
183 | bn_check_top(m); | ||
184 | 180 | ||
185 | /* For even modulus m = 2^k*m_odd, it might make sense to compute | 181 | /* For even modulus m = 2^k*m_odd, it might make sense to compute |
186 | * a^p mod m_odd and a^p mod 2^k separately (with Montgomery | 182 | * a^p mod m_odd and a^p mod 2^k separately (with Montgomery |
@@ -222,7 +218,6 @@ BN_mod_exp_internal(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m | |||
222 | ret = BN_mod_exp_recp(r, a,p, m, ctx); | 218 | ret = BN_mod_exp_recp(r, a,p, m, ctx); |
223 | } | 219 | } |
224 | 220 | ||
225 | bn_check_top(r); | ||
226 | return (ret); | 221 | return (ret); |
227 | } | 222 | } |
228 | 223 | ||
@@ -381,7 +376,6 @@ BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m, | |||
381 | err: | 376 | err: |
382 | BN_CTX_end(ctx); | 377 | BN_CTX_end(ctx); |
383 | BN_RECP_CTX_free(&recp); | 378 | BN_RECP_CTX_free(&recp); |
384 | bn_check_top(r); | ||
385 | return (ret); | 379 | return (ret); |
386 | } | 380 | } |
387 | 381 | ||
@@ -401,9 +395,6 @@ BN_mod_exp_mont_internal(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, const BIG | |||
401 | return BN_mod_exp_mont_consttime(rr, a, p, m, ctx, in_mont); | 395 | return BN_mod_exp_mont_consttime(rr, a, p, m, ctx, in_mont); |
402 | } | 396 | } |
403 | 397 | ||
404 | bn_check_top(a); | ||
405 | bn_check_top(p); | ||
406 | bn_check_top(m); | ||
407 | 398 | ||
408 | if (!BN_is_odd(m)) { | 399 | if (!BN_is_odd(m)) { |
409 | BNerror(BN_R_CALLED_WITH_EVEN_MODULUS); | 400 | BNerror(BN_R_CALLED_WITH_EVEN_MODULUS); |
@@ -533,7 +524,6 @@ err: | |||
533 | if ((in_mont == NULL) && (mont != NULL)) | 524 | if ((in_mont == NULL) && (mont != NULL)) |
534 | BN_MONT_CTX_free(mont); | 525 | BN_MONT_CTX_free(mont); |
535 | BN_CTX_end(ctx); | 526 | BN_CTX_end(ctx); |
536 | bn_check_top(rr); | ||
537 | return (ret); | 527 | return (ret); |
538 | } | 528 | } |
539 | 529 | ||
@@ -658,9 +648,6 @@ BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, | |||
658 | unsigned char *powerbuf = NULL; | 648 | unsigned char *powerbuf = NULL; |
659 | BIGNUM tmp, am; | 649 | BIGNUM tmp, am; |
660 | 650 | ||
661 | bn_check_top(a); | ||
662 | bn_check_top(p); | ||
663 | bn_check_top(m); | ||
664 | 651 | ||
665 | if (!BN_is_odd(m)) { | 652 | if (!BN_is_odd(m)) { |
666 | BNerror(BN_R_CALLED_WITH_EVEN_MODULUS); | 653 | BNerror(BN_R_CALLED_WITH_EVEN_MODULUS); |
@@ -937,8 +924,6 @@ BN_mod_exp_mont_word(BIGNUM *rr, BN_ULONG a, const BIGNUM *p, const BIGNUM *m, | |||
937 | return -1; | 924 | return -1; |
938 | } | 925 | } |
939 | 926 | ||
940 | bn_check_top(p); | ||
941 | bn_check_top(m); | ||
942 | 927 | ||
943 | if (!BN_is_odd(m)) { | 928 | if (!BN_is_odd(m)) { |
944 | BNerror(BN_R_CALLED_WITH_EVEN_MODULUS); | 929 | BNerror(BN_R_CALLED_WITH_EVEN_MODULUS); |
@@ -1052,7 +1037,6 @@ err: | |||
1052 | if ((in_mont == NULL) && (mont != NULL)) | 1037 | if ((in_mont == NULL) && (mont != NULL)) |
1053 | BN_MONT_CTX_free(mont); | 1038 | BN_MONT_CTX_free(mont); |
1054 | BN_CTX_end(ctx); | 1039 | BN_CTX_end(ctx); |
1055 | bn_check_top(rr); | ||
1056 | return (ret); | 1040 | return (ret); |
1057 | } | 1041 | } |
1058 | 1042 | ||
@@ -1172,6 +1156,5 @@ BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m, | |||
1172 | 1156 | ||
1173 | err: | 1157 | err: |
1174 | BN_CTX_end(ctx); | 1158 | BN_CTX_end(ctx); |
1175 | bn_check_top(r); | ||
1176 | return (ret); | 1159 | return (ret); |
1177 | } | 1160 | } |
diff --git a/src/lib/libcrypto/bn/bn_exp2.c b/src/lib/libcrypto/bn/bn_exp2.c index c63503f941..b2fd53e971 100644 --- a/src/lib/libcrypto/bn/bn_exp2.c +++ b/src/lib/libcrypto/bn/bn_exp2.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_exp2.c,v 1.13 2022/02/07 19:49:56 tb Exp $ */ | 1 | /* $OpenBSD: bn_exp2.c,v 1.14 2022/11/26 13:56:33 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 | * |
@@ -130,11 +130,6 @@ BN_mod_exp2_mont(BIGNUM *rr, const BIGNUM *a1, const BIGNUM *p1, | |||
130 | BIGNUM *val1[TABLE_SIZE], *val2[TABLE_SIZE]; | 130 | BIGNUM *val1[TABLE_SIZE], *val2[TABLE_SIZE]; |
131 | BN_MONT_CTX *mont = NULL; | 131 | BN_MONT_CTX *mont = NULL; |
132 | 132 | ||
133 | bn_check_top(a1); | ||
134 | bn_check_top(p1); | ||
135 | bn_check_top(a2); | ||
136 | bn_check_top(p2); | ||
137 | bn_check_top(m); | ||
138 | 133 | ||
139 | if (!BN_is_odd(m)) { | 134 | if (!BN_is_odd(m)) { |
140 | BNerror(BN_R_CALLED_WITH_EVEN_MODULUS); | 135 | BNerror(BN_R_CALLED_WITH_EVEN_MODULUS); |
@@ -303,6 +298,5 @@ err: | |||
303 | if ((in_mont == NULL) && (mont != NULL)) | 298 | if ((in_mont == NULL) && (mont != NULL)) |
304 | BN_MONT_CTX_free(mont); | 299 | BN_MONT_CTX_free(mont); |
305 | BN_CTX_end(ctx); | 300 | BN_CTX_end(ctx); |
306 | bn_check_top(rr); | ||
307 | return (ret); | 301 | return (ret); |
308 | } | 302 | } |
diff --git a/src/lib/libcrypto/bn/bn_gcd.c b/src/lib/libcrypto/bn/bn_gcd.c index d756398c8f..3d92a43cef 100644 --- a/src/lib/libcrypto/bn/bn_gcd.c +++ b/src/lib/libcrypto/bn/bn_gcd.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_gcd.c,v 1.16 2021/12/26 15:16:50 tb Exp $ */ | 1 | /* $OpenBSD: bn_gcd.c,v 1.17 2022/11/26 13:56:33 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 | * |
@@ -123,8 +123,6 @@ BN_gcd(BIGNUM *r, const BIGNUM *in_a, const BIGNUM *in_b, BN_CTX *ctx) | |||
123 | BIGNUM *a, *b, *t; | 123 | BIGNUM *a, *b, *t; |
124 | int ret = 0; | 124 | int ret = 0; |
125 | 125 | ||
126 | bn_check_top(in_a); | ||
127 | bn_check_top(in_b); | ||
128 | 126 | ||
129 | BN_CTX_start(ctx); | 127 | BN_CTX_start(ctx); |
130 | if ((a = BN_CTX_get(ctx)) == NULL) | 128 | if ((a = BN_CTX_get(ctx)) == NULL) |
@@ -154,7 +152,6 @@ BN_gcd(BIGNUM *r, const BIGNUM *in_a, const BIGNUM *in_b, BN_CTX *ctx) | |||
154 | 152 | ||
155 | err: | 153 | err: |
156 | BN_CTX_end(ctx); | 154 | BN_CTX_end(ctx); |
157 | bn_check_top(r); | ||
158 | return (ret); | 155 | return (ret); |
159 | } | 156 | } |
160 | 157 | ||
@@ -179,8 +176,6 @@ euclid(BIGNUM *a, BIGNUM *b) | |||
179 | BIGNUM *t; | 176 | BIGNUM *t; |
180 | int shifts = 0; | 177 | int shifts = 0; |
181 | 178 | ||
182 | bn_check_top(a); | ||
183 | bn_check_top(b); | ||
184 | 179 | ||
185 | /* 0 <= b <= a */ | 180 | /* 0 <= b <= a */ |
186 | while (!BN_is_zero(b)) { | 181 | while (!BN_is_zero(b)) { |
@@ -236,7 +231,6 @@ euclid(BIGNUM *a, BIGNUM *b) | |||
236 | if (!BN_lshift(a, a, shifts)) | 231 | if (!BN_lshift(a, a, shifts)) |
237 | goto err; | 232 | goto err; |
238 | } | 233 | } |
239 | bn_check_top(a); | ||
240 | return (a); | 234 | return (a); |
241 | 235 | ||
242 | err: | 236 | err: |
@@ -259,8 +253,6 @@ BN_mod_inverse_internal(BIGNUM *in, const BIGNUM *a, const BIGNUM *n, BN_CTX *ct | |||
259 | if (ct) | 253 | if (ct) |
260 | return BN_mod_inverse_no_branch(in, a, n, ctx); | 254 | return BN_mod_inverse_no_branch(in, a, n, ctx); |
261 | 255 | ||
262 | bn_check_top(a); | ||
263 | bn_check_top(n); | ||
264 | 256 | ||
265 | BN_CTX_start(ctx); | 257 | BN_CTX_start(ctx); |
266 | if ((A = BN_CTX_get(ctx)) == NULL) | 258 | if ((A = BN_CTX_get(ctx)) == NULL) |
@@ -536,7 +528,6 @@ err: | |||
536 | if ((ret == NULL) && (in == NULL)) | 528 | if ((ret == NULL) && (in == NULL)) |
537 | BN_free(R); | 529 | BN_free(R); |
538 | BN_CTX_end(ctx); | 530 | BN_CTX_end(ctx); |
539 | bn_check_top(ret); | ||
540 | return (ret); | 531 | return (ret); |
541 | } | 532 | } |
542 | 533 | ||
@@ -573,8 +564,6 @@ BN_mod_inverse_no_branch(BIGNUM *in, const BIGNUM *a, const BIGNUM *n, | |||
573 | BIGNUM *ret = NULL; | 564 | BIGNUM *ret = NULL; |
574 | int sign; | 565 | int sign; |
575 | 566 | ||
576 | bn_check_top(a); | ||
577 | bn_check_top(n); | ||
578 | 567 | ||
579 | BN_init(&local_A); | 568 | BN_init(&local_A); |
580 | BN_init(&local_B); | 569 | BN_init(&local_B); |
@@ -725,7 +714,6 @@ err: | |||
725 | if ((ret == NULL) && (in == NULL)) | 714 | if ((ret == NULL) && (in == NULL)) |
726 | BN_free(R); | 715 | BN_free(R); |
727 | BN_CTX_end(ctx); | 716 | BN_CTX_end(ctx); |
728 | bn_check_top(ret); | ||
729 | return (ret); | 717 | return (ret); |
730 | } | 718 | } |
731 | 719 | ||
@@ -750,8 +738,6 @@ BN_gcd_no_branch(BIGNUM *in, const BIGNUM *a, const BIGNUM *n, | |||
750 | BN_init(&local_A); | 738 | BN_init(&local_A); |
751 | BN_init(&local_B); | 739 | BN_init(&local_B); |
752 | 740 | ||
753 | bn_check_top(a); | ||
754 | bn_check_top(n); | ||
755 | 741 | ||
756 | BN_CTX_start(ctx); | 742 | BN_CTX_start(ctx); |
757 | if ((A = BN_CTX_get(ctx)) == NULL) | 743 | if ((A = BN_CTX_get(ctx)) == NULL) |
@@ -871,6 +857,5 @@ err: | |||
871 | if ((ret == NULL) && (in == NULL)) | 857 | if ((ret == NULL) && (in == NULL)) |
872 | BN_free(R); | 858 | BN_free(R); |
873 | BN_CTX_end(ctx); | 859 | BN_CTX_end(ctx); |
874 | bn_check_top(ret); | ||
875 | return (ret); | 860 | return (ret); |
876 | } | 861 | } |
diff --git a/src/lib/libcrypto/bn/bn_gf2m.c b/src/lib/libcrypto/bn/bn_gf2m.c index eceaba47c3..8adbbeb040 100644 --- a/src/lib/libcrypto/bn/bn_gf2m.c +++ b/src/lib/libcrypto/bn/bn_gf2m.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_gf2m.c,v 1.26 2022/11/24 01:30:01 jsing Exp $ */ | 1 | /* $OpenBSD: bn_gf2m.c,v 1.27 2022/11/26 13:56:33 jsing Exp $ */ |
2 | /* ==================================================================== | 2 | /* ==================================================================== |
3 | * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. | 3 | * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. |
4 | * | 4 | * |
@@ -325,8 +325,6 @@ BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) | |||
325 | int i; | 325 | int i; |
326 | const BIGNUM *at, *bt; | 326 | const BIGNUM *at, *bt; |
327 | 327 | ||
328 | bn_check_top(a); | ||
329 | bn_check_top(b); | ||
330 | 328 | ||
331 | if (a->top < b->top) { | 329 | if (a->top < b->top) { |
332 | at = b; | 330 | at = b; |
@@ -368,7 +366,6 @@ BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]) | |||
368 | int n, dN, d0, d1; | 366 | int n, dN, d0, d1; |
369 | BN_ULONG zz, *z; | 367 | BN_ULONG zz, *z; |
370 | 368 | ||
371 | bn_check_top(a); | ||
372 | 369 | ||
373 | if (!p[0]) { | 370 | if (!p[0]) { |
374 | /* reduction mod 1 => return 0 */ | 371 | /* reduction mod 1 => return 0 */ |
@@ -467,8 +464,6 @@ BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p) | |||
467 | const int max = BN_num_bits(p) + 1; | 464 | const int max = BN_num_bits(p) + 1; |
468 | int *arr = NULL; | 465 | int *arr = NULL; |
469 | 466 | ||
470 | bn_check_top(a); | ||
471 | bn_check_top(p); | ||
472 | if ((arr = reallocarray(NULL, max, sizeof(int))) == NULL) | 467 | if ((arr = reallocarray(NULL, max, sizeof(int))) == NULL) |
473 | goto err; | 468 | goto err; |
474 | ret = BN_GF2m_poly2arr(p, arr, max); | 469 | ret = BN_GF2m_poly2arr(p, arr, max); |
@@ -477,7 +472,6 @@ BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p) | |||
477 | goto err; | 472 | goto err; |
478 | } | 473 | } |
479 | ret = BN_GF2m_mod_arr(r, a, arr); | 474 | ret = BN_GF2m_mod_arr(r, a, arr); |
480 | bn_check_top(r); | ||
481 | 475 | ||
482 | err: | 476 | err: |
483 | free(arr); | 477 | free(arr); |
@@ -496,8 +490,6 @@ BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const int p[], | |||
496 | BIGNUM *s; | 490 | BIGNUM *s; |
497 | BN_ULONG x1, x0, y1, y0, zz[4]; | 491 | BN_ULONG x1, x0, y1, y0, zz[4]; |
498 | 492 | ||
499 | bn_check_top(a); | ||
500 | bn_check_top(b); | ||
501 | 493 | ||
502 | if (a == b) { | 494 | if (a == b) { |
503 | return BN_GF2m_mod_sqr_arr(r, a, p, ctx); | 495 | return BN_GF2m_mod_sqr_arr(r, a, p, ctx); |
@@ -530,7 +522,6 @@ BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const int p[], | |||
530 | bn_correct_top(s); | 522 | bn_correct_top(s); |
531 | if (BN_GF2m_mod_arr(r, s, p)) | 523 | if (BN_GF2m_mod_arr(r, s, p)) |
532 | ret = 1; | 524 | ret = 1; |
533 | bn_check_top(r); | ||
534 | 525 | ||
535 | err: | 526 | err: |
536 | BN_CTX_end(ctx); | 527 | BN_CTX_end(ctx); |
@@ -552,9 +543,6 @@ BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *p, | |||
552 | const int max = BN_num_bits(p) + 1; | 543 | const int max = BN_num_bits(p) + 1; |
553 | int *arr = NULL; | 544 | int *arr = NULL; |
554 | 545 | ||
555 | bn_check_top(a); | ||
556 | bn_check_top(b); | ||
557 | bn_check_top(p); | ||
558 | if ((arr = reallocarray(NULL, max, sizeof(int))) == NULL) | 546 | if ((arr = reallocarray(NULL, max, sizeof(int))) == NULL) |
559 | goto err; | 547 | goto err; |
560 | ret = BN_GF2m_poly2arr(p, arr, max); | 548 | ret = BN_GF2m_poly2arr(p, arr, max); |
@@ -563,7 +551,6 @@ BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *p, | |||
563 | goto err; | 551 | goto err; |
564 | } | 552 | } |
565 | ret = BN_GF2m_mod_mul_arr(r, a, b, arr, ctx); | 553 | ret = BN_GF2m_mod_mul_arr(r, a, b, arr, ctx); |
566 | bn_check_top(r); | ||
567 | 554 | ||
568 | err: | 555 | err: |
569 | free(arr); | 556 | free(arr); |
@@ -578,7 +565,6 @@ BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[], BN_CTX *ctx) | |||
578 | int i, ret = 0; | 565 | int i, ret = 0; |
579 | BIGNUM *s; | 566 | BIGNUM *s; |
580 | 567 | ||
581 | bn_check_top(a); | ||
582 | BN_CTX_start(ctx); | 568 | BN_CTX_start(ctx); |
583 | if ((s = BN_CTX_get(ctx)) == NULL) | 569 | if ((s = BN_CTX_get(ctx)) == NULL) |
584 | goto err; | 570 | goto err; |
@@ -594,7 +580,6 @@ BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[], BN_CTX *ctx) | |||
594 | bn_correct_top(s); | 580 | bn_correct_top(s); |
595 | if (!BN_GF2m_mod_arr(r, s, p)) | 581 | if (!BN_GF2m_mod_arr(r, s, p)) |
596 | goto err; | 582 | goto err; |
597 | bn_check_top(r); | ||
598 | ret = 1; | 583 | ret = 1; |
599 | 584 | ||
600 | err: | 585 | err: |
@@ -615,8 +600,6 @@ BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | |||
615 | const int max = BN_num_bits(p) + 1; | 600 | const int max = BN_num_bits(p) + 1; |
616 | int *arr = NULL; | 601 | int *arr = NULL; |
617 | 602 | ||
618 | bn_check_top(a); | ||
619 | bn_check_top(p); | ||
620 | if ((arr = reallocarray(NULL, max, sizeof(int))) == NULL) | 603 | if ((arr = reallocarray(NULL, max, sizeof(int))) == NULL) |
621 | goto err; | 604 | goto err; |
622 | ret = BN_GF2m_poly2arr(p, arr, max); | 605 | ret = BN_GF2m_poly2arr(p, arr, max); |
@@ -625,7 +608,6 @@ BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | |||
625 | goto err; | 608 | goto err; |
626 | } | 609 | } |
627 | ret = BN_GF2m_mod_sqr_arr(r, a, arr, ctx); | 610 | ret = BN_GF2m_mod_sqr_arr(r, a, arr, ctx); |
628 | bn_check_top(r); | ||
629 | 611 | ||
630 | err: | 612 | err: |
631 | free(arr); | 613 | free(arr); |
@@ -644,8 +626,6 @@ BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | |||
644 | BIGNUM *b, *c = NULL, *u = NULL, *v = NULL, *tmp; | 626 | BIGNUM *b, *c = NULL, *u = NULL, *v = NULL, *tmp; |
645 | int ret = 0; | 627 | int ret = 0; |
646 | 628 | ||
647 | bn_check_top(a); | ||
648 | bn_check_top(p); | ||
649 | 629 | ||
650 | BN_CTX_start(ctx); | 630 | BN_CTX_start(ctx); |
651 | 631 | ||
@@ -795,7 +775,6 @@ BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | |||
795 | 775 | ||
796 | if (!BN_copy(r, b)) | 776 | if (!BN_copy(r, b)) |
797 | goto err; | 777 | goto err; |
798 | bn_check_top(r); | ||
799 | ret = 1; | 778 | ret = 1; |
800 | 779 | ||
801 | err: | 780 | err: |
@@ -820,7 +799,6 @@ BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *xx, const int p[], BN_CTX *ctx) | |||
820 | BIGNUM *field; | 799 | BIGNUM *field; |
821 | int ret = 0; | 800 | int ret = 0; |
822 | 801 | ||
823 | bn_check_top(xx); | ||
824 | BN_CTX_start(ctx); | 802 | BN_CTX_start(ctx); |
825 | if ((field = BN_CTX_get(ctx)) == NULL) | 803 | if ((field = BN_CTX_get(ctx)) == NULL) |
826 | goto err; | 804 | goto err; |
@@ -828,7 +806,6 @@ BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *xx, const int p[], BN_CTX *ctx) | |||
828 | goto err; | 806 | goto err; |
829 | 807 | ||
830 | ret = BN_GF2m_mod_inv(r, xx, field, ctx); | 808 | ret = BN_GF2m_mod_inv(r, xx, field, ctx); |
831 | bn_check_top(r); | ||
832 | 809 | ||
833 | err: | 810 | err: |
834 | BN_CTX_end(ctx); | 811 | BN_CTX_end(ctx); |
@@ -847,9 +824,6 @@ BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *y, const BIGNUM *x, const BIGNUM *p, | |||
847 | BIGNUM *xinv = NULL; | 824 | BIGNUM *xinv = NULL; |
848 | int ret = 0; | 825 | int ret = 0; |
849 | 826 | ||
850 | bn_check_top(y); | ||
851 | bn_check_top(x); | ||
852 | bn_check_top(p); | ||
853 | 827 | ||
854 | BN_CTX_start(ctx); | 828 | BN_CTX_start(ctx); |
855 | if ((xinv = BN_CTX_get(ctx)) == NULL) | 829 | if ((xinv = BN_CTX_get(ctx)) == NULL) |
@@ -859,7 +833,6 @@ BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *y, const BIGNUM *x, const BIGNUM *p, | |||
859 | goto err; | 833 | goto err; |
860 | if (!BN_GF2m_mod_mul(r, y, xinv, p, ctx)) | 834 | if (!BN_GF2m_mod_mul(r, y, xinv, p, ctx)) |
861 | goto err; | 835 | goto err; |
862 | bn_check_top(r); | ||
863 | ret = 1; | 836 | ret = 1; |
864 | 837 | ||
865 | err: | 838 | err: |
@@ -880,9 +853,6 @@ BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *y, const BIGNUM *x, const BIGNUM *p, | |||
880 | BIGNUM *a, *b, *u, *v; | 853 | BIGNUM *a, *b, *u, *v; |
881 | int ret = 0; | 854 | int ret = 0; |
882 | 855 | ||
883 | bn_check_top(y); | ||
884 | bn_check_top(x); | ||
885 | bn_check_top(p); | ||
886 | 856 | ||
887 | BN_CTX_start(ctx); | 857 | BN_CTX_start(ctx); |
888 | 858 | ||
@@ -949,7 +919,6 @@ BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *y, const BIGNUM *x, const BIGNUM *p, | |||
949 | 919 | ||
950 | if (!BN_copy(r, u)) | 920 | if (!BN_copy(r, u)) |
951 | goto err; | 921 | goto err; |
952 | bn_check_top(r); | ||
953 | ret = 1; | 922 | ret = 1; |
954 | 923 | ||
955 | err: | 924 | err: |
@@ -972,8 +941,6 @@ BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *yy, const BIGNUM *xx, | |||
972 | BIGNUM *field; | 941 | BIGNUM *field; |
973 | int ret = 0; | 942 | int ret = 0; |
974 | 943 | ||
975 | bn_check_top(yy); | ||
976 | bn_check_top(xx); | ||
977 | 944 | ||
978 | BN_CTX_start(ctx); | 945 | BN_CTX_start(ctx); |
979 | if ((field = BN_CTX_get(ctx)) == NULL) | 946 | if ((field = BN_CTX_get(ctx)) == NULL) |
@@ -982,7 +949,6 @@ BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *yy, const BIGNUM *xx, | |||
982 | goto err; | 949 | goto err; |
983 | 950 | ||
984 | ret = BN_GF2m_mod_div(r, yy, xx, field, ctx); | 951 | ret = BN_GF2m_mod_div(r, yy, xx, field, ctx); |
985 | bn_check_top(r); | ||
986 | 952 | ||
987 | err: | 953 | err: |
988 | BN_CTX_end(ctx); | 954 | BN_CTX_end(ctx); |
@@ -1001,8 +967,6 @@ BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const int p[], | |||
1001 | int ret = 0, i, n; | 967 | int ret = 0, i, n; |
1002 | BIGNUM *u; | 968 | BIGNUM *u; |
1003 | 969 | ||
1004 | bn_check_top(a); | ||
1005 | bn_check_top(b); | ||
1006 | 970 | ||
1007 | if (BN_is_zero(b)) | 971 | if (BN_is_zero(b)) |
1008 | return (BN_one(r)); | 972 | return (BN_one(r)); |
@@ -1028,7 +992,6 @@ BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const int p[], | |||
1028 | } | 992 | } |
1029 | if (!BN_copy(r, u)) | 993 | if (!BN_copy(r, u)) |
1030 | goto err; | 994 | goto err; |
1031 | bn_check_top(r); | ||
1032 | ret = 1; | 995 | ret = 1; |
1033 | 996 | ||
1034 | err: | 997 | err: |
@@ -1051,9 +1014,6 @@ BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *p, | |||
1051 | const int max = BN_num_bits(p) + 1; | 1014 | const int max = BN_num_bits(p) + 1; |
1052 | int *arr = NULL; | 1015 | int *arr = NULL; |
1053 | 1016 | ||
1054 | bn_check_top(a); | ||
1055 | bn_check_top(b); | ||
1056 | bn_check_top(p); | ||
1057 | if ((arr = reallocarray(NULL, max, sizeof(int))) == NULL) | 1017 | if ((arr = reallocarray(NULL, max, sizeof(int))) == NULL) |
1058 | goto err; | 1018 | goto err; |
1059 | ret = BN_GF2m_poly2arr(p, arr, max); | 1019 | ret = BN_GF2m_poly2arr(p, arr, max); |
@@ -1062,7 +1022,6 @@ BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *p, | |||
1062 | goto err; | 1022 | goto err; |
1063 | } | 1023 | } |
1064 | ret = BN_GF2m_mod_exp_arr(r, a, b, arr, ctx); | 1024 | ret = BN_GF2m_mod_exp_arr(r, a, b, arr, ctx); |
1065 | bn_check_top(r); | ||
1066 | 1025 | ||
1067 | err: | 1026 | err: |
1068 | free(arr); | 1027 | free(arr); |
@@ -1079,7 +1038,6 @@ BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a, const int p[], BN_CTX *ctx) | |||
1079 | int ret = 0; | 1038 | int ret = 0; |
1080 | BIGNUM *u; | 1039 | BIGNUM *u; |
1081 | 1040 | ||
1082 | bn_check_top(a); | ||
1083 | 1041 | ||
1084 | if (!p[0]) { | 1042 | if (!p[0]) { |
1085 | /* reduction mod 1 => return 0 */ | 1043 | /* reduction mod 1 => return 0 */ |
@@ -1094,7 +1052,6 @@ BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a, const int p[], BN_CTX *ctx) | |||
1094 | if (!BN_set_bit(u, p[0] - 1)) | 1052 | if (!BN_set_bit(u, p[0] - 1)) |
1095 | goto err; | 1053 | goto err; |
1096 | ret = BN_GF2m_mod_exp_arr(r, a, u, p, ctx); | 1054 | ret = BN_GF2m_mod_exp_arr(r, a, u, p, ctx); |
1097 | bn_check_top(r); | ||
1098 | 1055 | ||
1099 | err: | 1056 | err: |
1100 | BN_CTX_end(ctx); | 1057 | BN_CTX_end(ctx); |
@@ -1114,8 +1071,6 @@ BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | |||
1114 | int ret = 0; | 1071 | int ret = 0; |
1115 | const int max = BN_num_bits(p) + 1; | 1072 | const int max = BN_num_bits(p) + 1; |
1116 | int *arr = NULL; | 1073 | int *arr = NULL; |
1117 | bn_check_top(a); | ||
1118 | bn_check_top(p); | ||
1119 | if ((arr = reallocarray(NULL, max, sizeof(int))) == NULL) | 1074 | if ((arr = reallocarray(NULL, max, sizeof(int))) == NULL) |
1120 | goto err; | 1075 | goto err; |
1121 | ret = BN_GF2m_poly2arr(p, arr, max); | 1076 | ret = BN_GF2m_poly2arr(p, arr, max); |
@@ -1124,7 +1079,6 @@ BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | |||
1124 | goto err; | 1079 | goto err; |
1125 | } | 1080 | } |
1126 | ret = BN_GF2m_mod_sqrt_arr(r, a, arr, ctx); | 1081 | ret = BN_GF2m_mod_sqrt_arr(r, a, arr, ctx); |
1127 | bn_check_top(r); | ||
1128 | 1082 | ||
1129 | err: | 1083 | err: |
1130 | free(arr); | 1084 | free(arr); |
@@ -1141,7 +1095,6 @@ BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a_, const int p[], | |||
1141 | int ret = 0, count = 0, j; | 1095 | int ret = 0, count = 0, j; |
1142 | BIGNUM *a, *z, *rho, *w, *w2, *tmp; | 1096 | BIGNUM *a, *z, *rho, *w, *w2, *tmp; |
1143 | 1097 | ||
1144 | bn_check_top(a_); | ||
1145 | 1098 | ||
1146 | if (!p[0]) { | 1099 | if (!p[0]) { |
1147 | /* reduction mod 1 => return 0 */ | 1100 | /* reduction mod 1 => return 0 */ |
@@ -1228,7 +1181,6 @@ BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a_, const int p[], | |||
1228 | 1181 | ||
1229 | if (!BN_copy(r, z)) | 1182 | if (!BN_copy(r, z)) |
1230 | goto err; | 1183 | goto err; |
1231 | bn_check_top(r); | ||
1232 | 1184 | ||
1233 | ret = 1; | 1185 | ret = 1; |
1234 | 1186 | ||
@@ -1250,8 +1202,6 @@ BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | |||
1250 | const int max = BN_num_bits(p) + 1; | 1202 | const int max = BN_num_bits(p) + 1; |
1251 | int *arr = NULL; | 1203 | int *arr = NULL; |
1252 | 1204 | ||
1253 | bn_check_top(a); | ||
1254 | bn_check_top(p); | ||
1255 | if ((arr = reallocarray(NULL, max, sizeof(int))) == NULL) | 1205 | if ((arr = reallocarray(NULL, max, sizeof(int))) == NULL) |
1256 | goto err; | 1206 | goto err; |
1257 | ret = BN_GF2m_poly2arr(p, arr, max); | 1207 | ret = BN_GF2m_poly2arr(p, arr, max); |
@@ -1260,7 +1210,6 @@ BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | |||
1260 | goto err; | 1210 | goto err; |
1261 | } | 1211 | } |
1262 | ret = BN_GF2m_mod_solve_quad_arr(r, a, arr, ctx); | 1212 | ret = BN_GF2m_mod_solve_quad_arr(r, a, arr, ctx); |
1263 | bn_check_top(r); | ||
1264 | 1213 | ||
1265 | err: | 1214 | err: |
1266 | free(arr); | 1215 | free(arr); |
@@ -1312,13 +1261,11 @@ BN_GF2m_arr2poly(const int p[], BIGNUM *a) | |||
1312 | { | 1261 | { |
1313 | int i; | 1262 | int i; |
1314 | 1263 | ||
1315 | bn_check_top(a); | ||
1316 | BN_zero(a); | 1264 | BN_zero(a); |
1317 | for (i = 0; p[i] != -1; i++) { | 1265 | for (i = 0; p[i] != -1; i++) { |
1318 | if (BN_set_bit(a, p[i]) == 0) | 1266 | if (BN_set_bit(a, p[i]) == 0) |
1319 | return 0; | 1267 | return 0; |
1320 | } | 1268 | } |
1321 | bn_check_top(a); | ||
1322 | 1269 | ||
1323 | return 1; | 1270 | return 1; |
1324 | } | 1271 | } |
diff --git a/src/lib/libcrypto/bn/bn_kron.c b/src/lib/libcrypto/bn/bn_kron.c index 998adedcd8..8629892a72 100644 --- a/src/lib/libcrypto/bn/bn_kron.c +++ b/src/lib/libcrypto/bn/bn_kron.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_kron.c,v 1.10 2022/07/12 16:08:19 tb Exp $ */ | 1 | /* $OpenBSD: bn_kron.c,v 1.11 2022/11/26 13:56:33 jsing Exp $ */ |
2 | /* ==================================================================== | 2 | /* ==================================================================== |
3 | * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. |
4 | * | 4 | * |
@@ -71,8 +71,6 @@ BN_kronecker(const BIGNUM *A, const BIGNUM *B, BN_CTX *ctx) | |||
71 | int k, v; | 71 | int k, v; |
72 | int ret = -2; | 72 | int ret = -2; |
73 | 73 | ||
74 | bn_check_top(A); | ||
75 | bn_check_top(B); | ||
76 | 74 | ||
77 | BN_CTX_start(ctx); | 75 | BN_CTX_start(ctx); |
78 | 76 | ||
diff --git a/src/lib/libcrypto/bn/bn_lcl.h b/src/lib/libcrypto/bn/bn_lcl.h index d5f1250cfd..64855115f2 100644 --- a/src/lib/libcrypto/bn/bn_lcl.h +++ b/src/lib/libcrypto/bn/bn_lcl.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_lcl.h,v 1.38 2022/11/24 01:30:01 jsing Exp $ */ | 1 | /* $OpenBSD: bn_lcl.h,v 1.39 2022/11/26 13:56:33 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 | * |
@@ -327,18 +327,6 @@ struct bn_gencb_st { | |||
327 | #define Lw(t) (((BN_ULONG)(t))&BN_MASK2) | 327 | #define Lw(t) (((BN_ULONG)(t))&BN_MASK2) |
328 | #define Hw(t) (((BN_ULONG)((t)>>BN_BITS2))&BN_MASK2) | 328 | #define Hw(t) (((BN_ULONG)((t)>>BN_BITS2))&BN_MASK2) |
329 | 329 | ||
330 | #ifdef BN_DEBUG_RAND | ||
331 | #define bn_clear_top2max(a) \ | ||
332 | { \ | ||
333 | int ind = (a)->dmax - (a)->top; \ | ||
334 | BN_ULONG *ftl = &(a)->d[(a)->top-1]; \ | ||
335 | for (; ind != 0; ind--) \ | ||
336 | *(++ftl) = 0x0; \ | ||
337 | } | ||
338 | #else | ||
339 | #define bn_clear_top2max(a) | ||
340 | #endif | ||
341 | |||
342 | #ifdef BN_LLONG | 330 | #ifdef BN_LLONG |
343 | #define mul_add(r,a,w,c) { \ | 331 | #define mul_add(r,a,w,c) { \ |
344 | BN_ULLONG t; \ | 332 | BN_ULLONG t; \ |
@@ -524,88 +512,6 @@ int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_U | |||
524 | int bn_expand(BIGNUM *a, int bits); | 512 | int bn_expand(BIGNUM *a, int bits); |
525 | int bn_wexpand(BIGNUM *a, int words); | 513 | int bn_wexpand(BIGNUM *a, int words); |
526 | 514 | ||
527 | /* Bignum consistency macros | ||
528 | * There is one "API" macro, bn_fix_top(), for stripping leading zeroes from | ||
529 | * bignum data after direct manipulations on the data. There is also an | ||
530 | * "internal" macro, bn_check_top(), for verifying that there are no leading | ||
531 | * zeroes. Unfortunately, some auditing is required due to the fact that | ||
532 | * bn_fix_top() has become an overabused duct-tape because bignum data is | ||
533 | * occasionally passed around in an inconsistent state. So the following | ||
534 | * changes have been made to sort this out; | ||
535 | * - bn_fix_top()s implementation has been moved to bn_correct_top() | ||
536 | * - if BN_DEBUG isn't defined, bn_fix_top() maps to bn_correct_top(), and | ||
537 | * bn_check_top() is as before. | ||
538 | * - if BN_DEBUG *is* defined; | ||
539 | * - bn_check_top() tries to pollute unused words even if the bignum 'top' is | ||
540 | * consistent. (ed: only if BN_DEBUG_RAND is defined) | ||
541 | * - bn_fix_top() maps to bn_check_top() rather than "fixing" anything. | ||
542 | * The idea is to have debug builds flag up inconsistent bignums when they | ||
543 | * occur. If that occurs in a bn_fix_top(), we examine the code in question; if | ||
544 | * the use of bn_fix_top() was appropriate (ie. it follows directly after code | ||
545 | * that manipulates the bignum) it is converted to bn_correct_top(), and if it | ||
546 | * was not appropriate, we convert it permanently to bn_check_top() and track | ||
547 | * down the cause of the bug. Eventually, no internal code should be using the | ||
548 | * bn_fix_top() macro. External applications and libraries should try this with | ||
549 | * their own code too, both in terms of building against the openssl headers | ||
550 | * with BN_DEBUG defined *and* linking with a version of OpenSSL built with it | ||
551 | * defined. This not only improves external code, it provides more test | ||
552 | * coverage for openssl's own code. | ||
553 | */ | ||
554 | |||
555 | #ifdef BN_DEBUG | ||
556 | |||
557 | /* We only need assert() when debugging */ | ||
558 | #include <assert.h> | ||
559 | |||
560 | #ifdef BN_DEBUG_RAND | ||
561 | #define bn_pollute(a) \ | ||
562 | do { \ | ||
563 | const BIGNUM *_bnum1 = (a); \ | ||
564 | if(_bnum1->top < _bnum1->dmax) { \ | ||
565 | unsigned char _tmp_char; \ | ||
566 | /* We cast away const without the compiler knowing, any \ | ||
567 | * *genuinely* constant variables that aren't mutable \ | ||
568 | * wouldn't be constructed with top!=dmax. */ \ | ||
569 | BN_ULONG *_not_const; \ | ||
570 | memcpy(&_not_const, &_bnum1->d, sizeof(BN_ULONG*)); \ | ||
571 | arc4random_buf(&_tmp_char, 1); \ | ||
572 | memset((unsigned char *)(_not_const + _bnum1->top), _tmp_char, \ | ||
573 | (_bnum1->dmax - _bnum1->top) * sizeof(BN_ULONG)); \ | ||
574 | } \ | ||
575 | } while(0) | ||
576 | #else | ||
577 | #define bn_pollute(a) | ||
578 | #endif | ||
579 | |||
580 | #define bn_check_top(a) \ | ||
581 | do { \ | ||
582 | const BIGNUM *_bnum2 = (a); \ | ||
583 | if (_bnum2 != NULL) { \ | ||
584 | assert((_bnum2->top == 0) || \ | ||
585 | (_bnum2->d[_bnum2->top - 1] != 0)); \ | ||
586 | bn_pollute(_bnum2); \ | ||
587 | } \ | ||
588 | } while(0) | ||
589 | |||
590 | #define bn_fix_top(a) bn_check_top(a) | ||
591 | |||
592 | #define bn_check_size(bn, bits) bn_wcheck_size(bn, ((bits+BN_BITS2-1))/BN_BITS2) | ||
593 | #define bn_wcheck_size(bn, words) \ | ||
594 | do { \ | ||
595 | const BIGNUM *_bnum2 = (bn); \ | ||
596 | assert(words <= (_bnum2)->dmax && words >= (_bnum2)->top); \ | ||
597 | } while(0) | ||
598 | |||
599 | #else /* !BN_DEBUG */ | ||
600 | |||
601 | #define bn_pollute(a) | ||
602 | #define bn_check_top(a) | ||
603 | #define bn_fix_top(a) bn_correct_top(a) | ||
604 | #define bn_check_size(bn, bits) | ||
605 | #define bn_wcheck_size(bn, words) | ||
606 | |||
607 | #endif | ||
608 | |||
609 | #define bn_correct_top(a) \ | 515 | #define bn_correct_top(a) \ |
610 | { \ | 516 | { \ |
611 | BN_ULONG *ftl; \ | 517 | BN_ULONG *ftl; \ |
@@ -616,7 +522,6 @@ int bn_wexpand(BIGNUM *a, int words); | |||
616 | if (*(ftl--)) break; \ | 522 | if (*(ftl--)) break; \ |
617 | (a)->top = tmp_top; \ | 523 | (a)->top = tmp_top; \ |
618 | } \ | 524 | } \ |
619 | bn_pollute(a); \ | ||
620 | } | 525 | } |
621 | 526 | ||
622 | BN_ULONG bn_mul_add_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w); | 527 | BN_ULONG bn_mul_add_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w); |
diff --git a/src/lib/libcrypto/bn/bn_lib.c b/src/lib/libcrypto/bn/bn_lib.c index e67abf90b1..a3b6811986 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.61 2022/11/24 01:30:01 jsing Exp $ */ | 1 | /* $OpenBSD: bn_lib.c,v 1.62 2022/11/26 13:56:33 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 | * |
@@ -86,7 +86,6 @@ BN_new(void) | |||
86 | ret->neg = 0; | 86 | ret->neg = 0; |
87 | ret->dmax = 0; | 87 | ret->dmax = 0; |
88 | ret->d = NULL; | 88 | ret->d = NULL; |
89 | bn_check_top(ret); | ||
90 | return (ret); | 89 | return (ret); |
91 | } | 90 | } |
92 | 91 | ||
@@ -94,13 +93,11 @@ void | |||
94 | BN_init(BIGNUM *a) | 93 | BN_init(BIGNUM *a) |
95 | { | 94 | { |
96 | memset(a, 0, sizeof(BIGNUM)); | 95 | memset(a, 0, sizeof(BIGNUM)); |
97 | bn_check_top(a); | ||
98 | } | 96 | } |
99 | 97 | ||
100 | void | 98 | void |
101 | BN_clear(BIGNUM *a) | 99 | BN_clear(BIGNUM *a) |
102 | { | 100 | { |
103 | bn_check_top(a); | ||
104 | if (a->d != NULL) | 101 | if (a->d != NULL) |
105 | explicit_bzero(a->d, a->dmax * sizeof(a->d[0])); | 102 | explicit_bzero(a->d, a->dmax * sizeof(a->d[0])); |
106 | a->top = 0; | 103 | a->top = 0; |
@@ -114,7 +111,6 @@ BN_clear_free(BIGNUM *a) | |||
114 | 111 | ||
115 | if (a == NULL) | 112 | if (a == NULL) |
116 | return; | 113 | return; |
117 | bn_check_top(a); | ||
118 | if (a->d != NULL && !(BN_get_flags(a, BN_FLG_STATIC_DATA))) | 114 | if (a->d != NULL && !(BN_get_flags(a, BN_FLG_STATIC_DATA))) |
119 | freezero(a->d, a->dmax * sizeof(a->d[0])); | 115 | freezero(a->d, a->dmax * sizeof(a->d[0])); |
120 | i = BN_get_flags(a, BN_FLG_MALLOCED); | 116 | i = BN_get_flags(a, BN_FLG_MALLOCED); |
@@ -256,7 +252,6 @@ BN_num_bits(const BIGNUM *a) | |||
256 | { | 252 | { |
257 | int i = a->top - 1; | 253 | int i = a->top - 1; |
258 | 254 | ||
259 | bn_check_top(a); | ||
260 | 255 | ||
261 | if (BN_is_zero(a)) | 256 | if (BN_is_zero(a)) |
262 | return 0; | 257 | return 0; |
@@ -271,7 +266,6 @@ bn_expand_internal(const BIGNUM *b, int words) | |||
271 | const BN_ULONG *B; | 266 | const BN_ULONG *B; |
272 | int i; | 267 | int i; |
273 | 268 | ||
274 | bn_check_top(b); | ||
275 | 269 | ||
276 | if (words > (INT_MAX/(4*BN_BITS2))) { | 270 | if (words > (INT_MAX/(4*BN_BITS2))) { |
277 | BNerror(BN_R_BIGNUM_TOO_LONG); | 271 | BNerror(BN_R_BIGNUM_TOO_LONG); |
@@ -337,7 +331,6 @@ bn_expand_internal(const BIGNUM *b, int words) | |||
337 | static int | 331 | static int |
338 | bn_expand2(BIGNUM *b, int words) | 332 | bn_expand2(BIGNUM *b, int words) |
339 | { | 333 | { |
340 | bn_check_top(b); | ||
341 | 334 | ||
342 | if (words > b->dmax) { | 335 | if (words > b->dmax) { |
343 | BN_ULONG *a = bn_expand_internal(b, words); | 336 | BN_ULONG *a = bn_expand_internal(b, words); |
@@ -370,7 +363,6 @@ bn_expand2(BIGNUM *b, int words) | |||
370 | assert(A == &(b->d[b->dmax])); | 363 | assert(A == &(b->d[b->dmax])); |
371 | } | 364 | } |
372 | #endif | 365 | #endif |
373 | bn_check_top(b); | ||
374 | return 1; | 366 | return 1; |
375 | } | 367 | } |
376 | 368 | ||
@@ -408,7 +400,6 @@ BN_dup(const BIGNUM *a) | |||
408 | 400 | ||
409 | if (a == NULL) | 401 | if (a == NULL) |
410 | return NULL; | 402 | return NULL; |
411 | bn_check_top(a); | ||
412 | 403 | ||
413 | t = BN_new(); | 404 | t = BN_new(); |
414 | if (t == NULL) | 405 | if (t == NULL) |
@@ -417,7 +408,6 @@ BN_dup(const BIGNUM *a) | |||
417 | BN_free(t); | 408 | BN_free(t); |
418 | return NULL; | 409 | return NULL; |
419 | } | 410 | } |
420 | bn_check_top(t); | ||
421 | return t; | 411 | return t; |
422 | } | 412 | } |
423 | 413 | ||
@@ -428,7 +418,6 @@ BN_copy(BIGNUM *a, const BIGNUM *b) | |||
428 | BN_ULONG *A; | 418 | BN_ULONG *A; |
429 | const BN_ULONG *B; | 419 | const BN_ULONG *B; |
430 | 420 | ||
431 | bn_check_top(b); | ||
432 | 421 | ||
433 | if (a == b) | 422 | if (a == b) |
434 | return (a); | 423 | return (a); |
@@ -463,7 +452,6 @@ BN_copy(BIGNUM *a, const BIGNUM *b) | |||
463 | 452 | ||
464 | a->top = b->top; | 453 | a->top = b->top; |
465 | a->neg = b->neg; | 454 | a->neg = b->neg; |
466 | bn_check_top(a); | ||
467 | return (a); | 455 | return (a); |
468 | } | 456 | } |
469 | 457 | ||
@@ -474,8 +462,6 @@ BN_swap(BIGNUM *a, BIGNUM *b) | |||
474 | BN_ULONG *tmp_d; | 462 | BN_ULONG *tmp_d; |
475 | int tmp_top, tmp_dmax, tmp_neg; | 463 | int tmp_top, tmp_dmax, tmp_neg; |
476 | 464 | ||
477 | bn_check_top(a); | ||
478 | bn_check_top(b); | ||
479 | 465 | ||
480 | flags_old_a = a->flags; | 466 | flags_old_a = a->flags; |
481 | flags_old_b = b->flags; | 467 | flags_old_b = b->flags; |
@@ -499,8 +485,6 @@ BN_swap(BIGNUM *a, BIGNUM *b) | |||
499 | (flags_old_b & BN_FLG_STATIC_DATA); | 485 | (flags_old_b & BN_FLG_STATIC_DATA); |
500 | b->flags = (flags_old_b & BN_FLG_MALLOCED) | | 486 | b->flags = (flags_old_b & BN_FLG_MALLOCED) | |
501 | (flags_old_a & BN_FLG_STATIC_DATA); | 487 | (flags_old_a & BN_FLG_STATIC_DATA); |
502 | bn_check_top(a); | ||
503 | bn_check_top(b); | ||
504 | } | 488 | } |
505 | 489 | ||
506 | BN_ULONG | 490 | BN_ULONG |
@@ -517,13 +501,11 @@ BN_get_word(const BIGNUM *a) | |||
517 | int | 501 | int |
518 | BN_set_word(BIGNUM *a, BN_ULONG w) | 502 | BN_set_word(BIGNUM *a, BN_ULONG w) |
519 | { | 503 | { |
520 | bn_check_top(a); | ||
521 | if (!bn_wexpand(a, 1)) | 504 | if (!bn_wexpand(a, 1)) |
522 | return (0); | 505 | return (0); |
523 | a->neg = 0; | 506 | a->neg = 0; |
524 | a->d[0] = w; | 507 | a->d[0] = w; |
525 | a->top = (w ? 1 : 0); | 508 | a->top = (w ? 1 : 0); |
526 | bn_check_top(a); | ||
527 | return (1); | 509 | return (1); |
528 | } | 510 | } |
529 | 511 | ||
@@ -541,7 +523,6 @@ BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret) | |||
541 | ret = bn = BN_new(); | 523 | ret = bn = BN_new(); |
542 | if (ret == NULL) | 524 | if (ret == NULL) |
543 | return (NULL); | 525 | return (NULL); |
544 | bn_check_top(ret); | ||
545 | l = 0; | 526 | l = 0; |
546 | n = len; | 527 | n = len; |
547 | if (n == 0) { | 528 | if (n == 0) { |
@@ -658,7 +639,6 @@ BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret) | |||
658 | if (ret == NULL) | 639 | if (ret == NULL) |
659 | return NULL; | 640 | return NULL; |
660 | 641 | ||
661 | bn_check_top(ret); | ||
662 | 642 | ||
663 | s += len; | 643 | s += len; |
664 | /* Skip trailing zeroes. */ | 644 | /* Skip trailing zeroes. */ |
@@ -715,8 +695,6 @@ BN_ucmp(const BIGNUM *a, const BIGNUM *b) | |||
715 | int i; | 695 | int i; |
716 | BN_ULONG t1, t2, *ap, *bp; | 696 | BN_ULONG t1, t2, *ap, *bp; |
717 | 697 | ||
718 | bn_check_top(a); | ||
719 | bn_check_top(b); | ||
720 | 698 | ||
721 | i = a->top - b->top; | 699 | i = a->top - b->top; |
722 | if (i != 0) | 700 | if (i != 0) |
@@ -748,8 +726,6 @@ BN_cmp(const BIGNUM *a, const BIGNUM *b) | |||
748 | return (0); | 726 | return (0); |
749 | } | 727 | } |
750 | 728 | ||
751 | bn_check_top(a); | ||
752 | bn_check_top(b); | ||
753 | 729 | ||
754 | if (a->neg != b->neg) { | 730 | if (a->neg != b->neg) { |
755 | if (a->neg) | 731 | if (a->neg) |
@@ -799,7 +775,6 @@ BN_set_bit(BIGNUM *a, int n) | |||
799 | } | 775 | } |
800 | 776 | ||
801 | a->d[i] |= (((BN_ULONG)1) << j); | 777 | a->d[i] |= (((BN_ULONG)1) << j); |
802 | bn_check_top(a); | ||
803 | return (1); | 778 | return (1); |
804 | } | 779 | } |
805 | 780 | ||
@@ -808,7 +783,6 @@ BN_clear_bit(BIGNUM *a, int n) | |||
808 | { | 783 | { |
809 | int i, j; | 784 | int i, j; |
810 | 785 | ||
811 | bn_check_top(a); | ||
812 | if (n < 0) | 786 | if (n < 0) |
813 | return 0; | 787 | return 0; |
814 | 788 | ||
@@ -827,7 +801,6 @@ BN_is_bit_set(const BIGNUM *a, int n) | |||
827 | { | 801 | { |
828 | int i, j; | 802 | int i, j; |
829 | 803 | ||
830 | bn_check_top(a); | ||
831 | if (n < 0) | 804 | if (n < 0) |
832 | return 0; | 805 | return 0; |
833 | i = n / BN_BITS2; | 806 | i = n / BN_BITS2; |
@@ -842,7 +815,6 @@ BN_mask_bits(BIGNUM *a, int n) | |||
842 | { | 815 | { |
843 | int b, w; | 816 | int b, w; |
844 | 817 | ||
845 | bn_check_top(a); | ||
846 | if (n < 0) | 818 | if (n < 0) |
847 | return 0; | 819 | return 0; |
848 | 820 | ||
@@ -932,9 +904,6 @@ BN_consttime_swap(BN_ULONG condition, BIGNUM *a, BIGNUM *b, int nwords) | |||
932 | BN_ULONG t; | 904 | BN_ULONG t; |
933 | int i; | 905 | int i; |
934 | 906 | ||
935 | bn_wcheck_size(a, nwords); | ||
936 | bn_wcheck_size(b, nwords); | ||
937 | |||
938 | assert(a != b); | 907 | assert(a != b); |
939 | assert((condition & (condition - 1)) == 0); | 908 | assert((condition & (condition - 1)) == 0); |
940 | assert(sizeof(BN_ULONG) >= sizeof(int)); | 909 | assert(sizeof(BN_ULONG) >= sizeof(int)); |
diff --git a/src/lib/libcrypto/bn/bn_mod.c b/src/lib/libcrypto/bn/bn_mod.c index 897ff434e9..5be8252f2d 100644 --- a/src/lib/libcrypto/bn/bn_mod.c +++ b/src/lib/libcrypto/bn/bn_mod.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_mod.c,v 1.12 2017/01/29 17:49:22 beck Exp $ */ | 1 | /* $OpenBSD: bn_mod.c,v 1.13 2022/11/26 13:56:33 jsing Exp $ */ |
2 | /* Includes code written by Lenka Fibikova <fibikova@exp-math.uni-essen.de> | 2 | /* Includes code written by Lenka Fibikova <fibikova@exp-math.uni-essen.de> |
3 | * for the OpenSSL project. */ | 3 | * for the OpenSSL project. */ |
4 | /* ==================================================================== | 4 | /* ==================================================================== |
@@ -182,9 +182,6 @@ BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, | |||
182 | BIGNUM *t; | 182 | BIGNUM *t; |
183 | int ret = 0; | 183 | int ret = 0; |
184 | 184 | ||
185 | bn_check_top(a); | ||
186 | bn_check_top(b); | ||
187 | bn_check_top(m); | ||
188 | 185 | ||
189 | BN_CTX_start(ctx); | 186 | BN_CTX_start(ctx); |
190 | if ((t = BN_CTX_get(ctx)) == NULL) | 187 | if ((t = BN_CTX_get(ctx)) == NULL) |
@@ -198,7 +195,6 @@ BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, | |||
198 | } | 195 | } |
199 | if (!BN_nnmod(r, t,m, ctx)) | 196 | if (!BN_nnmod(r, t,m, ctx)) |
200 | goto err; | 197 | goto err; |
201 | bn_check_top(r); | ||
202 | ret = 1; | 198 | ret = 1; |
203 | 199 | ||
204 | err: | 200 | err: |
@@ -220,7 +216,6 @@ BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx) | |||
220 | { | 216 | { |
221 | if (!BN_lshift1(r, a)) | 217 | if (!BN_lshift1(r, a)) |
222 | return 0; | 218 | return 0; |
223 | bn_check_top(r); | ||
224 | return BN_nnmod(r, r, m, ctx); | 219 | return BN_nnmod(r, r, m, ctx); |
225 | } | 220 | } |
226 | 221 | ||
@@ -231,7 +226,6 @@ BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m) | |||
231 | { | 226 | { |
232 | if (!BN_lshift1(r, a)) | 227 | if (!BN_lshift1(r, a)) |
233 | return 0; | 228 | return 0; |
234 | bn_check_top(r); | ||
235 | if (BN_cmp(r, m) >= 0) | 229 | if (BN_cmp(r, m) >= 0) |
236 | return BN_sub(r, r, m); | 230 | return BN_sub(r, r, m); |
237 | return 1; | 231 | return 1; |
@@ -254,7 +248,6 @@ BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m, BN_CTX *ctx) | |||
254 | } | 248 | } |
255 | 249 | ||
256 | ret = BN_mod_lshift_quick(r, r, n, (abs_m ? abs_m : m)); | 250 | ret = BN_mod_lshift_quick(r, r, n, (abs_m ? abs_m : m)); |
257 | bn_check_top(r); | ||
258 | 251 | ||
259 | BN_free(abs_m); | 252 | BN_free(abs_m); |
260 | return ret; | 253 | return ret; |
@@ -302,7 +295,6 @@ BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m) | |||
302 | return 0; | 295 | return 0; |
303 | } | 296 | } |
304 | } | 297 | } |
305 | bn_check_top(r); | ||
306 | 298 | ||
307 | return 1; | 299 | return 1; |
308 | } | 300 | } |
diff --git a/src/lib/libcrypto/bn/bn_mont.c b/src/lib/libcrypto/bn/bn_mont.c index 251c67b89d..24bc41e886 100644 --- a/src/lib/libcrypto/bn/bn_mont.c +++ b/src/lib/libcrypto/bn/bn_mont.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_mont.c,v 1.30 2022/11/24 01:30:01 jsing Exp $ */ | 1 | /* $OpenBSD: bn_mont.c,v 1.31 2022/11/26 13:56:33 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 | * |
@@ -152,7 +152,6 @@ BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, | |||
152 | if ((tmp = BN_CTX_get(ctx)) == NULL) | 152 | if ((tmp = BN_CTX_get(ctx)) == NULL) |
153 | goto err; | 153 | goto err; |
154 | 154 | ||
155 | bn_check_top(tmp); | ||
156 | if (a == b) { | 155 | if (a == b) { |
157 | if (!BN_sqr(tmp, a, ctx)) | 156 | if (!BN_sqr(tmp, a, ctx)) |
158 | goto err; | 157 | goto err; |
@@ -168,7 +167,6 @@ BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, | |||
168 | if (!BN_from_montgomery(r, tmp, mont, ctx)) | 167 | if (!BN_from_montgomery(r, tmp, mont, ctx)) |
169 | goto err; | 168 | goto err; |
170 | #endif | 169 | #endif |
171 | bn_check_top(r); | ||
172 | ret = 1; | 170 | ret = 1; |
173 | err: | 171 | err: |
174 | BN_CTX_end(ctx); | 172 | BN_CTX_end(ctx); |
@@ -272,7 +270,6 @@ BN_from_montgomery_word(BIGNUM *ret, BIGNUM *r, BN_MONT_CTX *mont) | |||
272 | #endif | 270 | #endif |
273 | bn_correct_top(r); | 271 | bn_correct_top(r); |
274 | bn_correct_top(ret); | 272 | bn_correct_top(ret); |
275 | bn_check_top(ret); | ||
276 | 273 | ||
277 | return (1); | 274 | return (1); |
278 | } | 275 | } |
@@ -318,7 +315,6 @@ BN_from_montgomery(BIGNUM *ret, const BIGNUM *a, BN_MONT_CTX *mont, BN_CTX *ctx) | |||
318 | goto err; | 315 | goto err; |
319 | } | 316 | } |
320 | retn = 1; | 317 | retn = 1; |
321 | bn_check_top(ret); | ||
322 | 318 | ||
323 | err: | 319 | err: |
324 | BN_CTX_end(ctx); | 320 | BN_CTX_end(ctx); |
diff --git a/src/lib/libcrypto/bn/bn_mpi.c b/src/lib/libcrypto/bn/bn_mpi.c index 9b743cca8c..75b34511fe 100644 --- a/src/lib/libcrypto/bn/bn_mpi.c +++ b/src/lib/libcrypto/bn/bn_mpi.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_mpi.c,v 1.9 2022/11/09 01:05:45 tobhe Exp $ */ | 1 | /* $OpenBSD: bn_mpi.c,v 1.10 2022/11/26 13:56:33 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 | * |
@@ -131,6 +131,5 @@ BN_mpi2bn(const unsigned char *d, int n, BIGNUM *ain) | |||
131 | if (neg) { | 131 | if (neg) { |
132 | BN_clear_bit(a, BN_num_bits(a) - 1); | 132 | BN_clear_bit(a, BN_num_bits(a) - 1); |
133 | } | 133 | } |
134 | bn_check_top(a); | ||
135 | return (a); | 134 | return (a); |
136 | } | 135 | } |
diff --git a/src/lib/libcrypto/bn/bn_mul.c b/src/lib/libcrypto/bn/bn_mul.c index fa9d559da9..0d8da8a6f6 100644 --- a/src/lib/libcrypto/bn/bn_mul.c +++ b/src/lib/libcrypto/bn/bn_mul.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_mul.c,v 1.21 2022/11/24 01:30:01 jsing Exp $ */ | 1 | /* $OpenBSD: bn_mul.c,v 1.22 2022/11/26 13:56:33 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 | * |
@@ -954,9 +954,6 @@ BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx) | |||
954 | fprintf(stderr, "BN_mul %d * %d\n",a->top,b->top); | 954 | fprintf(stderr, "BN_mul %d * %d\n",a->top,b->top); |
955 | #endif | 955 | #endif |
956 | 956 | ||
957 | bn_check_top(a); | ||
958 | bn_check_top(b); | ||
959 | bn_check_top(r); | ||
960 | 957 | ||
961 | al = a->top; | 958 | al = a->top; |
962 | bl = b->top; | 959 | bl = b->top; |
@@ -1092,7 +1089,6 @@ end: | |||
1092 | BN_copy(r, rr); | 1089 | BN_copy(r, rr); |
1093 | ret = 1; | 1090 | ret = 1; |
1094 | err: | 1091 | err: |
1095 | bn_check_top(r); | ||
1096 | BN_CTX_end(ctx); | 1092 | BN_CTX_end(ctx); |
1097 | return (ret); | 1093 | return (ret); |
1098 | } | 1094 | } |
diff --git a/src/lib/libcrypto/bn/bn_prime.c b/src/lib/libcrypto/bn/bn_prime.c index bf3f931644..0ba288c46a 100644 --- a/src/lib/libcrypto/bn/bn_prime.c +++ b/src/lib/libcrypto/bn/bn_prime.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_prime.c,v 1.26 2022/11/09 22:52:51 tb Exp $ */ | 1 | /* $OpenBSD: bn_prime.c,v 1.27 2022/11/26 13:56:33 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 | * |
@@ -232,7 +232,6 @@ BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add, | |||
232 | err: | 232 | err: |
233 | BN_CTX_end(ctx); | 233 | BN_CTX_end(ctx); |
234 | BN_CTX_free(ctx); | 234 | BN_CTX_free(ctx); |
235 | bn_check_top(ret); | ||
236 | 235 | ||
237 | return found; | 236 | return found; |
238 | } | 237 | } |
@@ -288,7 +287,6 @@ loop: | |||
288 | } | 287 | } |
289 | if (!BN_add_word(rnd, delta)) | 288 | if (!BN_add_word(rnd, delta)) |
290 | return (0); | 289 | return (0); |
291 | bn_check_top(rnd); | ||
292 | return (1); | 290 | return (1); |
293 | } | 291 | } |
294 | 292 | ||
@@ -338,7 +336,6 @@ loop: | |||
338 | 336 | ||
339 | err: | 337 | err: |
340 | BN_CTX_end(ctx); | 338 | BN_CTX_end(ctx); |
341 | bn_check_top(rnd); | ||
342 | return (ret); | 339 | return (ret); |
343 | } | 340 | } |
344 | 341 | ||
@@ -406,6 +403,5 @@ loop: | |||
406 | 403 | ||
407 | err: | 404 | err: |
408 | BN_CTX_end(ctx); | 405 | BN_CTX_end(ctx); |
409 | bn_check_top(p); | ||
410 | return (ret); | 406 | return (ret); |
411 | } | 407 | } |
diff --git a/src/lib/libcrypto/bn/bn_print.c b/src/lib/libcrypto/bn/bn_print.c index ad2e3ba16c..4576e25f49 100644 --- a/src/lib/libcrypto/bn/bn_print.c +++ b/src/lib/libcrypto/bn/bn_print.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_print.c,v 1.35 2022/11/24 01:30:01 jsing Exp $ */ | 1 | /* $OpenBSD: bn_print.c,v 1.36 2022/11/26 13:56:33 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 | * |
@@ -254,7 +254,6 @@ BN_hex2bn(BIGNUM **bn, const char *a) | |||
254 | ret->neg = neg; | 254 | ret->neg = neg; |
255 | 255 | ||
256 | *bn = ret; | 256 | *bn = ret; |
257 | bn_check_top(ret); | ||
258 | return (num); | 257 | return (num); |
259 | 258 | ||
260 | err: | 259 | err: |
@@ -322,7 +321,6 @@ BN_dec2bn(BIGNUM **bn, const char *a) | |||
322 | 321 | ||
323 | bn_correct_top(ret); | 322 | bn_correct_top(ret); |
324 | *bn = ret; | 323 | *bn = ret; |
325 | bn_check_top(ret); | ||
326 | return (num); | 324 | return (num); |
327 | 325 | ||
328 | err: | 326 | err: |
diff --git a/src/lib/libcrypto/bn/bn_rand.c b/src/lib/libcrypto/bn/bn_rand.c index b21692c949..17f1868350 100644 --- a/src/lib/libcrypto/bn/bn_rand.c +++ b/src/lib/libcrypto/bn/bn_rand.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_rand.c,v 1.25 2021/08/31 11:19:19 tb Exp $ */ | 1 | /* $OpenBSD: bn_rand.c,v 1.26 2022/11/26 13:56:33 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 | * |
@@ -190,7 +190,6 @@ bnrand(int pseudorand, BIGNUM *rnd, int bits, int top, int bottom) | |||
190 | 190 | ||
191 | err: | 191 | err: |
192 | freezero(buf, bytes); | 192 | freezero(buf, bytes); |
193 | bn_check_top(rnd); | ||
194 | return (ret); | 193 | return (ret); |
195 | } | 194 | } |
196 | 195 | ||
@@ -272,7 +271,6 @@ bn_rand_range(int pseudo, BIGNUM *r, const BIGNUM *range) | |||
272 | } while (BN_cmp(r, range) >= 0); | 271 | } while (BN_cmp(r, range) >= 0); |
273 | } | 272 | } |
274 | 273 | ||
275 | bn_check_top(r); | ||
276 | return 1; | 274 | return 1; |
277 | } | 275 | } |
278 | 276 | ||
diff --git a/src/lib/libcrypto/bn/bn_recp.c b/src/lib/libcrypto/bn/bn_recp.c index 6588d33033..8959f6bd3c 100644 --- a/src/lib/libcrypto/bn/bn_recp.c +++ b/src/lib/libcrypto/bn/bn_recp.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_recp.c,v 1.15 2017/01/29 17:49:22 beck Exp $ */ | 1 | /* $OpenBSD: bn_recp.c,v 1.16 2022/11/26 13:56:33 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 | * |
@@ -134,7 +134,6 @@ BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y, | |||
134 | 134 | ||
135 | err: | 135 | err: |
136 | BN_CTX_end(ctx); | 136 | BN_CTX_end(ctx); |
137 | bn_check_top(r); | ||
138 | return (ret); | 137 | return (ret); |
139 | } | 138 | } |
140 | 139 | ||
@@ -228,8 +227,6 @@ BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, BN_RECP_CTX *recp, | |||
228 | 227 | ||
229 | err: | 228 | err: |
230 | BN_CTX_end(ctx); | 229 | BN_CTX_end(ctx); |
231 | bn_check_top(dv); | ||
232 | bn_check_top(rem); | ||
233 | return (ret); | 230 | return (ret); |
234 | } | 231 | } |
235 | 232 | ||
@@ -257,7 +254,6 @@ BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx) | |||
257 | ret = len; | 254 | ret = len; |
258 | 255 | ||
259 | err: | 256 | err: |
260 | bn_check_top(r); | ||
261 | BN_CTX_end(ctx); | 257 | BN_CTX_end(ctx); |
262 | return (ret); | 258 | return (ret); |
263 | } | 259 | } |
diff --git a/src/lib/libcrypto/bn/bn_shift.c b/src/lib/libcrypto/bn/bn_shift.c index e2612d1e9d..6dbaffb194 100644 --- a/src/lib/libcrypto/bn/bn_shift.c +++ b/src/lib/libcrypto/bn/bn_shift.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_shift.c,v 1.15 2022/11/24 01:30:01 jsing Exp $ */ | 1 | /* $OpenBSD: bn_shift.c,v 1.16 2022/11/26 13:56:33 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 | * |
@@ -69,8 +69,6 @@ BN_lshift1(BIGNUM *r, const BIGNUM *a) | |||
69 | BN_ULONG *ap, *rp, t, c; | 69 | BN_ULONG *ap, *rp, t, c; |
70 | int i; | 70 | int i; |
71 | 71 | ||
72 | bn_check_top(r); | ||
73 | bn_check_top(a); | ||
74 | 72 | ||
75 | if (r != a) { | 73 | if (r != a) { |
76 | r->neg = a->neg; | 74 | r->neg = a->neg; |
@@ -93,7 +91,6 @@ BN_lshift1(BIGNUM *r, const BIGNUM *a) | |||
93 | *rp = 1; | 91 | *rp = 1; |
94 | r->top++; | 92 | r->top++; |
95 | } | 93 | } |
96 | bn_check_top(r); | ||
97 | return (1); | 94 | return (1); |
98 | } | 95 | } |
99 | 96 | ||
@@ -103,8 +100,6 @@ BN_rshift1(BIGNUM *r, const BIGNUM *a) | |||
103 | BN_ULONG *ap, *rp, t, c; | 100 | BN_ULONG *ap, *rp, t, c; |
104 | int i, j; | 101 | int i, j; |
105 | 102 | ||
106 | bn_check_top(r); | ||
107 | bn_check_top(a); | ||
108 | 103 | ||
109 | if (BN_is_zero(a)) { | 104 | if (BN_is_zero(a)) { |
110 | BN_zero(r); | 105 | BN_zero(r); |
@@ -129,7 +124,6 @@ BN_rshift1(BIGNUM *r, const BIGNUM *a) | |||
129 | c = (t & 1) ? BN_TBIT : 0; | 124 | c = (t & 1) ? BN_TBIT : 0; |
130 | } | 125 | } |
131 | r->top = j; | 126 | r->top = j; |
132 | bn_check_top(r); | ||
133 | return (1); | 127 | return (1); |
134 | } | 128 | } |
135 | 129 | ||
@@ -145,8 +139,6 @@ BN_lshift(BIGNUM *r, const BIGNUM *a, int n) | |||
145 | return 0; | 139 | return 0; |
146 | } | 140 | } |
147 | 141 | ||
148 | bn_check_top(r); | ||
149 | bn_check_top(a); | ||
150 | 142 | ||
151 | r->neg = a->neg; | 143 | r->neg = a->neg; |
152 | nw = n / BN_BITS2; | 144 | nw = n / BN_BITS2; |
@@ -171,7 +163,6 @@ BN_lshift(BIGNUM *r, const BIGNUM *a, int n) | |||
171 | t[i]=0;*/ | 163 | t[i]=0;*/ |
172 | r->top = a->top + nw + 1; | 164 | r->top = a->top + nw + 1; |
173 | bn_correct_top(r); | 165 | bn_correct_top(r); |
174 | bn_check_top(r); | ||
175 | return (1); | 166 | return (1); |
176 | } | 167 | } |
177 | 168 | ||
@@ -187,8 +178,6 @@ BN_rshift(BIGNUM *r, const BIGNUM *a, int n) | |||
187 | return 0; | 178 | return 0; |
188 | } | 179 | } |
189 | 180 | ||
190 | bn_check_top(r); | ||
191 | bn_check_top(a); | ||
192 | 181 | ||
193 | nw = n / BN_BITS2; | 182 | nw = n / BN_BITS2; |
194 | rb = n % BN_BITS2; | 183 | rb = n % BN_BITS2; |
@@ -225,6 +214,5 @@ BN_rshift(BIGNUM *r, const BIGNUM *a, int n) | |||
225 | if ((l = (l >> rb) & BN_MASK2)) | 214 | if ((l = (l >> rb) & BN_MASK2)) |
226 | *(t) = l; | 215 | *(t) = l; |
227 | } | 216 | } |
228 | bn_check_top(r); | ||
229 | return (1); | 217 | return (1); |
230 | } | 218 | } |
diff --git a/src/lib/libcrypto/bn/bn_sqr.c b/src/lib/libcrypto/bn/bn_sqr.c index 36b3965207..80070831ab 100644 --- a/src/lib/libcrypto/bn/bn_sqr.c +++ b/src/lib/libcrypto/bn/bn_sqr.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_sqr.c,v 1.14 2022/11/24 01:30:01 jsing Exp $ */ | 1 | /* $OpenBSD: bn_sqr.c,v 1.15 2022/11/26 13:56:33 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 | * |
@@ -72,7 +72,6 @@ BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx) | |||
72 | #ifdef BN_COUNT | 72 | #ifdef BN_COUNT |
73 | fprintf(stderr, "BN_sqr %d * %d\n", a->top, a->top); | 73 | fprintf(stderr, "BN_sqr %d * %d\n", a->top, a->top); |
74 | #endif | 74 | #endif |
75 | bn_check_top(a); | ||
76 | 75 | ||
77 | al = a->top; | 76 | al = a->top; |
78 | if (al <= 0) { | 77 | if (al <= 0) { |
@@ -145,8 +144,6 @@ BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx) | |||
145 | ret = 1; | 144 | ret = 1; |
146 | 145 | ||
147 | err: | 146 | err: |
148 | bn_check_top(rr); | ||
149 | bn_check_top(tmp); | ||
150 | BN_CTX_end(ctx); | 147 | BN_CTX_end(ctx); |
151 | return (ret); | 148 | return (ret); |
152 | } | 149 | } |
diff --git a/src/lib/libcrypto/bn/bn_sqrt.c b/src/lib/libcrypto/bn/bn_sqrt.c index d9ab545496..e964c578e3 100644 --- a/src/lib/libcrypto/bn/bn_sqrt.c +++ b/src/lib/libcrypto/bn/bn_sqrt.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_sqrt.c,v 1.12 2022/11/19 12:25:23 tb Exp $ */ | 1 | /* $OpenBSD: bn_sqrt.c,v 1.13 2022/11/26 13:56:33 jsing Exp $ */ |
2 | /* Written by Lenka Fibikova <fibikova@exp-math.uni-essen.de> | 2 | /* Written by Lenka Fibikova <fibikova@exp-math.uni-essen.de> |
3 | * and Bodo Moeller for the OpenSSL project. */ | 3 | * and Bodo Moeller for the OpenSSL project. */ |
4 | /* ==================================================================== | 4 | /* ==================================================================== |
@@ -87,7 +87,6 @@ BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | |||
87 | BN_free(ret); | 87 | BN_free(ret); |
88 | return NULL; | 88 | return NULL; |
89 | } | 89 | } |
90 | bn_check_top(ret); | ||
91 | return ret; | 90 | return ret; |
92 | } | 91 | } |
93 | 92 | ||
@@ -105,7 +104,6 @@ BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) | |||
105 | BN_free(ret); | 104 | BN_free(ret); |
106 | return NULL; | 105 | return NULL; |
107 | } | 106 | } |
108 | bn_check_top(ret); | ||
109 | return ret; | 107 | return ret; |
110 | } | 108 | } |
111 | 109 | ||
@@ -407,6 +405,5 @@ end: | |||
407 | ret = NULL; | 405 | ret = NULL; |
408 | } | 406 | } |
409 | BN_CTX_end(ctx); | 407 | BN_CTX_end(ctx); |
410 | bn_check_top(ret); | ||
411 | return ret; | 408 | return ret; |
412 | } | 409 | } |
diff --git a/src/lib/libcrypto/bn/bn_word.c b/src/lib/libcrypto/bn/bn_word.c index 683668c52d..9719808520 100644 --- a/src/lib/libcrypto/bn/bn_word.c +++ b/src/lib/libcrypto/bn/bn_word.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_word.c,v 1.14 2022/11/24 01:30:01 jsing Exp $ */ | 1 | /* $OpenBSD: bn_word.c,v 1.15 2022/11/26 13:56:33 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 | * |
@@ -87,7 +87,6 @@ BN_mod_word(const BIGNUM *a, BN_ULONG w) | |||
87 | } | 87 | } |
88 | #endif | 88 | #endif |
89 | 89 | ||
90 | bn_check_top(a); | ||
91 | w &= BN_MASK2; | 90 | w &= BN_MASK2; |
92 | for (i = a->top - 1; i >= 0; i--) { | 91 | for (i = a->top - 1; i >= 0; i--) { |
93 | #ifndef BN_LLONG | 92 | #ifndef BN_LLONG |
@@ -108,7 +107,6 @@ BN_div_word(BIGNUM *a, BN_ULONG w) | |||
108 | BN_ULONG ret = 0; | 107 | BN_ULONG ret = 0; |
109 | int i, j; | 108 | int i, j; |
110 | 109 | ||
111 | bn_check_top(a); | ||
112 | w &= BN_MASK2; | 110 | w &= BN_MASK2; |
113 | 111 | ||
114 | if (!w) | 112 | if (!w) |
@@ -134,7 +132,6 @@ BN_div_word(BIGNUM *a, BN_ULONG w) | |||
134 | if ((a->top > 0) && (a->d[a->top - 1] == 0)) | 132 | if ((a->top > 0) && (a->d[a->top - 1] == 0)) |
135 | a->top--; | 133 | a->top--; |
136 | ret >>= j; | 134 | ret >>= j; |
137 | bn_check_top(a); | ||
138 | return (ret); | 135 | return (ret); |
139 | } | 136 | } |
140 | 137 | ||
@@ -144,7 +141,6 @@ BN_add_word(BIGNUM *a, BN_ULONG w) | |||
144 | BN_ULONG l; | 141 | BN_ULONG l; |
145 | int i; | 142 | int i; |
146 | 143 | ||
147 | bn_check_top(a); | ||
148 | w &= BN_MASK2; | 144 | w &= BN_MASK2; |
149 | 145 | ||
150 | /* degenerate case: w is zero */ | 146 | /* degenerate case: w is zero */ |
@@ -171,7 +167,6 @@ BN_add_word(BIGNUM *a, BN_ULONG w) | |||
171 | a->top++; | 167 | a->top++; |
172 | a->d[i] = w; | 168 | a->d[i] = w; |
173 | } | 169 | } |
174 | bn_check_top(a); | ||
175 | return (1); | 170 | return (1); |
176 | } | 171 | } |
177 | 172 | ||
@@ -180,7 +175,6 @@ BN_sub_word(BIGNUM *a, BN_ULONG w) | |||
180 | { | 175 | { |
181 | int i; | 176 | int i; |
182 | 177 | ||
183 | bn_check_top(a); | ||
184 | w &= BN_MASK2; | 178 | w &= BN_MASK2; |
185 | 179 | ||
186 | /* degenerate case: w is zero */ | 180 | /* degenerate case: w is zero */ |
@@ -219,7 +213,6 @@ BN_sub_word(BIGNUM *a, BN_ULONG w) | |||
219 | } | 213 | } |
220 | if ((a->d[i] == 0) && (i == (a->top - 1))) | 214 | if ((a->d[i] == 0) && (i == (a->top - 1))) |
221 | a->top--; | 215 | a->top--; |
222 | bn_check_top(a); | ||
223 | return (1); | 216 | return (1); |
224 | } | 217 | } |
225 | 218 | ||
@@ -228,7 +221,6 @@ BN_mul_word(BIGNUM *a, BN_ULONG w) | |||
228 | { | 221 | { |
229 | BN_ULONG ll; | 222 | BN_ULONG ll; |
230 | 223 | ||
231 | bn_check_top(a); | ||
232 | w &= BN_MASK2; | 224 | w &= BN_MASK2; |
233 | if (a->top) { | 225 | if (a->top) { |
234 | if (w == 0) | 226 | if (w == 0) |
@@ -242,6 +234,5 @@ BN_mul_word(BIGNUM *a, BN_ULONG w) | |||
242 | } | 234 | } |
243 | } | 235 | } |
244 | } | 236 | } |
245 | bn_check_top(a); | ||
246 | return (1); | 237 | return (1); |
247 | } | 238 | } |