
On Fri, 2010-10-08 at 15:14 +0200, Michael Snoyman wrote:
On Fri, Oct 8, 2010 at 1:59 PM, Maciej Piechotka
wrote: On Wed, 2010-10-06 at 22:26 +0100, Vincent Hanquez wrote:
Hi haskellers,
I'ld like to announce the tls package [1][2], which is a native implementation of the TLS protocol, client and server. It's currently mostly supporting SSL3, TLS1.0 and TLS1.1. It's got *lots* of rough edges, and a bunch of unsupported features, but it's humming along, and at each iteration it's becoming more tighly secure and featureful.
I would recommend against using this implementation in a production system just yet, or in an aggressive environment either (specially for the server side); I don't think it should necessary fail, but it's still an early implementation with probable API changes on the way.
[1] http://github.com/vincenthz/hs-tls [2] http://hackage.haskell.org/package/tls
1. Could also callback in addition to handles be added? Like:
connect' :: (ByteString -> IO ()) -> IO ByteString -> TLSClient IO ()
Why: - It allows to wrap it into Enumerators
It's entirely possible to wrap the current interface into enumerators/iteratees[1]. That's how http-enumerator works.
Michael
[1] http://github.com/snoyberg/http-enumerator/blob/master/Network/TLS/Client/En...
I had in mind something like: import Data.ByteString import Data.Iteratee clientEnum :: MonadIO m => params -> Enumerator ByteString m a -> Enumerator ByteString m a clientEnum params client = ... i.e. clientEnum :: MonadIO m => params -> (Iteratee ByteString m a -> m (Iteratee ByteString m a)) -- ^ Client function -> Iteratee ByteString m a --^ "Output" -> m (Iteratee ByteString m a) --^ "Input" Where inner enumerator is simply a client side while 'outer' is a outside/server part. Regards