And while we're at it, some code to deal with the cumbersome decoding of those hash objects would be nice!
Cheers,
Aristid
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
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe