restructuring

- renamed newSalt to newPWSalt
- added PWSalt type
- general style cleanup
This commit is contained in:
Jonathan Lamothe 2018-12-18 14:19:19 -05:00
parent 098aaeb49f
commit e28faacc13
5 changed files with 25 additions and 22 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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(..), (~?=))

View File

@ -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