Big number math.
More...
Go to the source code of this file.
|
struct bignum * | bignum_init (void) |
| Allocate memory for bignum. More...
|
|
void | bignum_deinit (struct bignum *n) |
| Free bignum. More...
|
|
size_t | bignum_get_unsigned_bin_len (struct bignum *n) |
| Get length of bignum as an unsigned binary buffer. More...
|
|
int | bignum_get_unsigned_bin (const struct bignum *n, u8 *buf, size_t *len) |
| Set binary buffer to unsigned bignum. More...
|
|
int | bignum_set_unsigned_bin (struct bignum *n, const u8 *buf, size_t len) |
| Set bignum based on unsigned binary buffer. More...
|
|
int | bignum_cmp (const struct bignum *a, const struct bignum *b) |
| Signed comparison. More...
|
|
int | bignum_cmp_d (const struct bignum *a, unsigned long b) |
| Compare bignum to standard integer. More...
|
|
int | bignum_add (const struct bignum *a, const struct bignum *b, struct bignum *c) |
| c = a + b More...
|
|
int | bignum_sub (const struct bignum *a, const struct bignum *b, struct bignum *c) |
| c = a - b More...
|
|
int | bignum_mul (const struct bignum *a, const struct bignum *b, struct bignum *c) |
| c = a * b More...
|
|
int | bignum_mulmod (const struct bignum *a, const struct bignum *b, const struct bignum *c, struct bignum *d) |
| d = a * b (mod c) More...
|
|
int | bignum_exptmod (const struct bignum *a, const struct bignum *b, const struct bignum *c, struct bignum *d) |
| Modular exponentiation: d = a^b (mod c) More...
|
|
int bignum_add |
( |
const struct bignum * |
a, |
|
|
const struct bignum * |
b, |
|
|
struct bignum * |
c |
|
) |
| |
c = a + b
- Parameters
-
a | Bignum from bignum_init() |
b | Bignum from bignum_init() |
c | Bignum from bignum_init(); used to store the result of a + b |
- Returns
- 0 on success, -1 on failure
int bignum_cmp |
( |
const struct bignum * |
a, |
|
|
const struct bignum * |
b |
|
) |
| |
Signed comparison.
- Parameters
-
a | Bignum from bignum_init() |
b | Bignum from bignum_init() |
- Returns
- 0 on success, -1 on failure
int bignum_cmp_d |
( |
const struct bignum * |
a, |
|
|
unsigned long |
b |
|
) |
| |
Compare bignum to standard integer.
- Parameters
-
a | Bignum from bignum_init() |
b | Small integer |
- Returns
- 0 on success, -1 on failure
void bignum_deinit |
( |
struct bignum * |
n | ) |
|
Free bignum.
- Parameters
-
n | Bignum from bignum_init() |
int bignum_exptmod |
( |
const struct bignum * |
a, |
|
|
const struct bignum * |
b, |
|
|
const struct bignum * |
c, |
|
|
struct bignum * |
d |
|
) |
| |
Modular exponentiation: d = a^b (mod c)
- Parameters
-
a | Bignum from bignum_init(); base |
b | Bignum from bignum_init(); exponent |
c | Bignum from bignum_init(); modulus |
d | Bignum from bignum_init(); used to store the result of a^b (mod c) |
- Returns
- 0 on success, -1 on failure
int bignum_get_unsigned_bin |
( |
const struct bignum * |
n, |
|
|
u8 * |
buf, |
|
|
size_t * |
len |
|
) |
| |
Set binary buffer to unsigned bignum.
- Parameters
-
n | Bignum from bignum_init() |
buf | Buffer for the binary number |
len | Length of the buffer, can be NULL if buffer is known to be long enough. Set to used buffer length on success if not NULL. |
- Returns
- 0 on success, -1 on failure
size_t bignum_get_unsigned_bin_len |
( |
struct bignum * |
n | ) |
|
Get length of bignum as an unsigned binary buffer.
- Parameters
-
n | Bignum from bignum_init() |
- Returns
- Length of n if written to a binary buffer
struct bignum* bignum_init |
( |
void |
| ) |
|
Allocate memory for bignum.
- Returns
- Pointer to allocated bignum or NULL on failure
int bignum_mul |
( |
const struct bignum * |
a, |
|
|
const struct bignum * |
b, |
|
|
struct bignum * |
c |
|
) |
| |
c = a * b
- Parameters
-
a | Bignum from bignum_init() |
b | Bignum from bignum_init() |
c | Bignum from bignum_init(); used to store the result of a * b |
- Returns
- 0 on success, -1 on failure
int bignum_mulmod |
( |
const struct bignum * |
a, |
|
|
const struct bignum * |
b, |
|
|
const struct bignum * |
c, |
|
|
struct bignum * |
d |
|
) |
| |
d = a * b (mod c)
- Parameters
-
a | Bignum from bignum_init() |
b | Bignum from bignum_init() |
c | Bignum from bignum_init(); modulus |
d | Bignum from bignum_init(); used to store the result of a * b (mod c) |
- Returns
- 0 on success, -1 on failure
int bignum_set_unsigned_bin |
( |
struct bignum * |
n, |
|
|
const u8 * |
buf, |
|
|
size_t |
len |
|
) |
| |
Set bignum based on unsigned binary buffer.
- Parameters
-
n | Bignum from bignum_init(); to be set to the given value |
buf | Buffer with unsigned binary value |
len | Length of buf in octets |
- Returns
- 0 on success, -1 on failure
int bignum_sub |
( |
const struct bignum * |
a, |
|
|
const struct bignum * |
b, |
|
|
struct bignum * |
c |
|
) |
| |
c = a - b
- Parameters
-
a | Bignum from bignum_init() |
b | Bignum from bignum_init() |
c | Bignum from bignum_init(); used to store the result of a - b |
- Returns
- 0 on success, -1 on failure