!ENGINE_set_BN_mod_exp(e, nuron_mod_exp) ||
static int bind_helper(ENGINE *e)	{#ifndef OPENSSL_NO_RSA	const RSA_METHOD *meth1;#endif#ifndef OPENSSL_NO_DSA	const DSA_METHOD *meth2;#endif#ifndef OPENSSL_NO_DH	const DH_METHOD *meth3;#endif	if(!ENGINE_set_id(e, engine_nuron_id) ||			!ENGINE_set_name(e, engine_nuron_name) ||#ifndef OPENSSL_NO_RSA			!ENGINE_set_RSA(e, &nuron_rsa) ||#endif#ifndef OPENSSL_NO_DSA			!ENGINE_set_DSA(e, &nuron_dsa) ||#endif#ifndef OPENSSL_NO_DH			!ENGINE_set_DH(e, &nuron_dh) ||#endif			!ENGINE_set_BN_mod_exp(e, nuron_mod_exp) ||			!ENGINE_set_destroy_function(e, nuron_destroy) ||			!ENGINE_set_init_function(e, nuron_init) ||			!ENGINE_set_finish_function(e, nuron_finish) ||			!ENGINE_set_ctrl_function(e, nuron_ctrl) ||			!ENGINE_set_cmd_defns(e, nuron_cmd_defns))		return 0;#ifndef OPENSSL_NO_RSA	/* We know that the "PKCS1_SSLeay()" functions hook properly	 * to the nuron-specific mod_exp and mod_exp_crt so we use	 * those functions. NB: We don't use ENGINE_openssl() or	 * anything "more generic" because something like the RSAref	 * code may not hook properly, and if you own one of these	 * cards then you have the right to do RSA operations on it	 * anyway! */ 	meth1=RSA_PKCS1_SSLeay();	nuron_rsa.rsa_pub_enc=meth1->rsa_pub_enc;	nuron_rsa.rsa_pub_dec=meth1->rsa_pub_dec;	nuron_rsa.rsa_priv_enc=meth1->rsa_priv_enc;	nuron_rsa.rsa_priv_dec=meth1->rsa_priv_dec;#endif#ifndef OPENSSL_NO_DSA	/* Use the DSA_OpenSSL() method and just hook the mod_exp-ish	 * bits. */	meth2=DSA_OpenSSL();	nuron_dsa.dsa_do_sign=meth2->dsa_do_sign;	nuron_dsa.dsa_sign_setup=meth2->dsa_sign_setup;	nuron_dsa.dsa_do_verify=meth2->dsa_do_verify;#endif#ifndef OPENSSL_NO_DH	/* Much the same for Diffie-Hellman */	meth3=DH_OpenSSL();	nuron_dh.generate_key=meth3->generate_key;	nuron_dh.compute_key=meth3->compute_key;#endif	/* Ensure the nuron error handling is set up */	nuron_load_error_strings();	return 1;	}