fixed pedantic warnings and hlint stuff
This commit is contained in:
@@ -27,7 +27,7 @@ License along with this program. If not, see
|
||||
|
||||
module Password (
|
||||
-- * Data Types
|
||||
PWDatabase, PWData(..), PWPolicy (..), PWSalt,
|
||||
PWDatabase, PWData(..), PWPolicy (..), PWSalt (..),
|
||||
-- ** Lenses
|
||||
-- $lenses
|
||||
-- *** PWData
|
||||
@@ -47,11 +47,10 @@ module Password (
|
||||
pwHasService, pwSetService, pwGetService, pwRemoveService, pwSearch
|
||||
) where
|
||||
|
||||
import Control.Lens (makeLenses, over, set, (^.))
|
||||
import Control.Lens (makeLenses, over, set, to, (^.))
|
||||
import Data.Aeson
|
||||
( FromJSON (parseJSON)
|
||||
, ToJSON (toJSON)
|
||||
, Value (String)
|
||||
, object
|
||||
, withObject
|
||||
, withText
|
||||
@@ -97,7 +96,8 @@ data PWPolicy = PWPolicy
|
||||
} deriving (Eq, Show)
|
||||
|
||||
-- | the "salt" used to generate a password
|
||||
type PWSalt = B.ByteString
|
||||
newtype PWSalt = PWSalt { runPWSalt :: B.ByteString }
|
||||
deriving (Eq, Show)
|
||||
|
||||
-- $lenses The following functions are automatically generated by
|
||||
-- @makeLenses@. See the
|
||||
@@ -120,11 +120,11 @@ instance FromJSON PWPolicy where
|
||||
<*> v .: "min_digits"
|
||||
<*> v .: "min_special"
|
||||
|
||||
instance FromJSON B.ByteString where
|
||||
parseJSON = withText "ByteString" $ \v ->
|
||||
instance FromJSON PWSalt where
|
||||
parseJSON = withText "PWSalt" $ \v ->
|
||||
case B64.decode $ toUTF8 $ T.unpack v of
|
||||
Left x -> fail x
|
||||
Right x -> return x
|
||||
Right x -> return $ PWSalt x
|
||||
|
||||
instance ToJSON PWData where
|
||||
toJSON d = object
|
||||
@@ -141,8 +141,8 @@ instance ToJSON PWPolicy where
|
||||
, "min_special" .= (p^.pwSpecial)
|
||||
]
|
||||
|
||||
instance ToJSON B.ByteString where
|
||||
toJSON = toJSON . toB64
|
||||
instance ToJSON PWSalt where
|
||||
toJSON = toJSON . toB64 . runPWSalt
|
||||
|
||||
-- | default (empty) password database
|
||||
newPWDatabase :: PWDatabase
|
||||
@@ -171,7 +171,7 @@ newPWSalt
|
||||
-> (PWSalt, g)
|
||||
-- ^ the result and new random generator
|
||||
newPWSalt g = (result, g2) where
|
||||
result = B.pack $ take 32 $ randoms g1
|
||||
result = PWSalt $ B.pack $ take 32 $ randoms g1
|
||||
(g1, g2) = split g
|
||||
|
||||
-- | validates a password database
|
||||
@@ -190,7 +190,7 @@ validatePWData
|
||||
-- ^ @"True"@ if valid; @"False"@ otherwise
|
||||
validatePWData x =
|
||||
validatePWPolicy (x^.pwPolicy) &&
|
||||
B.length (x^.pwSalt) > 0
|
||||
B.length (x^.pwSalt.to runPWSalt) > 0
|
||||
|
||||
-- | validates a password policy
|
||||
validatePWPolicy
|
||||
@@ -336,8 +336,8 @@ mkPool = toB64 . raw where
|
||||
raw x = let x' = mkHash x in
|
||||
x' `B.append` raw x'
|
||||
|
||||
mkSeed :: String -> PWData -> B.ByteString
|
||||
mkSeed pw d = toUTF8 pw `B.append` (d^.pwSalt)
|
||||
mkSeed :: String -> PWData ->B.ByteString
|
||||
mkSeed pw d = toUTF8 pw `B.append` (d^.pwSalt.to runPWSalt)
|
||||
|
||||
mkHash :: B.ByteString -> B.ByteString
|
||||
mkHash = fst . B16.decode . toUTF8 . show . sha256
|
||||
@@ -365,7 +365,7 @@ toB64 = B8.unpack . B64.encode
|
||||
contains :: String -> String -> Bool
|
||||
_ `contains` "" = True
|
||||
"" `contains` _ = False
|
||||
xs@(x:xs') `contains` ys
|
||||
xs@(_:xs') `contains` ys
|
||||
| xs `startsWith` ys = True
|
||||
| otherwise = xs' `contains` ys
|
||||
|
||||
|
||||
Reference in New Issue
Block a user