diff options
author | Egor Tensin <Egor.Tensin@gmail.com> | 2016-10-17 08:05:40 +0300 |
---|---|---|
committer | Egor Tensin <Egor.Tensin@gmail.com> | 2016-10-17 08:05:40 +0300 |
commit | 7100d6af6d22ade0914fa5f8275401e37ca9610f (patch) | |
tree | 60fc298154ef4a71fdfde2b15162a1c5ec5478d0 /utils/decrypt_file.cpp | |
parent | fix compiler warnings (diff) | |
download | aes-tools-7100d6af6d22ade0914fa5f8275401e37ca9610f.tar.gz aes-tools-7100d6af6d22ade0914fa5f8275401e37ca9610f.zip |
utils: code dedupe
Diffstat (limited to 'utils/decrypt_file.cpp')
-rw-r--r-- | utils/decrypt_file.cpp | 43 |
1 files changed, 3 insertions, 40 deletions
diff --git a/utils/decrypt_file.cpp b/utils/decrypt_file.cpp index 2697338..3bbbb06 100644 --- a/utils/decrypt_file.cpp +++ b/utils/decrypt_file.cpp @@ -4,65 +4,28 @@ // Distributed under the MIT License. #include "file_cmd_parser.hpp" +#include "helpers/file.hpp" #include <aesxx/all.hpp> #include <boost/program_options.hpp> -#include <cstdlib> - #include <exception> -#include <fstream> #include <iostream> -#include <iterator> #include <string> #include <vector> namespace { - std::ifstream::pos_type get_file_size(const std::string& path) - { - std::ifstream ifs; - ifs.exceptions(std::ifstream::badbit | std::ifstream::failbit); - ifs.open(path, std::ifstream::binary | std::ifstream::ate); - return ifs.tellg(); - } - - std::vector<char> read_file(const std::string& path) - { - const auto size = static_cast<std::size_t>(get_file_size(path)); - - std::ifstream ifs; - ifs.exceptions(std::ifstream::badbit | std::ifstream::failbit); - ifs.open(path, std::ifstream::binary); - - std::vector<char> src_buf; - src_buf.reserve(size); - src_buf.assign( - std::istreambuf_iterator<char>(ifs), - std::istreambuf_iterator<char>()); - return src_buf; - } - - void write_file( - const std::string& path, - const std::vector<unsigned char>& src) - { - std::ofstream ofs; - ofs.exceptions(std::ofstream::badbit | std::ofstream::failbit); - ofs.open(path, std::ofstream::binary); - ofs.write(reinterpret_cast<const char*>(src.data()), src.size()); - } - void decrypt_file( aes::Box& box, const std::string& ciphertext_path, const std::string& plaintext_path) { - const auto ciphertext_buf = read_file(ciphertext_path); + const auto ciphertext_buf = file::read_file(ciphertext_path); const auto plaintext_buf = box.decrypt_buffer( ciphertext_buf.data(), ciphertext_buf.size()); - write_file(plaintext_path, plaintext_buf); + file::write_file(plaintext_path, plaintext_buf); } void decrypt_file(const Settings& settings) |