restructuring
- renamed newSalt to newPWSalt - added PWSalt type - general style cleanup
This commit is contained in:
parent
098aaeb49f
commit
e28faacc13
|
@ -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
|
||||
|
||||
|
|
10
test/Spec.hs
10
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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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(..), (~?=))
|
|
@ -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
|
Loading…
Reference in New Issue
Block a user