【问题标题】:Are BIGNUM BN_ functions deprecated in openssl 1.1?在 openssl 1.1 中是否弃用了 BIGNUM BN_ 函数?
【发布时间】:2018-08-26 03:20:09
【问题描述】:

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

然后我尝试使用“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, dh1024_p 的大小, NULL); ^~~~~~~~~

【问题讨论】:

    标签: c linux openssl


    【解决方案1】:

    BN 功能仍然存在且未弃用。查看https://github.com/openssl/openssl/blob/OpenSSL_1_1_0-stable/include/openssl/bn.h中第180行前缺少相关的#ifs

    看起来他们必须刚刚进行了一些标头重构以消除标头耦合。事实上,在 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 &lt;openssl/bn.h&gt;

    【讨论】:

    • 我明确添加了 dh.h 和 bn.h 并且它编译正常。现在使用 OPENSSL_API_COMPAT=0x10100000L。我的目标是在附近更新任何过时的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    相关资源
    最近更新 更多