| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #ifndef _BIGNUM_INTERNAL_H
- #define _BIGNUM_INTERNAL_H
- #include "bgn_export.h"
- /**************************************************************************
- * INTERNAL DEFINIITION
- **************************************************************************/
- #define ciL ((int) sizeof(unsigned long))
- #define biL (ciL << 3)
- #define biH (ciL << 2)
- #define B_T_L(i) (((i) + biL - 1) / biL)
- #define C_T_L(i) (((i) + ciL - 1) / ciL)
- /**************************************************************************
- * INTERNAL FUNCTIONS
- **************************************************************************/
- void bgn_init(bgn *P_X);
- void bgn_free(bgn *P_X);
- int bgn_grow(bgn *P_X, int nbl);
- int bgn_copy(bgn *P_X, const bgn *P_Y);
- void bgn_swap(bgn *P_X, bgn *P_Y);
- int bgn_lset(bgn *P_X, int z);
- int bgn_lsb(const bgn *P_X);
- int bgn_msb(const bgn *P_X);
- int bgn_size(const bgn *P_X);
- int bgn_shift_l(bgn *P_X, int count);
- int bgn_shift_r(bgn *P_X, int count);
- int bgn_cmp_abs(const bgn *P_X, const bgn *P_Y);
- int bgn_cmp_num(const bgn *P_X, const bgn *P_Y);
- int bgn_cmp_int(const bgn *P_X, int z);
- int bgn_add_abs(bgn *P_X, const bgn *P_A, const bgn *P_B);
- int bgn_sub_abs(bgn *P_X, const bgn *P_A, const bgn *P_B);
- int bgn_add_bgn(bgn *P_X, const bgn *P_A, const bgn *P_B);
- int bgn_sub_bgn(bgn *P_X, const bgn *P_A, const bgn *P_B);
- int bgn_add_int(bgn *P_X, const bgn *P_A, int b);
- int bgn_sub_int(bgn *P_X, const bgn *P_A, int b);
- int bgn_mul_bgn(bgn *P_X, const bgn *P_A, const bgn *B);
- int bgn_mul_int(bgn *P_X, const bgn *P_A, unsigned long b);
- int bgn_div_bgn(bgn *P_Q, bgn *P_R, const bgn *P_A, const bgn *P_B);
- int bgn_div_int(bgn *P_Q, bgn *P_R, const bgn *P_A, int b);
- int bgn_mod_bgn(bgn *P_R, const bgn *P_A, const bgn *P_B);
- int bgn_mod_int(unsigned long *r, const bgn *P_A, int b);
- int bgn_exp_mod(bgn *P_X, const bgn *P_E, const bgn *P_N, bgn *_RR);
- int bgn_inv_mod(bgn *P_X, const bgn *P_A, const bgn *P_N);
- int bgn_is_prime(bgn *P_X, int (*f_rng) (void *), void *p_rng);
- void montg_init(unsigned long *mm, const bgn *P_N);
- void montg_mul(bgn *P_A, const bgn *P_B, const bgn *P_N, unsigned long mm, const bgn *P_T);
- void montg_red(bgn *P_A, const bgn *P_N, unsigned long mm, const bgn *P_T);
- void bgn_sub_hlp(int n, unsigned long *s, unsigned long *d);
- void bgn_mul_hlp(int i, unsigned long *s, unsigned long *d, unsigned long b);
- #endif
|