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

📄 try.c

📁 a very popular packet of cryptography tools,it encloses the most common used algorithm and protocols
💻 C
📖 第 1 页 / 共 5 页
字号:
#define TYPE_MUL_1C            8#define TYPE_MUL_2             9#define TYPE_ADDMUL_1         10#define TYPE_ADDMUL_1C        11#define TYPE_SUBMUL_1         12#define TYPE_SUBMUL_1C        13#define TYPE_ADDSUB_N         14#define TYPE_ADDSUB_NC        15#define TYPE_RSHIFT           16#define TYPE_LSHIFT           17#define TYPE_COPY             20#define TYPE_COPYI            21#define TYPE_COPYD            22#define TYPE_COM_N            23#define TYPE_MOD_1            25#define TYPE_MOD_1C           26#define TYPE_DIVMOD_1         27#define TYPE_DIVMOD_1C        28#define TYPE_DIVREM_1         29#define TYPE_DIVREM_1C        30#define TYPE_PREINV_DIVREM_1  31#define TYPE_PREINV_MOD_1     32#define TYPE_MOD_34LSUB1      33#define TYPE_UDIV_QRNND       34#define TYPE_DIVEXACT_1       35#define TYPE_DIVEXACT_BY3     36#define TYPE_DIVEXACT_BY3C    37#define TYPE_MODEXACT_1_ODD   38#define TYPE_MODEXACT_1C_ODD  39#define TYPE_GCD              40#define TYPE_GCD_1            41#define TYPE_GCD_FINDA        42#define TYPE_MPZ_JACOBI       43#define TYPE_MPZ_KRONECKER    44#define TYPE_MPZ_KRONECKER_UI 45#define TYPE_MPZ_KRONECKER_SI 46#define TYPE_MPZ_UI_KRONECKER 47#define TYPE_MPZ_SI_KRONECKER 48#define TYPE_AND_N            50#define TYPE_NAND_N           51#define TYPE_ANDN_N           52#define TYPE_IOR_N            53#define TYPE_IORN_N           54#define TYPE_NIOR_N           55#define TYPE_XOR_N            56#define TYPE_XNOR_N           57#define TYPE_POPCOUNT         58#define TYPE_HAMDIST          59#define TYPE_MUL_BASECASE     60#define TYPE_MUL_N            61#define TYPE_SQR              62#define TYPE_UMUL_PPMM        63#define TYPE_UMUL_PPMM_R      64#define TYPE_SB_DIVREM_MN     70#define TYPE_TDIV_QR          71#define TYPE_SQRTREM          80#define TYPE_ZERO             81#define TYPE_GET_STR          82#define TYPE_EXTRA            90struct try_t  param[150];voidparam_init (void){  struct try_t  *p;#define COPY(index)  memcpy (p, &param[index], sizeof (*p))#if HAVE_STRINGIZE#define REFERENCE(fun)                  \  p->reference = (tryfun_t) fun;        \  p->reference_name = #fun#define VALIDATE(fun)           \  p->validate = fun;            \  p->validate_name = #fun#else#define REFERENCE(fun)                  \  p->reference = (tryfun_t) fun;        \  p->reference_name = "fun"#define VALIDATE(fun)           \  p->validate = fun;            \  p->validate_name = "fun"#endif  p = &param[TYPE_ADD_N];  p->retval = 1;  p->dst[0] = 1;  p->src[0] = 1;  p->src[1] = 1;  REFERENCE (refmpn_add_n);  p = &param[TYPE_ADD_NC];  COPY (TYPE_ADD_N);  p->carry = CARRY_BIT;  REFERENCE (refmpn_add_nc);  p = &param[TYPE_SUB_N];  COPY (TYPE_ADD_N);  REFERENCE (refmpn_sub_n);  p = &param[TYPE_SUB_NC];  COPY (TYPE_ADD_NC);  REFERENCE (refmpn_sub_nc);  p = &param[TYPE_ADD];  COPY (TYPE_ADD_N);  p->size = SIZE_ALLOW_ZERO;  p->size2 = 1;  REFERENCE (refmpn_add);  p = &param[TYPE_SUB];  COPY (TYPE_ADD);  REFERENCE (refmpn_sub);  p = &param[TYPE_MUL_1];  p->retval = 1;  p->dst[0] = 1;  p->src[0] = 1;  p->multiplier = 1;  p->overlap = OVERLAP_LOW_TO_HIGH;  REFERENCE (refmpn_mul_1);  p = &param[TYPE_MUL_1C];  COPY (TYPE_MUL_1);  p->carry = CARRY_LIMB;  REFERENCE (refmpn_mul_1c);  p = &param[TYPE_MUL_2];  p->retval = 1;  p->dst[0] = 1;  p->dst_size[0] = SIZE_PLUS_1;  p->src[0] = 1;  p->src[1] = 1;  p->size2 = SIZE_2;  p->overlap = OVERLAP_NOT_SRC2;  REFERENCE (refmpn_mul_2);  p = &param[TYPE_ADDMUL_1];  p->retval = 1;  p->dst[0] = 1;  p->src[0] = 1;  p->multiplier = 1;  p->dst0_from_src1 = 1;  REFERENCE (refmpn_addmul_1);  p = &param[TYPE_ADDMUL_1C];  COPY (TYPE_ADDMUL_1);  p->carry = CARRY_LIMB;  REFERENCE (refmpn_addmul_1c);  p = &param[TYPE_SUBMUL_1];  COPY (TYPE_ADDMUL_1);  REFERENCE (refmpn_submul_1);  p = &param[TYPE_SUBMUL_1C];  COPY (TYPE_ADDMUL_1C);  REFERENCE (refmpn_submul_1c);  p = &param[TYPE_AND_N];  p->dst[0] = 1;  p->src[0] = 1;  p->src[1] = 1;  REFERENCE (refmpn_and_n);  p = &param[TYPE_ANDN_N];  COPY (TYPE_AND_N);  REFERENCE (refmpn_andn_n);  p = &param[TYPE_NAND_N];  COPY (TYPE_AND_N);  REFERENCE (refmpn_nand_n);  p = &param[TYPE_IOR_N];  COPY (TYPE_AND_N);  REFERENCE (refmpn_ior_n);  p = &param[TYPE_IORN_N];  COPY (TYPE_AND_N);  REFERENCE (refmpn_iorn_n);  p = &param[TYPE_NIOR_N];  COPY (TYPE_AND_N);  REFERENCE (refmpn_nior_n);  p = &param[TYPE_XOR_N];  COPY (TYPE_AND_N);  REFERENCE (refmpn_xor_n);  p = &param[TYPE_XNOR_N];  COPY (TYPE_AND_N);  REFERENCE (refmpn_xnor_n);  p = &param[TYPE_ADDSUB_N];  p->retval = 1;  p->dst[0] = 1;  p->dst[1] = 1;  p->src[0] = 1;  p->src[1] = 1;  REFERENCE (refmpn_addsub_n);  p = &param[TYPE_ADDSUB_NC];  COPY (TYPE_ADDSUB_N);  p->carry = CARRY_4;  REFERENCE (refmpn_addsub_nc);  p = &param[TYPE_COPY];  p->dst[0] = 1;  p->src[0] = 1;  p->overlap = OVERLAP_NONE;  p->size = SIZE_ALLOW_ZERO;  REFERENCE (refmpn_copy);  p = &param[TYPE_COPYI];  p->dst[0] = 1;  p->src[0] = 1;  p->overlap = OVERLAP_LOW_TO_HIGH;  p->size = SIZE_ALLOW_ZERO;  REFERENCE (refmpn_copyi);  p = &param[TYPE_COPYD];  p->dst[0] = 1;  p->src[0] = 1;  p->overlap = OVERLAP_HIGH_TO_LOW;  p->size = SIZE_ALLOW_ZERO;  REFERENCE (refmpn_copyd);  p = &param[TYPE_COM_N];  p->dst[0] = 1;  p->src[0] = 1;  REFERENCE (refmpn_com_n);  p = &param[TYPE_MOD_1];  p->retval = 1;  p->src[0] = 1;  p->size = SIZE_ALLOW_ZERO;  p->divisor = DIVISOR_LIMB;  REFERENCE (refmpn_mod_1);  p = &param[TYPE_MOD_1C];  COPY (TYPE_MOD_1);  p->carry = CARRY_DIVISOR;  REFERENCE (refmpn_mod_1c);  p = &param[TYPE_DIVMOD_1];  COPY (TYPE_MOD_1);  p->dst[0] = 1;  REFERENCE (refmpn_divmod_1);  p = &param[TYPE_DIVMOD_1C];  COPY (TYPE_DIVMOD_1);  p->carry = CARRY_DIVISOR;  REFERENCE (refmpn_divmod_1c);  p = &param[TYPE_DIVREM_1];  COPY (TYPE_DIVMOD_1);  p->size2 = SIZE_FRACTION;  p->dst_size[0] = SIZE_SUM;  REFERENCE (refmpn_divrem_1);  p = &param[TYPE_DIVREM_1C];  COPY (TYPE_DIVREM_1);  p->carry = CARRY_DIVISOR;  REFERENCE (refmpn_divrem_1c);  p = &param[TYPE_PREINV_DIVREM_1];  COPY (TYPE_DIVREM_1);  p->size = SIZE_YES; /* ie. no size==0 */  REFERENCE (refmpn_preinv_divrem_1);  p = &param[TYPE_PREINV_MOD_1];  p->retval = 1;  p->src[0] = 1;  p->divisor = DIVISOR_NORM;  REFERENCE (refmpn_preinv_mod_1);  p = &param[TYPE_MOD_34LSUB1];  p->retval = 1;  p->src[0] = 1;  VALIDATE (validate_mod_34lsub1);  p = &param[TYPE_UDIV_QRNND];  p->retval = 1;  p->src[0] = 1;  p->dst[0] = 1;  p->dst_size[0] = SIZE_1;  p->divisor = DIVISOR_LIMB;  p->data = DATA_UDIV_QRNND;  p->overlap = OVERLAP_NONE;  REFERENCE (refmpn_udiv_qrnnd);  p = &param[TYPE_DIVEXACT_1];  p->dst[0] = 1;  p->src[0] = 1;  p->divisor = 1;  p->data = DATA_MULTIPLE_DIVISOR;  VALIDATE (validate_divexact_1);  REFERENCE (refmpn_divmod_1);  p = &param[TYPE_DIVEXACT_BY3];  p->retval = 1;  p->dst[0] = 1;  p->src[0] = 1;  REFERENCE (refmpn_divexact_by3);  p = &param[TYPE_DIVEXACT_BY3C];  COPY (TYPE_DIVEXACT_BY3);  p->carry = CARRY_3;  REFERENCE (refmpn_divexact_by3c);  p = &param[TYPE_MODEXACT_1_ODD];  p->retval = 1;  p->src[0] = 1;  p->divisor = DIVISOR_ODD;  VALIDATE (validate_modexact_1_odd);  p = &param[TYPE_MODEXACT_1C_ODD];  COPY (TYPE_MODEXACT_1_ODD);  p->carry = CARRY_LIMB;  VALIDATE (validate_modexact_1c_odd);  p = &param[TYPE_GCD_1];  p->retval = 1;  p->src[0] = 1;  p->data = DATA_NON_ZERO;  p->divisor = DIVISOR_LIMB;  REFERENCE (refmpn_gcd_1);  p = &param[TYPE_GCD];  p->retval = 1;  p->dst[0] = 1;  p->src[0] = 1;  p->src[1] = 1;  p->size2 = 1;  p->dst_size[0] = SIZE_RETVAL;  p->overlap = OVERLAP_NOT_SRCS;  p->data = DATA_GCD;  REFERENCE (refmpn_gcd);  /* FIXME: size==2 */  p = &param[TYPE_GCD_FINDA];  p->retval = 1;  p->src[0] = 1;  REFERENCE (refmpn_gcd_finda);  p = &param[TYPE_MPZ_JACOBI];  p->retval = 1;  p->src[0] = 1;  p->size = SIZE_ALLOW_ZERO;  p->src[1] = 1;  p->size2 = 1;  p->carry = CARRY_4;  p->carry_sign = 1;  REFERENCE (refmpz_jacobi);  p = &param[TYPE_MPZ_KRONECKER];  COPY (TYPE_MPZ_JACOBI);  REFERENCE (refmpz_kronecker);  p = &param[TYPE_MPZ_KRONECKER_UI];  p->retval = 1;  p->src[0] = 1;  p->size = SIZE_ALLOW_ZERO;  p->multiplier = 1;  p->carry = CARRY_BIT;  REFERENCE (refmpz_kronecker_ui);  p = &param[TYPE_MPZ_KRONECKER_SI];  COPY (TYPE_MPZ_KRONECKER_UI);  REFERENCE (refmpz_kronecker_si);  p = &param[TYPE_MPZ_UI_KRONECKER];  COPY (TYPE_MPZ_KRONECKER_UI);  REFERENCE (refmpz_ui_kronecker);  p = &param[TYPE_MPZ_SI_KRONECKER];  COPY (TYPE_MPZ_KRONECKER_UI);  REFERENCE (refmpz_si_kronecker);  p = &param[TYPE_SQR];  p->dst[0] = 1;  p->src[0] = 1;  p->dst_size[0] = SIZE_SUM;  p->overlap = OVERLAP_NONE;  REFERENCE (refmpn_sqr);  p = &param[TYPE_MUL_N];  COPY (TYPE_SQR);  p->src[1] = 1;  REFERENCE (refmpn_mul_n);  p = &param[TYPE_MUL_BASECASE];  COPY (TYPE_MUL_N);  p->size2 = 1;  REFERENCE (refmpn_mul_basecase);  p = &param[TYPE_UMUL_PPMM];  p->retval = 1;  p->src[0] = 1;  p->dst[0] = 1;  p->dst_size[0] = SIZE_1;  p->overlap = OVERLAP_NONE;  REFERENCE (refmpn_umul_ppmm);  p = &param[TYPE_UMUL_PPMM_R];  COPY (TYPE_UMUL_PPMM);  REFERENCE (refmpn_umul_ppmm_r);  p = &param[TYPE_RSHIFT];  p->retval = 1;  p->dst[0] = 1;  p->src[0] = 1;  p->shift = 1;  p->overlap = OVERLAP_LOW_TO_HIGH;  REFERENCE (refmpn_rshift);  p = &param[TYPE_LSHIFT];  COPY (TYPE_RSHIFT);  p->overlap = OVERLAP_HIGH_TO_LOW;  REFERENCE (refmpn_lshift);  p = &param[TYPE_POPCOUNT];  p->retval = 1;  p->src[0] = 1;  REFERENCE (refmpn_popcount);  p = &param[TYPE_HAMDIST];  COPY (TYPE_POPCOUNT);  p->src[1] = 1;  REFERENCE (refmpn_hamdist);  p = &param[TYPE_SB_DIVREM_MN];  p->retval = 1;  p->dst[0] = 1;  p->dst[1] = 1;  p->src[0] = 1;  p->src[1] = 1;  p->data = DATA_SRC1_HIGHBIT;  p->size2 = 1;  p->dst_size[0] = SIZE_DIFF;  p->overlap = OVERLAP_NONE;  REFERENCE (refmpn_sb_divrem_mn);  p = &param[TYPE_TDIV_QR];  p->dst[0] = 1;  p->dst[1] = 1;  p->src[0] = 1;  p->src[1] = 1;  p->size2 = 1;  p->dst_size[0] = SIZE_DIFF_PLUS_1;  p->dst_size[1] = SIZE_SIZE2;  p->overlap = OVERLAP_NONE;  REFERENCE (refmpn_tdiv_qr);  p = &param[TYPE_SQRTREM];  p->retval = 1;  p->dst[0] = 1;  p->dst[1] = 1;  p->src[0] = 1;  p->dst_size[0] = SIZE_CEIL_HALF;  p->dst_size[1] = SIZE_RETVAL;  p->overlap = OVERLAP_NONE;  VALIDATE (validate_sqrtrem);  p = &param[TYPE_ZERO];  p->dst[0] = 1;  p->size = SIZE_ALLOW_ZERO;  REFERENCE (refmpn_zero);  p = &param[TYPE_GET_STR];  p->src[0] = 1;  p->size = SIZE_ALLOW_ZERO;  p->dst[0] = 1;  p->dst[1] = 1;  p->dst_size[0] = SIZE_GET_STR;  p->dst_bytes[0] = 1;  p->overlap = OVERLAP_NONE;  REFERENCE (refmpn_get_str);#ifdef EXTRA_PARAM_INIT  EXTRA_PARAM_INIT#endif}/* The following are macros if there's no native versions, so wrap them in   functions that can be in try_array[]. */voidMPN_COPY_fun (mp_ptr rp, mp_srcptr sp, mp_size_t size){ MPN_COPY (rp, sp, size); }voidMPN_COPY_INCR_fun (mp_ptr rp, mp_srcptr sp, mp_size_t size){ MPN_COPY_INCR (rp, sp, size); }voidMPN_COPY_DECR_fun (mp_ptr rp, mp_srcptr sp, mp_size_t size)

⌨️ 快捷键说明

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