private static Mac createHmacSha256() {
        try {
            return Mac.getInstance("HmacSHA256");
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }
Implementation of RFC-5869 HMAC-based Extract-and-Expand Key Derivation Function (HKDF).

<p>The HKDF is initialized ("extracted") from a (non-secret) salt and a secret key.
From this, any number of secret keys can be derived ("expanded") deterministically.</p>

<p>When multiple keys are to be derived from the same initial keying/salting material,
each separate key should use a distinct "context" in the {@link #expand(int, byte[])}
call. This ensures that there exists a domain separation between the keys.
Using the same context as another key on a HKDF initialized with the same salt+key
results in the exact same derived key material as that key.</p>

<p>This implementation only offers HMAC-SHA256-based key derivation.</p>

@see <a href="https://tools.ietf.org/html/rfc5869">RFC-5869</a>
@see <a href="https://en.wikipedia.org/wiki/HKDF">HKDF on Wikipedia</a>

@author vekterli
security-utils/src/main/java/com/yahoo/security/HKDF.java