守护进程因 openSSL 椭圆曲线不匹配而崩溃EC_POINT_is_on_curve

问题描述

我的现有代码存在守护程序崩溃问题,其中包括处理通过设备配置协议 (DPP) 登录的身份验证请求。 Initiator 可以成功发送身份验证请求,但响应者守护进程在处理身份验证请求时崩溃。根据 gdb 核心转储文件,崩溃的原因是 openssl 函数:EC_POINT_is_on_curve。我的代码的签名是这样的:EC_POINT_is_on_curve(group,peer_proto_pub_key,bnctx),其中“group”是struct指针*EC_GROUP,本例中的*EC_POINT是“peer_proto_pub_key”,它是从EC_POINT_new API获取的。而结构指针 *BN_CTX 是 bnctx。所用曲线为P-256。

根据日志的确切错误是“do_page_fault:将 SIGSEGV 发送到 dpp 以获取来自……的无效读取访问”

到目前为止,我已经尝试了一些选项,包括但不限于检查指针,无论它们是不是 NULL 或悬空,正确初始化,正确释放与否。检查使用了正确的curve_nid。此外,将 openssl 从 1.0.1c 更新为 1.0.2o。

如果有人能帮忙就好了。

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)