我是加密的新手,现在想要实现openssl引擎, 我找到了参考 https://github.com/AtmelCSO/cryptoauth-openssl-engine
HOwever,一旦我实现了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;从未被称为? canyone可以帮忙吗? 感谢
答案 0 :(得分:0)
尝试:
if (!pkey_meth) {
*nids = eccx08_pkey_meth_nids;
return 1; /* return the number of nids your engine supports */
}