⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flint.h

📁 flint库 RSA算法
💻 H
📖 第 1 页 / 共 2 页
字号:
#define GTZ_L(a_l) \    (cmp_l ((a_l), nul_l) == 1)         /* a_l > 0          */#define gtz_l(a_l) \    (cmp_l ((a_l), nul_l) == 1)         /* a_l > 0          */#define EQZ_L(a_l) \    (equ_l ((a_l), nul_l) == 1)         /* a_l == 0         */#define eqz_l(a_l) \    (equ_l ((a_l), nul_l) == 1)         /* a_l == 0         */#define EQONE_L(a_l) \    (equ_l ((a_l), one_l) == 1)         /* a_l == 1         */#define eqone_l(a_l) \    (equ_l ((a_l), one_l) == 1)         /* a_l == 1         */#define SET_L(a_l,ul)\    ul2clint_l ((a_l), (ul))            /* a_l <-- unsigned long ul */#define set_l(a_l,ul)\    ul2clint_l ((a_l), (ul))            /* a_l <-- unsigned long ul */#define ASSIGN_L(dest_l,src_l)\    cpy_l ((dest_l), (src_l))           /* src_l <-- dest_l */#define assign_l(dest_l,src_l)\    cpy_l ((dest_l), (src_l))           /* src_l <-- dest_l */#define ISEVEN_L(a_l)\    (DIGITS_L (a_l) == 0 || (DIGITS_L (a_l) > 0 && (*LSDPTR_L (a_l) & 1U) == 0))                                        /* true: a_l is even   */#define iseven_l(a_l)\    (DIGITS_L (a_l) == 0 || (DIGITS_L (a_l) > 0 && (*LSDPTR_L (a_l) & 1U) == 0))                                        /* true: a_l is even   */#define ISODD_L(a_l)\    (DIGITS_L (a_l) > 0 && (*LSDPTR_L (a_l) & 1U) == 1)                                        /* true: a_l is odd */#define isodd_l(a_l)\    (DIGITS_L (a_l) > 0 && (*LSDPTR_L (a_l) & 1U) == 1)                                        /* true: a_l is odd *//* Standard-Output of CLINT variables */#define DISP_L(S,A) printf ("%s%s\n%u bit\n\n", (S), hexstr_l(A), ld_l(A))#define disp_l(S,A) printf ("%s%s\n%u bit\n\n", (S), hexstr_l(A), ld_l(A))/* Initialization of pseudorandom number generators *//* with values derived from time                    */#define INITRAND_LT()\        ulseed64_l ((unsigned long)time(NULL))#define initrand_lt()\        ulseed64_l ((unsigned long)time(NULL))#define INITRAND64_LT()\        ulseed64_l ((unsigned long)time(NULL))#define initrand64_lt()\        ulseed64_l ((unsigned long)time(NULL))/* Compatibility with version 1.0 : Macro clint2str_l */#define CLINT2STR_L(n_l,b) xclint2str_l ((n_l), (b), 0)#define clint2str_l(n_l,b) xclint2str_l ((n_l), (b), 0)/* Implementation of functions xxxstr_l as macros */#define HEXSTR_L(n_l) xclint2str_l ((n_l), 16, 0)#define hexstr_l(n_l) xclint2str_l ((n_l), 16, 0)#define DECSTR_L(n_l) xclint2str_l ((n_l), 10, 0)#define decstr_l(n_l) xclint2str_l ((n_l), 10, 0)#define OCTSTR_L(n_l) xclint2str_l ((n_l), 8, 0)#define octstr_l(n_l) xclint2str_l ((n_l), 8, 0)#define BINSTR_L(n_l) xclint2str_l ((n_l), 2, 0)#define binstr_l(n_l) xclint2str_l ((n_l), 2, 0)/* Simple factorization with sieve_l() */#define SFACTOR_L(n_l) sieve_l ((n_l), NOOFSMALLPRIMES);#define sfactor_l(n_l) sieve_l ((n_l), NOOFSMALLPRIMES);/* Miller-Rabin primality test, parameters according to Lenstra and [MOV] */#define ISPRIME_L(n) prime_l ((n), 302, 0)#define isprime_l(n) prime_l ((n), 302, 0)/* Choice of functions for exponentiation                    *//* Automatic choice of  mexpk_l oder mexpkm_l is provided by *//* function mexp_l.                                          *//* * define MEXP_L(a,e,p,n) mexp5_l ((a), (e), (p), (n)) */#define MEXP_L(a,e,p,n) mexpk_l ((a), (e), (p), (n))/* * #define MEXP_L(a,e,p,n) mexp5m_l ((a), (e), (p), (n)) *//* * #define MEXP_L(a,e,p,n) mexpkm_l ((a), (e), (p), (n)) *//* Purge of CLINT variables by overwriting the storage */#ifdef FLINT_SECURE  #define ZEROCLINT_L(A)  Assert (sizeof(A) >= CLINTMAXBYTE);\                          purge_l (A)  #define ZEROCLINTD_L(A) Assert (sizeof(A) >= sizeof(CLINTD));\                          purged_l (A)  #define ZEROCLINTQ_L(A) Assert (sizeof(A) >= sizeof(CLINTQ));\                          purgeq_l (A)#else  #define ZEROCLINT_L(A)  (void)0  #define ZEROCLINTD_L(A) (void)0  #define ZEROCLINTQ_L(A) (void)0#endif/***********************************************************//* Typedefs                                                *//***********************************************************/typedef unsigned short clint;typedef unsigned long clintd;typedef clint CLINT[CLINTMAXSHORT];typedef clint CLINTD[1 + (CLINTMAXDIGIT << 1)];typedef clint CLINTQ[1 + (CLINTMAXDIGIT << 2)];typedef clint *CLINTPTR;#ifndef UCHARtypedef unsigned char  UCHAR;#endif  /* UCHAR */#ifndef USHORTtypedef unsigned short USHORT;#endif  /* USHORT */#ifndef ULONGtypedef unsigned long  ULONG;#endif  /* ULONG *//***********************************************************//* Function prototypes                                     *//***********************************************************/#ifndef __FLINT_API#ifdef FLINT_USEDLL#define __FLINT_API                   __cdecl#else#define __FLINT_API                   /**/#endif /* FLINT_USEDLL */#endif /* !defined __FLINT_API */#if !defined __FLINT_API_A#if defined __GNUC__ && !defined __cdecl#define __FLINT_API_A                 /**/#else#define __FLINT_API_A                 __cdecl#endif /* !defined __GNUC__ */#endif /* !defined __FLINT_API_A *//* If the FLINT/C-Package is used under MS Visual C/C++ as DLL,               *//* all modules accessing data nul_l, one_l, two_l or smallprimes from outside *//* the DLL must be compiled with -D__FLINT_API_DATA=__declspec(dllimport)     */#ifndef __FLINT_API_DATA#if (defined _MSC_VER && _MSC_VER >= 11) && defined FLINT_USEDLL#define __FLINT_API_DATA              __declspec(dllimport)#else#define __FLINT_API_DATA              /**/#endif /* MSC_VER && FLINT_USEDLL */#endif /* !defined __FLINT_API_DATA */extern int      __FLINT_API  add_l         (CLINT, CLINT, CLINT);extern int      __FLINT_API  chinrem_l     (unsigned int, clint**, CLINT);extern int      __FLINT_API  cmp_l         (CLINT, CLINT);extern void     __FLINT_API  cpy_l         (CLINT, CLINT);extern clint *  __FLINT_API  create_l      (void);extern int      __FLINT_API  create_reg_l  (void);extern int      __FLINT_API  dec_l         (CLINT);#if !defined FLINT_ASMextern int      __FLINT_API  div_l         (CLINT, CLINT, CLINT, CLINT);#elseextern int      __FLINT_API_A div_l        (CLINT, CLINT, CLINT, CLINT);#endif /* FLINT_ASM */extern void     __FLINT_API  and_l         (CLINT, CLINT, CLINT);extern int      __FLINT_API  byte2clint_l  (CLINT, UCHAR *, int);extern int      __FLINT_API  clearbit_l    (CLINT, unsigned int);extern UCHAR *  __FLINT_API  clint2byte_l  (CLINT, int *);extern char *   __FLINT_API  xclint2str_l  (CLINT, USHORT, int);extern int      __FLINT_API  equ_l         (CLINT, CLINT);extern char *   __FLINT_API  fbinstr_l     (CLINT);extern char *   __FLINT_API  fdecstr_l     (CLINT);extern char *   __FLINT_API  fhexstr_l     (CLINT);extern char *   __FLINT_API  foctstr_l     (CLINT);extern void     __FLINT_API  free_l        (CLINT);extern void     __FLINT_API  free_reg_l    (void);extern void     __FLINT_API  fswap_l       (CLINT, CLINT);extern ULONG *  __FLINT_API  genprimes     (ULONG);extern clint *  __FLINT_API  get_reg_l     (unsigned int);extern void     __FLINT_API  gcd_l         (CLINT, CLINT, CLINT);extern int      __FLINT_API  inc_l         (CLINT);extern void     __FLINT_API  inv_l         (CLINT, CLINT, CLINT, CLINT);extern USHORT   __FLINT_API  invmon_l      (CLINT);extern void     __FLINT_API  iroot_l       (CLINT, CLINT);extern unsigned __FLINT_API  issqr_l       (CLINT, CLINT);extern int      __FLINT_API  jacobi_l      (CLINT, CLINT);extern int      __FLINT_API  lcm_l         (CLINT, CLINT, CLINT);extern unsigned __FLINT_API  ld_l          (CLINT);extern int      __FLINT_API  madd_l        (CLINT, CLINT, CLINT, CLINT);extern int      __FLINT_API  mequ_l        (CLINT, CLINT, CLINT);extern int      __FLINT_API  mexp_l        (CLINT, CLINT, CLINT, CLINT);extern int      __FLINT_API  mexp2_l       (CLINT, USHORT, CLINT, CLINT);extern int      __FLINT_API  mexp5_l       (CLINT, CLINT, CLINT, CLINT);extern int      __FLINT_API  mexp5m_l      (CLINT, CLINT, CLINT, CLINT);extern int      __FLINT_API  mexpk_l       (CLINT, CLINT, CLINT, CLINT);extern int      __FLINT_API  mexpkm_l      (CLINT, CLINT, CLINT, CLINT);extern int      __FLINT_API  mmul_l        (CLINT, CLINT, CLINT, CLINT);extern int      __FLINT_API  mod2_l        (CLINT, ULONG, CLINT);extern int      __FLINT_API  mod_l         (CLINT, CLINT, CLINT);extern int      __FLINT_API  msqr_l        (CLINT, CLINT, CLINT);extern int      __FLINT_API  msub_l        (CLINT, CLINT, CLINT, CLINT);extern int      __FLINT_API  mul_l         (CLINT, CLINT, CLINT);extern void     __FLINT_API  mulmon_l      (CLINT, CLINT, CLINT, USHORT, USHORT, CLINT);extern void     __FLINT_API  or_l          (CLINT, CLINT, CLINT);extern int      __FLINT_API  prime_l       (CLINT, unsigned int, unsigned int);extern int      __FLINT_API  primroot_l    (CLINT, unsigned int, clint*[]);extern int      __FLINT_API  proot_l       (CLINT, CLINT, CLINT);extern void     __FLINT_API  purge_l       (CLINT);extern void     __FLINT_API  purged_l      (CLINTD);extern void     __FLINT_API  purgeq_l      (CLINTQ);extern int      __FLINT_API  purge_reg_l   (unsigned int);extern int      __FLINT_API  purgeall_reg_l(void);extern clint *  __FLINT_API  rand64_l      (void);extern void     __FLINT_API  rand_l        (CLINT, int);extern int      __FLINT_API  randbit_l     (void);extern int      __FLINT_API  root_l        (CLINT, CLINT, CLINT, CLINT);extern clint *  __FLINT_API  seed64_l      (CLINT);extern void     __FLINT_API  set_noofregs_l(unsigned int);extern int      __FLINT_API  setbit_l      (CLINT, unsigned int);extern clint *  __FLINT_API  setmax_l      (CLINT);extern int      __FLINT_API  shift_l       (CLINT, long int);extern int      __FLINT_API  shl_l         (CLINT);extern int      __FLINT_API  shr_l         (CLINT);extern USHORT   __FLINT_API  sieve_l       (CLINT, unsigned int);extern int      __FLINT_API  sqr_l         (CLINT, CLINT);extern void     __FLINT_API  sqrmon_l      (CLINT, CLINT, USHORT, USHORT, CLINT);extern int      __FLINT_API  str2clint_l   (CLINT, char *, USHORT);extern char *   __FLINT_API  strlwr_l      (char *);extern char *   __FLINT_API  strrev_l      (char *);extern char *   __FLINT_API  strupr_l      (char *);extern int      __FLINT_API  sub_l         (CLINT, CLINT, CLINT);extern int      __FLINT_API  testbit_l     (CLINT, unsigned int);/* Test for GCC > 3.2.0 */#if !(__GNUC__ > 3 || \    (__GNUC__ == 3 && (__GNUC_MINOR__ > 2 || \                       (__GNUC_MINOR__ == 2 && \                        __GNUC_PATCHLEVEL__ > 0))))extern int      __FLINT_API  tolower_l     (int);extern int      __FLINT_API  toupper_l     (int);#endifextern void     __FLINT_API  u2clint_l     (CLINT, USHORT);extern int      __FLINT_API  uadd_l        (CLINT, USHORT, CLINT);extern UCHAR    __FLINT_API  ucrand64_l    (void);extern int      __FLINT_API  udiv_l        (CLINT, USHORT, CLINT, CLINT);extern void     __FLINT_API  ul2clint_l    (CLINT, ULONG);extern ULONG    __FLINT_API  ulrand64_l    (void);extern clint *  __FLINT_API  ulseed64_l    (ULONG);extern char *   __FLINT_API  ultoa_l       (char *, ULONG, int);extern int      __FLINT_API  umadd_l       (CLINT, USHORT, CLINT, CLINT);extern int      __FLINT_API  umexp_l       (CLINT, USHORT, CLINT, CLINT);extern int      __FLINT_API  umexpm_l      (CLINT, USHORT, CLINT, CLINT);extern int      __FLINT_API  ummul_l       (CLINT, USHORT, CLINT, CLINT);extern USHORT   __FLINT_API  umod_l        (CLINT, USHORT);extern int      __FLINT_API  umsub_l       (CLINT, USHORT, CLINT, CLINT);extern int      __FLINT_API  umul_l        (CLINT, USHORT, CLINT);extern USHORT   __FLINT_API  usrand64_l    (void);extern int      __FLINT_API  usub_l        (CLINT, USHORT, CLINT);extern int      __FLINT_API  vcheck_l      (CLINT);extern ULONG    __FLINT_API  version_l     (void);extern char *   __FLINT_API  verstr_l      (void);extern int      __FLINT_API  wmexp_l       (USHORT, CLINT, CLINT, CLINT);extern int      __FLINT_API  wmexpm_l      (USHORT, CLINT, CLINT, CLINT);extern void     __FLINT_API  xgcd_l        (CLINT, CLINT, CLINT, CLINT, int *, CLINT, int *);extern void     __FLINT_API  xor_l         (CLINT, CLINT, CLINT);extern int      __FLINT_API  twofact_l     (CLINT, CLINT);/* Kernel functions without Overflow-Detection */#if defined FLINT_ASMextern void     __FLINT_API_A mult         (CLINT, CLINT, CLINT);extern void     __FLINT_API_A umul         (CLINT, USHORT, CLINT);extern void     __FLINT_API_A sqr          (CLINT, CLINT);#elseextern void     __FLINT_API  mult          (CLINT, CLINT, CLINT);extern void     __FLINT_API  umul          (CLINT, USHORT, CLINT);extern void     __FLINT_API  sqr           (CLINT, CLINT);#endifextern void     __FLINT_API  add           (CLINT, CLINT, CLINT);extern void     __FLINT_API  sub           (CLINT, CLINT, CLINT);/* Functions operating on signed CLINT-Values */extern int      __FLINT_API  sadd          (CLINT, int, CLINT, int, CLINT);extern int      __FLINT_API  ssub          (CLINT, int, CLINT, int, CLINT);extern int      __FLINT_API  smod          (CLINT, int, CLINT, CLINT);/* Constants */extern clint  __FLINT_API_DATA nul_l[];extern clint  __FLINT_API_DATA one_l[];extern clint  __FLINT_API_DATA two_l[];extern USHORT __FLINT_API_DATA smallprimes[];#ifdef  __cplusplus}#endif#endif /* #defined __FLINTH__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -