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

📄 hw_cluster_labs.c

📁 开源的ssl算法openssl,版本0.9.8H
💻 C
📖 第 1 页 / 共 2 页
字号:
				/* cluster labs engine init */	if(p_cl_engine_init()== 0){		CLerr(CL_F_CLUSTER_LABS_INIT,CL_R_INIT_FAILED);				goto err;	}	return(1);err:		/* reset all pointers */	if(cluster_labs_dso)		DSO_free(cluster_labs_dso);	cluster_labs_dso		= NULL;	p_cl_engine_init		= NULL;		p_cl_mod_exp			= NULL;	p_cl_mod_exp_crt		= NULL;	p_cl_rsa_mod_exp		= NULL;	p_cl_rsa_priv_enc		= NULL;	p_cl_rsa_priv_dec		= NULL;		p_cl_rsa_pub_enc		= NULL;	p_cl_rsa_pub_dec		= NULL;		p_cl_rand_bytes			= NULL;		p_cl_dsa_sign			= NULL;	p_cl_dsa_verify			= NULL;			return(0);	}	static int cluster_labs_finish(ENGINE *e)	{	if(cluster_labs_dso == NULL)		{		CLerr(CL_F_CLUSTER_LABS_FINISH,CL_R_NOT_LOADED);		return 0;		}	if(!DSO_free(cluster_labs_dso))		{		CLerr(CL_F_CLUSTER_LABS_FINISH,CL_R_DSO_FAILURE);		return 0;		}			cluster_labs_dso 		= NULL;	p_cl_engine_init		= NULL;			p_cl_mod_exp			= NULL;	p_cl_rsa_mod_exp		= NULL;		p_cl_mod_exp_crt		= NULL;		p_cl_rsa_priv_enc		= NULL;		p_cl_rsa_priv_dec		= NULL;		p_cl_rsa_pub_enc		= NULL;	p_cl_rsa_pub_dec		= NULL;		p_cl_rand_bytes			= NULL;			p_cl_dsa_sign			= NULL;	p_cl_dsa_verify			= NULL;			return(1);			}	static int cluster_labs_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)())	{	int initialised = ((cluster_labs_dso == NULL) ? 0 : 1);	switch(cmd)		{	case CLUSTER_LABS_CMD_SO_PATH:		if(p == NULL)			{			CLerr(CL_F_CLUSTER_LABS_CTRL,ERR_R_PASSED_NULL_PARAMETER);			return 0;			}		if(initialised)			{			CLerr(CL_F_CLUSTER_LABS_CTRL,CL_R_ALREADY_LOADED);			return 0;			}		CLUSTER_LABS_LIB_NAME = (const char *)p;		return 1;	default:		break;		}	CLerr(CL_F_CLUSTER_LABS_CTRL,CL_R_COMMAND_NOT_IMPLEMENTED);	return 0;	}	static int cluster_labs_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,		const BIGNUM *m, BN_CTX *ctx)	{	if(cluster_labs_dso == NULL)		{		CLerr(CL_F_CLUSTER_LABS_MOD_EXP,CL_R_NOT_LOADED);		return 0;		}		if(p_cl_mod_exp == NULL)		{		CLerr(CL_F_CLUSTER_LABS_MOD_EXP,CL_R_FUNCTION_NOT_BINDED);		return 0;		}	return	p_cl_mod_exp(r, a, p, m, ctx);	}	static int cluster_labs_mod_exp_crt(BIGNUM *r, BIGNUM *a, const BIGNUM *p,		const BIGNUM *q, const BIGNUM *dmp1, const BIGNUM *dmq1,		const BIGNUM *iqmp, BN_CTX *ctx)	{	if(cluster_labs_dso == NULL)		{		CLerr(CL_F_CLUSTER_LABS_MOD_EXP_CRT,CL_R_NOT_LOADED);				return 0;		}	if(p_cl_mod_exp_crt == NULL)		{		CLerr(CL_F_CLUSTER_LABS_MOD_EXP_CRT,CL_R_FUNCTION_NOT_BINDED);				return 0;		}		return	p_cl_mod_exp_crt(r, a, p, q,dmp1, dmq1, iqmp, ctx);		}	static int cluster_labs_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa)	{	if(cluster_labs_dso == NULL)		{		CLerr(CL_F_CLUSTER_LABS_RSA_MOD_EXP,CL_R_NOT_LOADED);				return 0;		}	if(p_cl_rsa_mod_exp == NULL)		{		CLerr(CL_F_CLUSTER_LABS_RSA_MOD_EXP,CL_R_FUNCTION_NOT_BINDED);						return 0;		}	return p_cl_rsa_mod_exp(r0, I, rsa);	}	static DSA_SIG *cluster_labs_dsa_sign(const unsigned char *dgst, int dlen, DSA *dsa)	{	if(cluster_labs_dso == NULL)		{		CLerr(CL_F_CLUSTER_LABS_DSA_SIGN,CL_R_NOT_LOADED);				return 0;		}	if(p_cl_dsa_sign == NULL)		{		CLerr(CL_F_CLUSTER_LABS_DSA_SIGN,CL_R_FUNCTION_NOT_BINDED);						return 0;		}	return p_cl_dsa_sign(dgst, dlen, dsa);		}	static int cluster_labs_dsa_verify(const unsigned char *dgst, int dgst_len,				DSA_SIG *sig, DSA *dsa)	{	if(cluster_labs_dso == NULL)		{		CLerr(CL_F_CLUSTER_LABS_DSA_VERIFY,CL_R_NOT_LOADED);				return 0;		}		if(p_cl_dsa_verify == NULL)		{		CLerr(CL_F_CLUSTER_LABS_DSA_VERIFY,CL_R_FUNCTION_NOT_BINDED);						return 0;		}	return p_cl_dsa_verify(dgst, dgst_len, sig, dsa);		}			static int cluster_labs_dsa_mod_exp(DSA *dsa, BIGNUM *rr, BIGNUM *a1,		BIGNUM *p1, BIGNUM *a2, BIGNUM *p2, BIGNUM *m,		BN_CTX *ctx, BN_MONT_CTX *in_mont)	{	BIGNUM t;	int status = 0;			BN_init(&t);	/* let rr = a1 ^ p1 mod m */	if (!cluster_labs_mod_exp(rr,a1,p1,m,ctx)) goto end;	/* let t = a2 ^ p2 mod m */	if (!cluster_labs_mod_exp(&t,a2,p2,m,ctx)) goto end;	/* let rr = rr * t mod m */	if (!BN_mod_mul(rr,rr,&t,m,ctx)) goto end;	status = 1;end:	BN_free(&t);		return(1);	}static int cluster_labs_mod_exp_dsa(DSA *dsa, BIGNUM *r, BIGNUM *a,		const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx,		BN_MONT_CTX *m_ctx)	{	return 	cluster_labs_mod_exp(r, a, p, m, ctx);	}	/* This function is aliased to mod_exp (with the mont stuff dropped). */static int cluster_labs_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,		const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx)	{	return	cluster_labs_mod_exp(r, a, p, m, ctx);	}	/* This function is aliased to mod_exp (with the dh and mont dropped). */static int cluster_labs_mod_exp_dh(const DH *dh, BIGNUM *r, const BIGNUM *a, const BIGNUM *p,		const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx)	{	return 	cluster_labs_mod_exp(r, a, p, m, ctx);	}static int cluster_labs_rsa_pub_enc(int flen, const unsigned char *from,	     unsigned char *to, RSA *rsa, int padding)	{	if(cluster_labs_dso == NULL)		{		CLerr(CL_F_CLUSTER_LABS_RSA_PUB_ENC,CL_R_NOT_LOADED);				return 0;		}	if(p_cl_rsa_priv_enc == NULL)		{		CLerr(CL_F_CLUSTER_LABS_RSA_PUB_ENC,CL_R_FUNCTION_NOT_BINDED);						return 0;		}			return 	p_cl_rsa_pub_enc(flen, from, to, rsa, padding);		}  	     static int cluster_labs_rsa_pub_dec(int flen, const unsigned char *from,	     unsigned char *to, RSA *rsa, int padding)	{	if(cluster_labs_dso == NULL)		{		CLerr(CL_F_CLUSTER_LABS_RSA_PUB_DEC,CL_R_NOT_LOADED);				return 0;		}	if(p_cl_rsa_priv_enc == NULL)		{		CLerr(CL_F_CLUSTER_LABS_RSA_PUB_DEC,CL_R_FUNCTION_NOT_BINDED);						return 0;		}			return 	p_cl_rsa_pub_dec(flen, from, to, rsa, padding);		}  static int cluster_labs_rsa_priv_enc(int flen, const unsigned char *from, 		unsigned char *to, RSA *rsa, int padding)	{	if(cluster_labs_dso == NULL)		{		CLerr(CL_F_CLUSTER_LABS_RSA_PRIV_ENC,CL_R_NOT_LOADED);				return 0;		}	if(p_cl_rsa_priv_enc == NULL)		{		CLerr(CL_F_CLUSTER_LABS_RSA_PRIV_ENC,CL_R_FUNCTION_NOT_BINDED);						return 0;		}			return 	p_cl_rsa_priv_enc(flen, from, to, rsa, padding);		}  static int cluster_labs_rsa_priv_dec(int flen, const unsigned char *from, 		unsigned char *to, RSA *rsa, int padding)	{		if(cluster_labs_dso == NULL)		{		CLerr(CL_F_CLUSTER_LABS_RSA_PRIV_DEC,CL_R_NOT_LOADED);				return 0;		}	if(p_cl_rsa_priv_dec == NULL)		{		CLerr(CL_F_CLUSTER_LABS_RSA_PRIV_DEC,CL_R_FUNCTION_NOT_BINDED);						return 0;		}	return 	p_cl_rsa_priv_dec(flen, from, to, rsa, padding);			}  /************************************************************************************* Symmetric algorithms************************************************************************************//* this will be come soon! *//************************************************************************************* Random generator************************************************************************************/static int cluster_labs_rand_bytes(unsigned char *buf, int num){	if(cluster_labs_dso == NULL)		{		CLerr(CL_F_CLUSTER_LABS_RAND_BYTES,CL_R_NOT_LOADED);				return 0;		}	if(p_cl_mod_exp_crt == NULL)		{		CLerr(CL_F_CLUSTER_LABS_RAND_BYTES,CL_R_FUNCTION_NOT_BINDED);						return 0;		}	return 	p_cl_rand_bytes(buf, num);}/* This stuff is needed if this ENGINE is being compiled into a self-contained * shared-library. */#ifdef ENGINE_DYNAMIC_SUPPORTstatic int bind_fn(ENGINE *e, const char *id)	{	fprintf(stderr, "bind_fn CLUSTER_LABS\n");	if(id && (strcmp(id, engine_cluster_labs_id) != 0)) {		fprintf(stderr, "bind_fn return(0) first\n");		return 0;		}	if(!bind_helper(e)) {		fprintf(stderr, "bind_fn return(1) first\n");		return 0;		}	fprintf(stderr, "bind_fn return(1)\n");			return 1;	}IMPLEMENT_DYNAMIC_CHECK_FN()IMPLEMENT_DYNAMIC_BIND_FN(bind_fn)#endif /* ENGINE_DYNAMIC_SUPPORT */						#endif /* !NO_HW_CLUSTER_LABS */#endif /* !NO_HW */

⌨️ 快捷键说明

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