MPHELL
4.0.0
|
Declaration of arithmetic functions, interface to chose either GMP mpz or number as base type for arithmetic. More...
Go to the source code of this file.
Functions | |
void | number_tmp_alloc (number *t, const uint8_t size, uint8_t stack) |
Allocate a temporary number. More... | |
void | number_tmp_free (number *t, const uint8_t size, uint8_t stack) |
Free a temporary number. More... | |
void | number_init (number *dst, const uint8_t n) |
Allocate a number_ptr on the RAM memory (malloc) More... | |
void | number_free (number *dst) |
Free a number_ptr allocated on the RAM memory (malloc) More... | |
void | number_copy (number_ptr dst, number_srcptr src) |
Copy src into dst. More... | |
void | number_set_ui (number_ptr dst, const block src) |
Set dst to src. More... | |
void | number_set (number_ptr dst, const int8_t sign, const uint32_t size,...) |
Set dst to [block_0, block_1, ..., block_(size-1)]. SIZ(dst) must be set before use. More... | |
void | number_set_bit (number_ptr dst, const uint32_t bit) |
Set the bit-th of dst to 1, all the others to 0. More... | |
void | number_random (number_ptr dst, const uint32_t size) |
Set dst to a random number, the random process is chosen at the MPHELL initialisation. SIZ(dst) must be set before use. More... | |
void | number_random1 (number_ptr dst, number_srcptr bound, uint8_t stack) |
Set dst to a random number_ptr between 0 and bound, the random process is chosen at the MPHELL initialisation. More... | |
uint16_t | number_log2 (number_srcptr src) |
Calculate log2(src), which is the binary size of src. More... | |
uint8_t | number_block_size (number_srcptr src) |
Calculate the number of block used by src. More... | |
uint8_t | number_buffer_size (number_srcptr src) |
Give the number of block that src can use. More... | |
void | number_set_str (number_ptr dst, const char *str, const uint8_t base) |
Set dst to str. More... | |
void | number_str (char **str, number_srcptr src, const uint8_t base) |
Converts src to string format in base specified by base. More... | |
void | number_get_ui (block *dst, number_srcptr src) |
Get the less significant block of src. More... | |
void | number_to_bit_string (char *str, number_srcptr src) |
Converts src (must be positive) to a bit string. More... | |
void | number_print (number_srcptr src, const uint8_t base) |
Print src in base "base". More... | |
bool | number_iszero (number_srcptr src) |
Test if src is zero. More... | |
bool | number_isequal_ui (number_srcptr src1, const block src2) |
Test if src1 == src2. More... | |
bool | number_isequal (number_srcptr src1, number_srcptr src2) |
Test if src1 == src2. More... | |
bool | number_isdiff_ui (number_srcptr src1, const block src2) |
Test if src1 != src2. More... | |
bool | number_isdiff (number_srcptr src1, number_srcptr src2) |
Test if src1 != src2. More... | |
bool | number_islower_ui (number_srcptr src1, const block src2) |
Test if src1 < src2. More... | |
bool | number_islower (number_srcptr src1, number_srcptr src2) |
Test if src1 < src2. More... | |
bool | number_isgreater_ui (number_srcptr src1, const block src2) |
Test if src1 > src2. More... | |
bool | number_isgreater (number_srcptr src1, number_srcptr src2) |
Test if src1 > src2. More... | |
bool | number_islowereq_ui (number_srcptr src1, const block src2) |
Test if src1 <= src2. More... | |
bool | number_islowereq (number_srcptr src1, number_srcptr src2) |
Test if src1 <= src2. More... | |
bool | number_isgreatereq_ui (number_srcptr src1, const block src2) |
Test if src1 >= src2. More... | |
bool | number_isgreatereq (number_srcptr src1, number_srcptr src2) |
Test if src1 >= src2. More... | |
int8_t | number_cmp_ui (number_srcptr src1, const block src2) |
Compare src1 and src2. More... | |
int8_t | number_cmp (number_srcptr src1, number_srcptr src2) |
Compare src1 and src2. More... | |
bool | number_iseven (number_srcptr src) |
Test if src is even. More... | |
bool | number_isodd (number_srcptr src) |
Test if src is odd. More... | |
block | number_and_ui (number_srcptr src1, const block src2, uint8_t stack) |
Apply logical bitwise AND operator between src1 and src2. More... | |
void | number_and (number_ptr dst, number_srcptr src1, number_srcptr src2) |
Apply logical bitwise AND operator between src1 and src2. More... | |
void | number_or_ui (number_ptr dst, number_srcptr src1, const block src2, uint8_t stack) |
Apply logical bitwise OR operator between src1 and src2. More... | |
void | number_or (number_ptr dst, number_srcptr src1, number_srcptr src2) |
Apply logical bitwise OR operator between src1 and src2. More... | |
void | number_xor_ui (number_ptr dst, number_srcptr src1, const block src2, uint8_t stack) |
Apply logical bitwise XOR operator between src1 and src2. More... | |
void | number_xor (number_ptr dst, number_srcptr src1, number_srcptr src2) |
Apply logical bitwise XOR operator between src1 and src2. More... | |
void | number_lshift (number_ptr dst, number_srcptr src, const uint16_t shift) |
Set dst to src << shift. More... | |
void | number_rshift (number_ptr dst, number_srcptr src, const uint16_t shift) |
Set dst to src >> shift. More... | |
void | number_add_ui (number_ptr dst, number_srcptr src1, const block src2) |
Set dst to src1 + src2 if src1 + src2 fit in dst. More... | |
void | number_add (number_ptr dst, number_srcptr src1, number_srcptr src2) |
Set dst to src1 + src2 if src1 + src2 fit in dst. More... | |
void | number_inc (number_ptr dst, number_srcptr src) |
Set dst to src + 1 if src + 1 fit in dst. More... | |
void | number_sub_ui (number_ptr dst, number_srcptr src1, const block src2) |
Set dst to src1 - src2 if src1 - src2 fit in dst. More... | |
void | number_sub (number_ptr dst, number_srcptr src1, number_srcptr src2) |
Set dst to src1 - src2 if src1 - src2 fit in dst. More... | |
void | number_dec (number_ptr dst, number_srcptr src) |
Set dst to src - 1 if src - 1 fit in dst. More... | |
void | number_mul_ui (number_ptr dst, number_srcptr src1, const block src2) |
Set dst to src1 * src2. More... | |
void | number_addmul_ui (number_ptr dst, number_srcptr src1, const block src2) |
Set dst to dst + src1 * src2. More... | |
void | number_mul (number_ptr dst, number_srcptr src1, number_srcptr src2) |
Set dst to src1 * src2. More... | |
void | number_mul_mod (number_ptr dst, number_srcptr src1, number_srcptr src2, number_srcptr mod, uint8_t stack) |
Set dst to (src1 * src2) % mod. More... | |
void | number_addmul (number_ptr dst, number_srcptr src1, number_srcptr src2) |
Set dst to dst + src1 * src2. More... | |
void | number_pow (number_ptr dst, number_srcptr src1, number_srcptr src2, uint8_t stack) |
Set dst to src1^src2. More... | |
void | number_powm (number_ptr dst, number_srcptr src1, number_srcptr src2, number_srcptr mod, uint8_t stack) |
Set dst to src1^src2 modulo mod. More... | |
void | number_powm_ui (number_ptr dst, number_srcptr src1, const block src2, number_srcptr mod, uint8_t stack) |
Set dst to src1^src2 modulo mod. More... | |
void | number_sqr (number_ptr dst, number_srcptr src) |
Set dst to src1^2. More... | |
void | number_divmod_ui (number_ptr q, block *r, number_srcptr src1, const block src2) |
Compute (q, r) such that src1 = q * src2 + r ; r < src2. More... | |
void | number_divmod (number_ptr q, number_ptr r, number_srcptr src1, number_srcptr src2) |
Compute (q, r) such that src1 = q * src2 + r ; r < src2. More... | |
void | number_div_ui (number_ptr dst, number_srcptr src1, const block src2) |
Compute dst such that src1 = dst * src2 + r ; r < src2. More... | |
void | number_div (number_ptr dst, number_srcptr src1, number_srcptr src2) |
Compute dst such that src1 = dst * src2 + r ; r < src2. More... | |
void | number_mod_ui (block *dst, number_srcptr src1, const block src2) |
Compute dst such that src1 = q * src2 + dst ; dst < src2. More... | |
void | number_mod (number_ptr dst, number_srcptr src1, number_srcptr src2) |
Compute dst such that src1 = q * src2 + dst ; dst < src2. More... | |
void | number_invmod (number_ptr dst, number_srcptr src1, number_srcptr src2) |
Compute dst such that dst = src1^(-1) mod src2. More... | |
void | number_inv_mod_basis (block *dst, const block src) |
Compute dst such that dst * (-src) = -1 mod (2^(BLOCK_SIZE)) More... | |
void | redcify (number_ptr dst, number_srcptr src, number_srcptr p, uint8_t stack) |
Set dst to redc form dst=B^n*src mod p. More... | |
void | number_mul_montgomery (number_ptr dst, number_srcptr src1, number_srcptr src2, number_srcptr p, const block invp, uint8_t stack) |
Compute dst such that dst = (src1 * src2) mod(p) into the Montgomery form. More... | |
void | number_mul_montgomery_block (number_ptr dst, number_srcptr src1, number_srcptr src2, number_srcptr p, const block invp, uint8_t stack) |
Compute dst such that dst = (src1 * src2) mod(p) into the Montgomery form, use when SIZ(src1) or SIZ(src2) != SIZ(p) More... | |
void | number_inv_montgomery (number_ptr dst, number_srcptr src, number_srcptr p, const block invp, number_srcptr R2, number_srcptr one, uint8_t stack) |
Compute dst such that dst = src^(-1) mod(p) into the Montgomery form. More... | |
int8_t | number_legendre (number_srcptr src1, number_srcptr src2, uint8_t stack) |
Compute the legendre symbole of src1 and src2. More... | |
void | number_gcd_ui (block *dst, number_srcptr src1, const block src2) |
Set dst to GCD(src1, src2) More... | |
void | number_gcd (number_ptr dst, number_srcptr src1, number_srcptr src2) |
Set dst to GCD(src1, src2) More... | |
uint8_t | number_Rabin_Miller (number_srcptr src, const uint16_t bound) |
Apply the Rabin-Miller test to src with the bound. More... | |
Declaration of arithmetic functions, interface to chose either GMP mpz or number as base type for arithmetic.
Definition in file mphell-number.h.
void number_add | ( | number_ptr | dst, |
number_srcptr | src1, | ||
number_srcptr | src2 | ||
) |
Set dst to src1 + src2 if src1 + src2 fit in dst.
dst | Destination number |
src1 | Source number_ptr (array of blocks) |
src2 | Source number_ptr (array of blocks) |
Definition at line 1334 of file mphell-number.c.
void number_add_ui | ( | number_ptr | dst, |
number_srcptr | src1, | ||
const block | src2 | ||
) |
Set dst to src1 + src2 if src1 + src2 fit in dst.
dst | Destination number |
src1 | Source number_ptr (array of blocks) |
src2 | Source number_ptr (block) |
Definition at line 1317 of file mphell-number.c.
void number_addmul | ( | number_ptr | dst, |
number_srcptr | src1, | ||
number_srcptr | src2 | ||
) |
Set dst to dst + src1 * src2.
dst | Destination number, must be of size == size(src1) * 2 |
src1 | Source number_ptr (array of blocks) |
src2 | Source number_ptr (array of blocks) must be of size <= size(src1) |
Definition at line 1468 of file mphell-number.c.
void number_addmul_ui | ( | number_ptr | dst, |
number_srcptr | src1, | ||
const block | src2 | ||
) |
Set dst to dst + src1 * src2.
dst | Destination number, must be of size >= size(src1) + 1 |
src1 | Source number_ptr (array of blocks) |
src2 | Source number_ptr (block) |
Definition at line 1405 of file mphell-number.c.
void number_and | ( | number_ptr | dst, |
number_srcptr | src1, | ||
number_srcptr | src2 | ||
) |
Apply logical bitwise AND operator between src1 and src2.
dst | Destination number |
src1 | Source number |
src2 | Source number |
Definition at line 1041 of file mphell-number.c.
block number_and_ui | ( | number_srcptr | src1, |
const block | src2, | ||
uint8_t | stack | ||
) |
Apply logical bitwise AND operator between src1 and src2.
src1 | Source number |
src2 | Source block |
stack | Temporary memory stack to use |
Definition at line 1021 of file mphell-number.c.
uint8_t number_block_size | ( | number_srcptr | src | ) |
Calculate the number of block used by src.
src | Source number |
Definition at line 271 of file mphell-number.c.
uint8_t number_buffer_size | ( | number_srcptr | src | ) |
Give the number of block that src can use.
src | Source number |
Definition at line 285 of file mphell-number.c.
int8_t number_cmp | ( | number_srcptr | src1, |
number_srcptr | src2 | ||
) |
Compare src1 and src2.
src1 | Source number |
src2 | Source number |
Definition at line 966 of file mphell-number.c.
int8_t number_cmp_ui | ( | number_srcptr | src1, |
const block | src2 | ||
) |
Compare src1 and src2.
src1 | Source number |
src2 | Source block |
Definition at line 946 of file mphell-number.c.
void number_copy | ( | number_ptr | dst, |
number_srcptr | src | ||
) |
Copy src into dst.
src | Source number |
dst | Destination number |
Definition at line 87 of file mphell-number.c.
void number_dec | ( | number_ptr | dst, |
number_srcptr | src | ||
) |
Set dst to src - 1 if src - 1 fit in dst.
dst | Destination number |
src | Source number |
Definition at line 1383 of file mphell-number.c.
void number_div | ( | number_ptr | dst, |
number_srcptr | src1, | ||
number_srcptr | src2 | ||
) |
Compute dst such that src1 = dst * src2 + r ; r < src2.
dst | Destination quotient (array of blocks) |
src1 | Source dividende (array of blocks) |
src2 | Source divisor (array of blocks) |
Definition at line 1733 of file mphell-number.c.
void number_div_ui | ( | number_ptr | dst, |
number_srcptr | src1, | ||
const block | src2 | ||
) |
Compute dst such that src1 = dst * src2 + r ; r < src2.
dst | Destination quotient (array of blocks) |
src1 | Source dividende (array of blocks) |
src2 | Source divisor (block) |
Definition at line 1709 of file mphell-number.c.
void number_divmod | ( | number_ptr | q, |
number_ptr | r, | ||
number_srcptr | src1, | ||
number_srcptr | src2 | ||
) |
Compute (q, r) such that src1 = q * src2 + r ; r < src2.
q | Destination quotient (array of blocks) |
r | Destination rest (array block) |
src1 | Source dividende (array of blocks) |
src2 | Source divisor (array of blocks) |
Definition at line 1696 of file mphell-number.c.
void number_divmod_ui | ( | number_ptr | q, |
block * | r, | ||
number_srcptr | src1, | ||
const block | src2 | ||
) |
Compute (q, r) such that src1 = q * src2 + r ; r < src2.
q | Destination quotient (array of blocks) |
r | Destination rest (block) |
src1 | Source dividende (array of blocks) |
src2 | Source divisor (block) |
Definition at line 1667 of file mphell-number.c.
void number_free | ( | number * | dst | ) |
Free a number_ptr allocated on the RAM memory (malloc)
dst | Adress of the destination number_ptr to free |
Definition at line 75 of file mphell-number.c.
void number_gcd | ( | number_ptr | dst, |
number_srcptr | src1, | ||
number_srcptr | src2 | ||
) |
Set dst to GCD(src1, src2)
dst | Destination (array block) |
src1 | Source (array of blocks) |
src2 | Source (array of blocks) |
Definition at line 2477 of file mphell-number.c.
void number_gcd_ui | ( | block * | dst, |
number_srcptr | src1, | ||
const block | src2 | ||
) |
Set dst to GCD(src1, src2)
dst | Destination block |
src1 | Source (array of blocks) |
src2 | Source block |
Definition at line 2444 of file mphell-number.c.
void number_get_ui | ( | block * | dst, |
number_srcptr | src | ||
) |
Get the less significant block of src.
src | Source number |
dst | Unsigned integer |
Definition at line 649 of file mphell-number.c.
void number_inc | ( | number_ptr | dst, |
number_srcptr | src | ||
) |
Set dst to src + 1 if src + 1 fit in dst.
dst | Destination number |
src | Source number |
Definition at line 1347 of file mphell-number.c.
void number_init | ( | number * | dst, |
const uint8_t | n | ||
) |
Allocate a number_ptr on the RAM memory (malloc)
dst | Adress of the destination number |
n | Number of block to allocate for t (ex: 4 for a 4 * 64 = 256 bits number_ptr on a 64 bits architecture) |
Definition at line 59 of file mphell-number.c.
void number_inv_mod_basis | ( | block * | dst, |
const block | src | ||
) |
Compute dst such that dst * (-src) = -1 mod (2^(BLOCK_SIZE))
dst | Destination (block) |
src | Source (block) |
Definition at line 1851 of file mphell-number.c.
void number_inv_montgomery | ( | number_ptr | dst, |
number_srcptr | src, | ||
number_srcptr | p, | ||
const block | invp, | ||
number_srcptr | R2, | ||
number_srcptr | one, | ||
uint8_t | stack | ||
) |
Compute dst such that dst = src^(-1) mod(p) into the Montgomery form.
dst | Destination (array block) |
src | Source (array of blocks) |
p | Prime number_ptr (array of blocks) |
invp | Computed with: number_inv_mod_basis(invp, p->limb[0]); |
R2 | Square of the Montgomery basis |
one | Neutral element for the multiplication |
stack | Temporary memory stack to use |
Definition at line 2288 of file mphell-number.c.
void number_invmod | ( | number_ptr | dst, |
number_srcptr | src1, | ||
number_srcptr | src2 | ||
) |
Compute dst such that dst = src1^(-1) mod src2.
dst | Destination rest (array block) |
src1 | Source (array of blocks) |
src2 | Source modulus (array of blocks) |
Definition at line 1797 of file mphell-number.c.
bool number_isdiff | ( | number_srcptr | src1, |
number_srcptr | src2 | ||
) |
Test if src1 != src2.
src1 | Source number |
src2 | Source number |
Definition at line 805 of file mphell-number.c.
bool number_isdiff_ui | ( | number_srcptr | src1, |
const block | src2 | ||
) |
Test if src1 != src2.
src1 | Source number |
src2 | Source block |
Definition at line 795 of file mphell-number.c.
bool number_isequal | ( | number_srcptr | src1, |
number_srcptr | src2 | ||
) |
Test if src1 == src2.
src1 | Source number |
src2 | Source number |
Definition at line 781 of file mphell-number.c.
bool number_isequal_ui | ( | number_srcptr | src1, |
const block | src2 | ||
) |
Test if src1 == src2.
src1 | Source number |
src2 | Source block |
Definition at line 758 of file mphell-number.c.
bool number_iseven | ( | number_srcptr | src | ) |
Test if src is even.
src | Source number |
Definition at line 991 of file mphell-number.c.
bool number_isgreater | ( | number_srcptr | src1, |
number_srcptr | src2 | ||
) |
Test if src1 > src2.
src1 | Source number |
src2 | Source number |
Definition at line 883 of file mphell-number.c.
bool number_isgreater_ui | ( | number_srcptr | src1, |
const block | src2 | ||
) |
Test if src1 > src2.
src1 | Source number |
src2 | Source block |
Definition at line 856 of file mphell-number.c.
bool number_isgreatereq | ( | number_srcptr | src1, |
number_srcptr | src2 | ||
) |
Test if src1 >= src2.
src1 | Source number |
src2 | Source number |
Definition at line 934 of file mphell-number.c.
bool number_isgreatereq_ui | ( | number_srcptr | src1, |
const block | src2 | ||
) |
Test if src1 >= src2.
src1 | Source number |
src2 | Source block |
Definition at line 922 of file mphell-number.c.
bool number_islower | ( | number_srcptr | src1, |
number_srcptr | src2 | ||
) |
Test if src1 < src2.
src1 | Source number |
src2 | Source number |
Definition at line 842 of file mphell-number.c.
bool number_islower_ui | ( | number_srcptr | src1, |
const block | src2 | ||
) |
Test if src1 < src2.
src1 | Source number |
src2 | Source block |
Definition at line 815 of file mphell-number.c.
bool number_islowereq | ( | number_srcptr | src1, |
number_srcptr | src2 | ||
) |
Test if src1 <= src2.
src1 | Source number |
src2 | Source number |
Definition at line 910 of file mphell-number.c.
bool number_islowereq_ui | ( | number_srcptr | src1, |
const block | src2 | ||
) |
Test if src1 <= src2.
src1 | Source number |
src2 | Source block |
Definition at line 898 of file mphell-number.c.
bool number_isodd | ( | number_srcptr | src | ) |
Test if src is odd.
src | Source number |
Definition at line 1005 of file mphell-number.c.
bool number_iszero | ( | number_srcptr | src | ) |
Test if src is zero.
src | Source number |
Definition at line 744 of file mphell-number.c.
int8_t number_legendre | ( | number_srcptr | src1, |
number_srcptr | src2, | ||
uint8_t | stack | ||
) |
Compute the legendre symbole of src1 and src2.
dst | Destination (array block) |
src1 | Source (array of blocks) |
src2 | Source (array of blocks), must be a prime number |
stack | Temporary memory stack to use |
Definition at line 2384 of file mphell-number.c.
uint16_t number_log2 | ( | number_srcptr | src | ) |
Calculate log2(src), which is the binary size of src.
src | Source number |
Definition at line 257 of file mphell-number.c.
void number_lshift | ( | number_ptr | dst, |
number_srcptr | src, | ||
const uint16_t | shift | ||
) |
Set dst to src << shift.
dst | Destination number |
src | Source number |
shift | Number of bits to shift |
Definition at line 1263 of file mphell-number.c.
void number_mod | ( | number_ptr | dst, |
number_srcptr | src1, | ||
number_srcptr | src2 | ||
) |
Compute dst such that src1 = q * src2 + dst ; dst < src2.
dst | Destination rest (array block) |
src1 | Source dividende (array of blocks) |
src2 | Source divisor (array of blocks) |
Definition at line 1785 of file mphell-number.c.
void number_mod_ui | ( | block * | dst, |
number_srcptr | src1, | ||
const block | src2 | ||
) |
Compute dst such that src1 = q * src2 + dst ; dst < src2.
dst | Destination rest (block) |
src1 | Source dividende (array of blocks) |
src2 | Source divisor (block) |
Definition at line 1751 of file mphell-number.c.
void number_mul | ( | number_ptr | dst, |
number_srcptr | src1, | ||
number_srcptr | src2 | ||
) |
Set dst to src1 * src2.
dst | Destination number, must be of size == size(src1) * 2 |
src1 | Source number_ptr (array of blocks) |
src2 | Source number_ptr (array of blocks) must be of size <= size(src1) |
Definition at line 1425 of file mphell-number.c.
void number_mul_mod | ( | number_ptr | dst, |
number_srcptr | src1, | ||
number_srcptr | src2, | ||
number_srcptr | mod, | ||
uint8_t | stack | ||
) |
Set dst to (src1 * src2) % mod.
dst | Destination number, must be of size == size(mod) |
src1 | Source number_ptr (array of blocks) |
src2 | Source number_ptr (array of blocks) must be of size <= size(src1) |
mod | Modulus number |
stack | Temporary memory stack to use |
Definition at line 1436 of file mphell-number.c.
void number_mul_montgomery | ( | number_ptr | dst, |
number_srcptr | src1, | ||
number_srcptr | src2, | ||
number_srcptr | p, | ||
const block | invp, | ||
uint8_t | stack | ||
) |
Compute dst such that dst = (src1 * src2) mod(p) into the Montgomery form.
dst | Destination (array block) |
src1 | Source (array of blocks) |
src2 | Source (array of blocks) |
p | Prime number_ptr (array of blocks) |
invp | Computed with: number_inv_mod_basis(invp, p->limb[0]); |
stack | Temporary memory stack to use |
Definition at line 2241 of file mphell-number.c.
void number_mul_montgomery_block | ( | number_ptr | dst, |
number_srcptr | src1, | ||
number_srcptr | src2, | ||
number_srcptr | p, | ||
const block | invp, | ||
uint8_t | stack | ||
) |
Compute dst such that dst = (src1 * src2) mod(p) into the Montgomery form, use when SIZ(src1) or SIZ(src2) != SIZ(p)
dst | Destination (array block) |
src1 | Source (array of blocks) |
src2 | Source (array of blocks) |
p | Prime number_ptr (array of blocks) |
invp | Computed with: number_inv_mod_basis(invp, p->limb[0]); |
stack | Temporary memory stack to use |
Definition at line 2268 of file mphell-number.c.
void number_mul_ui | ( | number_ptr | dst, |
number_srcptr | src1, | ||
const block | src2 | ||
) |
Set dst to src1 * src2.
dst | Destination number, must be of size >= size(src1) + 1 |
src1 | Source number_ptr (array of blocks) |
src2 | Source number_ptr (block) |
Definition at line 1389 of file mphell-number.c.
void number_or | ( | number_ptr | dst, |
number_srcptr | src1, | ||
number_srcptr | src2 | ||
) |
Apply logical bitwise OR operator between src1 and src2.
dst | Destination number |
src1 | Source number |
src2 | Source number |
Definition at line 1111 of file mphell-number.c.
void number_or_ui | ( | number_ptr | dst, |
number_srcptr | src1, | ||
const block | src2, | ||
uint8_t | stack | ||
) |
Apply logical bitwise OR operator between src1 and src2.
dst | Destination number |
src1 | Source number |
src2 | Source block |
stack | Temporary memory stack to use |
Definition at line 1091 of file mphell-number.c.
void number_pow | ( | number_ptr | dst, |
number_srcptr | src1, | ||
number_srcptr | src2, | ||
uint8_t | stack | ||
) |
Set dst to src1^src2.
dst | Destination number, must be of size == size(src1) * size(src2) |
src1 | Source number_ptr (array of blocks) |
src2 | Source number_ptr (array of blocks) |
stack | Temporary memory stack to use |
Definition at line 1484 of file mphell-number.c.
void number_powm | ( | number_ptr | dst, |
number_srcptr | src1, | ||
number_srcptr | src2, | ||
number_srcptr | mod, | ||
uint8_t | stack | ||
) |
Set dst to src1^src2 modulo mod.
dst | Destination number, must be of size of mod |
src1 | Source number_ptr (array of blocks) |
src2 | Source number_ptr (array of blocks) |
mod | Modulus number_ptr (array of blocks) |
stack | Temporary memory stack to use |
Definition at line 1541 of file mphell-number.c.
void number_powm_ui | ( | number_ptr | dst, |
number_srcptr | src1, | ||
const block | src2, | ||
number_srcptr | mod, | ||
uint8_t | stack | ||
) |
Set dst to src1^src2 modulo mod.
dst | Destination number, must be of size of mod |
src1 | Source number_ptr (array of blocks) |
src2 | Source number_ptr (array of blocks) |
mod | Modulus number_ptr (array of blocks) |
stack | Temporary memory stack to use |
Definition at line 1598 of file mphell-number.c.
void number_print | ( | number_srcptr | src, |
const uint8_t | base | ||
) |
Print src in base "base".
src | Source number |
base | Base to use to write str, can be 2, 10 or 16 |
Definition at line 715 of file mphell-number.c.
uint8_t number_Rabin_Miller | ( | number_srcptr | src, |
const uint16_t | bound | ||
) |
Apply the Rabin-Miller test to src with the bound.
src | Source (array of blocks) |
bound | Positive integer, 50 is a good choice |
Definition at line 2489 of file mphell-number.c.
void number_random | ( | number_ptr | dst, |
const uint32_t | size | ||
) |
Set dst to a random number, the random process is chosen at the MPHELL initialisation. SIZ(dst) must be set before use.
size | Number of block of dst |
dst | Destination number |
Definition at line 200 of file mphell-number.c.
void number_random1 | ( | number_ptr | dst, |
number_srcptr | bound, | ||
uint8_t | stack | ||
) |
Set dst to a random number_ptr between 0 and bound, the random process is chosen at the MPHELL initialisation.
dst | Destination number |
bound | Bound for the random number |
stack | Temporary memory stack to use |
Definition at line 230 of file mphell-number.c.
void number_rshift | ( | number_ptr | dst, |
number_srcptr | src, | ||
const uint16_t | shift | ||
) |
Set dst to src >> shift.
dst | Destination number |
src | Source number |
shift | Number of bits to shift |
Definition at line 1288 of file mphell-number.c.
void number_set | ( | number_ptr | dst, |
const int8_t | sign, | ||
const uint32_t | size, | ||
... | |||
) |
Set dst to [block_0, block_1, ..., block_(size-1)]. SIZ(dst) must be set before use.
dst | Destination number: dst <- [block_0, block_1, ..., block_(size-1)] where block_0 is the smallest and block_(size-1) the biggest |
sign | 1 for positive number, -1 for negative number |
size | Number of block that follow |
... | List of blocks |
Definition at line 118 of file mphell-number.c.
void number_set_bit | ( | number_ptr | dst, |
const uint32_t | bit | ||
) |
Set the bit-th of dst to 1, all the others to 0.
bit | Bit to set to 1 |
dst | Destination number |
Definition at line 178 of file mphell-number.c.
void number_set_str | ( | number_ptr | dst, |
const char * | str, | ||
const uint8_t | base | ||
) |
Set dst to str.
dst | Destination number |
str | Source number_ptr under string format in base "base" |
base | Base used to write str, can be 2, 10 or 16 |
Definition at line 299 of file mphell-number.c.
void number_set_ui | ( | number_ptr | dst, |
const block | src | ||
) |
Set dst to src.
dst | Destination number |
src | Source block (uint32_t or uint64_t according to your architecture) |
Definition at line 103 of file mphell-number.c.
void number_sqr | ( | number_ptr | dst, |
number_srcptr | src | ||
) |
Set dst to src1^2.
dst | Destination number, must be of size == size(src1) * 2 |
src1 | Source number_ptr (array of blocks) |
Definition at line 1655 of file mphell-number.c.
void number_str | ( | char ** | str, |
number_srcptr | src, | ||
const uint8_t | base | ||
) |
Converts src to string format in base specified by base.
str | Destination string, allocated by the function, must be free by the user. |
src | Source number |
base | Base to use to write str, can be 2, 10 or 16 |
Definition at line 444 of file mphell-number.c.
void number_sub | ( | number_ptr | dst, |
number_srcptr | src1, | ||
number_srcptr | src2 | ||
) |
Set dst to src1 - src2 if src1 - src2 fit in dst.
dst | Destination number |
src1 | Source number_ptr (array of blocks) |
src2 | Source number_ptr (array of blocks) |
Definition at line 1370 of file mphell-number.c.
void number_sub_ui | ( | number_ptr | dst, |
number_srcptr | src1, | ||
const block | src2 | ||
) |
Set dst to src1 - src2 if src1 - src2 fit in dst.
dst | Destination number |
src1 | Source number_ptr (array of blocks) |
src2 | Source number_ptr (block) |
Definition at line 1353 of file mphell-number.c.
void number_tmp_alloc | ( | number * | t, |
const uint8_t | size, | ||
uint8_t | stack | ||
) |
Allocate a temporary number.
t | Adress of the destination number |
size | Number of block to allocate for t (ex: 4 for a 4 * 64 = 256 bits number_ptr on a 64 bits architecture) |
stack | Temporary memory stack to use |
Definition at line 31 of file mphell-number.c.
void number_tmp_free | ( | number * | t, |
const uint8_t | size, | ||
uint8_t | stack | ||
) |
Free a temporary number.
t | Adress of the destination number_ptr to free |
size | Number of block to allocate for t (ex: 4 for a 4 * 64 = 256 bits number_ptr on a 64 bits architecture) |
stack | Temporary memory stack to use |
Definition at line 45 of file mphell-number.c.
void number_to_bit_string | ( | char * | str, |
number_srcptr | src | ||
) |
Converts src (must be positive) to a bit string.
str | Destination string. Must be large enough. |
src | Source number |
Definition at line 665 of file mphell-number.c.
void number_xor | ( | number_ptr | dst, |
number_srcptr | src1, | ||
number_srcptr | src2 | ||
) |
Apply logical bitwise XOR operator between src1 and src2.
dst | Destination number |
src1 | Source number |
src2 | Source number |
Definition at line 1197 of file mphell-number.c.
void number_xor_ui | ( | number_ptr | dst, |
number_srcptr | src1, | ||
const block | src2, | ||
uint8_t | stack | ||
) |
Apply logical bitwise XOR operator between src1 and src2.
dst | Destination number |
src1 | Source number |
src2 | Source block |
stack | Temporary memory stack to use |
Definition at line 1177 of file mphell-number.c.
void redcify | ( | number_ptr | dst, |
number_srcptr | src, | ||
number_srcptr | p, | ||
uint8_t | stack | ||
) |
Set dst to redc form dst=B^n*src mod p.
dst | Output number_ptr and MontgomeryForm of src |
src | Input number_ptr in "classical form" |
p | Modulus |