【问题标题】:Why do OpenSSL crypto functions return 1 on success, 0 on failure?为什么 OpenSSL 加密函数在成功时返回 1,在失败时返回 0?
【发布时间】:2019-03-13 18:21:39
【问题描述】:

一直在编写使用 OpenSSL 的代码,我注意到,令人困惑的是,大多数加密库函数返回 1 表示成功,0 表示失败:

所以我的问题是,为什么 OpenSSL 不使用典型的 C/POSIX 标准 return values

【问题讨论】:

标签: c openssl return-value


【解决方案1】:

传统上,在 C 中,整数值 0 代表 false1 代表 true,OpenSSL 遵循该约定。有关某些上下文,请参阅this section of the Wikipedia page about the Boolean data type

语言 C (1972) 的初始实现不提供布尔值 类型,直到今天,布尔值通常由 C 程序中的整数(整数)。比较运算符(>、== 等) 被定义为返回一个有符号整数 (int) 结果,或者 0(对于 false) 或 1(为 true)。

随着 C99 中 _Bool 类型的引入,这种情况有所改变,但 OpenSSL 的初始实现早于该类型——因此使用了 01 的整数值。此外,在某些情况下,OpenSSL 函数使用不同的整数值来表示不同类型的结果。

SO answer on return values that you have pointed to 专门关于进程退出值的特殊情况,要返回给它的父进程。实际上,对于那种特定情况,零值表示成功。但这不是一般应用于函数返回值的典型方法。

【讨论】:

    猜你喜欢
    • 2016-07-08
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 2019-04-03
    相关资源
    最近更新 更多