首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenSSL验证证书回调--是否可以使用lambda或类函数进行回调?

OpenSSL验证证书回调--是否可以使用lambda或类函数进行回调?
EN

Stack Overflow用户
提问于 2020-03-27 13:30:15
回答 1查看 300关注 0票数 0

是否可以将以下内容传递给该函数:

代码语言:javascript
复制
 void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, int (*verify_callback)(int, X509_STORE_CTX *));

带有&还是这个参数的lambda函数?还是必须使用全局变量?

我试过了

代码语言:javascript
复制
auto lambda = [this](int preverify_ok, X509_STORE_CTX* x509_ctx) {
    return 0;
};

但正如您所知,它可能无法工作,因为没有用户定义的转换操作符可以执行此转换,或者运算符不能称为。没有这个参数,它工作得很好。

我想避免使用全局变量。我现在使用的是C++17。我知道在旧的C++中不可能传递类函数,但也许时间已经改变了?

EN

回答 1

Stack Overflow用户

发布于 2020-03-27 16:30:21

不,您只能将不捕获的lambda函数转换为函数指针。

相反,使用SSL_CTX_set_ex_data and SSL_CTX_get_ex_datathis指针存储在SSL_CTX对象中。您可以在程序开始时调用一次idx参数来获得SSL_CTX_get_ex_new_index参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60887038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档