packages feed

webapp-0.0.1: Web/App/Password.hs

{-# LANGUAGE OverloadedStrings #-}

{-|
Module      : Web.App.Password
Copyright   : (c) Nathaniel Symer, 2015
License     : MIT
Maintainer  : nate@symer.io
Stability   : experimental
Portability : POSIX

Generate BCrypt hashes.
-}

module Web.App.Password
(
  -- * Password Hashing
  hashPassword
)
where

import Crypto.BCrypt hiding (hashPassword)
import qualified Data.ByteString.Char8 as B (pack,unpack)

-- | Hash a password with the most strict 'HashingPolicy'
hashPassword :: String -- ^ Password to hash
             -> IO (Maybe String)
hashPassword pwd = do
  hsh <- hashPasswordUsingPolicy (HashingPolicy 12 "$2b$") (B.pack pwd)
  return $ fmap B.unpack hsh