
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