1typedef int cl_engine_init(void);
2typedef int cl_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
3			const BIGNUM *m, BN_CTX *cgx);
4typedef int cl_mod_exp_crt(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
5		const BIGNUM *q, const BIGNUM *dmp1, const BIGNUM *dmq1,
6		const BIGNUM *iqmp, BN_CTX *ctx);
7typedef int cl_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa);
8typedef int cl_rsa_pub_enc(int flen, const unsigned char *from,
9	     unsigned char *to, RSA *rsa, int padding);
10typedef int cl_rsa_pub_dec(int flen, const unsigned char *from,
11	     unsigned char *to, RSA *rsa, int padding);
12typedef int cl_rsa_priv_enc(int flen, const unsigned char *from,
13		unsigned char *to, RSA *rsa, int padding);
14typedef int cl_rsa_priv_dec(int flen, const unsigned char *from,
15		unsigned char *to, RSA *rsa, int padding);
16typedef int cl_rand_bytes(unsigned char *buf, int num);
17typedef DSA_SIG *cl_dsa_sign(const unsigned char *dgst, int dlen, DSA *dsa);
18typedef int cl_dsa_verify(const unsigned char *dgst, int dgst_len,
19				DSA_SIG *sig, DSA *dsa);
20
21
22static const char *CLUSTER_LABS_LIB_NAME = "cluster_labs";
23static const char *CLUSTER_LABS_F1	 = "hw_engine_init";
24static const char *CLUSTER_LABS_F2	 = "hw_mod_exp";
25static const char *CLUSTER_LABS_F3	 = "hw_mod_exp_crt";
26static const char *CLUSTER_LABS_F4	 = "hw_rsa_mod_exp";
27static const char *CLUSTER_LABS_F5	 = "hw_rsa_priv_enc";
28static const char *CLUSTER_LABS_F6	 = "hw_rsa_priv_dec";
29static const char *CLUSTER_LABS_F7	 = "hw_rsa_pub_enc";
30static const char *CLUSTER_LABS_F8	 = "hw_rsa_pub_dec";
31static const char *CLUSTER_LABS_F20	 = "hw_rand_bytes";
32static const char *CLUSTER_LABS_F30	 = "hw_dsa_sign";
33static const char *CLUSTER_LABS_F31	 = "hw_dsa_verify";
34
35
36