diff options
Diffstat (limited to 'checks/misc.cpp')
-rw-r--r-- | checks/misc.cpp | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/checks/misc.cpp b/checks/misc.cpp new file mode 100644 index 000000000..daf51beb8 --- /dev/null +++ b/checks/misc.cpp @@ -0,0 +1,74 @@ +/* public domain */ +#include <iostream> +#include <vector> +#include <string> + +#include <botan/pipe.h> +#include <botan/hex.h> +using namespace Botan; + +void strip_comments(std::string& line) + { + if(line.find('#') != std::string::npos) + line = line.erase(line.find('#'), std::string::npos); + } + +void strip_newlines(std::string& line) + { + while(line.find('\n') != std::string::npos) + line = line.erase(line.find('\n'), 1); + } + +/* Strip comments, whitespace, etc */ +void strip(std::string& line) + { + strip_comments(line); + + while(line.find(' ') != std::string::npos) + line = line.erase(line.find(' '), 1); + + while(line.find('\t') != std::string::npos) + line = line.erase(line.find('\t'), 1); + } + +SecureVector<byte> decode_hex(const std::string& in) + { + SecureVector<byte> result; + + try { + Botan::Pipe pipe(new Botan::Hex_Decoder); + pipe.process_msg(in); + result = pipe.read_all(); + } + catch(std::exception& e) + { + result.destroy(); + } + return result; + } + +std::string hex_encode(const byte in[], u32bit len) + { + Botan::Pipe pipe(new Botan::Hex_Encoder); + pipe.process_msg(in, len); + return pipe.read_all_as_string(); + } + +std::vector<std::string> parse(const std::string& line) + { + const char DELIMITER = ':'; + std::vector<std::string> substr; + std::string::size_type start = 0, end = line.find(DELIMITER); + while(end != std::string::npos) + { + substr.push_back(line.substr(start, end-start)); + start = end+1; + end = line.find(DELIMITER, start); + } + if(line.size() > start) + substr.push_back(line.substr(start)); + while(substr.size() <= 4) // at least 5 substr, some possibly empty + substr.push_back(""); + return substr; + } + |