【问题标题】:SSL_read decipher error codeSSL_read 解密错误代码
【发布时间】:2016-09-19 08:32:11
【问题描述】:

请考虑以下一段代码,它显示了尝试从 ssl 连接读取 buff_size 字节。

int bytes = SSL_read(m_ssl, buf, buff_size);
int err = SSL_get_error(m_ssl, bytes);
int err2 = ERR_get_error();

在某些情况下,变量 err 表示上述代码中的有效错误,而 err2 则表现得好像根本没有错误 (=0)。

例如,这是我在测试中遇到的一个案例:当SSL_read 尝试读取 0 字节(缓冲区大小 = 字节 = 0)时,err 将显示 SSL_ERROR_SYSCALL。但是err2 仍然为0,表示没有真正的错误。 SSL_read 返回此值只是为了表明 0 字节已写入 buf。

是否还有更多这样的特殊情况,err 指出可能有问题,但读取结果没有读取错误?

【问题讨论】:

    标签: c ssl openssl


    【解决方案1】:

    看着the man

    SSL_ERROR_SYSCALL

    发生了一些 I/O 错误。 OpenSSL 错误队列可能包含有关错误的更多信息。 如果错误队列为空(即 ERR_get_error() 返回 0),则可以使用 ret 来查找有关错误的更多信息:如果 ret == 0,则观察到违反协议的 EOF。如果 ret == -1,则底层 BIO 报告 I/O 错误(对于 Unix 系统上的套接字 I/O,请参阅 errno 了解详细信息)。 强调我的

    【讨论】:

    • 嗨,我已经阅读了这个手册页,但我仍然不确定也许你可以提供一个短代码或伪代码来强调 SSL_read 的错误处理?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    • 2017-04-02
    • 1970-01-01
    • 2012-03-15
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多