/* bignum.h */
#include <linux/types.h>
#include <linux/skbuff.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/ctype.h>
typedef uint64_t dbn_t;
typedef uint32_t bn_t;
#define BN_DIGIT_BITS 32 // For uint32_t
#define BN_MAX_DIGITS 65 // RSA_MAX_MODULUS_LEN + 1
#define BN_MAX_DIGIT 0xFFFFFFFF
#define DIGIT_2MSB(x) (uint32_t)(((x) >> (BN_DIGIT_BITS - 2)) & 0x03)
void bn_decode(bn_t *bn, uint32_t digits, uint8_t *hexarr, uint32_t size);
void bn_encode(uint8_t *hexarr, uint32_t size, bn_t *bn, uint32_t digits);
void bn_assign(bn_t *a, bn_t *b, uint32_t digits);