func Expand(hash func() hash.Hash, pseudorandomKey, info []byte) io.Reader
Expand returns a Reader, from which keys can be read, using the given pseudorandom key and optional context info, skipping the extraction step.
The pseudorandomKey should have been generated by Extract, or be a uniformly random or pseudorandom cryptographically strong key. See RFC 5869, Section 3.3. Most common scenarios will want to use New instead.
func Extract(hash func() hash.Hash, secret, salt []byte) []byte
Extract generates a pseudorandom key for use with Expand from an input secret and an optional independent salt.
Only use this function if you need to reuse the extracted key with multiple Expand invocations and different context values. Most common scenarios, including the generation of multiple keys, should use New instead.
func New(hash func() hash.Hash, secret, salt, info []byte) io.Reader
New returns a Reader, from which keys can be read, using the given hash, secret, salt and context info. Salt and info can be nil.