68#ifndef MBEDTLS_BIGNUM_CORE_H
69#define MBEDTLS_BIGNUM_CORE_H
77#define ciL (sizeof(mbedtls_mpi_uint))
85#define BITS_TO_LIMBS(i) ((i) / biL + ((i) % biL != 0))
86#define CHARS_TO_LIMBS(i) ((i) / ciL + ((i) % ciL != 0))
88#define GET_BYTE(X, i) \
89 (((X)[(i) / ciL] >> (((i) % ciL) * 8)) & 0xff)
112#define MBEDTLS_MPI_IS_PUBLIC 0x2a2a2a2a
113#define MBEDTLS_MPI_IS_SECRET 0
114#if defined(MBEDTLS_TEST_HOOKS) && !defined(MBEDTLS_THREADING_C)
116#define MBEDTLS_MPI_IS_TEST 1
243 const unsigned char *
input,
244 size_t input_length);
265 const unsigned char *
input,
266 size_t input_length);
285 unsigned char *output,
286 size_t output_length);
305 unsigned char *output,
306 size_t output_length);
533#if defined(MBEDTLS_TEST_HOOKS)
574 int (*f_rng)(
void *,
unsigned char *,
size_t),
611 int (*f_rng)(
void *,
unsigned char *,
size_t),
745static inline size_t mbedtls_mpi_core_montmul_working_limbs(
size_t AN_limbs)
747 return 2 * AN_limbs + 1;
#define index(str, chr)
Definition string.h:66
size_t a
Definition main.cpp:156
size_t b
Definition main.cpp:156
Multi-precision integer library.
uint32_t mbedtls_mpi_uint
The type of machine digits in a bignum, called limbs.
Definition bignum.h:170
void mbedtls_mpi_core_to_mont_rep(mbedtls_mpi_uint *X, const mbedtls_mpi_uint *A, const mbedtls_mpi_uint *N, size_t AN_limbs, mbedtls_mpi_uint mm, const mbedtls_mpi_uint *rr, mbedtls_mpi_uint *T)
mbedtls_mpi_uint mbedtls_mpi_core_mla(mbedtls_mpi_uint *X, size_t X_limbs, const mbedtls_mpi_uint *A, size_t A_limbs, mbedtls_mpi_uint b)
Perform a fixed-size multiply accumulate operation: X += b * A.
int mbedtls_mpi_core_write_be(const mbedtls_mpi_uint *A, size_t A_limbs, unsigned char *output, size_t output_length)
void mbedtls_mpi_core_shift_r(mbedtls_mpi_uint *X, size_t limbs, size_t count)
Shift an MPI in-place right by a number of bits.
mbedtls_ct_condition_t mbedtls_mpi_core_lt_ct(const mbedtls_mpi_uint *A, const mbedtls_mpi_uint *B, size_t limbs)
Check if one unsigned MPI is less than another in constant time.
mbedtls_mpi_uint mbedtls_mpi_core_sub(mbedtls_mpi_uint *X, const mbedtls_mpi_uint *A, const mbedtls_mpi_uint *B, size_t limbs)
Subtract two fixed-size large unsigned integers, returning the borrow.
void mbedtls_mpi_core_bigendian_to_host(mbedtls_mpi_uint *A, size_t A_limbs)
mbedtls_ct_condition_t mbedtls_mpi_core_check_zero_ct(const mbedtls_mpi_uint *A, size_t limbs)
Determine if a given MPI has the value 0 in constant time with respect to the value (but not with res...
void mbedtls_mpi_core_from_mont_rep(mbedtls_mpi_uint *X, const mbedtls_mpi_uint *A, const mbedtls_mpi_uint *N, size_t AN_limbs, mbedtls_mpi_uint mm, mbedtls_mpi_uint *T)
mbedtls_mpi_uint mbedtls_mpi_core_add_if(mbedtls_mpi_uint *X, const mbedtls_mpi_uint *A, size_t limbs, unsigned cond)
Conditional addition of two fixed-size large unsigned integers, returning the carry.
int mbedtls_mpi_core_read_be(mbedtls_mpi_uint *X, size_t X_limbs, const unsigned char *input, size_t input_length)
void mbedtls_mpi_core_exp_mod(mbedtls_mpi_uint *X, const mbedtls_mpi_uint *A, const mbedtls_mpi_uint *N, size_t AN_limbs, const mbedtls_mpi_uint *E, size_t E_limbs, const mbedtls_mpi_uint *RR, mbedtls_mpi_uint *T)
Perform a modular exponentiation with secret exponent: X = A^E mod N, where A is already in Montgomer...
mbedtls_mpi_uint mbedtls_mpi_core_add(mbedtls_mpi_uint *X, const mbedtls_mpi_uint *A, const mbedtls_mpi_uint *B, size_t limbs)
Add two fixed-size large unsigned integers, returning the carry.
void mbedtls_mpi_core_exp_mod_unsafe(mbedtls_mpi_uint *X, const mbedtls_mpi_uint *A, const mbedtls_mpi_uint *N, size_t AN_limbs, const mbedtls_mpi_uint *E, size_t E_limbs, const mbedtls_mpi_uint *RR, mbedtls_mpi_uint *T)
Perform a modular exponentiation with public or secret exponent: X = A^E mod N, where A is already in...
void mbedtls_mpi_core_mul(mbedtls_mpi_uint *X, const mbedtls_mpi_uint *A, size_t A_limbs, const mbedtls_mpi_uint *B, size_t B_limbs)
Perform a known-size multiplication.
void mbedtls_mpi_core_cond_swap(mbedtls_mpi_uint *X, mbedtls_mpi_uint *Y, size_t limbs, mbedtls_ct_condition_t swap)
Perform a safe conditional swap of two MPIs which doesn't reveal whether the swap was done or not.
int mbedtls_mpi_core_get_mont_r2_unsafe(mbedtls_mpi *X, const mbedtls_mpi *N)
Calculate the square of the Montgomery constant. (Needed for conversion and operations in Montgomery ...
void mbedtls_mpi_core_shift_l(mbedtls_mpi_uint *X, size_t limbs, size_t count)
Shift an MPI in-place left by a number of bits.
void mbedtls_mpi_core_cond_assign(mbedtls_mpi_uint *X, const mbedtls_mpi_uint *A, size_t limbs, mbedtls_ct_condition_t assign)
Perform a safe conditional copy of an MPI which doesn't reveal whether assignment was done or not.
mbedtls_mpi_uint mbedtls_mpi_core_sub_int(mbedtls_mpi_uint *X, const mbedtls_mpi_uint *A, mbedtls_mpi_uint b, size_t limbs)
Subtract unsigned integer from known-size large unsigned integers. Return the borrow.
int mbedtls_mpi_core_read_le(mbedtls_mpi_uint *X, size_t X_limbs, const unsigned char *input, size_t input_length)
size_t mbedtls_mpi_core_clz(mbedtls_mpi_uint a)
int mbedtls_mpi_core_write_le(const mbedtls_mpi_uint *A, size_t A_limbs, unsigned char *output, size_t output_length)
size_t mbedtls_mpi_core_bitlen(const mbedtls_mpi_uint *A, size_t A_limbs)
int mbedtls_mpi_core_fill_random(mbedtls_mpi_uint *X, size_t X_limbs, size_t bytes, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
Fill an integer with a number of random bytes.
void mbedtls_mpi_core_montmul(mbedtls_mpi_uint *X, const mbedtls_mpi_uint *A, const mbedtls_mpi_uint *B, size_t B_limbs, const mbedtls_mpi_uint *N, size_t AN_limbs, mbedtls_mpi_uint mm, mbedtls_mpi_uint *T)
Montgomery multiplication: X = A * B * R^-1 mod N (HAC 14.36)
mbedtls_mpi_uint mbedtls_mpi_core_montmul_init(const mbedtls_mpi_uint *N)
Calculate initialisation value for fast Montgomery modular multiplication.
mbedtls_ct_condition_t mbedtls_mpi_core_uint_le_mpi(mbedtls_mpi_uint min, const mbedtls_mpi_uint *A, size_t A_limbs)
Compare a machine integer with an MPI.
size_t mbedtls_mpi_core_exp_mod_working_limbs(size_t AN_limbs, size_t E_limbs)
Returns the number of limbs of working memory required for a call to mbedtls_mpi_core_exp_mod().
int mbedtls_mpi_core_random(mbedtls_mpi_uint *X, mbedtls_mpi_uint min, const mbedtls_mpi_uint *N, size_t limbs, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
uint32_t * table
Definition codec_8859.c:24
Utility macros for internal use in the library.
size_t mbedtls_ct_condition_t
Definition constant_time_internal.h:67
@ B
Definition element-type.h:28
@ A
Definition element-type.h:28
#define swap(a, b)
Definition minmax.h:73
#define min(a, b)
Definition minmax.h:24
MPI structure.
Definition bignum.h:208
struct VirtioInputEvent * input
Definition virtiokbd.c:46