xref: /freebsd/contrib/wpa/src/tls/bignum.h (revision 0bfd163f522701b486e066fa2e56624c02f5081a)
139beb93cSSam Leffler /*
239beb93cSSam Leffler  * Big number math
339beb93cSSam Leffler  * Copyright (c) 2006, Jouni Malinen <j@w1.fi>
439beb93cSSam Leffler  *
5*f05cddf9SRui Paulo  * This software may be distributed under the terms of the BSD license.
6*f05cddf9SRui Paulo  * See README for more details.
739beb93cSSam Leffler  */
839beb93cSSam Leffler 
939beb93cSSam Leffler #ifndef BIGNUM_H
1039beb93cSSam Leffler #define BIGNUM_H
1139beb93cSSam Leffler 
1239beb93cSSam Leffler struct bignum;
1339beb93cSSam Leffler 
1439beb93cSSam Leffler struct bignum * bignum_init(void);
1539beb93cSSam Leffler void bignum_deinit(struct bignum *n);
1639beb93cSSam Leffler size_t bignum_get_unsigned_bin_len(struct bignum *n);
1739beb93cSSam Leffler int bignum_get_unsigned_bin(const struct bignum *n, u8 *buf, size_t *len);
1839beb93cSSam Leffler int bignum_set_unsigned_bin(struct bignum *n, const u8 *buf, size_t len);
1939beb93cSSam Leffler int bignum_cmp(const struct bignum *a, const struct bignum *b);
2039beb93cSSam Leffler int bignum_cmp_d(const struct bignum *a, unsigned long b);
2139beb93cSSam Leffler int bignum_add(const struct bignum *a, const struct bignum *b,
2239beb93cSSam Leffler 	       struct bignum *c);
2339beb93cSSam Leffler int bignum_sub(const struct bignum *a, const struct bignum *b,
2439beb93cSSam Leffler 	       struct bignum *c);
2539beb93cSSam Leffler int bignum_mul(const struct bignum *a, const struct bignum *b,
2639beb93cSSam Leffler 	       struct bignum *c);
2739beb93cSSam Leffler int bignum_mulmod(const struct bignum *a, const struct bignum *b,
2839beb93cSSam Leffler 		  const struct bignum *c, struct bignum *d);
2939beb93cSSam Leffler int bignum_exptmod(const struct bignum *a, const struct bignum *b,
3039beb93cSSam Leffler 		   const struct bignum *c, struct bignum *d);
3139beb93cSSam Leffler 
3239beb93cSSam Leffler #endif /* BIGNUM_H */
33