1e5b75505Sopenharmony_ci/*
2e5b75505Sopenharmony_ci * Big number math
3e5b75505Sopenharmony_ci * Copyright (c) 2006, Jouni Malinen <j@w1.fi>
4e5b75505Sopenharmony_ci *
5e5b75505Sopenharmony_ci * This software may be distributed under the terms of the BSD license.
6e5b75505Sopenharmony_ci * See README for more details.
7e5b75505Sopenharmony_ci */
8e5b75505Sopenharmony_ci
9e5b75505Sopenharmony_ci#ifndef BIGNUM_H
10e5b75505Sopenharmony_ci#define BIGNUM_H
11e5b75505Sopenharmony_ci
12e5b75505Sopenharmony_cistruct bignum;
13e5b75505Sopenharmony_ci
14e5b75505Sopenharmony_cistruct bignum * bignum_init(void);
15e5b75505Sopenharmony_civoid bignum_deinit(struct bignum *n);
16e5b75505Sopenharmony_cisize_t bignum_get_unsigned_bin_len(struct bignum *n);
17e5b75505Sopenharmony_ciint bignum_get_unsigned_bin(const struct bignum *n, u8 *buf, size_t *len);
18e5b75505Sopenharmony_ciint bignum_set_unsigned_bin(struct bignum *n, const u8 *buf, size_t len);
19e5b75505Sopenharmony_ciint bignum_cmp(const struct bignum *a, const struct bignum *b);
20e5b75505Sopenharmony_ciint bignum_cmp_d(const struct bignum *a, unsigned long b);
21e5b75505Sopenharmony_ciint bignum_add(const struct bignum *a, const struct bignum *b,
22e5b75505Sopenharmony_ci	       struct bignum *c);
23e5b75505Sopenharmony_ciint bignum_sub(const struct bignum *a, const struct bignum *b,
24e5b75505Sopenharmony_ci	       struct bignum *c);
25e5b75505Sopenharmony_ciint bignum_mul(const struct bignum *a, const struct bignum *b,
26e5b75505Sopenharmony_ci	       struct bignum *c);
27e5b75505Sopenharmony_ciint bignum_mulmod(const struct bignum *a, const struct bignum *b,
28e5b75505Sopenharmony_ci		  const struct bignum *c, struct bignum *d);
29e5b75505Sopenharmony_ciint bignum_exptmod(const struct bignum *a, const struct bignum *b,
30e5b75505Sopenharmony_ci		   const struct bignum *c, struct bignum *d);
31e5b75505Sopenharmony_ci
32e5b75505Sopenharmony_ci#endif /* BIGNUM_H */
33