#include "Configuration.h" #include "CommandlineInterface.h" void Configuration::Parse() { DecideModule(); DecideInputFrom(); DecideOutputTo(); DecideIOBaseFormat(); return; } void Configuration::DecideInputFrom() { if (CommandlineInterface::Get().HasParam("--intext")) { inputFrom = INPUT_FROM::PARAMETER; } else if (CommandlineInterface::Get().HasParam("--infile")) { inputFrom = INPUT_FROM::FILE; inputFilename = CommandlineInterface::Get()["--infile"].GetString(); } else { inputFrom = INPUT_FROM::STDIN; } return; } void Configuration::DecideOutputTo() { // If module is "generate keyfile", we'll always write to a file. if (activeModule == MODULE::GENERATE_KEYFILE) { outputTo = OUTPUT_TO::FILE; outputFilename = CommandlineInterface::Get()["--generate-keyfile"].GetString(); } // Else, check if we have an --ofile defined. if (CommandlineInterface::Get().HasParam("--ofile")) { outputTo = OUTPUT_TO::FILE; outputFilename = CommandlineInterface::Get()["--ofile"].GetString(); } else { outputTo = OUTPUT_TO::STDOUT; } return; } void Configuration::DecideModule() { if (CommandlineInterface::Get().HasParam("--encrypt")) { activeModule = MODULE::ENCRYPT; } else if (CommandlineInterface::Get().HasParam("--decrypt")) { activeModule == MODULE::DECRYPT; } else if (CommandlineInterface::Get().HasParam("--hash")) { activeModule == MODULE::HASH; } else if (CommandlineInterface::Get().HasParam("--generate-keyfile")) { activeModule == MODULE::GENERATE_KEYFILE; } return; } void Configuration::DecideIOBaseFormat() { // Do we have any iobase specified? if (CommandlineInterface::Get().HasParam("--iobase-bytes")) { iobaseFormat = IOBASE_FORMAT::BASE_BYTES; return; } else if (CommandlineInterface::Get().HasParam("--iobase-2")) { iobaseFormat = IOBASE_FORMAT::BASE_2; return; } else if (CommandlineInterface::Get().HasParam("--iobase-8")) { iobaseFormat = IOBASE_FORMAT::BASE_8; return; } else if (CommandlineInterface::Get().HasParam("--iobase-10")) { iobaseFormat = IOBASE_FORMAT::BASE_10; return; } else if (CommandlineInterface::Get().HasParam("--iobase-16")) { iobaseFormat = IOBASE_FORMAT::BASE_16; return; } else if (CommandlineInterface::Get().HasParam("--iobase-64")) { iobaseFormat = IOBASE_FORMAT::BASE_64; return; } else if (CommandlineInterface::Get().HasParam("--iobase-uwu")) { iobaseFormat = IOBASE_FORMAT::BASE_UWU; return; } else if (CommandlineInterface::Get().HasParam("--iobase-ugh")) { iobaseFormat = IOBASE_FORMAT::BASE_UGH; return; } // So we have no iobase explicitly specified.. Let's default.. // If we are encrypting or hashing, if ( (activeModule == MODULE::ENCRYPT) || (activeModule == MODULE::HASH) ) { // and input comes from a parameter, // and output goes to stdout, let's assume base-16. if ( (inputFrom == INPUT_FROM::PARAMETER) && (outputTo == OUTPUT_TO::STDOUT) ) { iobaseFormat = IOBASE_FORMAT::BASE_16; return; } // Any other case whilst encrypting, we'll assume base-bytes. else { iobaseFormat = IOBASE_FORMAT::BASE_BYTES; return; } } // Else, if we are decrypting, else if (activeModule == MODULE::DECRYPT) { // and input comes from a parameter, we'll assume base-16. if (inputFrom == INPUT_FROM::PARAMETER) { iobaseFormat = IOBASE_FORMAT::BASE_16; return; } // Any other case whilst decrypting, we'll assume base-bytes. else { iobaseFormat = IOBASE_FORMAT::BASE_BYTES; return; } } // Else, if we are generating a keyfile, iobase format is bytes. else if (activeModule == MODULE::GENERATE_KEYFILE) { iobaseFormat = IOBASE_FORMAT::BASE_BYTES; return; } return; } std::string Configuration::inputFilename; std::string Configuration::outputFilename; Configuration::MODULE Configuration::activeModule; Configuration::IOBASE_FORMAT Configuration::iobaseFormat; Configuration::INPUT_FROM Configuration::inputFrom; Configuration::OUTPUT_TO Configuration::outputTo;