quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

bignum_internal.h (2247B)


      1 /**
      2  * \file bignum_internal.h
      3  *
      4  * \brief Internal-only bignum public-key cryptosystem API.
      5  *
      6  * This file declares bignum-related functions that are to be used
      7  * only from within the Mbed TLS library itself.
      8  *
      9  */
     10 /*
     11  *  Copyright The Mbed TLS Contributors
     12  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
     13  */
     14 #ifndef MBEDTLS_BIGNUM_INTERNAL_H
     15 #define MBEDTLS_BIGNUM_INTERNAL_H
     16 
     17 /**
     18  * \brief          Perform a modular exponentiation: X = A^E mod N
     19  *
     20  * \warning        This function is not constant time with respect to \p E (the exponent).
     21  *
     22  * \param X        The destination MPI. This must point to an initialized MPI.
     23  *                 This must not alias E or N.
     24  * \param A        The base of the exponentiation.
     25  *                 This must point to an initialized MPI.
     26  * \param E        The exponent MPI. This must point to an initialized MPI.
     27  * \param N        The base for the modular reduction. This must point to an
     28  *                 initialized MPI.
     29  * \param prec_RR  A helper MPI depending solely on \p N which can be used to
     30  *                 speed-up multiple modular exponentiations for the same value
     31  *                 of \p N. This may be \c NULL. If it is not \c NULL, it must
     32  *                 point to an initialized MPI. If it hasn't been used after
     33  *                 the call to mbedtls_mpi_init(), this function will compute
     34  *                 the helper value and store it in \p prec_RR for reuse on
     35  *                 subsequent calls to this function. Otherwise, the function
     36  *                 will assume that \p prec_RR holds the helper value set by a
     37  *                 previous call to mbedtls_mpi_exp_mod(), and reuse it.
     38  *
     39  * \return         \c 0 if successful.
     40  * \return         #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed.
     41  * \return         #MBEDTLS_ERR_MPI_BAD_INPUT_DATA if \c N is negative or
     42  *                 even, or if \c E is negative.
     43  * \return         Another negative error code on different kinds of failures.
     44  *
     45  */
     46 int mbedtls_mpi_exp_mod_unsafe(mbedtls_mpi *X, const mbedtls_mpi *A,
     47                                const mbedtls_mpi *E, const mbedtls_mpi *N,
     48                                mbedtls_mpi *prec_RR);
     49 
     50 #endif /* bignum_internal.h */