我在Haskell中有一个流API (与OpenSSL的BIOs不同),我想将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交互的一些基本内容。)
在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。
发布于 2013-01-01 08:52:48
如果openssl不是项目所必需的,而且您可以使用任何TLS库,那么您可以使用更简单的tls,它更好地与Haskell集成,并内置支持通过后端类型的自定义传输。这将比通过Haskell处理openssl低级API要简单得多。
https://stackoverflow.com/questions/14107880
复制相似问题