Merge pull request #6742 from gabor-mezei-arm/6022_bignum_mod_raw_mul
Bignum: Implement fixed width raw modular multiplication
This commit is contained in:
commit
cf86d70162
4 changed files with 159 additions and 0 deletions
|
@ -215,6 +215,41 @@ void mbedtls_mpi_mod_raw_sub( mbedtls_mpi_uint *X,
|
|||
const mbedtls_mpi_uint *B,
|
||||
const mbedtls_mpi_mod_modulus *N );
|
||||
|
||||
/** \brief Multiply two MPIs, returning the residue modulo the specified
|
||||
* modulus.
|
||||
*
|
||||
* \note Currently handles the case when `N->int_rep` is
|
||||
* MBEDTLS_MPI_MOD_REP_MONTGOMERY.
|
||||
*
|
||||
* The size of the operation is determined by \p N. \p A, \p B and \p X must
|
||||
* all be associated with the modulus \p N and must all have the same number
|
||||
* of limbs as \p N.
|
||||
*
|
||||
* \p X may be aliased to \p A or \p B, or even both, but may not overlap
|
||||
* either otherwise. They may not alias \p N (since they must be in canonical
|
||||
* form, they cannot == \p N).
|
||||
*
|
||||
* \param[out] X The address of the result MPI. Must have the same
|
||||
* number of limbs as \p N.
|
||||
* On successful completion, \p X contains the result of
|
||||
* the multiplication `A * B * R^-1` mod N where
|
||||
* `R = 2^(biL * N->limbs)`.
|
||||
* \param[in] A The address of the first MPI.
|
||||
* \param[in] B The address of the second MPI.
|
||||
* \param[in] N The address of the modulus. Used to perform a modulo
|
||||
* operation on the result of the multiplication.
|
||||
* \param[in,out] T Temporary storage of size at least 2 * N->limbs + 1
|
||||
* limbs. Its initial content is unused and
|
||||
* its final content is indeterminate.
|
||||
* It must not alias or otherwise overlap any of the
|
||||
* other parameters.
|
||||
*/
|
||||
void mbedtls_mpi_mod_raw_mul( mbedtls_mpi_uint *X,
|
||||
const mbedtls_mpi_uint *A,
|
||||
const mbedtls_mpi_uint *B,
|
||||
const mbedtls_mpi_mod_modulus *N,
|
||||
mbedtls_mpi_uint *T );
|
||||
|
||||
/* END MERGE SLOT 2 */
|
||||
|
||||
/* BEGIN MERGE SLOT 3 */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue