/** * /mnt/z/my_git/RCRS-CSD-327/include/Utils.hpp * @file Utils.hpp * @author Avinal Kumar * @since March 04, 2021 * * Utilities */ // include blowfish library #include // include standard headers #include #include #include #include #include #include // defines namespace fs = std::filesystem; #if !defined(UTILS_HPP) #define UTILS_HPP namespace krypto { struct filestat { std::string filename; fs::path filepath; uint64_t filesize; fs::file_type filetype; std::time_t m_time; bool is_regular; filestat() {} // default constructor filestat(std::string const &file_name); filestat(filestat const &stat); // copy constructor void print(); private: template std::time_t to_time_t(TP tp) { using namespace std::chrono; auto sctp = time_point_cast(tp - TP::clock::now() + system_clock::now()); return system_clock::to_time_t(sctp); } }; class fileop { private: std::unordered_map _files; public: uint64_t read_file(std::string const &infile, std::vector &input_buf, filestat const &stat); uint64_t write_file(std::string const &outfile, std::vector &output_buf, uint64_t out_size); std::unordered_map scan_current_directory(); uint64_t pad_input(std::vector &input_buf, uint64_t in_size); uint64_t attach_key(std::vector &input_buf, std::string const &key, uint64_t in_size); }; } // namespace krypto #endif // UTILS_HPP