Safe Haskell | None |
---|---|
Language | Haskell2010 |
HaveIBeenPwned
Description
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 :: Type -> Type) where
- haveIBeenPwned :: Text -> m HaveIBeenPwnedResult
- newtype PwnedT (m :: Type -> Type) 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 #
Constructors
HaveIBeenPwnedConfig | |
data HaveIBeenPwnedResult Source #
Result of a password check.
It is either considered secure, insecure or we can't say because of an error.
Constructors
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
Show HaveIBeenPwnedResult Source # | |
Defined in HaveIBeenPwned Methods showsPrec :: Int -> HaveIBeenPwnedResult -> ShowS # show :: HaveIBeenPwnedResult -> String # showList :: [HaveIBeenPwnedResult] -> ShowS # | |
Eq HaveIBeenPwnedResult Source # | |
Defined in HaveIBeenPwned Methods (==) :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> Bool # (/=) :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> Bool # | |
Ord HaveIBeenPwnedResult Source # | |
Defined in HaveIBeenPwned Methods compare :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> Ordering # (<) :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> Bool # (<=) :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> Bool # (>) :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> Bool # (>=) :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> Bool # max :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> HaveIBeenPwnedResult # min :: HaveIBeenPwnedResult -> HaveIBeenPwnedResult -> HaveIBeenPwnedResult # |
class Monad m => MonadPwned (m :: Type -> Type) where Source #
Methods
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 Methods haveIBeenPwned :: Text -> PwnedT m HaveIBeenPwnedResult Source # |
newtype PwnedT (m :: Type -> Type) a Source #
Constructors
PwnedT | |
Fields
|
Instances
MonadTrans PwnedT Source # | |
Defined in HaveIBeenPwned | |
MonadReader r m => MonadReader r (PwnedT m) Source # | |
Applicative m => Applicative (PwnedT m) Source # | |
Functor m => Functor (PwnedT m) Source # | |
Monad m => Monad (PwnedT m) Source # | |
MonadIO m => MonadIO (PwnedT m) Source # | |
Defined in HaveIBeenPwned | |
(MonadLogger m, MonadIO m) => MonadPwned (PwnedT m) Source # | |
Defined in HaveIBeenPwned Methods haveIBeenPwned :: Text -> PwnedT m HaveIBeenPwnedResult Source # | |
MonadLogger m => MonadLogger (PwnedT m) Source # | |
Defined in HaveIBeenPwned |
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