(** {{:https://tools.ietf.org/html/rfc7914} The scrypt Password-Based Key
Derivation Function} specifies the password-based key derivation function
scrypt. The function derives one or more secret keys from a secret string.
It is based on memory-hard functions which offer added protection against
attacks using custom hardware. *)
val derive :
password:string ->
salt:string ->
n:int ->
r:int ->
p:int ->
dk_len:int32 ->
string
(** [derive ~password ~salt ~n ~r ~p ~dk_len] is [dk], the derived key of
[dk_len] octets. [n], the cost parameter, must be larger than 1 and a power
of 2. [p], the parallelization parameter, must be a possitive integer and
less than or equal to 2^32 - 1 / (4 * r)
@raise Invalid_argument when either [n], [p] or [dk_len] are not valid. *)