0

我想为多年前编写的旧聊天应用程序添加 ssl 支持。我在 OpenSSL 和 LibreSSL 上做了很多阅读,我决定尝试一个新的 libtls API。我认为开发人员在这方面做得非常出色。我发现它非常易于使用 - 在需要时几乎不需要更改我现有的代码。但这是我现在需要弄清楚的一件事:

过去,我使用 select() 来监视套接字和 recv() 来读取数据。这很容易,因为这两个函数都在文件描述符上工作。

现在,使用 libtls,函数 tls_read() 需要一个 tls 上下文作为第一个参数。这意味着每次我准备好读取描述符时,我都需要搜索客户端列表以获取适当的 tls 上下文。这并不难,但也许有人知道更好的解决方案?我将感谢所有评论和代码示例。

4

1 回答 1

1

除非我误读了文档,否则在我看来,如果您自己创建套接字,然后使用/// tls_connect_fdstls_connect_socket您将拥有普通的文件句柄,您可以轻松地与// etc 一起使用。您仍然需要保留某种文件描述符到上下文映射才能在您准备好后实际发出/ ,但这只是您选择的链表或哈希表,具体取决于您使用的语言和您拥有的 stdlib可用的。tls_accept_fdstls_accept_socketselect()poll()tls_readtls_write

于 2016-02-18T19:17:36.383 回答