DRBG 0.5.4 → 0.5.5
raw patch · 2 files changed
+19/−13 lines, 2 filesdep ~cerealdep ~mtlPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: cereal, mtl
API changes (from Hackage documentation)
- Crypto.Random.DRBG: instance (CryptoRandomGen a, CryptoRandomGen b) => CryptoRandomGen (GenAutoReseed a b)
- Crypto.Random.DRBG: instance (CryptoRandomGen a, CryptoRandomGen b) => CryptoRandomGen (GenXor a b)
- Crypto.Random.DRBG: instance BlockCipher x => CryptoRandomGen (CtrDRBGWith x)
- Crypto.Random.DRBG: instance CryptoRandomGen HashDRBG
- Crypto.Random.DRBG: instance CryptoRandomGen HmacDRBG
- Crypto.Random.DRBG: instance CryptoRandomGen g => CryptoRandomGen (GenBuffered g)
- Crypto.Random.DRBG: instance SeedLength SHA1
- Crypto.Random.DRBG: instance SeedLength SHA224
- Crypto.Random.DRBG: instance SeedLength SHA256
- Crypto.Random.DRBG: instance SeedLength SHA384
- Crypto.Random.DRBG: instance SeedLength SHA512
- Crypto.Random.DRBG.CTR: instance Serialize a => Serialize (State a)
+ Crypto.Random.DRBG: instance (Crypto.Random.CryptoRandomGen a, Crypto.Random.CryptoRandomGen b) => Crypto.Random.CryptoRandomGen (Crypto.Random.DRBG.GenAutoReseed a b)
+ Crypto.Random.DRBG: instance (Crypto.Random.CryptoRandomGen a, Crypto.Random.CryptoRandomGen b) => Crypto.Random.CryptoRandomGen (Crypto.Random.DRBG.GenXor a b)
+ Crypto.Random.DRBG: instance Crypto.Classes.BlockCipher x => Crypto.Random.CryptoRandomGen (Crypto.Random.DRBG.CtrDRBGWith x)
+ Crypto.Random.DRBG: instance Crypto.Random.CryptoRandomGen Crypto.Random.DRBG.HashDRBG
+ Crypto.Random.DRBG: instance Crypto.Random.CryptoRandomGen Crypto.Random.DRBG.HmacDRBG
+ Crypto.Random.DRBG: instance Crypto.Random.CryptoRandomGen g => Crypto.Random.CryptoRandomGen (Crypto.Random.DRBG.GenBuffered g)
+ Crypto.Random.DRBG: instance Crypto.Random.DRBG.Hash.SeedLength Crypto.Hash.CryptoAPI.SHA1
+ Crypto.Random.DRBG: instance Crypto.Random.DRBG.Hash.SeedLength Crypto.Hash.CryptoAPI.SHA224
+ Crypto.Random.DRBG: instance Crypto.Random.DRBG.Hash.SeedLength Crypto.Hash.CryptoAPI.SHA256
+ Crypto.Random.DRBG: instance Crypto.Random.DRBG.Hash.SeedLength Crypto.Hash.CryptoAPI.SHA384
+ Crypto.Random.DRBG: instance Crypto.Random.DRBG.Hash.SeedLength Crypto.Hash.CryptoAPI.SHA512
+ Crypto.Random.DRBG.CTR: instance Data.Serialize.Serialize a => Data.Serialize.Serialize (Crypto.Random.DRBG.CTR.State a)
- Crypto.Random.DRBG.HMAC: generate :: Hash c d => State d -> BitLength -> AdditionalInput -> Maybe (RandomBits, State d)
+ Crypto.Random.DRBG.HMAC: generate :: (Hash c d) => State d -> BitLength -> AdditionalInput -> Maybe (RandomBits, State d)
- Crypto.Random.DRBG.HMAC: instantiate :: Hash c d => Entropy -> Nonce -> PersonalizationString -> State d
+ Crypto.Random.DRBG.HMAC: instantiate :: (Hash c d) => Entropy -> Nonce -> PersonalizationString -> State d
- Crypto.Random.DRBG.HMAC: reseed :: Hash c d => State d -> Entropy -> AdditionalInput -> State d
+ Crypto.Random.DRBG.HMAC: reseed :: (Hash c d) => State d -> Entropy -> AdditionalInput -> State d
Files
- Crypto/Random/DRBG/HMAC.hs +4/−6
- DRBG.cabal +15/−7
Crypto/Random/DRBG/HMAC.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE BangPatterns #-}+{-# OPTIONS_GHC -Wall #-} module Crypto.Random.DRBG.HMAC ( State, counter , reseedInterval@@ -8,14 +9,10 @@ import qualified Data.ByteString as B import qualified Data.ByteString.Lazy as L-import Data.Serialize (encode, Serialize(..))-import Data.Serialize.Put-import Data.Serialize.Builder (toByteString) import Data.Tagged (proxy) import Data.Word (Word64) import Crypto.Classes import Crypto.HMAC-import Crypto.Types import Crypto.Random.DRBG.Types type Key = B.ByteString@@ -34,14 +31,15 @@ asProxyTypeOf = const reseedInterval :: Word64-reseedInterval = 2^48+reseedInterval = 2^(48::Int) +fc :: B.ByteString -> L.ByteString fc = L.fromChunks . \s -> [s] update :: (Hash c d) => State d -> L.ByteString -> State d update st input = st { value = newV , key = newK } where- hm k = hmac (MacKey k)+ hm x = hmac (MacKey x) k = key st v = value st k' = encode $ (hm k (L.concat [fc v, L.singleton 0, input]) `asProxyTypeOf` st)
DRBG.cabal view
@@ -1,5 +1,5 @@ name: DRBG-version: 0.5.4+version: 0.5.5 license: BSD3 license-file: LICENSE author: Thomas DuBuisson <thomas.dubuisson@gmail.com>@@ -10,8 +10,8 @@ category: Cryptography stability: stable build-type: Simple-cabal-version: >= 1.8-tested-with: GHC == 6.10.1+cabal-version: >= 1.10+tested-with: GHC == 7.10.2 Data-Files: Test/HMAC_DRBG.txt Test/Hash_DRBG.txt Test/CTR_DRBG.txt Test/Dual_EC_DRBG.txt CHANGELOG extra-source-files: Test/HMAC_DRBG.txt Test/Hash_DRBG.txt Test/CTR_DRBG.txt Test/Dual_EC_DRBG.txt@@ -21,10 +21,18 @@ default: False Library- Build-Depends: base >= 4.0 && < 5, cereal >= 0.2,- bytestring, prettyclass, tagged >= 0.7,- crypto-api >= 0.13, cryptohash-cryptoapi >= 0.1,- parallel, mtl >= 2.0, cipher-aes128 >= 0.6, entropy+ default-language: Haskell2010+ Build-Depends: base >= 4.0 && < 5+ , cereal >= 0.5 && < 0.6+ , bytestring+ , prettyclass+ , tagged >= 0.7+ , crypto-api >= 0.13+ , cryptohash-cryptoapi >= 0.1+ , parallel+ , mtl >= 2.0 && < 2.3+ , cipher-aes128 >= 0.6+ , entropy ghc-options: -O2 hs-source-dirs: exposed-modules: Crypto.Random.DRBG.Hash,