Re: error: redefinition of ‘struct rsa_meth_st’

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



You can look at the dummy async engine which wraps the standard RSA functions inside an engine (as well as various other crypto primitives). You can see it here:

https://github.com/openssl/openssl/blob/OpenSSL_1_1_1-stable/engines/e_dasync.c

Matt

On 12/04/2021 17:32, Shariful Alam wrote:
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 <pauli@xxxxxxxxxxx <mailto:pauli@xxxxxxxxxxx>> 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
    <https://pastebin.com/uNXYknEA>

    Can anyone please tell me what I'm I doing wrong?

    Regards,
    Shariful Alam




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux