我在Haskell中有一个流API(与OpenSSL的BIO不同),我想将SSL / TLS“代理”注入其中。更具体地说,假设我有一个网络模型
Server| <---> |Logger>| <---> |<Logger| <---> |Client
(我在写Logger>
表示“下游”记录器)我想编写一个FFI来调用OpenSSL将TLS注入中心
Server| <---> |Logger>| <---> |TLS>| <---> |<TLS| <---> |<Logger| <---> |Client
以便加密TLS>
和<TLS
之间的通信。什么是最简单的OpenSSL接口,让我构建<TLS
?在那之后,构建TLS>
的最简单的界面是什么?
换句话说,我的项目与我读过的大多数教程不同,因为我希望能够同时使用BIO_gets
和BIO_puts
SSL结构。这类似于我为SSL客户端连接管理自己的传输,但“传输”是通过将C指针提升到Haskell来执行的。
(我确信我完全错过了SSL
+ BIO
互动的基本信息。)
从http://www.openssl.org/docs/crypto/BIO_s_bio.html我看到一个像我正在拍摄的应用程序:
BIO *internal_bio, *network_bio;
...
BIO_new_bio_pair(internal_bio, 0, network_bio, 0);
SSL_set_bio(ssl, internal_bio, internal_bio);
SSL_operations();
这似乎大致正确。我可以在puts
上同时gets
和network_bio
。