为什么OpenSSL加密函数成功返回1,失败返回0?

时间:2018-10-09 03:52:13

标签: c openssl return-value

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

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

1 个答案:

答案 0 :(得分:2)

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

  

语言C(1972)的初始实现没有提供布尔值   类型,到目前为止,布尔值通常用   C程序中的整数(int)。比较运算符(>,==等)   定义为返回有符号整数(int)结果,或者为0(对于   false)或1(代表true)。

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

SO answer on return values that you have pointed to特别涉及要返回到其父级的进程退出值的特殊情况。实际上,对于该特定情况,零值表示成功。但这通常不是应用于函数返回值的典型方法。