 [det]crypto_data_hkdf(+Data, 
+Length, -Bytes, +Options)Concentrate possibly dispersed entropy of Data and then 
expand it to the desired length. Bytes is unified with a list 
of bytes of length Length, and is suitable as input 
keying material and initialization vectors to the symmetric encryption 
predicates.
[det]crypto_data_hkdf(+Data, 
+Length, -Bytes, +Options)Concentrate possibly dispersed entropy of Data and then 
expand it to the desired length. Bytes is unified with a list 
of bytes of length Length, and is suitable as input 
keying material and initialization vectors to the symmetric encryption 
predicates.
Admissible options are:
- algorithm(+Algorithm)
- A hashing algorithm as specified to crypto_data_hash/3. 
The default is a cryptographically secure algorithm. If you specify a 
variable, then it is unified with the algorithm that was used.
- info(+Info)
- Optional context and application specific information, specified as an 
atom, string or list of bytes. The default is the zero length 
atom” .
- salt(+List)
- Optionally, a list of bytes that are used as salt. The default is 
all zeroes.
- encoding(+Atom)
- Either utf8(default) oroctet, denoting the 
representation of Data as in crypto_data_hash/3.
The info/1 option can be used to 
generate multiple keys from a single master key, using for example 
values such as key and
iv, or the name of a file that is to be encrypted.
This predicate requires OpenSSL 1.1.0 or greater.
- See also
- - crypto_n_random_bytes/2 
to obtain a suitable salt. 
 - crypto_data_hash/3 to 
compute a HMAC signature.