diff --git a/Crypto/MAC/HMAC/Conduit.hs b/Crypto/MAC/HMAC/Conduit.hs
new file mode 100644
--- /dev/null
+++ b/Crypto/MAC/HMAC/Conduit.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE RankNTypes, BangPatterns #-}
+-- |
+-- Module      : Crypto.MAC.HMAC.Conduit
+-- License     : BSD-style
+-- Maintainer  : Vincent Hanquez <vincent@snarc.org>
+-- Stability   : experimental
+-- Portability : unknown
+--
+-- A module containing Conduit facilities for hmac based functions.
+--
+module Crypto.MAC.HMAC.Conduit
+    ( -- * Cryptographic hash functions
+      sinkHMAC
+    ) where
+
+import Crypto.Hash
+import Crypto.MAC.HMAC
+import Data.ByteArray
+import Data.Conduit
+import qualified Data.ByteString as BS
+
+-- | A 'Sink' that calculates HMAC of a stream of 'B.ByteString'@s@ and
+-- returns digest @d@.
+sinkHMAC :: (Monad m, ByteArrayAccess key, HashAlgorithm hash) => key -> ConduitM BS.ByteString o m (HMAC hash)
+sinkHMAC key = sink (initialize key)
+  where sink ctx = do
+            b <- await
+            case b of
+                Nothing -> return $! finalize ctx
+                Just bs -> sink $! update ctx bs
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,11 @@
-cryptohash-conduit
+cryptonite-conduit
 ==================
 
-Documentation: [cryptohash-conduit on hackage](http://hackage.haskell.org/package/cryptohash-conduit)
+[![Join the chat at https://gitter.im/vincenthz/cryptonite](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/vincenthz/cryptonite?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+[![Build Status](https://travis-ci.org/haskell-crypto/cryptonite-conduit.png?branch=master)](https://travis-ci.org/haskell-crypto/cryptonite-conduit)
+[![BSD](http://b.repl.ca/v1/license-BSD-blue.png)](http://en.wikipedia.org/wiki/BSD_licenses)
+[![Haskell](http://b.repl.ca/v1/language-haskell-lightgrey.png)](http://haskell.org)
+
+Documentation: [cryptonite-conduit on hackage](http://hackage.haskell.org/package/cryptonite-conduit)
+
+Simple conduit wrapper for cryptonite hashes, and maybe further construction as needed
diff --git a/cryptonite-conduit.cabal b/cryptonite-conduit.cabal
--- a/cryptonite-conduit.cabal
+++ b/cryptonite-conduit.cabal
@@ -1,10 +1,10 @@
 Name:                cryptonite-conduit
-Version:             0.1
+Version:             0.2.0
 Synopsis:            cryptonite conduit
 Description:
   Conduit bridge for cryptonite
   .
-  For now only provide a conduit version for hash, but
+  For now only provide a conduit version for hash and hmac, but
   with contribution, this could provide cipher conduits too,
   and probably other things.
 License:             BSD3
@@ -20,15 +20,32 @@
 Extra-source-files:  README.md
 
 Library
-  Exposed-modules:   Crypto.Hash.Conduit
+  Exposed-modules:   Crypto.MAC.HMAC.Conduit
+                     Crypto.Hash.Conduit
   Build-depends:     base >= 4 && < 5
                    , bytestring
                    , conduit
-                   , resourcet
                    , conduit-extra
                    , cryptonite
+                   , memory
+                   , resourcet
                    , transformers
   ghc-options:       -Wall -fwarn-tabs
+
+test-suite cryptonite-conduit-test
+  type:                exitcode-stdio-1.0
+  hs-source-dirs:      test
+  main-is:             Spec.hs
+  build-depends:       base
+                     , bytestring
+                     , conduit
+                     , conduit-combinators
+                     , cryptonite
+                     , cryptonite-conduit
+                     , memory
+                     , tasty
+                     , tasty-hunit
+  ghc-options:         -threaded -rtsopts -with-rtsopts=-N -W -Wall
 
 source-repository head
   type: git
diff --git a/test/Spec.hs b/test/Spec.hs
new file mode 100644
--- /dev/null
+++ b/test/Spec.hs
@@ -0,0 +1,27 @@
+{-# Language OverloadedStrings #-}
+import Conduit
+import Crypto.Hash
+import Crypto.MAC.HMAC
+import Crypto.MAC.HMAC.Conduit
+import Data.ByteArray.Encoding
+import Test.Tasty
+import Test.Tasty.HUnit
+import qualified Data.ByteString as BS
+import qualified Data.ByteString.Lazy as BL
+
+main :: IO ()
+main = defaultMain tests
+
+tests :: TestTree
+tests = testGroup "Cryptonite conduit tests"
+    [ testGroup "HMAC"
+        [ testCase "File HMAC is correct" testFileHMAC
+        ]
+    ]
+
+testFileHMAC :: Assertion
+testFileHMAC = do
+    let source = BL.take (1024 * 1024 * 3 + 150) $ BL.iterate (+ 1) 0
+    testhmac <- runConduit $ sourceLazy source $$ sinkHMAC ("foobar" :: BS.ByteString)
+    let hexdump = convertToBase Base16 (testhmac :: HMAC SHA512t_256)
+    assertEqual "HMAC mismatch" "ab78ef7a3a7b02b2ef50ee1a17e43ae0c134e0bece468b047780626264301831" (hexdump :: BS.ByteString)
