cryptohash 0.11.5 → 0.11.6
raw patch · 2 files changed
+83/−1 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Crypto.MAC.SHA3: MAC224 :: Digest SHA3_224 -> MAC224
+ Crypto.MAC.SHA3: MAC256 :: Digest SHA3_256 -> MAC256
+ Crypto.MAC.SHA3: MAC384 :: Digest SHA3_384 -> MAC384
+ Crypto.MAC.SHA3: MAC512 :: Digest SHA3_512 -> MAC512
+ Crypto.MAC.SHA3: data MAC224
+ Crypto.MAC.SHA3: data MAC256
+ Crypto.MAC.SHA3: data MAC384
+ Crypto.MAC.SHA3: data MAC512
+ Crypto.MAC.SHA3: getDigest224 :: MAC224 -> Digest SHA3_224
+ Crypto.MAC.SHA3: getDigest256 :: MAC256 -> Digest SHA3_256
+ Crypto.MAC.SHA3: getDigest384 :: MAC384 -> Digest SHA3_384
+ Crypto.MAC.SHA3: getDigest512 :: MAC512 -> Digest SHA3_512
+ Crypto.MAC.SHA3: instance Byteable MAC224
+ Crypto.MAC.SHA3: instance Byteable MAC256
+ Crypto.MAC.SHA3: instance Byteable MAC384
+ Crypto.MAC.SHA3: instance Byteable MAC512
+ Crypto.MAC.SHA3: instance Eq MAC224
+ Crypto.MAC.SHA3: instance Eq MAC256
+ Crypto.MAC.SHA3: instance Eq MAC384
+ Crypto.MAC.SHA3: instance Eq MAC512
+ Crypto.MAC.SHA3: mac224 :: ByteString -> ByteString -> MAC224
+ Crypto.MAC.SHA3: mac256 :: ByteString -> ByteString -> MAC256
+ Crypto.MAC.SHA3: mac384 :: ByteString -> ByteString -> MAC384
+ Crypto.MAC.SHA3: mac512 :: ByteString -> ByteString -> MAC512
Files
- Crypto/MAC/SHA3.hs +81/−0
- cryptohash.cabal +2/−1
+ Crypto/MAC/SHA3.hs view
@@ -0,0 +1,81 @@+-- |+-- Module : Crypto.MAC.SHA3+-- License : BSD-style+-- Maintainer : Vincent Hanquez <vincent@snarc.org>+-- Stability : experimental+-- Portability : unknown+--+-- provide a simple SHA3 MAC mechanism with+--+-- > mac = hash(key|message)+--+module Crypto.MAC.SHA3+ ( MAC512(..)+ , MAC384(..)+ , MAC256(..)+ , MAC224(..)+ , mac512+ , mac384+ , mac256+ , mac224+ ) where++import Data.Byteable+import Data.ByteString (ByteString)+import Crypto.Hash++-- | SHA3_512 MAC+data MAC512 = MAC512 { getDigest512 :: Digest SHA3_512 }++instance Byteable MAC512 where+ toBytes (MAC512 b) = toBytes b+instance Eq MAC512 where+ (MAC512 b1) == (MAC512 b2) = constEqBytes (toBytes b1) (toBytes b2)++-- | SHA3_384 MAC+data MAC384 = MAC384 { getDigest384 :: Digest SHA3_384 }++instance Byteable MAC384 where+ toBytes (MAC384 b) = toBytes b+instance Eq MAC384 where+ (MAC384 b1) == (MAC384 b2) = constEqBytes (toBytes b1) (toBytes b2)++-- | SHA3_256 MAC+data MAC256 = MAC256 { getDigest256 :: Digest SHA3_256 }++instance Byteable MAC256 where+ toBytes (MAC256 b) = toBytes b+instance Eq MAC256 where+ (MAC256 b1) == (MAC256 b2) = constEqBytes (toBytes b1) (toBytes b2)++-- | SHA3_224 MAC+data MAC224 = MAC224 { getDigest224 :: Digest SHA3_224 }++instance Byteable MAC224 where+ toBytes (MAC224 b) = toBytes b+instance Eq MAC224 where+ (MAC224 b1) == (MAC224 b2) = constEqBytes (toBytes b1) (toBytes b2)++-- | compute a MAC using a simple SHA3_512 key|msg+mac512 :: ByteString -- ^ secret+ -> ByteString -- ^ message+ -> MAC512+mac512 secret msg = MAC512 $ hashFinalize $ hashUpdates hashInit [secret,msg]++-- | compute a MAC using a simple SHA3_384 key|msg+mac384 :: ByteString -- ^ secret+ -> ByteString -- ^ message+ -> MAC384+mac384 secret msg = MAC384 $ hashFinalize $ hashUpdates hashInit [secret,msg]++-- | compute a MAC using a simple SHA3_256 key|msg+mac256 :: ByteString -- ^ secret+ -> ByteString -- ^ message+ -> MAC256+mac256 secret msg = MAC256 $ hashFinalize $ hashUpdates hashInit [secret,msg]++-- | compute a MAC using a simple SHA3_224 key|msg+mac224 :: ByteString -- ^ secret+ -> ByteString -- ^ message+ -> MAC224+mac224 secret msg = MAC224 $ hashFinalize $ hashUpdates hashInit [secret,msg]
cryptohash.cabal view
@@ -1,5 +1,5 @@ Name: cryptohash-Version: 0.11.5+Version: 0.11.6 Description: A collection of crypto hashes, with a practical incremental and one-pass, pure APIs, with performance close to the fastest implementations available in other languages.@@ -70,6 +70,7 @@ Crypto.Hash.Tiger Crypto.Hash.Whirlpool Crypto.MAC.HMAC+ Crypto.MAC.SHA3 Other-modules: Crypto.Hash.Utils Crypto.Hash.Utils.Cpu Crypto.Hash.Internal