hkdf_extract = (hash, hash_len, ikm, salt) => {
  const b_ikm = Buffer.isBuffer(ikm) ? ikm : Buffer.from(ikm)
  const b_salt = (salt && salt.length) ? Buffer.from(salt) : Buffer.alloc(hash_len, 0)

  return createHmac(hash, b_salt).update(b_ikm).digest()
}
HKDF extract action.

@func
@alias hkdf.extract
@param {string} hash - Hash algorithm
@param {integer} hash_len - Hash digest length
@param {Buffer|string} ikm - Initial Keying Material
@param {Buffer|string} salt - Optional salt (recommended)
@returns {Buffer} A buffer with pseudorandom key

@note Values are hardcoded with fallback for unknown algorithms.