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

📄 bn.h

📁 mediastreamer2是开源的网络传输媒体流的库
💻 H
📖 第 1 页 / 共 3 页
字号:
void BN_set_params(int mul,int high,int low,int mont);int BN_get_params(int which); /* 0, mul, 1 high, 2 low, 3 mont */#endifvoid	BN_RECP_CTX_init(BN_RECP_CTX *recp);BN_RECP_CTX *BN_RECP_CTX_new(void);void	BN_RECP_CTX_free(BN_RECP_CTX *recp);int	BN_RECP_CTX_set(BN_RECP_CTX *recp,const BIGNUM *rdiv,BN_CTX *ctx);int	BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y,	BN_RECP_CTX *recp,BN_CTX *ctx);int	BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,	const BIGNUM *m, BN_CTX *ctx);int	BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m,	BN_RECP_CTX *recp, BN_CTX *ctx);/* Functions for arithmetic over binary polynomials represented by BIGNUMs.  * * The BIGNUM::neg property of BIGNUMs representing binary polynomials is * ignored. * * Note that input arguments are not const so that their bit arrays can * be expanded to the appropriate size if needed. */int	BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); /*r = a + b*/#define BN_GF2m_sub(r, a, b) BN_GF2m_add(r, a, b)int	BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p); /*r=a mod p*/int	BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,	const BIGNUM *p, BN_CTX *ctx); /* r = (a * b) mod p */int	BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,	BN_CTX *ctx); /* r = (a * a) mod p */int	BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *b, const BIGNUM *p,	BN_CTX *ctx); /* r = (1 / b) mod p */int	BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,	const BIGNUM *p, BN_CTX *ctx); /* r = (a / b) mod p */int	BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,	const BIGNUM *p, BN_CTX *ctx); /* r = (a ^ b) mod p */int	BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,	BN_CTX *ctx); /* r = sqrt(a) mod p */int	BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,	BN_CTX *ctx); /* r^2 + r = a mod p */#define BN_GF2m_cmp(a, b) BN_ucmp((a), (b))/* Some functions allow for representation of the irreducible polynomials * as an unsigned int[], say p.  The irreducible f(t) is then of the form: *     t^p[0] + t^p[1] + ... + t^p[k] * where m = p[0] > p[1] > ... > p[k] = 0. */int	BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const unsigned int p[]);	/* r = a mod p */int	BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,	const unsigned int p[], BN_CTX *ctx); /* r = (a * b) mod p */int	BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const unsigned int p[],	BN_CTX *ctx); /* r = (a * a) mod p */int	BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const unsigned int p[],	BN_CTX *ctx); /* r = (1 / b) mod p */int	BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,	const unsigned int p[], BN_CTX *ctx); /* r = (a / b) mod p */int	BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,	const unsigned int p[], BN_CTX *ctx); /* r = (a ^ b) mod p */int	BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a,	const unsigned int p[], BN_CTX *ctx); /* r = sqrt(a) mod p */int	BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a,	const unsigned int p[], BN_CTX *ctx); /* r^2 + r = a mod p */int	BN_GF2m_poly2arr(const BIGNUM *a, unsigned int p[], int max);int	BN_GF2m_arr2poly(const unsigned int p[], BIGNUM *a);/* faster mod functions for the 'NIST primes'  * 0 <= a < p^2 */int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);const BIGNUM *BN_get0_nist_prime_192(void);const BIGNUM *BN_get0_nist_prime_224(void);const BIGNUM *BN_get0_nist_prime_256(void);const BIGNUM *BN_get0_nist_prime_384(void);const BIGNUM *BN_get0_nist_prime_521(void);/* library internal functions */#define bn_expand(a,bits) ((((((bits+BN_BITS2-1))/BN_BITS2)) <= (a)->dmax)?\	(a):bn_expand2((a),(bits+BN_BITS2-1)/BN_BITS2))#define bn_wexpand(a,words) (((words) <= (a)->dmax)?(a):bn_expand2((a),(words)))BIGNUM *bn_expand2(BIGNUM *a, int words);#ifndef OPENSSL_NO_DEPRECATEDBIGNUM *bn_dup_expand(const BIGNUM *a, int words); /* unused */#endif/* Bignum consistency macros * There is one "API" macro, bn_fix_top(), for stripping leading zeroes from * bignum data after direct manipulations on the data. There is also an * "internal" macro, bn_check_top(), for verifying that there are no leading * zeroes. Unfortunately, some auditing is required due to the fact that * bn_fix_top() has become an overabused duct-tape because bignum data is * occasionally passed around in an inconsistent state. So the following * changes have been made to sort this out; * - bn_fix_top()s implementation has been moved to bn_correct_top() * - if BN_DEBUG isn't defined, bn_fix_top() maps to bn_correct_top(), and *   bn_check_top() is as before. * - if BN_DEBUG *is* defined; *   - bn_check_top() tries to pollute unused words even if the bignum 'top' is *     consistent. (ed: only if BN_DEBUG_RAND is defined) *   - bn_fix_top() maps to bn_check_top() rather than "fixing" anything. * The idea is to have debug builds flag up inconsistent bignums when they * occur. If that occurs in a bn_fix_top(), we examine the code in question; if * the use of bn_fix_top() was appropriate (ie. it follows directly after code * that manipulates the bignum) it is converted to bn_correct_top(), and if it * was not appropriate, we convert it permanently to bn_check_top() and track * down the cause of the bug. Eventually, no internal code should be using the * bn_fix_top() macro. External applications and libraries should try this with * their own code too, both in terms of building against the openssl headers * with BN_DEBUG defined *and* linking with a version of OpenSSL built with it * defined. This not only improves external code, it provides more test * coverage for openssl's own code. */#ifdef BN_DEBUG/* We only need assert() when debugging */#include <assert.h>#ifdef BN_DEBUG_RAND/* To avoid "make update" cvs wars due to BN_DEBUG, use some tricks */#ifndef RAND_pseudo_bytesint RAND_pseudo_bytes(unsigned char *buf,int num);#define BN_DEBUG_TRIX#endif#define bn_pollute(a) \	do { \		const BIGNUM *_bnum1 = (a); \		if(_bnum1->top < _bnum1->dmax) { \			unsigned char _tmp_char; \			/* We cast away const without the compiler knowing, any \			 * *genuinely* constant variables that aren't mutable \			 * wouldn't be constructed with top!=dmax. */ \			BN_ULONG *_not_const; \			memcpy(&_not_const, &_bnum1->d, sizeof(BN_ULONG*)); \			RAND_pseudo_bytes(&_tmp_char, 1); \			memset((unsigned char *)(_not_const + _bnum1->top), _tmp_char, \				(_bnum1->dmax - _bnum1->top) * sizeof(BN_ULONG)); \		} \	} while(0)#ifdef BN_DEBUG_TRIX#undef RAND_pseudo_bytes#endif#else#define bn_pollute(a)#endif#define bn_check_top(a) \	do { \		const BIGNUM *_bnum2 = (a); \		if (_bnum2 != NULL) { \			assert((_bnum2->top == 0) || \				(_bnum2->d[_bnum2->top - 1] != 0)); \			bn_pollute(_bnum2); \		} \	} while(0)#define bn_fix_top(a)		bn_check_top(a)#else /* !BN_DEBUG */#define bn_pollute(a)#define bn_check_top(a)#define bn_fix_top(a)		bn_correct_top(a)#endif#define bn_correct_top(a) \        { \        BN_ULONG *ftl; \	if ((a)->top > 0) \		{ \		for (ftl= &((a)->d[(a)->top-1]); (a)->top > 0; (a)->top--) \		if (*(ftl--)) break; \		} \	bn_pollute(a); \	}BN_ULONG bn_mul_add_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w);BN_ULONG bn_mul_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w);void     bn_sqr_words(BN_ULONG *rp, const BN_ULONG *ap, int num);BN_ULONG bn_div_words(BN_ULONG h, BN_ULONG l, BN_ULONG d);BN_ULONG bn_add_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,int num);BN_ULONG bn_sub_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,int num);/* Primes from RFC 2409 */BIGNUM *get_rfc2409_prime_768(BIGNUM *bn);BIGNUM *get_rfc2409_prime_1024(BIGNUM *bn);/* Primes from RFC 3526 */BIGNUM *get_rfc3526_prime_1536(BIGNUM *bn);BIGNUM *get_rfc3526_prime_2048(BIGNUM *bn);BIGNUM *get_rfc3526_prime_3072(BIGNUM *bn);BIGNUM *get_rfc3526_prime_4096(BIGNUM *bn);BIGNUM *get_rfc3526_prime_6144(BIGNUM *bn);BIGNUM *get_rfc3526_prime_8192(BIGNUM *bn);int BN_bntest_rand(BIGNUM *rnd, int bits, int top,int bottom);/* BEGIN ERROR CODES *//* The following lines are auto generated by the script mkerr.pl. Any changes * made after this point may be overwritten when the script is next run. */void ERR_load_BN_strings(void);/* Error codes for the BN functions. *//* Function codes. */#define BN_F_BNRAND					 127#define BN_F_BN_BLINDING_CONVERT_EX			 100#define BN_F_BN_BLINDING_CREATE_PARAM			 128#define BN_F_BN_BLINDING_INVERT_EX			 101#define BN_F_BN_BLINDING_NEW				 102#define BN_F_BN_BLINDING_UPDATE				 103#define BN_F_BN_BN2DEC					 104#define BN_F_BN_BN2HEX					 105#define BN_F_BN_CTX_GET					 116#define BN_F_BN_CTX_NEW					 106#define BN_F_BN_CTX_START				 129#define BN_F_BN_DIV					 107#define BN_F_BN_DIV_RECP				 130#define BN_F_BN_EXP					 123#define BN_F_BN_EXPAND2					 108#define BN_F_BN_EXPAND_INTERNAL				 120#define BN_F_BN_GF2M_MOD				 131#define BN_F_BN_GF2M_MOD_EXP				 132#define BN_F_BN_GF2M_MOD_MUL				 133#define BN_F_BN_GF2M_MOD_SOLVE_QUAD			 134#define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR			 135#define BN_F_BN_GF2M_MOD_SQR				 136#define BN_F_BN_GF2M_MOD_SQRT				 137#define BN_F_BN_MOD_EXP2_MONT				 118#define BN_F_BN_MOD_EXP_MONT				 109#define BN_F_BN_MOD_EXP_MONT_CONSTTIME			 124#define BN_F_BN_MOD_EXP_MONT_WORD			 117#define BN_F_BN_MOD_EXP_RECP				 125#define BN_F_BN_MOD_EXP_SIMPLE				 126#define BN_F_BN_MOD_INVERSE				 110#define BN_F_BN_MOD_LSHIFT_QUICK			 119#define BN_F_BN_MOD_MUL_RECIPROCAL			 111#define BN_F_BN_MOD_SQRT				 121#define BN_F_BN_MPI2BN					 112#define BN_F_BN_NEW					 113#define BN_F_BN_RAND					 114#define BN_F_BN_RAND_RANGE				 122#define BN_F_BN_USUB					 115/* Reason codes. */#define BN_R_ARG2_LT_ARG3				 100#define BN_R_BAD_RECIPROCAL				 101#define BN_R_BIGNUM_TOO_LONG				 114#define BN_R_CALLED_WITH_EVEN_MODULUS			 102#define BN_R_DIV_BY_ZERO				 103#define BN_R_ENCODING_ERROR				 104#define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA		 105#define BN_R_INPUT_NOT_REDUCED				 110#define BN_R_INVALID_LENGTH				 106#define BN_R_INVALID_RANGE				 115#define BN_R_NOT_A_SQUARE				 111#define BN_R_NOT_INITIALIZED				 107#define BN_R_NO_INVERSE					 108#define BN_R_NO_SOLUTION				 116#define BN_R_P_IS_NOT_PRIME				 112#define BN_R_TOO_MANY_ITERATIONS			 113#define BN_R_TOO_MANY_TEMPORARY_VARIABLES		 109#ifdef  __cplusplus}#endif#endif

⌨️ 快捷键说明

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