参考网上的例子,实现Engine的方法,但无法测试绑定的算法。
设置了Engine的id和name,并进行了绑定
#include <openssl/engine.h>
static const char *engine_sm2_id = "sm2_engine";
static const char *engine_sm2_name = "Gmssl sm2 engine";
int gmssl_init(ENGINE *e) {
printf("sm2 Engine Initializatzion!\n");
return 786;
}
int bind_gmssl_helper(ENGINE * e, const char *id)
{
printf("begin bind ... \n");
if (!ENGINE_set_id(e, engine_sm2_id) ||
!ENGINE_set_name(e, engine_sm2_name) ||
!ENGINE_set_init_function(e,gmssl_init)
)
return 0;
return 1;
}
IMPLEMENT_DYNAMIC_CHECK_FN();
IMPLEMENT_DYNAMIC_BIND_FN(bind_gmssl_helper);在main函数中,通过ENGINE_by_id不能创建test_engine
ENGINE *test_engine = ENGINE_by_id("sm2_engine");
if(test_engine == NULL)
{
printf("Could not load sm2 engine, why? err: %lx \n", ERR_get_error());
return;
}运行结果
Could not load sm2 engine, why? err: 25066067
在尝试实现OpenSSL ENGINE并绑定自定义的SM2算法时,遇到无法加载和测试的问题。代码中设置了ENGINE的id和name,并实现了初始化函数,但在ENGINE_by_id()调用时返回错误。错误代码为25066067,可能的原因是动态加载机制未正确配置或者ENGINE的注册过程有误。解决方法包括检查动态库链接、确认ENGINE的注册函数是否被调用以及确保所有依赖项已正确设置。
2715

被折叠的 条评论
为什么被折叠?



