# Changelog

## 5.4.0

* Changes
  * Added deprecation warnings to add_hash and check_pass

## 5.3.3

* Changes
  * updated documentation and README

## 5.3.0

* Changes
  * changed `add_hash` so that it does NOT set the password to nil

## 5.2.0

* Enhancements
  * updated documentation for the Comeonin module

## 5.1.0

* Enhancements
  * add a behaviour_test module to be used by implementations of the Comeonin behaviours

## 5.0.0

* Enhancements
  * updated Comeonin to be a specification for password hashing libraries
    * it offers the Comeonin and Comeonin.PasswordHash behaviours

## 4.1.2

* Bug fixes
  * made sure that the `hash_key` option is used if present

## 4.1.1

* Changes
  * changed `check_pass` with statement to case - in an attempt to suppress dialyzer warnings

## 4.1.0

* Enhancements
  * added `hash_key` option to `check_pass`
    * as with version 4.0, `check_pass` will use `:password_hash` / `:encrypted_password` if present

## 4.0.0

* Enhancements
  * Added support for Argon2 (as an optional dependency - argon2_elixir)
  * Added higher-level helper functions to each algorithm's module
    * These functions accept / return maps and should reduce code use when adding password hashes / checking passwords
  * Improved the statistics function in each module - `report`
* Changes
  * Made all the hashing algorithms optional dependencies
  * Moved the configuration to the separate dependency libraries
  * Removed support for one-time passwords
    * This is now a separate library - OneTimePassEcto ("https://github.com/riverrun/one_time_pass_ecto")

## 3.2.0

* Bug fixes
  * Shortening user-supplied salts to 128 bits - making it compatible with other implementations

## 3.1.0

* Changes
  * Now forcing a recompile of C code for Windows users

## 3.0.0

* Enhancements
  * Small changes to NIF code to make it more scheduler-friendly
  * Improved documentation with respect to Argon2
* Changes
  * Now using `elixir_make` to help compile the C code

## 2.6.0

* Enhancements
  * Improved Windows build to prevent build failure when upgrading Erlang versions

## 2.4.0

* Enhancements
  * Improved Windows build error messages
* Changes
  * Changed behavior for incorrect input to Bcrypt.gen_salt

## 2.3.0

* Enhancements
  * Added support for one-time passwords (HOTP, TOTP) for use in two factor authentication

## 2.2.0

* Changes
  * Improved documentation for Windows builds
  * Updated the required Elixir version to 1.2

## 2.1.0

* Enhancements
  * Added legacy option to Comeonin.Bcrypt.gen_salt so that hashes with the older $2a$ prefix can be more easily generated
  * To try to solve the load errors after upgrading Erlang / Elixir:
    * Force C code to be recompiled every time `deps.compile` is called
    * Added basic upgrade function to the NIF library
  * To be compatible with the nerves project:
    * Added CROSSCOMPILE option to the Makefile
    * Stopped the library autoloading on compilation (requires Elixir 1.2.2)

## 2.0.0 (2015-12-17)

* Changes
  * Increased the default number of rounds for pbkdf2_sha512 to 100_000
  * Removed `create_hash` and `create_user` functions
  * Moved the password strength checker and random password generator to a separate package, called NotQwerty123
    * This means that i18n support has been moved to NotQwerty123

## 1.6.0 (2015-11-17)

* Changes
  * Edited C code and deleted unused functions

## 1.5.0 (2015-11-10)

* Changes
  * Moved gettext support to `comeonin_i18n` optional dependency
  * Removed forced compilation of C code in dev and prod environments

## 1.4.0 (2015-11-06)

* Enhancements
  * Added gettext support
  * Added Japanese translations for messages

## 1.3.0 (2015-10-18)

* Enhancements
  * Improved the efficiency of the common password check for the `strong_password` function
  * Added more information to the Mix build errors
* Changes
  * Forcing compilation of C code in dev and prod environments

## 1.2.0 (2015-09-26)

* Enhancements
  * Added a common option to the `strong_password` check. This checks for passwords that are easy to guess, or common
  * Improved random password generator - added a check to ensure it is strong and set the minimum length to 8 characters

## 1.1.4 (2015-09-25)

* Bug fix
  * Removed `random_bytes` function. Now calling :crypto.strong_rand_bytes directly

## 1.1.0 (2015-07-28)

* Changes
  * Divided the `strong password` check into two parts: minimum length and check for punctuation
  characters and digits
  * Removed configuration values for password length for generated passwords and minimum length of passwords
  for the password check

## 1.0.5 (2015-07-14)

* Bug fix
  * Replaced `Mix.Shell.info` with `IO.binwrite` to prevent compile errors with certain character encodings

## 1.0.1 (2015-05-31)

* Enhancements
  * Enabled the create_user function to be used with atoms as keys as well as strings

## 1.0.0 (2015-05-20)

* Changes
  * Renamed signup_user, function to check password strength before hashing the password, to create_user
* Enhancements
  * Added create_user function which takes a map, removes the "password" entry and adds a "password_hash" entry

## 0.11.0 (2015-05-19)

* Changes
  * Renamed hashpwsalt/2 to signup_user/1

## 0.10.0 (2015-05-14)

* Changes
  * Removed log_rounds, or rounds, parameter for the function hashpwsalt
  * Added option to check password (for strength) in the function hashpwsalt (hashpwsalt/2)

## 0.9.0 (2015-05-08)

* Enhancements
  * Added random password generator
  * Added optional check to test if passwords have digits and punctuation characters
* Bug fixes
  * Added information about password strength and password policies to the documentation

## 0.8.2 (2015-05-02)

* Bug fixes
  * Updated Windows build and improved error information at compile time

## 0.8.0 (2015-04-20)

* Bug fixes
  * Updated bcrypt to support non-ascii characters in the password (pbkdf2 already supports these characters)

## 0.7.0 (2015-04-18)

* Enhancements
  * Use crypto.strong_rand_bytes by default for generating random numbers

## 0.6.0 (2015-04-17)

* Enhancements
  * Updated bcrypt implementation to only call C functions for the most expensive operations

## 0.5.0 (2015-04-14)

* Enhancements
  * Updated bcrypt implementation so that long-running NIFs are cut to a minimum

## 0.4.0 (2015-04-05)

* Enhancements
  * Updated pbkdf2_sha512 to prevent users from calling `hashpass` without a salt

## 0.3.0 (2015-03-04)

* Enhancements
  * Updated bcrypt to version 1.5.2

## v0.2.4 (2015-02-26)

* Enhancements
  * Added configuration options for number of log_rounds, or rounds

## v0.2.2 (2015-01-25)

* Enhancements
  * Improved documentation about the recommended time the functions should take
  * Increased default number of rounds for pbkdf2_sha512 from 40000 to 60000
  * Improved implementation of dummy check

* Changes
  * Removed the `salt_length` optional argument from `Comeonin.Pbkdf2.hashpwsalt`. The only optional argument to this function is now the number of rounds

## v0.2.0 (2015-01-21)

* Enhancements
  * Added support for pbkdf2_sha512
  * Added Travis integration
  * Added timing functions to help developers adjust the complexity of the key derivation functions

* Changes
  * Removed the hashing and check functions from the main Comeonin module

## v0.1.1

* Bug fixes
  * Enable build on OS X

## v0.1.0

* Bcrypt authentication
