From 3304264990b96c09b174716ecb8da63d24457ae8 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Sat, 21 Dec 2019 14:50:03 +0300 Subject: utils/ -> aesxx/utils/ --- utils/encrypt_block.cpp | 215 ------------------------------------------------ 1 file changed, 215 deletions(-) delete mode 100644 utils/encrypt_block.cpp (limited to 'utils/encrypt_block.cpp') diff --git a/utils/encrypt_block.cpp b/utils/encrypt_block.cpp deleted file mode 100644 index 0b87364..0000000 --- a/utils/encrypt_block.cpp +++ /dev/null @@ -1,215 +0,0 @@ -// Copyright (c) 2015 Egor Tensin -// This file is part of the "AES tools" project. -// For details, see https://github.com/egor-tensin/aes-tools. -// Distributed under the MIT License. - -#include "block_cmd_parser.hpp" -#include "block_dumper.hpp" -#include "block_input.hpp" - -#include - -#include - -#include -#include -#include -#include - -namespace -{ - template - void encrypt_with_mode( - const Input& input, - bool verbose = false) - { - typename aes::Types::Block iv; - - if (aes::ModeRequiresInitVector::value) - { - aes::from_string(iv, input.iv); - if (verbose) - dump_iv(iv); - } - - typename aes::Types::Key key; - aes::from_string(key, input.key); - if (verbose) - dump_key(key); - - aes::EncryptWrapper encrypt{key, iv}; - if (verbose) - dump_wrapper(encrypt); - - for (const auto& input_block_string : input.blocks) - { - typename aes::Types::Block plaintext, ciphertext; - aes::from_string(plaintext, input_block_string); - - encrypt.encrypt_block(plaintext, ciphertext); - - if (verbose) - { - dump_plaintext(plaintext); - dump_ciphertext(ciphertext); - dump_next_iv(encrypt); - } - else - { - std::cout << aes::to_string(ciphertext) << '\n'; - } - } - } - - template - void encrypt_with_algorithm( - aes::Mode mode, - const Input& input, - bool verbose = false) - { - switch (mode) - { - case AES_ECB: - encrypt_with_mode(input, verbose); - break; - - case AES_CBC: - encrypt_with_mode(input, verbose); - break; - - case AES_CFB: - encrypt_with_mode(input, verbose); - break; - - case AES_OFB: - encrypt_with_mode(input, verbose); - break; - - case AES_CTR: - encrypt_with_mode(input, verbose); - break; - - default: - throw std::runtime_error("the selected mode of operation is not implemented"); - break; - } - } - - void encrypt_using_cxx_api( - aes::Algorithm algorithm, - aes::Mode mode, - const Input& input, - bool verbose = false) - { - switch (algorithm) - { - case AES_AES128: - encrypt_with_algorithm(mode, input, verbose); - break; - - case AES_AES192: - encrypt_with_algorithm(mode, input, verbose); - break; - - case AES_AES256: - encrypt_with_algorithm(mode, input, verbose); - break; - - default: - throw std::runtime_error("the selected algorithm is not implemented"); - break; - } - } - - void encrypt_using_particular_box( - aes::Box& box, - const std::vector& input_block_strings) - { - for (const auto& input_block_string : input_block_strings) - { - aes::Box::Block plaintext; - box.parse_block(plaintext, input_block_string); - - aes::Box::Block ciphertext; - box.encrypt_block(plaintext, ciphertext); - std::cout << box.format_block(ciphertext) << '\n'; - } - } - - void encrypt_using_boxes( - aes::Algorithm algorithm, - aes::Mode mode, - const Input& input) - { - aes::Box::Key key; - aes::Box::parse_key(key, algorithm, input.key); - - if (aes::mode_requires_init_vector(mode)) - { - aes::Box::Block iv; - aes::Box::parse_block(iv, algorithm, input.iv); - aes::Box box{algorithm, key, mode, iv}; - - encrypt_using_particular_box(box, input.blocks); - } - else - { - aes::Box box{algorithm, key}; - encrypt_using_particular_box(box, input.blocks); - } - } -} - -int main(int argc, char** argv) -{ - try - { - BlockSettings settings{argv[0]}; - - try - { - settings.parse(argc, argv); - } - catch (const boost::program_options::error& e) - { - settings.usage_error(e); - return 1; - } - - if (settings.exit_with_usage) - { - settings.usage(); - return 0; - } - - for (const auto& input : settings.inputs) - { - if (settings.use_boxes) - { - encrypt_using_boxes( - settings.algorithm, - settings.mode, - input); - } - else - { - encrypt_using_cxx_api( - settings.algorithm, - settings.mode, - input, - settings.verbose); - } - } - } - catch (const aes::Error& e) - { - std::cerr << e; - return 1; - } - catch (const std::exception& e) - { - std::cerr << e.what() << "\n"; - return 1; - } - return 0; -} -- cgit v1.2.3