gpt4 book ai didi

c - 用IFDEF确定OpenSSL版本

转载 作者:行者123 更新时间:2023-12-05 01:10:39 31 4
gpt4 key购买 nike

我编写的代码在某些情况下可能会将 X509_STORE 加载到 SSL_CTX 中,由于我不知道它是否会发生,所以我在结束时释放了商店程序。

我在将存储加载到上下文后调用 X509_STORE_up_ref 以避免引用计数错误,因为 SSL_CTX_free 也会释放存储以防它被加载到给定上下文中。

但是,我注意到 X509_STORE_up_ref 是一个较新的命令,我的程序无法在旧系统上编译。在这种情况下,我想用 OpenSSL 版本的 #ifdef 包装对该函数的调用。

  1. 使用 #ifdef 检查 OpenSSL 版本的正确方法是什么?
  2. 我的位置是否正确,还是我使用商店的方式有误?

最佳答案

您可以通过查看 OPENSSL_VERSION_NUMBER 宏来检查 OpenSSL 版本号。 opensslv.h 文件包含以下关于其值的注释:

/*-
* Numeric release version identifier:
* MNNFFPPS: major minor fix patch status
* The status nibble has one of the values 0 for development, 1 to e for betas
* 1 to 14, and f for release. The patch level is exactly that.
* For example:
* 0.9.3-dev 0x00903000
* 0.9.3-beta1 0x00903001
* 0.9.3-beta2-dev 0x00903002
* 0.9.3-beta2 0x00903002 (same as ...beta2-dev)
* 0.9.3 0x0090300f
* 0.9.3a 0x0090301f
* 0.9.4 0x0090400f
* 1.2.3z 0x102031af

因此,例如,如果您有某个需要 OpenSSL 1.1.0 或更高版本的功能,您可以这样做:

#if OPENSSL_VERSION_NUMBER >= 0x10100000L
// code for version 1.1.0 or greater
#else
// core for 1.0.x or lower
#endif

关于c - 用IFDEF确定OpenSSL版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63942436/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com