diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2023-08-04 17:24:34 +0800 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2023-08-11 19:19:27 +0800 |
commit | 2a598d0b2800aa23ba51adcf060cec524aaa63b2 (patch) | |
tree | b7c035f0fa57dab30af2768114f71f64230dac5c /lib/mpi/mpi-mul.c | |
parent | 9ae4577bc077a7e32c3c7d442c95bc76865c0f17 (diff) |
crypto: lib - Move mpi into lib/crypto
As lib/mpi is mostly used by crypto code, move it under lib/crypto
so that patches touching it get directed to the right mailing list.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'lib/mpi/mpi-mul.c')
-rw-r--r-- | lib/mpi/mpi-mul.c | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/lib/mpi/mpi-mul.c b/lib/mpi/mpi-mul.c deleted file mode 100644 index 7f4eda8560dc..000000000000 --- a/lib/mpi/mpi-mul.c +++ /dev/null @@ -1,92 +0,0 @@ -/* mpi-mul.c - MPI functions - * Copyright (C) 1994, 1996, 1998, 2001, 2002, - * 2003 Free Software Foundation, Inc. - * - * This file is part of Libgcrypt. - * - * Note: This code is heavily based on the GNU MP Library. - * Actually it's the same code with only minor changes in the - * way the data is stored; this is to support the abstraction - * of an optional secure memory allocation which may be used - * to avoid revealing of sensitive data due to paging etc. - */ - -#include "mpi-internal.h" - -void mpi_mul(MPI w, MPI u, MPI v) -{ - mpi_size_t usize, vsize, wsize; - mpi_ptr_t up, vp, wp; - mpi_limb_t cy; - int usign, vsign, sign_product; - int assign_wp = 0; - mpi_ptr_t tmp_limb = NULL; - - if (u->nlimbs < v->nlimbs) { - /* Swap U and V. */ - usize = v->nlimbs; - usign = v->sign; - up = v->d; - vsize = u->nlimbs; - vsign = u->sign; - vp = u->d; - } else { - usize = u->nlimbs; - usign = u->sign; - up = u->d; - vsize = v->nlimbs; - vsign = v->sign; - vp = v->d; - } - sign_product = usign ^ vsign; - wp = w->d; - - /* Ensure W has space enough to store the result. */ - wsize = usize + vsize; - if (w->alloced < wsize) { - if (wp == up || wp == vp) { - wp = mpi_alloc_limb_space(wsize); - assign_wp = 1; - } else { - mpi_resize(w, wsize); - wp = w->d; - } - } else { /* Make U and V not overlap with W. */ - if (wp == up) { - /* W and U are identical. Allocate temporary space for U. */ - up = tmp_limb = mpi_alloc_limb_space(usize); - /* Is V identical too? Keep it identical with U. */ - if (wp == vp) - vp = up; - /* Copy to the temporary space. */ - MPN_COPY(up, wp, usize); - } else if (wp == vp) { - /* W and V are identical. Allocate temporary space for V. */ - vp = tmp_limb = mpi_alloc_limb_space(vsize); - /* Copy to the temporary space. */ - MPN_COPY(vp, wp, vsize); - } - } - - if (!vsize) - wsize = 0; - else { - mpihelp_mul(wp, up, usize, vp, vsize, &cy); - wsize -= cy ? 0:1; - } - - if (assign_wp) - mpi_assign_limb_space(w, wp, wsize); - w->nlimbs = wsize; - w->sign = sign_product; - if (tmp_limb) - mpi_free_limb_space(tmp_limb); -} -EXPORT_SYMBOL_GPL(mpi_mul); - -void mpi_mulm(MPI w, MPI u, MPI v, MPI m) -{ - mpi_mul(w, u, v); - mpi_tdiv_r(w, w, m); -} -EXPORT_SYMBOL_GPL(mpi_mulm); |