Dr. Pauli, Goodmorning. Thank you for replying. I found the documentation a bit difficult for me to understand. I was wondering if you can direct me to a sample skeleton code for creating a custom RSA engine.
Regards, Shariful Alam On Sun, Apr 11, 2021 at 6:00 PM Dr Paul Dale <pa...@openssl.org> wrote: > You shouldn't be accessing the internal of a private structure. That > structure was made private for a reason and duplicating it in your engine > will break when we change the structure's contents. > > Your engine should be using the EVP_PKEY_meth_set_* function to do what > you want (for 1.1.1). For 3.0, you should be writing a provider instead. > > > Pauli > > On 12/4/21 5:04 am, Shariful Alam wrote: > > Hello, > Hope you guys are doing well. I'm trying to develop an RSA engine. My > engine was somewhat working until I try to integrate my engine with an > apache httpd server. After installing the httpd from the source code, it > turns out that, I can't compile my engine anymore. I get the > following error while I try to compile (it was compiling before and I did > not make any changes to my engine code). > > ============================== > > *$gcc -fPIC -c r_engine.c* > > > > > > > *r_engine.c:29:8: error: redefinition of ‘struct rsa_meth_st’ struct > rsa_meth_st { ^ In file included from > /usr/include/openssl/crypto.h:131:0, from r_engine.c:7: > /usr/include/openssl/ossl_typ.h:147:16: note: originally defined here > typedef struct rsa_meth_st RSA_METHOD;* > > ============================= > > and my *struct rsa_meth_st *looks like the following, > > > ================================================================================ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > *struct rsa_meth_st { const char *name; int (*rsa_pub_enc) (int > flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding); > int (*rsa_pub_dec) (int flen, const unsigned char *from, unsigned char > *to, RSA *rsa, int padding); int (*rsa_priv_enc) (int flen, const > unsigned char *from, unsigned char *to, RSA *rsa, int padding); int > (*rsa_priv_dec) (int flen, const unsigned char *from, unsigned char *to, > RSA *rsa, int padding); int (*rsa_mod_exp) (BIGNUM *r0, const BIGNUM > *I, RSA *rsa, BN_CTX *ctx); int (*bn_mod_exp) (BIGNUM *r, const BIGNUM > *a, const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); > int (*init) (RSA *rsa); int (*finish) (RSA *rsa); int flags; > char *app_data; int (*rsa_sign) (int type, const unsigned char *m, > unsigned int m_length, unsigned char *sigret, unsigned int *siglen, const > RSA *rsa); int (*rsa_verify) (int dtype, const unsigned char *m, > unsigned int m_length, const unsigned char *sigbuf, unsigned int siglen, > const RSA *rsa); int (*rsa_keygen) (RSA *rsa, int bits, BIGNUM *e, > BN_GENCB *cb); }; * > > > ================================================================================= > > My sample skeleton code is here https://pastebin.com/uNXYknEA > > Can anyone please tell me what I'm I doing wrong? > > Regards, > Shariful Alam > > >