great!

I am wondering if you can provide even higher-level APIs for the common case:
 
hash <- runResourceT $ hashFile "my-file"

and possibly something that runs the ResourceT transformer:

hash <- runHashFile "my-file"

On Sat, Jan 7, 2012 at 12:16 AM, Felipe Almeida Lessa <felipe.lessa@gmail.com> wrote:
Hello!

I'm pleased to announce the first release of crypto-conduit [1]!  The
crypto-api [2] package provides APIs for many cryptographic
operations, such as cryptographic hashes and block ciphers.  This new
crypto-conduit package allows you to use many of these operations with
conduits [3], giving you safe I/O using constant memory and no leaks.

As an example, here's how you could get the SHA1 hash a file:

 import Crypto.Conduit -- from crypto-conduit
 import Crypto.Hash.SHA1 (SHA1) -- from cryptohash
 import Data.Conduit -- from conduit
 import Data.Conduit.Binary (sourceFile) -- from conduit

 main = do
   hash <- runResourceT $ sourceFile "my-file" $$ sinkHash
   print (hash :: SHA1)

The code snippet above, despite having only "sourceFile ... $$
sinkHash" on its core, guarantees that the file handle is not kept
open and uses a constant amount of memory.  Sweet!

Please break this package!  Although it comes with a test suite, it
has just seen the light of the day.

Cheers, =)

[1] http://hackage.haskell.org/package/crypto-conduit
[2] http://hackage.haskell.org/package/crypto-api
[3] http://hackage.haskell.org/package/conduit

--
Felipe.

_______________________________________________
web-devel mailing list
web-devel@haskell.org
http://www.haskell.org/mailman/listinfo/web-devel