This repo provides packages for easily working with passwords in Haskell. This is mainly to be used for web applications that need to receive plain-text passwords from users, and store hashed passwords in a database.
The password-types package provides canonical datatypes for plain-text and hashed passwords. This package has minimal dependencies. It is meant to be used as a base for any other packages that wants to use these datatypes. The Data.Password.Types module contains the base datatypes.
The password package provides functions for working with plain-text and hashed passwords. Every algorithm has its own module in the form of Data.Password.ALGORITHM (e.g. Data.Password.Bcrypt) with the functions for the hashing and checking of passwords.
The password-instances package and Data.Password.Instances module adds convenient instances for passwords, like FromJSON and PersistField.
In general, if you are writing a web application and need to handle passwords, you should use the password package together with password-instances.
This project also provides password-cli a CLI to test and use password.