18#ifndef PROTOCORE_BIGNUM_H
19#define PROTOCORE_BIGNUM_H
23#if PROTOCORE_ENABLE_BIGNUM
32#define PROTOCORE_BN_LIMBS 64
42 uint32_t d[PROTOCORE_BN_LIMBS];
50extern const protocore_bignum group14_p;
53extern const protocore_bignum group14_g;
68int bn_cmp_raw(
const uint32_t *a,
const uint32_t *b,
int n);
70void bn_expmod_group14(protocore_bignum *out,
const protocore_bignum *base,
const protocore_bignum *exp);
75 protocore_bignum *out;
84 const protocore_bignum *in;
90 const protocore_bignum *a;
91 const protocore_bignum *b;
105 const protocore_bignum *a;
111 protocore_bignum *out;
112 const protocore_bignum *base;
113 const protocore_bignum *exp;
119 const protocore_bignum *v;
169 BignumFromBytesArgs from_bytes_args;
170 BignumToBytesArgs to_bytes_args;
171 BignumCmpArgs cmp_args;
172 BignumCmpRawArgs cmp_raw_args;
173 BignumIsZeroArgs is_zero_args;
174 BignumExpmodArgs expmod_args;
175 BignumValidateArgs validate_args;
182extern BignumVars BignumV;
187 void (*
const from_bytes)(uint8_t *work);
188 void (*
const to_bytes)(uint8_t *work);
189 void (*
const cmp)(uint8_t *work);
190 void (*
const cmp_raw)(uint8_t *work);
191 void (*
const is_zero)(uint8_t *work);
192 void (*
const expmod_group14)(uint8_t *work);
193 void (*
const dh_validate)(uint8_t *work);
198void protocore_bignum_from_bytes(uint8_t *work);
199void protocore_bignum_to_bytes(uint8_t *work);
200void protocore_bignum_cmp(uint8_t *work);
201void protocore_bignum_cmp_raw(uint8_t *work);
202void protocore_bignum_is_zero(uint8_t *work);
203void protocore_bignum_expmod_group14(uint8_t *work);
204void protocore_bignum_dh_validate(uint8_t *work);
210static const BignumNs Bignum __attribute__((unused)) = {
211 .from_bytes = protocore_bignum_from_bytes,
212 .to_bytes = protocore_bignum_to_bytes,
213 .cmp = protocore_bignum_cmp,
214 .cmp_raw = protocore_bignum_cmp_raw,
215 .is_zero = protocore_bignum_is_zero,
216 .expmod_group14 = protocore_bignum_expmod_group14,
217 .dh_validate = protocore_bignum_dh_validate,
#define PROTOCORE_BEGIN_DECLS
Give a header's declarations C linkage, so their symbol names carry no parameter types.
_Bool proto_bool
The truth value.
#define PROTOCORE_END_DECLS