module Main (main) where import qualified System.IO.Streams as S import Data.Digest.Pure.SHA import System.IO.Streams.SHA main :: IO () main = do d1 <- S.withFileAsInput "bin/sha-streams.hs" $ \is -> do (is1, getSha1) <- sha1Input is (is224, getSha224) <- sha224Input is1 (is256, getSha256) <- sha256Input is224 (is384, getSha384) <- sha384Input is256 (is512, getSha512) <- sha512Input is384 S.skipToEof is512 d1 <- getSha1 putStrLn $ showDigest d1 getSha224 >>= putStrLn . showDigest getSha256 >>= putStrLn . showDigest getSha384 >>= putStrLn . showDigest getSha512 >>= putStrLn . showDigest return d1 -- This must throw an UnmatchedSHAException. S.withFileAsInput "System/IO/Streams/SHA.hs" $ \is -> do (is1, _) <- sha1Input is is1' <- checkedSha1Input d1 is1 S.skipToEof is1'