diff options
Diffstat (limited to 'src')
-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 | } |