Safe Haskell | None |
---|---|
Language | Haskell2010 |
Query haveibeenpwned database to check basic password strength in a secure way.
By checking new user passwords against a database of leaked passwords you get some means for rejecting very weak or just leaked passwords.
Synopsis
- data HaveIBeenPwnedConfig = HaveIBeenPwnedConfig {}
- data HaveIBeenPwnedResult
- class Monad m => MonadPwned m where
- haveIBeenPwned :: Text -> m HaveIBeenPwnedResult
- newtype PwnedT m a = PwnedT {
- unPwnedT :: ReaderT HaveIBeenPwnedConfig m a
- runPwnedT :: PwnedT m a -> HaveIBeenPwnedConfig -> m a
- mapPwnedT :: (m a -> n b) -> PwnedT m a -> PwnedT n b
- passwdDigest :: Text -> (Text, Text)
- parseHIBPResponse :: ByteString -> Text -> HaveIBeenPwnedResult
Documentation
data HaveIBeenPwnedConfig Source #
data HaveIBeenPwnedResult Source #
Result of a password check.
It is either considered secure, insecure or we can't say because of an error.
HaveIBeenPwnedResult_Secure | We could not find the password in any database, thus it is considered "secure" as far as this library is concerned. |
HaveIBeenPwnedResult_Pwned Int | How many times the password was found in public places. Usually this will be a value greater than 0, but in any case if you hit this constructor you must assume tha password has been leaked. |
HaveIBeenPwnedResult_Error | The check failed for some reason. We can't say anything about the password quality. |
Instances
Eq HaveIBeenPwnedResult Source # | |
Defined in HaveIBeenPwned (==) :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> Bool # (/=) :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> Bool # | |
Ord HaveIBeenPwnedResult Source # | |
Defined in HaveIBeenPwned compare :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> Ordering # (<) :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> Bool # (<=) :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> Bool # (>) :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> Bool # (>=) :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> Bool # max :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> HaveIBeenPwnedResult # min :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> HaveIBeenPwnedResult # | |
Show HaveIBeenPwnedResult Source # | |
Defined in HaveIBeenPwned showsPrec :: Int -> HaveIBeenPwnedResult -> ShowS # show :: HaveIBeenPwnedResult -> String # showList :: [HaveIBeenPwnedResult] -> ShowS # |
class Monad m => MonadPwned m where Source #
haveIBeenPwned :: Text -> m HaveIBeenPwnedResult Source #
Returns the number of disclosures the supplied password has been seen in.
If this is not zero, do not use the supplied password, it is known to hackers. If it *is* zero, it might still not be safe, only that if it is compromised, that is not yet known.
https://haveibeenpwned.com/API/v2#SearchingPwnedPasswordsByRange
Instances
(MonadLogger m, MonadIO m) => MonadPwned (PwnedT m) Source # | |
Defined in HaveIBeenPwned haveIBeenPwned :: Text -> PwnedT m HaveIBeenPwnedResult Source # |
Instances
MonadTrans PwnedT Source # | |
Defined in HaveIBeenPwned | |
MonadReader r m => MonadReader r (PwnedT m) Source # | |
Monad m => Monad (PwnedT m) Source # | |
Functor m => Functor (PwnedT m) Source # | |
Applicative m => Applicative (PwnedT m) Source # | |
MonadIO m => MonadIO (PwnedT m) Source # | |
Defined in HaveIBeenPwned | |
MonadLogger m => MonadLogger (PwnedT m) Source # | |
Defined in HaveIBeenPwned | |
(MonadLogger m, MonadIO m) => MonadPwned (PwnedT m) Source # | |
Defined in HaveIBeenPwned haveIBeenPwned :: Text -> PwnedT m HaveIBeenPwnedResult Source # |
runPwnedT :: PwnedT m a -> HaveIBeenPwnedConfig -> m a Source #
passwdDigest :: Text -> (Text, Text) Source #
Get the sha1 digest for the supplied password, split into two parts, to agree with the hibp api.
parseHIBPResponse :: ByteString -> Text -> HaveIBeenPwnedResult Source #
The hibp response is a line separated list of colon separated hash *suffixes* and a number indicating the number of times that password(hash) has been seen in known publicly disclosed leaks