if ($subkey_id < 0
) { throw new SodiumException('subkey_id cannot be negative'
);
} if (ParagonIE_Sodium_Core_Util::
strlen($context) !== self::CRYPTO_KDF_CONTEXTBYTES
) { throw new SodiumException('context should be SODIUM_CRYPTO_KDF_CONTEXTBYTES bytes'
);
} if (ParagonIE_Sodium_Core_Util::
strlen($key) !== self::CRYPTO_KDF_KEYBYTES
) { throw new SodiumException('key should be SODIUM_CRYPTO_KDF_KEYBYTES bytes'
);
} $salt = ParagonIE_Sodium_Core_Util::
store64_le($subkey_id);
$state = self::
crypto_generichash_init_salt_personal( $key,
$subkey_len,
$salt,
$context );
return self::
crypto_generichash_final($state,
$subkey_len);
} /**
* @return string
* @throws Exception
* @throws Error
*/