bignum.h revision 8d520ff1dc2da35cdca849e982051b86468016d8
15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/* 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Big number math 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Copyright (c) 2006, Jouni Malinen <j@w1.fi> 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * This program is free software; you can redistribute it and/or modify 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * it under the terms of the GNU General Public License version 2 as 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * published by the Free Software Foundation. 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Alternatively, this software may be distributed under the terms of BSD 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * license. 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * See README and COPYING for more details. 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef BIGNUM_H 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define BIGNUM_H 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct bignum; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct bignum * bignum_init(void); 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void bignum_deinit(struct bignum *n); 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)size_t bignum_get_unsigned_bin_len(struct bignum *n); 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int bignum_get_unsigned_bin(const struct bignum *n, u8 *buf, size_t *len); 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int bignum_set_unsigned_bin(struct bignum *n, const u8 *buf, size_t len); 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int bignum_cmp(const struct bignum *a, const struct bignum *b); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int bignum_cmp_d(const struct bignum *a, unsigned long b); 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int bignum_add(const struct bignum *a, const struct bignum *b, 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) struct bignum *c); 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int bignum_sub(const struct bignum *a, const struct bignum *b, 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) struct bignum *c); 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int bignum_mul(const struct bignum *a, const struct bignum *b, 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct bignum *c); 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int bignum_mulmod(const struct bignum *a, const struct bignum *b, 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const struct bignum *c, struct bignum *d); 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int bignum_exptmod(const struct bignum *a, const struct bignum *b, 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const struct bignum *c, struct bignum *d); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif /* BIGNUM_H */ 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)