【问题标题】:How to implement an openssl engine with usb token如何使用 USB 令牌实现 openssl 引擎
【发布时间】:2017-03-08 14:13:40
【问题描述】:

我是加密新手,现在想实现 openssl 引擎, 我找到了参考 https://github.com/AtmelCSO/cryptoauth-openssl-engine

然而,一旦我实现了 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_meth = (EVP_PKEY_METHOD *)&eccx08_pkey_meth;从来没有叫过? 峡谷能帮忙吗? 谢谢

【问题讨论】:

    标签: cryptography


    【解决方案1】:

    尝试:

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

    【讨论】:

      猜你喜欢
      • 2021-02-04
      • 2014-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 2015-10-11
      相关资源
      最近更新 更多