optional<CryConfigFile> CryConfigLoader::_loadConfig(const bf::path &filename) { string password = _askPasswordForExistingFilesystem(); std::cout << "Loading config file..." << std::flush; auto config = CryConfigFile::load(filename, password); if (config == none) { LOG(ERROR) << "Could not load config file. Wrong password?"; return none; } std::cout << "done" << std::endl; if (_cipherFromCommandLine != none && config->config()->Cipher() != *_cipherFromCommandLine) { throw std::runtime_error("Filesystem uses "+config->config()->Cipher()+" cipher and not "+*_cipherFromCommandLine+" as specified."); } return std::move(*config); }
optional<CryConfigFile> CryConfigLoader::_loadConfig(const bf::path &filename) { string password = _askPasswordForExistingFilesystem(); std::cout << "Loading config file (this can take some time)..." << std::flush; auto config = CryConfigFile::load(filename, password); if (config == none) { return none; } std::cout << "done" << std::endl; _checkVersion(*config->config()); #ifndef CRYFS_NO_COMPATIBILITY //Since 0.9.3-alpha set the config value cryfs.blocksizeBytes wrongly to 32768 (but didn't use the value), we have to fix this here. if (config->config()->Version() != "0+unknown" && VersionCompare::isOlderThan(config->config()->Version(), "0.9.3-rc1")) { config->config()->SetBlocksizeBytes(32832); } #endif if (config->config()->Version() != gitversion::VersionString()) { config->config()->SetVersion(gitversion::VersionString()); config->save(); } _checkCipher(*config->config()); return std::move(*config); }