我正在尝试通过以下方式使用软件实现来测试我的openssl引擎代码。
步骤1:加载我的openssl引擎。
步骤2:使用ECDSA和openssl-Engine进行签名(api使用ECDSA_sign)。
步骤3:卸载openssl引擎。
步骤4:验证使用openssl的软件实现(使用ECDSA_verify的api)。
我发现一旦引擎被加载,我就不能卸载openssl引擎。
我使用了ENIGINE_finish和ENGINE_free应用程序接口,它们去掉了结构和函数引用。仍然不会删除引擎反射。
如何在Openssl引擎和openssl软件实现之间进行动态切换?
发布于 2020-10-23 05:52:35
假设您在第1步中执行类似的操作,为了简洁起见,我省略了所有返回代码检查:
ENGINE *e = ENGINE_by_id("dynamic");
ENGINE_ctrl_cmd_string(e, "SO_PATH", "my-engine", 0);
ENGINE_ctrl_cmd_string(e, "LOAD", NULL, 0);
ENGINE_set_default_EC(e)然后,在完成您的ECDSA签名计算之后,我相信(实际上没有测试过它)应该可以使用相同的e值调用它,
ENGINE_unregister_EC(e);切换回OpenSSL附带的默认EC实现,并继续进行签名验证。
请注意,如果您的引擎也实现了该摘要,并且您也想对其进行测试,则您可能必须对您在签名计算过程中使用的摘要执行类似的操作。
https://stackoverflow.com/questions/64462706
复制相似问题