Cryptography 如何使用usb令牌实现openssl引擎

Cryptography 如何使用usb令牌实现openssl引擎,cryptography,Cryptography,我是一名加密新手,现在想实现openssl引擎, 我在 但是,一旦我实现了eccx08_eckey_meth.c 我在考试中遇到了错误 EVP_PKEY_METHOD eccx08_pkey_meth = { 0, // pkey_id 0, // flags eccx08_pkey_ec_init, // init - pkey_ec_in

我是一名加密新手,现在想实现openssl引擎, 我在

但是,一旦我实现了eccx08_eckey_meth.c 我在考试中遇到了错误

    EVP_PKEY_METHOD eccx08_pkey_meth = {

    0,                           // pkey_id
    0,                           // flags
    eccx08_pkey_ec_init,         // init - pkey_ec_init in ec_pmeth.c
    NULL,                        // copy - pkey_ec_copy in ec_pmeth.c
    NULL,                        // cleanup - pkey_ec_cleanup in ec_pmeth.c
    NULL,                        // paramgen_init
    NULL,                        // paramgen - pkey_ec_paramgen in ec_pmeth.c
    eccx08_pkey_ec_keygen_init,  // keygen_init - pkey_ec_keygen_init in ec_pmeth.c
    eccx08_pkey_ec_keygen,       // keygen - pkey_ec_keygen in ec_pmeth.c
    NULL,                        // sign_init
    NULL,                        // sign - pkey_ec_sign in ec_pmeth.c
    NULL,                        // verify_init
    NULL,                        // verify - pkey_ec_verify in ec_pmeth.c
    NULL,                        // verify_recover_init
    NULL,                        // verify_recover
    NULL,                        // signctx_init
    NULL,                        // signctx
    NULL,                        // verifyctx_init
    NULL,                        // verifyctx
    NULL,                        // encrypt_init
    NULL,                        // encrypt
    NULL,                        // decrypt_init
    NULL,                        // decrypt
    NULL,                        // derive_init
    #ifndef OPENSSL_NO_ECDH
    NULL,                        // derive - pkey_ec_kdf_derive in ec_pmeth.c
   #else
   NULL,                        // derive - pkey_ec_kdf_derive in ec_pmeth.c
   #endif
   NULL,                        // ctrl - pkey_ec_ctrl in ec_pmeth.c
   NULL                         // ctrl_str - pkey_ec_ctrl_str in ec_pmeth.c
   };

   static int eccx08_pkey_meth_nids[] = { NID_id_ATECCX08, 0
   };
我无法使用上述结构 我发现问题就在这里:

    int eccx08_pkey_meth_f(ENGINE *e, EVP_PKEY_METHOD **pkey_meth,
                   const int **nids, int nid)
   {
       eccx08_debug("eccx08_pkey_meth_f()\n");
       if (!pkey_meth) {
           //see gost_eng.c:210 for an example
           *nids = 0;
           return 0;
       }              

       *pkey_meth = (EVP_PKEY_METHOD *)&eccx08_pkey_meth;
       return 1;
   }
*pkey_方法=(EVP_pkey_方法*)和eccx08_pkey_方法;从来没有人打过电话? 峡谷能帮忙吗? 谢谢

试试:

if (!pkey_meth) {
  *nids = eccx08_pkey_meth_nids;
  return 1; /* return the number of nids your engine supports */
}