!ENGINE_set_BN_mod_exp(e, hwcrhk_mod_exp) ||
static int bind_helper(ENGINE *e)	{#ifndef OPENSSL_NO_RSA	const RSA_METHOD *meth1;#endif#ifndef OPENSSL_NO_DH	const DH_METHOD *meth2;#endif	if(!ENGINE_set_id(e, engine_hwcrhk_id) ||			!ENGINE_set_name(e, engine_hwcrhk_name) ||#ifndef OPENSSL_NO_RSA			!ENGINE_set_RSA(e, &hwcrhk_rsa) ||#endif#ifndef OPENSSL_NO_DH			!ENGINE_set_DH(e, &hwcrhk_dh) ||#endif			!ENGINE_set_RAND(e, &hwcrhk_rand) ||			!ENGINE_set_BN_mod_exp(e, hwcrhk_mod_exp) ||			!ENGINE_set_destroy_function(e, hwcrhk_destroy) ||			!ENGINE_set_init_function(e, hwcrhk_init) ||			!ENGINE_set_finish_function(e, hwcrhk_finish) ||			!ENGINE_set_ctrl_function(e, hwcrhk_ctrl) ||			!ENGINE_set_load_privkey_function(e, hwcrhk_load_privkey) ||			!ENGINE_set_load_pubkey_function(e, hwcrhk_load_pubkey) ||			!ENGINE_set_cmd_defns(e, hwcrhk_cmd_defns))		return 0;#ifndef OPENSSL_NO_RSA	/* We know that the "PKCS1_SSLeay()" functions hook properly	 * to the cswift-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();	hwcrhk_rsa.rsa_pub_enc = meth1->rsa_pub_enc;	hwcrhk_rsa.rsa_pub_dec = meth1->rsa_pub_dec;	hwcrhk_rsa.rsa_priv_enc = meth1->rsa_priv_enc;	hwcrhk_rsa.rsa_priv_dec = meth1->rsa_priv_dec;#endif#ifndef OPENSSL_NO_DH	/* Much the same for Diffie-Hellman */	meth2 = DH_OpenSSL();	hwcrhk_dh.generate_key = meth2->generate_key;	hwcrhk_dh.compute_key = meth2->compute_key;#endif	/* Ensure the hwcrhk error handling is set up */	hwcrhk_load_error_strings();	return 1;	}