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

时间:2018-03-17 00:23:38

标签: c linux openssl

我正在编写一些' C'在Fedora 27(版本1.1.0g-1)下使用openssl的代码。我做了一些必要的更改(从我的代码的1.0.2版本),现在编译o.k.试。

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

现在,我的代码无法编译,似乎找不到像BN_bin2bn()和BN_free()这样的定义。

查看标题,/ 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文件并没有提到这种情况。

https://www.openssl.org/docs/man1.1.0/crypto/BN_bin2bn.html处对BN_bin2bn()的描述并未表明我已视为已弃用。

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

感谢;

..... c:927:8:错误:隐含声明函数'BN_bin2bn';你是说'OBJ_nid2sn'吗? [-Werror =隐函数声明]

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

1 个答案:

答案 0 :(得分:1)

BN功能仍然存在且未弃用。检查https://github.com/openssl/openssl/blob/OpenSSL_1_1_0-stable/include/openssl/bn.h

中第180行之前缺少相关的#if

看起来他们必须完成一些标头重构以消除标头耦合。事实上,在1.1的dh标题中,我们现在看到

# 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标题。这听起来就像改善标题耦合一样。

尝试在包含dh.h后明确添加#include <openssl/bn.h>