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