SSL BIO和FFI

时间:2013-01-01 04:45:16

标签: c haskell ssl openssl

我在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_getsBIO_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上同时getsnetwork_bio

1 个答案:

答案 0 :(得分:1)

如果openssl不是您的项目所需的,您可以使用任何TLS库, 您可以使用更简单的tls,它更好地与Haskell集成,并通过Backend类型内置支持自定义传输。这比通过Haskell处理openssl低级API要简单得多。