16d49e1aeSJan Lentfer /*
26d49e1aeSJan Lentfer  * Big number math
36d49e1aeSJan Lentfer  * Copyright (c) 2006, Jouni Malinen <j@w1.fi>
46d49e1aeSJan Lentfer  *
5*3ff40c12SJohn Marino  * This software may be distributed under the terms of the BSD license.
6*3ff40c12SJohn Marino  * See README for more details.
76d49e1aeSJan Lentfer  */
86d49e1aeSJan Lentfer 
96d49e1aeSJan Lentfer #ifndef BIGNUM_H
106d49e1aeSJan Lentfer #define BIGNUM_H
116d49e1aeSJan Lentfer 
126d49e1aeSJan Lentfer struct bignum;
136d49e1aeSJan Lentfer 
146d49e1aeSJan Lentfer struct bignum * bignum_init(void);
156d49e1aeSJan Lentfer void bignum_deinit(struct bignum *n);
166d49e1aeSJan Lentfer size_t bignum_get_unsigned_bin_len(struct bignum *n);
176d49e1aeSJan Lentfer int bignum_get_unsigned_bin(const struct bignum *n, u8 *buf, size_t *len);
186d49e1aeSJan Lentfer int bignum_set_unsigned_bin(struct bignum *n, const u8 *buf, size_t len);
196d49e1aeSJan Lentfer int bignum_cmp(const struct bignum *a, const struct bignum *b);
206d49e1aeSJan Lentfer int bignum_cmp_d(const struct bignum *a, unsigned long b);
216d49e1aeSJan Lentfer int bignum_add(const struct bignum *a, const struct bignum *b,
226d49e1aeSJan Lentfer 	       struct bignum *c);
236d49e1aeSJan Lentfer int bignum_sub(const struct bignum *a, const struct bignum *b,
246d49e1aeSJan Lentfer 	       struct bignum *c);
256d49e1aeSJan Lentfer int bignum_mul(const struct bignum *a, const struct bignum *b,
266d49e1aeSJan Lentfer 	       struct bignum *c);
276d49e1aeSJan Lentfer int bignum_mulmod(const struct bignum *a, const struct bignum *b,
286d49e1aeSJan Lentfer 		  const struct bignum *c, struct bignum *d);
296d49e1aeSJan Lentfer int bignum_exptmod(const struct bignum *a, const struct bignum *b,
306d49e1aeSJan Lentfer 		   const struct bignum *c, struct bignum *d);
316d49e1aeSJan Lentfer 
326d49e1aeSJan Lentfer #endif /* BIGNUM_H */
33