From e28faacc136e459757cadb70f8b381836d1d3581 Mon Sep 17 00:00:00 2001 From: Jonathan Lamothe Date: Tue, 18 Dec 2018 14:19:19 -0500 Subject: [PATCH] restructuring - renamed newSalt to newPWSalt - added PWSalt type - general style cleanup --- src/Password.hs | 25 +++++++++++++---------- test/Spec.hs | 10 ++++----- test/Spec/NewPWData.hs | 2 +- test/Spec/{PWPolicy.hs => NewPWPolicy.hs} | 2 +- test/Spec/{NewSalt.hs => NewPWSalt.hs} | 8 ++++---- 5 files changed, 25 insertions(+), 22 deletions(-) rename test/Spec/{PWPolicy.hs => NewPWPolicy.hs} (96%) rename test/Spec/{NewSalt.hs => NewPWSalt.hs} (88%) diff --git a/src/Password.hs b/src/Password.hs index 047365e..d7e072e 100644 --- a/src/Password.hs +++ b/src/Password.hs @@ -26,7 +26,7 @@ License along with this program. If not, see module Password ( -- * Data Types - PWDatabase, PWData(..), PWPolicy (..), + PWDatabase, PWData(..), PWPolicy (..), PWSalt, -- ** Lenses -- $lenses -- *** PWData @@ -34,7 +34,7 @@ module Password ( -- *** PWPolicy pwLength, pwUpper, pwLower, pwDigits, pwSpecial, -- ** Default Instances - newPWData, newPWPolicy, newSalt, + newPWData, newPWPolicy, newPWSalt, -- * Functions validatePWPolicy ) where @@ -72,6 +72,9 @@ data PWPolicy = PWPolicy -- if @"Nothing"@) } deriving (Eq, Show) +-- | the "salt" used to generate a password +type PWSalt = B.ByteString + -- $lenses The following functions are automatically generated by -- @makeLenses@. See the -- [lens](http://hackage.haskell.org/package/lens) package for further @@ -80,10 +83,6 @@ data PWPolicy = PWPolicy makeLenses ''PWPolicy makeLenses ''PWData --- | default password policy -newPWPolicy :: PWPolicy -newPWPolicy = PWPolicy 16 0 0 0 (Just 0) - -- | builds a new @'PWData'@ newPWData :: RandomGen g @@ -93,16 +92,20 @@ newPWData -- ^ the result and new random generator newPWData g = (result, g') where result = PWData newPWPolicy salt - (salt, g') = newSalt g + (salt, g') = newPWSalt g + +-- | default password policy +newPWPolicy :: PWPolicy +newPWPolicy = PWPolicy 16 0 0 0 (Just 0) -- | builds a new salt -newSalt +newPWSalt :: RandomGen g => g -- ^ the random generator to use - -> (B.ByteString, g) - -- ^ the result and new random number generator -newSalt g = (result, g2) where + -> (PWSalt, g) + -- ^ the result and new random generator +newPWSalt g = (result, g2) where result = B.pack $ take 256 $ randoms g1 (g1, g2) = split g diff --git a/test/Spec.hs b/test/Spec.hs index 969765b..91ecbbc 100644 --- a/test/Spec.hs +++ b/test/Spec.hs @@ -27,8 +27,8 @@ import System.Exit (exitFailure) import Test.HUnit (errors, failures, runTestTT, Test(TestList)) import qualified Spec.NewPWData as NewPWData -import qualified Spec.NewSalt as NewSalt -import qualified Spec.PWPolicy as PWPolicy +import qualified Spec.NewPWPolicy as NewPWPolicy +import qualified Spec.NewPWSalt as NewPWSalt import qualified Spec.ValidatePWPolicy as ValidatePWPolicy main = do @@ -37,10 +37,10 @@ main = do exitFailure tests = TestList - [ PWPolicy.tests + [ NewPWData.tests + , NewPWPolicy.tests + , NewPWSalt.tests , ValidatePWPolicy.tests - , NewSalt.tests - , NewPWData.tests ] --jl diff --git a/test/Spec/NewPWData.hs b/test/Spec/NewPWData.hs index 91b9e10..12f3adf 100644 --- a/test/Spec/NewPWData.hs +++ b/test/Spec/NewPWData.hs @@ -35,7 +35,7 @@ tests = TestLabel "newPData" $ TestList testSalt x = TestLabel "pwSalt" $ x^.pwSalt ~?= salt where - (salt, _) = newSalt g + (salt, _) = newPWSalt g testPolicy x = TestLabel "pwPolicy" $ x^.pwPolicy ~?= newPWPolicy diff --git a/test/Spec/PWPolicy.hs b/test/Spec/NewPWPolicy.hs similarity index 96% rename from test/Spec/PWPolicy.hs rename to test/Spec/NewPWPolicy.hs index 7783dec..9fac488 100644 --- a/test/Spec/PWPolicy.hs +++ b/test/Spec/NewPWPolicy.hs @@ -20,7 +20,7 @@ License along with this program. If not, see -} -module Spec.PWPolicy (tests) where +module Spec.NewPWPolicy (tests) where import Control.Lens ((^.)) import Test.HUnit (Test(..), (~?=)) diff --git a/test/Spec/NewSalt.hs b/test/Spec/NewPWSalt.hs similarity index 88% rename from test/Spec/NewSalt.hs rename to test/Spec/NewPWSalt.hs index f144874..1785ab3 100644 --- a/test/Spec/NewSalt.hs +++ b/test/Spec/NewPWSalt.hs @@ -20,7 +20,7 @@ License along with this program. If not, see -} -module Spec.NewSalt (tests) where +module Spec.NewPWSalt (tests) where import qualified Data.ByteString as B import System.Random (mkStdGen) @@ -28,12 +28,12 @@ import Test.HUnit (Test(..), assertBool, (~?=)) import Password -tests = TestLabel "newSalt" $ TestList +tests = TestLabel "newPWSalt" $ TestList [ testLength salt , testDiff salt salt' ] where - (salt, g') = newSalt g - (salt', _) = newSalt g' + (salt, g') = newPWSalt g + (salt', _) = newPWSalt g' g = mkStdGen 1 testLength x = TestLabel "salt length" $ B.length x ~?= 256