-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | a simple password manager
--
-- Please see the README on GitHub at
-- https://github.com/jlamothe/passman#readme
@package passman
@version 0.3.1
-- | This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU Lesser General Public License as
-- published by the Free Software Foundation, either version 3 of the
-- License, or (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful, but
-- WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with this program. If not, see
-- https://www.gnu.org/licenses/.
module Password
-- | a mapping of service names to password data
type PWDatabase = Map String PWData
-- | data necessary to construct a password
data PWData
PWData :: PWPolicy -> PWSalt -> PWData
-- | the password policy
[_pwPolicy] :: PWData -> PWPolicy
-- | random data used to generate the password
[_pwSalt] :: PWData -> PWSalt
-- | defines a password policy
data PWPolicy
PWPolicy :: Int -> Int -> Int -> Int -> Maybe Int -> PWPolicy
-- | password length
[_pwLength] :: PWPolicy -> Int
-- | the minimum number of upper case characters
[_pwUpper] :: PWPolicy -> Int
-- | the minimum number of lower case characters
[_pwLower] :: PWPolicy -> Int
-- | the minimum number of digits
[_pwDigits] :: PWPolicy -> Int
-- | the minimum number of non-alphanumeric characters (not allowed if
-- Nothing)
[_pwSpecial] :: PWPolicy -> Maybe Int
-- | the "salt" used to generate a password
newtype PWSalt
PWSalt :: ByteString -> PWSalt
[runPWSalt] :: PWSalt -> ByteString
pwPolicy :: Lens' PWData PWPolicy
pwSalt :: Lens' PWData PWSalt
pwLength :: Lens' PWPolicy Int
pwUpper :: Lens' PWPolicy Int
pwLower :: Lens' PWPolicy Int
pwDigits :: Lens' PWPolicy Int
pwSpecial :: Lens' PWPolicy (Maybe Int)
-- | default (empty) password database
newPWDatabase :: PWDatabase
-- | builds a new PWData
newPWData :: RandomGen g => g -> (PWData, g)
-- | default password policy
newPWPolicy :: PWPolicy
-- | builds a new salt
newPWSalt :: RandomGen g => g -> (PWSalt, g)
-- | validates a password database
validatePWDatabase :: PWDatabase -> Bool
-- | validates password data
validatePWData :: PWData -> Bool
-- | validates a password policy
validatePWPolicy :: PWPolicy -> Bool
-- | generates a password
pwGenerate :: String -> PWData -> Maybe String
-- | counts upper case characters in a password
pwCountUpper :: String -> Int
-- | counts lower case characters in a password
pwCountLower :: String -> Int
-- | counts digits in a password
pwCountDigits :: String -> Int
-- | counts special characters in a password
pwCountSpecial :: String -> Int
-- | counts characters matching a specific constraint
pwCount :: (Char -> Bool) -> String -> Int
-- | checks to see if a service is in the database
pwHasService :: String -> PWDatabase -> Bool
-- | adds a service to the database, or overwrites an existing one
pwSetService :: String -> PWData -> PWDatabase -> PWDatabase
-- | attempts to get a service from the database
pwGetService :: String -> PWDatabase -> Maybe PWData
-- | removes a service from the database
pwRemoveService :: String -> PWDatabase -> PWDatabase
-- | searches for a service
pwSearch :: String -> PWDatabase -> [String]
instance Data.Aeson.Types.FromJSON.FromJSON Password.PWData
instance Data.Aeson.Types.FromJSON.FromJSON Password.PWPolicy
instance Data.Aeson.Types.FromJSON.FromJSON Password.PWSalt
instance Data.Aeson.Types.ToJSON.ToJSON Password.PWData
instance Data.Aeson.Types.ToJSON.ToJSON Password.PWPolicy
instance Data.Aeson.Types.ToJSON.ToJSON Password.PWSalt
instance GHC.Show.Show Password.PWPolicy
instance GHC.Classes.Eq Password.PWPolicy
instance GHC.Show.Show Password.PWSalt
instance GHC.Classes.Eq Password.PWSalt
instance GHC.Show.Show Password.PWData
instance GHC.Classes.Eq Password.PWData