gpt4 book ai didi

c - openssl 1.1 中是否弃用了 BIGNUM BN_ 函数?

转载 作者:太空宇宙 更新时间:2023-11-04 10:10:35 25 4
gpt4 key购买 nike

我正在编译一些在 Fedora 27(版本 1.1.0g-1)下使用 openssl 的“C”代码。我做了一些必要的更改(从我的代码的 1.0.2 版本开始),现在可以编译了。再次。

然后我尝试使用“OPENSSL_API_COMPAT=0x10100000L”选项进行编译,据我所知这会导致编译器不包含 openssl 1.1 版中弃用的 API。

现在,我的代码无法编译,而且似乎找不到 BN_bin2bn() 和 BN_free() 之类的定义。

查看 header ,/usr/include/openssl/dh.h 甚至根本不包含 bn.h 并设置了此选项。

那么,BN_xxxx 函数现在是否在 1.1 中全部弃用了?

https://wiki.openssl.org/index.php/OpenSSL_1.1.0_Changes 等地方查看 openssl 1.1 文档没有提到这种情况。

BN_bin2bn() 的描述在 https://www.openssl.org/docs/man1.1.0/crypto/BN_bin2bn.html据我所知,这并不表示已弃用。

我错过了什么吗?如果不推荐使用这些功能,我想知道我应该使用什么来代替(对于 dh.h 等)。

谢谢;

.....c:927:8: 错误:函数‘BN_bin2bn’的隐式声明;您指的是“OBJ_nid2sn”吗? [-Werror=隐式函数声明]

p = BN_bin2bn(dh1024_p, sizeof dh1024_p, NULL); ^~~~~~~~~

最佳答案

BN 函数仍然存在且未弃用。查看缺失相关#if s 在 https://github.com/openssl/openssl/blob/OpenSSL_1_1_0-stable/include/openssl/bn.h 中第 180 行之前

看起来他们一定刚刚做了一些头文件重构以消除头文件耦合。事实上,在 1.1 的 dh header 中,我们现在可以看到

# if OPENSSL_API_COMPAT < 0x10100000L
# include <openssl/bn.h>
# endif

https://github.com/openssl/openssl/blob/OpenSSL_1_1_0-stable/include/openssl/dh.h 中的第 20 行.因此,向前推进它们不会自动包含 bignum header 。这听起来就像是在改进 header 耦合。

尝试显式添加 #include <openssl/bn.h>在包含 dh.h 之后。

关于c - openssl 1.1 中是否弃用了 BIGNUM BN_ 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49331216/

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