-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Generate easy-to-remember, hard-to-guess passwords -- -- Generates pronounceable, hard-to-guess passwords--as hard as Vince -- Carter's knee cartilage is. @package elocrypt @version 2.0.0 -- | Generate a letter frequency trigraph, based on a dictionary module Data.Elocrypt.Trigraph -- | Search for the character frequencies and return a weighted list findWeights :: String -> Maybe [(Char, Rational)] -- | Search for the character frequencies based on the first a two-letter -- string findFrequency :: String -> Maybe [Rational] -- | Fix frequencies if they are all 0, since MonadRandom prohibits this. -- In this case, use all 1s to give every item an equal weight defaultFrequencies :: [Rational] -> [Rational] -- | A map of character frequencies, based on a dictionary. The key is a -- two-letter string, and the value is a list of probabilities (a-z). -- It's form is: -- --
-- [("aa", [2,0,3,0,0,0,1,0,0,0,0,1,1,1,0,0,0,3,2,0,0,0,0,0,0,0]),
-- ...
-- ("zz", [7,0,0,0,1,0,0,0,7,0,0,17,0,0,2,0,0,0,0,0,0,0,1,0,5,0])]
--
frequencies :: [(String, [Rational])]
-- | Generate easy-to-remember, hard-to-guess passwords
module Data.Elocrypt
-- | Options for generating passwords or passphrases. Do not use this
-- constructor directly. Instead use genOptions to construct an
-- instance.
newtype GenOptions
GenOptions :: Bool -> GenOptions
[genCapitals] :: GenOptions -> Bool
-- | Default options for generating passwords or passphrases. This is the
-- preferred way to construct GenOptions.
genOptions :: GenOptions
-- | Generate a password using the generator g, returning the result and
-- the updated generator.
--
-- -- -- Generate a password of length 10 using the system generator -- myGenPassword :: IO (String, StdGen) -- myGenPassword = genPassword 10 genOptions `liftM` getStdGen -- --genPassword :: RandomGen g => Int -> GenOptions -> g -> (String, g) -- | Plural version of genPassword. Generates an infinite list of passwords -- using the generator g, returning the result and the updated generator. -- --
-- -- Generate 10 passwords of length 10 using the system generator -- myGenPasswords :: IO ([String], StdGen) -- myGenPasswords = ((ls, g) -> (ls, g) liftM genPasswords 10 10 genOptions liftM getStdGen --genPasswords :: RandomGen g => Int -> Int -> GenOptions -> g -> ([String], g) -- | Generate a password using the generator g, returning the result. -- --
-- -- Generate a password of length 10 using the system generator -- myNewPassword :: IO String -- myNewPassword = newPassword 10 genOptions `liftM` getStdGen -- --newPassword :: RandomGen g => Int -> GenOptions -> g -> String -- | Plural version of newPassword. Generates an infinite list of passwords -- using the generator g, returning the result -- --
-- -- Generate 10 passwords of length 10 using the system generator -- myNewPasswords :: IO [String] -- myNewPasswords = genPasswords 10 10 genOptions liftM getStdGen --newPasswords :: RandomGen g => Int -> Int -> GenOptions -> g -> [String] -- | Generate a password using the MonadRandom m. MonadRandom is exposed -- here for extra control. -- --
-- -- Generate a password of length 10 using the system generator -- myPassword :: IO String -- myPassword = evalRand (mkPassword 10 genOptions) `liftM` getStdGen -- --mkPassword :: MonadRandom m => Int -> GenOptions -> m String -- | Plural version of mkPassword. Generate an infinite list of passwords -- using the MonadRandom m. MonadRandom is exposed here for extra -- control. -- --
-- -- Generate an list of length 20 with passwords of length 10 using the system generator -- myMkPasswords :: IO [String] -- myMkPasswords = evalRand (mkPasswords 10 20 genOptions) `liftM` getStdGen --mkPasswords :: MonadRandom m => Int -> Int -> GenOptions -> m [String] -- | Generate a passphrase using the generator g, returning the result and -- the updated generator. -- --
-- -- Generate a passphrase of 10 words, each having a length between 6 and 12, -- -- using the system generator -- myGenPassphrase :: IO (String, StdGen) -- myGenPassphrase = genPassword 10 6 10 genOptions `liftM` getStdGen -- --genPassphrase :: RandomGen g => Int -> Int -> Int -> GenOptions -> g -> ([String], g) -- | Generate a passphrase using the generator g, returning the result. -- --
-- -- Generate a passphrase of 10 words, each having a length between 6 an 12, -- -- using the system generator. -- myNewPassphrase :: IO String -- myNewPassphrase = newPassphrase 10 6 12 `liftM` getStdGen -- --newPassphrase :: RandomGen g => Int -> Int -> Int -> GenOptions -> g -> [String] -- | Generate a finite number of words of random length (between -- min and max chars) using the MonadRandom m. -- MonadRandom is exposed here for extra control. -- --
-- -- Generate a passphrase of 10 words, each having a length between 6 and 12. -- myPassphrase :: IO String -- myPassphrase = evalRand (mkPassphrase 10 6 12) `liftM` getStdGen -- --mkPassphrase :: MonadRandom m => Int -> Int -> Int -> GenOptions -> m [String] -- | Generate two random characters. Uses trigragh to generate a -- weighted list. first2 :: MonadRandom m => GenOptions -> m String -- | Generate the last n characters using previous two characters and their -- trigraph lastN :: MonadRandom m => GenOptions -> Int -> String -> m String -- | Generate a random character based on the previous two characters and -- their trigraph next :: MonadRandom m => GenOptions -> String -> m Char -- | Randomly choose a letter from the trigraph nextLetter :: MonadRandom m => String -> m Char -- | Randomly capitalize a character 10% of the time capitalizeR :: MonadRandom m => Bool -> Char -> m Char instance GHC.Show.Show Data.Elocrypt.GenOptions instance GHC.Classes.Eq Data.Elocrypt.GenOptions