Big number math. More...
Go to the source code of this file.
Functions | |
struct bignum * | bignum_init (void) |
Allocate memory for bignum. | |
void | bignum_deinit (struct bignum *n) |
Free bignum. | |
size_t | bignum_get_unsigned_bin_len (struct bignum *n) |
Get length of bignum as an unsigned binary buffer. | |
int | bignum_get_unsigned_bin (const struct bignum *n, u8 *buf, size_t *len) |
Set binary buffer to unsigned bignum. | |
int | bignum_set_unsigned_bin (struct bignum *n, const u8 *buf, size_t len) |
Set bignum based on unsigned binary buffer. | |
int | bignum_cmp (const struct bignum *a, const struct bignum *b) |
Signed comparison. | |
int | bignum_cmp_d (const struct bignum *a, unsigned long b) |
Compare bignum to standard integer. | |
int | bignum_add (const struct bignum *a, const struct bignum *b, struct bignum *c) |
c = a + b | |
int | bignum_sub (const struct bignum *a, const struct bignum *b, struct bignum *c) |
c = a - b | |
int | bignum_mul (const struct bignum *a, const struct bignum *b, struct bignum *c) |
c = a * b | |
int | bignum_mulmod (const struct bignum *a, const struct bignum *b, const struct bignum *c, struct bignum *d) |
d = a * b (mod c) | |
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). |
Big number math.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.
Alternatively, this software may be distributed under the terms of BSD license.
See README and COPYING for more details.
Definition in file bignum.h.
int bignum_add | ( | const struct bignum * | a, | |
const struct bignum * | b, | |||
struct bignum * | c | |||
) |
c = a + b
a | Bignum from bignum_init() | |
b | Bignum from bignum_init() | |
c | Bignum from bignum_init(); used to store the result of a + b |
Definition at line 155 of file bignum.c.
int bignum_cmp | ( | const struct bignum * | a, | |
const struct bignum * | b | |||
) |
Signed comparison.
a | Bignum from bignum_init() | |
b | Bignum from bignum_init() |
int bignum_cmp_d | ( | const struct bignum * | a, | |
unsigned long | b | |||
) |
Compare bignum to standard integer.
a | Bignum from bignum_init() | |
b | Small integer |
void bignum_deinit | ( | struct bignum * | n | ) |
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).
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) |
Definition at line 234 of file bignum.c.
int bignum_get_unsigned_bin | ( | const struct bignum * | n, | |
u8 * | buf, | |||
size_t * | len | |||
) |
Set binary buffer to unsigned bignum.
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. |
Definition at line 86 of file bignum.c.
size_t bignum_get_unsigned_bin_len | ( | struct bignum * | n | ) |
Get length of bignum as an unsigned binary buffer.
n | Bignum from bignum_init() |
struct bignum* bignum_init | ( | void | ) | [read] |
int bignum_mul | ( | const struct bignum * | a, | |
const struct bignum * | b, | |||
struct bignum * | c | |||
) |
c = a * b
a | Bignum from bignum_init() | |
b | Bignum from bignum_init() | |
c | Bignum from bignum_init(); used to store the result of a * b |
Definition at line 193 of file bignum.c.
int bignum_mulmod | ( | const struct bignum * | a, | |
const struct bignum * | b, | |||
const struct bignum * | c, | |||
struct bignum * | d | |||
) |
d = a * b (mod c)
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) |
Definition at line 213 of file bignum.c.
int bignum_set_unsigned_bin | ( | struct bignum * | n, | |
const u8 * | buf, | |||
size_t | len | |||
) |
Set bignum based on unsigned binary buffer.
n | Bignum from bignum_init(); to be set to the given value | |
buf | Buffer with unsigned binary value | |
len | Length of buf in octets |
Definition at line 111 of file bignum.c.
int bignum_sub | ( | const struct bignum * | a, | |
const struct bignum * | b, | |||
struct bignum * | c | |||
) |
c = a - b
a | Bignum from bignum_init() | |
b | Bignum from bignum_init() | |
c | Bignum from bignum_init(); used to store the result of a - b |
Definition at line 174 of file bignum.c.