aboutsummaryrefslogtreecommitdiffstats
path: root/doc/examples/toolbox.cpp
diff options
context:
space:
mode:
authorlloyd <[email protected]>2011-04-04 03:43:52 +0000
committerlloyd <[email protected]>2011-04-04 03:43:52 +0000
commit3b9bfbd07c3723662832caf5b1efe04de28b656d (patch)
treeee2a9324f384efead6e5bb87ac8374e7e8734c90 /doc/examples/toolbox.cpp
parent04db054f1ae8de572ee9c0cfe227e76f84096bd6 (diff)
Convert most of the documentation to reStructured Text, adding
a makefile to build it with Sphinx (http://sphinx.pocoo.org/). Previously credits.txt listed public domain code sources; instead directly credit the authors in the relevant files and delete that file. Drop the draft FIPS 140 security policy; I can't imagine FIPS 140 validation will ever happen, and if it does, I don't want anything to do with it. Also drop the internals doc, which was so out of date (and incomplete) as to be worthless. Move the tutorials and InSiTo pdfs into old/ for the time being, until anything relevant from them can be filtered out and converted into RST.
Diffstat (limited to 'doc/examples/toolbox.cpp')
-rw-r--r--doc/examples/toolbox.cpp235
1 files changed, 0 insertions, 235 deletions
diff --git a/doc/examples/toolbox.cpp b/doc/examples/toolbox.cpp
deleted file mode 100644
index 622a1f56f..000000000
--- a/doc/examples/toolbox.cpp
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
-* (C) 2009 Jack Lloyd
-*
-* Distributed under the terms of the Botan license
-*/
-
-#include <botan/botan.h>
-
-#if defined(BOTAN_HAS_COMPRESSOR_BZIP2)
- #include <botan/bzip2.h>
-#endif
-
-#if defined(BOTAN_HAS_COMPRESSOR_ZLIB)
- #include <botan/zlib.h>
-#endif
-
-#include <iostream>
-#include <fstream>
-
-using namespace Botan;
-
-#include "../../checks/getopt.h"
-
-class Encoder_Decoder
- {
- public:
- Encoder_Decoder(const std::string& command,
- bool decode,
- const std::vector<std::string>& args) :
- type(command),
- args(args),
- decode(decode)
- { }
-
- void run(std::istream& in, std::ostream& out)
- {
- Filter* filt = decode ? decoder(type) : encoder(type);
-
- DataSource_Stream src(in);
- Pipe pipe(filt, new DataSink_Stream(out));
- pipe.process_msg(src);
- }
-
- Filter* encoder(const std::string& type) const
- {
- if(type == "hex") return new Hex_Encoder;
- if(type == "base64") return new Base64_Encoder;
-
-#if defined(BOTAN_HAS_COMPRESSOR_BZIP2)
- if(type == "bzip2") return new Bzip_Compression;
-#endif
-
-#if defined(BOTAN_HAS_COMPRESSOR_ZLIB)
- if(type == "zlib") return new Zlib_Compression;
-#endif
- return 0;
- }
-
- Filter* decoder(const std::string& type) const
- {
- if(type == "hex") return new Hex_Decoder;
- if(type == "base64") return new Base64_Decoder;
-
-#if defined(BOTAN_HAS_COMPRESSOR_BZIP2)
- if(type == "bzip2") return new Bzip_Decompression;
-#endif
-
-#if defined(BOTAN_HAS_COMPRESSOR_ZLIB)
- if(type == "zlib") return new Zlib_Decompression;
-#endif
-
- return 0;
- }
-
- private:
- std::string type;
- std::vector<std::string> args;
- bool decode;
- };
-
-void run_command(const std::string& command,
- const std::vector<std::string>& arguments,
- const OptionParser& opts)
- {
- if(command == "hex" ||
- command == "base64" ||
- command == "bzip2" ||
- command == "zlib")
- {
- bool decode = opts.is_set("decode");
-
- std::string output = opts.value_or_else("output", "-");
- std::string input = opts.value_or_else("input", "-");
-
- Encoder_Decoder enc_dec(command, decode, arguments);
-
- try
- {
- if(output == "-")
- {
- if(input == "-")
- enc_dec.run(std::cin, std::cout);
- else
- {
- std::ifstream in(input.c_str());
- enc_dec.run(in, std::cout);
- }
- }
- else // output != "-"
- {
- std::ofstream out(output.c_str());
-
- if(input == "-")
- enc_dec.run(std::cin, out);
- else
- {
- std::ifstream in(input.c_str());
- enc_dec.run(in, out);
- }
- }
- }
- catch(Botan::Stream_IO_Error& e)
- {
- std::cout << "I/O failure - " << e.what() << '\n';
- }
- }
- else if(command == "hash" ||
- command == "sha1" ||
- command == "md5")
- {
- std::string hash;
-
- if(command == "md5")
- hash = "MD5";
- if(command == "sha1")
- hash = "SHA-160";
- else
- hash = opts.value_or_else("hash", "SHA-160"); // sha1 is default
-
- Pipe pipe(new Hash_Filter(get_hash(hash)),
- new Hex_Encoder(false, 0, Hex_Encoder::Lowercase));
-
- for(size_t i = 0; i != arguments.size(); ++i)
- {
- std::string file_name = arguments[i];
-
- u32bit previously = pipe.message_count();
-
- if(file_name == "-")
- {
- pipe.start_msg();
- std::cin >> pipe;
- pipe.end_msg();
- }
- else
- {
- std::ifstream in(file_name.c_str());
- if(in)
- {
- pipe.start_msg();
- in >> pipe;
- pipe.end_msg();
- }
- else
- std::cerr << "Could not read " << file_name << '\n';
- }
-
- if(pipe.message_count() > previously)
- std::cout << pipe.read_all_as_string(Pipe::LAST_MESSAGE) << " "
- << file_name << '\n';
- }
-
- }
- else
- {
- std::cerr << "Command " << command << " not known\n";
- }
- }
-
-int main(int argc, char* argv[])
- {
- LibraryInitializer init;
-
- OptionParser opts("help|version|seconds=|"
- "input=|output=|decode|"
- "hash=|key=");
-
- try
- {
- opts.parse(argv);
- }
- catch(std::runtime_error& e)
- {
- std::cout << "Command line problem: " << e.what() << '\n';
- return 2;
- }
-
- if(opts.is_set("version") || argc <= 1)
- {
- std::cerr << "Botan Toolbox v" << version_string() << '\n';
- std::cerr << "Commands: hash hex base64 ";
-#if defined(BOTAN_HAS_COMPRESSOR_BZIP2)
- std::cerr << "bzip2 ";
-#endif
-
-#if defined(BOTAN_HAS_COMPRESSOR_ZLIB)
- std::cerr << "zlib ";
-#endif
-
- std::cerr << "\n";
-
- return 0;
- }
-
- if(opts.is_set("help"))
- {
- std::vector<std::string> what = opts.leftovers();
-
- for(size_t i = 0; i != what.size(); ++i)
- std::cerr << what[i] << "? Never heard of it\n";
- return 0;
- }
-
- std::vector<std::string> args = opts.leftovers();
-
- if(args.size() == 0)
- return 0;
-
- std::string command = args[0];
- args.erase(args.begin());
-
- run_command(command, args, opts);
-
- return 0;
- }