18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Big number math
38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2006, Jouni Malinen <j@w1.fi>
48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *
5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license.
6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details.
78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */
88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef BIGNUM_H
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define BIGNUM_H
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct bignum;
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct bignum * bignum_init(void);
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid bignum_deinit(struct bignum *n);
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtsize_t bignum_get_unsigned_bin_len(struct bignum *n);
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint bignum_get_unsigned_bin(const struct bignum *n, u8 *buf, size_t *len);
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint bignum_set_unsigned_bin(struct bignum *n, const u8 *buf, size_t len);
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint bignum_cmp(const struct bignum *a, const struct bignum *b);
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint bignum_cmp_d(const struct bignum *a, unsigned long b);
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint bignum_add(const struct bignum *a, const struct bignum *b,
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	       struct bignum *c);
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint bignum_sub(const struct bignum *a, const struct bignum *b,
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	       struct bignum *c);
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint bignum_mul(const struct bignum *a, const struct bignum *b,
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	       struct bignum *c);
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint bignum_mulmod(const struct bignum *a, const struct bignum *b,
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		  const struct bignum *c, struct bignum *d);
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint bignum_exptmod(const struct bignum *a, const struct bignum *b,
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		   const struct bignum *c, struct bignum *d);
318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* BIGNUM_H */
33