protected static function getConfig(string $header, string $mode = 'encrypt') : Config
{
if (\ord($header[0]) !== 49 || \ord($header[1]) !== 65) {
throw new InvalidMessage('Invalid version tag');
}
$major = \ord($header[2]);
$minor = \ord($header[3]);
if ($mode === 'encrypt') {
return new Config(self::getConfigEncrypt($major, $minor));
} elseif ($mode === 'seal') {
return new Config(self::getConfigSeal($major, $minor));
} elseif ($mode === 'checksum') {
return new Config(self::getConfigChecksum($major, $minor));
}
throw new InvalidType('Invalid configuration mode');
}