diff options
43 files changed, 498 insertions, 2506 deletions
@@ -22,7 +22,7 @@ A couple of useful utilities built on top of the library are included. Namely, * [the file encryption utilities](utils/file#file-encryption-utilities), -* and [the block encryption utilities](utils/block/cxx#block-encryption-utilities) (used mainly for testing). +* and [the block encryption utilities](utils/block#block-encryption-utilities) (used mainly for testing). ## Running on older CPUs diff --git a/test/README.md b/test/README.md index 7b3b128..5121a33 100644 --- a/test/README.md +++ b/test/README.md @@ -41,11 +41,11 @@ Use `--help` to see the script's usage details. To test the implementation against the vectors from [NIST SP 800-38A](http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf) using `nist-sp-800-32a.py`. - python nist-sp-800-38a.py -p C:\build\utils\block\cxx\Debug + python nist-sp-800-38a.py -p C:\build\utils\block\Debug ### Cryptographic Algorithm Validation Program To test the implementation against the vectors from [CAVP](http://csrc.nist.gov/groups/STM/cavp/) using `cavp.py`. The AES Known Answer Test (KAT) Vectors are used and read from `KAT_AES.zip`. - python cavp.py -p C:\build\utils\block\cxx\Debug + python cavp.py -p C:\build\utils\block\Debug diff --git a/test/cavp.py b/test/cavp.py index 474818d..059bcd2 100644 --- a/test/cavp.py +++ b/test/cavp.py @@ -178,6 +178,8 @@ if __name__ == '__main__': help='set path to block encryption utilities') parser.add_argument('--sde', '-e', action='store_true', help='use Intel SDE to run *.exe files') + parser.add_argument('--box', '-b', action='store_true', + help='use the "boxes" interface') parser.add_argument('--log', '-l', help='set log file path') args = parser.parse_args() @@ -189,5 +191,5 @@ if __name__ == '__main__': logging_options['filename'] = args.log logging.basicConfig(**logging_options) - tools = toolkit.Tools(args.path, use_sde=args.sde) + tools = toolkit.Tools(args.path, use_sde=args.sde, use_boxes=args.box) _parse_test_vectors_archive(tools) diff --git a/test/nist-sp-800-38a.py b/test/nist-sp-800-38a.py index c5c0af8..8a7d010 100644 --- a/test/nist-sp-800-38a.py +++ b/test/nist-sp-800-38a.py @@ -148,10 +148,12 @@ if __name__ == '__main__': help='set path to block encryption utilities') parser.add_argument('--sde', '-e', action='store_true', help='use Intel SDE to run *.exe files') + parser.add_argument('--box', '-b', action='store_true', + help='use the "boxes" interface') parser.add_argument('--log', '-l', help='set log file path') args = parser.parse_args() - tools = toolkit.Tools(args.path, args.sde) + tools = toolkit.Tools(args.path, use_sde=args.sde, use_boxes=args.box) logging_options = {'format': '%(asctime)s | %(module)s | %(levelname)s | %(message)s', 'level': logging.DEBUG} diff --git a/test/toolkit.py b/test/toolkit.py index bd50edc..39bc350 100644 --- a/test/toolkit.py +++ b/test/toolkit.py @@ -67,7 +67,7 @@ class ToolkitError(RuntimeError): pass class Tools: - def __init__(self, search_dirs, use_sde=False): + def __init__(self, search_dirs, use_sde=False, use_boxes=False): if search_dirs: if isinstance(search_dirs, str): os.environ['PATH'] += os.pathsep + search_dirs @@ -76,6 +76,7 @@ class Tools: else: os.environ['PATH'] += os.pathsep + str(search_dirs) self._use_sde = use_sde + self._use_boxes = use_boxes self._logger = logging.getLogger(__name__) _ENCRYPT_BLOCK = 'aes_encrypt_block.exe' @@ -83,6 +84,8 @@ class Tools: def run(self, tool_path, algo, mode, args): cmd_list = ['sde', '--', tool_path] if self._use_sde else [tool_path] + if self._use_boxes: + cmd_list.append('-b') cmd_list.extend(('-a', algo, '-m', mode, '--')) cmd_list.extend(args) logging.info('Trying to execute: {0}'.format(subprocess.list2cmdline(cmd_list))) diff --git a/utils/block/CMakeLists.txt b/utils/block/CMakeLists.txt index 4b232bd..8df91d0 100644 --- a/utils/block/CMakeLists.txt +++ b/utils/block/CMakeLists.txt @@ -1,27 +1,11 @@ -macro(util prefix) - add_executable(util_${prefix}_encrypt_block ${prefix}_encrypt_block.c) - target_link_libraries(util_${prefix}_encrypt_block libaesni) - set_target_properties(util_${prefix}_encrypt_block PROPERTIES OUTPUT_NAME ${prefix}_encrypt_block) +find_package(Boost REQUIRED COMPONENTS program_options) - add_executable(util_${prefix}_decrypt_block ${prefix}_decrypt_block.c) - target_link_libraries(util_${prefix}_decrypt_block libaesni) - set_target_properties(util_${prefix}_decrypt_block PROPERTIES OUTPUT_NAME ${prefix}_decrypt_block) -endmacro() +add_executable(util_aes_encrypt_block aes_encrypt_block.cpp aes_common.hpp) +target_include_directories(util_aes_encrypt_block PRIVATE ${Boost_INCLUDE_DIRS}) +target_link_libraries(util_aes_encrypt_block libaesni libaesnixx ${Boost_LIBRARIES}) +set_target_properties(util_aes_encrypt_block PROPERTIES OUTPUT_NAME aes_encrypt_block) -util(aes128ecb) -util(aes128cbc) -util(aes128cfb) -util(aes128ofb) -util(aes128ctr) -util(aes192ecb) -util(aes192cbc) -util(aes192cfb) -util(aes192ofb) -util(aes192ctr) -util(aes256ecb) -util(aes256cbc) -util(aes256cfb) -util(aes256ofb) -util(aes256ctr) - -add_subdirectory(cxx) +add_executable(util_aes_decrypt_block aes_decrypt_block.cpp aes_common.hpp) +target_include_directories(util_aes_decrypt_block PRIVATE ${Boost_INCLUDE_DIRS}) +target_link_libraries(util_aes_decrypt_block libaesni libaesnixx ${Boost_LIBRARIES}) +set_target_properties(util_aes_decrypt_block PROPERTIES OUTPUT_NAME aes_decrypt_block) diff --git a/utils/block/cxx/README.md b/utils/block/README.md index bce2434..bce2434 100644 --- a/utils/block/cxx/README.md +++ b/utils/block/README.md diff --git a/utils/block/aes128cbc_decrypt_block.c b/utils/block/aes128cbc_decrypt_block.c deleted file mode 100644 index 95120e7..0000000 --- a/utils/block/aes128cbc_decrypt_block.c +++ /dev/null @@ -1,76 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes128cbc_decrypt_block.exe KEY0 IV0 [CIPHERTEXT0...] [-- KEY1 IV1 [CIPHERTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes128_Key key; - AesNI_Aes128_RoundKeys encryption_keys, decryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes128_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes128_expand_key(&key, &encryption_keys); - aesni_aes128_derive_decryption_keys(&encryption_keys, &decryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&ciphertext, *argv, NULL))) - { - print_error(status); - continue; - } - - plaintext = aesni_aes128_decrypt_block_cbc(ciphertext, &decryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&plaintext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes128cbc_encrypt_block.c b/utils/block/aes128cbc_encrypt_block.c deleted file mode 100644 index 68f95a3..0000000 --- a/utils/block/aes128cbc_encrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes128cbc_encrypt_block.exe KEY0 IV0 [PLAINTEXT0...] [-- KEY1 IV1 [PLAINTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes128_Key key; - AesNI_Aes128_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes128_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes128_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&plaintext, *argv, NULL))) - { - print_error(status); - continue; - } - - ciphertext = aesni_aes128_encrypt_block_cbc(plaintext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&ciphertext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes128cfb_decrypt_block.c b/utils/block/aes128cfb_decrypt_block.c deleted file mode 100644 index ef68e44..0000000 --- a/utils/block/aes128cfb_decrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes128cfb_decrypt_block.exe KEY0 IV0 [CIPHERTEXT0...] [-- KEY1 IV1 [CIPHERTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes128_Key key; - AesNI_Aes128_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes128_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes128_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&ciphertext, *argv, NULL))) - { - print_error(status); - continue; - } - - plaintext = aesni_aes128_decrypt_block_cfb(ciphertext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&plaintext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes128cfb_encrypt_block.c b/utils/block/aes128cfb_encrypt_block.c deleted file mode 100644 index 6f8fb4d..0000000 --- a/utils/block/aes128cfb_encrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes128cfb_encrypt_block.exe KEY0 IV0 [PLAINTEXT0...] [-- KEY1 IV1 [PLAINTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes128_Key key; - AesNI_Aes128_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes128_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes128_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&plaintext, *argv, NULL))) - { - print_error(status); - continue; - } - - ciphertext = aesni_aes128_encrypt_block_cfb(plaintext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&ciphertext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes128ctr_decrypt_block.c b/utils/block/aes128ctr_decrypt_block.c deleted file mode 100644 index 85d07f5..0000000 --- a/utils/block/aes128ctr_decrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes128ctr_decrypt_block.exe KEY0 IV0 [CIPHERTEXT0...] [-- KEY1 IV1 [CIPHERTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes128_Key key; - AesNI_Aes128_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes128_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes128_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&ciphertext, *argv, NULL))) - { - print_error(status); - continue; - } - - plaintext = aesni_aes128_decrypt_block_ctr(ciphertext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&plaintext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes128ctr_encrypt_block.c b/utils/block/aes128ctr_encrypt_block.c deleted file mode 100644 index a62f3cd..0000000 --- a/utils/block/aes128ctr_encrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes128ctr_encrypt_block.exe KEY0 IV0 [PLAINTEXT0...] [-- KEY1 IV1 [PLAINTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes128_Key key; - AesNI_Aes128_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes128_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes128_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&plaintext, *argv, NULL))) - { - print_error(status); - continue; - } - - ciphertext = aesni_aes128_encrypt_block_ctr(plaintext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&ciphertext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes128ecb_decrypt_block.c b/utils/block/aes128ecb_decrypt_block.c deleted file mode 100644 index 9fbf26d..0000000 --- a/utils/block/aes128ecb_decrypt_block.c +++ /dev/null @@ -1,70 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes128ecb_decrypt_block.exe KEY0 [CIPHERTEXT0...] [-- KEY1 [CIPHERTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext; - AesNI_Aes128_Key key; - AesNI_Aes128_RoundKeys encryption_keys, decryption_keys; - - if (argc < 1) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes128_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes128_expand_key(&key, &encryption_keys); - aesni_aes128_derive_decryption_keys(&encryption_keys, &decryption_keys); - - for (--argc, ++argv; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&ciphertext, *argv, NULL))) - { - print_error(status); - continue; - } - - plaintext = aesni_aes128_decrypt_block_ecb(ciphertext, &decryption_keys); - - if (aesni_is_error(status = aesni_aes_print_block(&plaintext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes128ecb_encrypt_block.c b/utils/block/aes128ecb_encrypt_block.c deleted file mode 100644 index 45a1123..0000000 --- a/utils/block/aes128ecb_encrypt_block.c +++ /dev/null @@ -1,69 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes128ecb_encrypt_block.exe KEY0 [PLAINTEXT0...] [-- KEY1 [PLAINTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext; - AesNI_Aes128_Key key; - AesNI_Aes128_RoundKeys encryption_keys; - - if (argc < 1) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes128_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes128_expand_key(&key, &encryption_keys); - - for (--argc, ++argv; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&plaintext, *argv, NULL))) - { - print_error(status); - continue; - } - - ciphertext = aesni_aes128_encrypt_block_ecb(plaintext, &encryption_keys); - - if (aesni_is_error(status = aesni_aes_print_block(&ciphertext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes128ofb_decrypt_block.c b/utils/block/aes128ofb_decrypt_block.c deleted file mode 100644 index e61e70f..0000000 --- a/utils/block/aes128ofb_decrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes128ofb_decrypt_block.exe KEY0 IV0 [CIPHERTEXT0...] [-- KEY1 IV1 [CIPHERTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes128_Key key; - AesNI_Aes128_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes128_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes128_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&ciphertext, *argv, NULL))) - { - print_error(status); - continue; - } - - plaintext = aesni_aes128_decrypt_block_ofb(ciphertext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&plaintext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes128ofb_encrypt_block.c b/utils/block/aes128ofb_encrypt_block.c deleted file mode 100644 index 6613ca9..0000000 --- a/utils/block/aes128ofb_encrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes128ofb_encrypt_block.exe KEY0 IV0 [PLAINTEXT0...] [-- KEY1 IV1 [PLAINTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes128_Key key; - AesNI_Aes128_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes128_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes128_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&plaintext, *argv, NULL))) - { - print_error(status); - continue; - } - - ciphertext = aesni_aes128_encrypt_block_ofb(plaintext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&ciphertext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes192cbc_decrypt_block.c b/utils/block/aes192cbc_decrypt_block.c deleted file mode 100644 index 13edbe4..0000000 --- a/utils/block/aes192cbc_decrypt_block.c +++ /dev/null @@ -1,76 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes192cbc_decrypt_block.exe KEY0 IV0 [CIPHERTEXT0...] [-- KEY1 IV1 [CIPHERTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes192_Key key; - AesNI_Aes192_RoundKeys encryption_keys, decryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes192_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes192_expand_key(&key, &encryption_keys); - aesni_aes192_derive_decryption_keys(&encryption_keys, &decryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&ciphertext, *argv, NULL))) - { - print_error(status); - continue; - } - - plaintext = aesni_aes192_decrypt_block_cbc(ciphertext, &decryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&plaintext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes192cbc_encrypt_block.c b/utils/block/aes192cbc_encrypt_block.c deleted file mode 100644 index d89c12d..0000000 --- a/utils/block/aes192cbc_encrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes192cbc_encrypt_block.exe KEY0 IV0 [PLAINTEXT0...] [-- KEY1 IV1 [PLAINTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes192_Key key; - AesNI_Aes192_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes192_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes192_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&plaintext, *argv, NULL))) - { - print_error(status); - continue; - } - - ciphertext = aesni_aes192_encrypt_block_cbc(plaintext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&ciphertext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes192cfb_decrypt_block.c b/utils/block/aes192cfb_decrypt_block.c deleted file mode 100644 index cedc7d0..0000000 --- a/utils/block/aes192cfb_decrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes192cfb_decrypt_block.exe KEY0 IV0 [CIPHERTEXT0...] [-- KEY1 IV1 [CIPHERTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes192_Key key; - AesNI_Aes192_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes192_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes192_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&ciphertext, *argv, NULL))) - { - print_error(status); - continue; - } - - plaintext = aesni_aes192_decrypt_block_cfb(ciphertext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&plaintext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes192cfb_encrypt_block.c b/utils/block/aes192cfb_encrypt_block.c deleted file mode 100644 index 357df8d..0000000 --- a/utils/block/aes192cfb_encrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes192cfb_encrypt_block.exe KEY0 IV0 [PLAINTEXT0...] [-- KEY1 IV1 [PLAINTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes192_Key key; - AesNI_Aes192_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes192_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes192_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&plaintext, *argv, NULL))) - { - print_error(status); - continue; - } - - ciphertext = aesni_aes192_encrypt_block_cfb(plaintext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&ciphertext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes192ctr_decrypt_block.c b/utils/block/aes192ctr_decrypt_block.c deleted file mode 100644 index b094964..0000000 --- a/utils/block/aes192ctr_decrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes192ctr_decrypt_block.exe KEY0 IV0 [CIPHERTEXT0...] [-- KEY1 IV1 [CIPHERTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes192_Key key; - AesNI_Aes192_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes192_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes192_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&ciphertext, *argv, NULL))) - { - print_error(status); - continue; - } - - plaintext = aesni_aes192_decrypt_block_ctr(ciphertext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&plaintext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes192ctr_encrypt_block.c b/utils/block/aes192ctr_encrypt_block.c deleted file mode 100644 index 977c7bf..0000000 --- a/utils/block/aes192ctr_encrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes192ctr_encrypt_block.exe KEY0 IV0 [PLAINTEXT0...] [-- KEY1 IV1 [PLAINTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes192_Key key; - AesNI_Aes192_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes192_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes192_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&plaintext, *argv, NULL))) - { - print_error(status); - continue; - } - - ciphertext = aesni_aes192_encrypt_block_ctr(plaintext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&ciphertext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes192ecb_decrypt_block.c b/utils/block/aes192ecb_decrypt_block.c deleted file mode 100644 index 29e7274..0000000 --- a/utils/block/aes192ecb_decrypt_block.c +++ /dev/null @@ -1,70 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes192ecb_decrypt_block.exe KEY0 [CIPHERTEXT0...] [-- KEY1 [CIPHERTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext; - AesNI_Aes192_Key key; - AesNI_Aes192_RoundKeys encryption_keys, decryption_keys; - - if (argc < 1) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes192_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes192_expand_key(&key, &encryption_keys); - aesni_aes192_derive_decryption_keys(&encryption_keys, &decryption_keys); - - for (--argc, ++argv; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&ciphertext, *argv, NULL))) - { - print_error(status); - continue; - } - - plaintext = aesni_aes192_decrypt_block_ecb(ciphertext, &decryption_keys); - - if (aesni_is_error(status = aesni_aes_print_block(&plaintext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes192ecb_encrypt_block.c b/utils/block/aes192ecb_encrypt_block.c deleted file mode 100644 index a74759c..0000000 --- a/utils/block/aes192ecb_encrypt_block.c +++ /dev/null @@ -1,69 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes192ecb_encrypt_block.exe KEY0 [PLAINTEXT0...] [-- KEY1 [PLAINTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext; - AesNI_Aes192_Key key; - AesNI_Aes192_RoundKeys encryption_keys; - - if (argc < 1) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes192_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes192_expand_key(&key, &encryption_keys); - - for (--argc, ++argv; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&plaintext, *argv, NULL))) - { - print_error(status); - continue; - } - - ciphertext = aesni_aes192_encrypt_block_ecb(plaintext, &encryption_keys); - - if (aesni_is_error(status = aesni_aes_print_block(&ciphertext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes192ofb_decrypt_block.c b/utils/block/aes192ofb_decrypt_block.c deleted file mode 100644 index eaa9d2a..0000000 --- a/utils/block/aes192ofb_decrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes192ofb_decrypt_block.exe KEY0 IV0 [CIPHERTEXT0...] [-- KEY1 IV1 [CIPHERTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes192_Key key; - AesNI_Aes192_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes192_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes192_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&ciphertext, *argv, NULL))) - { - print_error(status); - continue; - } - - plaintext = aesni_aes192_decrypt_block_ofb(ciphertext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&plaintext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes192ofb_encrypt_block.c b/utils/block/aes192ofb_encrypt_block.c deleted file mode 100644 index fed0c5a..0000000 --- a/utils/block/aes192ofb_encrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes192ofb_encrypt_block.exe KEY0 IV0 [PLAINTEXT0...] [-- KEY1 IV1 [PLAINTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes192_Key key; - AesNI_Aes192_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes192_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes192_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&plaintext, *argv, NULL))) - { - print_error(status); - continue; - } - - ciphertext = aesni_aes192_encrypt_block_ofb(plaintext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&ciphertext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes256cbc_decrypt_block.c b/utils/block/aes256cbc_decrypt_block.c deleted file mode 100644 index 0021007..0000000 --- a/utils/block/aes256cbc_decrypt_block.c +++ /dev/null @@ -1,76 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes256cbc_decrypt_block.exe KEY0 IV0 [CIPHERTEXT0...] [-- KEY1 IV1 [CIPHERTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes256_Key key; - AesNI_Aes256_RoundKeys encryption_keys, decryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes256_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes256_expand_key(&key, &encryption_keys); - aesni_aes256_derive_decryption_keys(&encryption_keys, &decryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&ciphertext, *argv, NULL))) - { - print_error(status); - continue; - } - - plaintext = aesni_aes256_decrypt_block_cbc(ciphertext, &decryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&plaintext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes256cbc_encrypt_block.c b/utils/block/aes256cbc_encrypt_block.c deleted file mode 100644 index e01ab95..0000000 --- a/utils/block/aes256cbc_encrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes256cbc_encrypt_block.exe KEY0 IV0 [PLAINTEXT0...] [-- KEY1 IV1 [PLAINTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes256_Key key; - AesNI_Aes256_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes256_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes256_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&plaintext, *argv, NULL))) - { - print_error(status); - continue; - } - - ciphertext = aesni_aes256_encrypt_block_cbc(plaintext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&ciphertext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes256cfb_decrypt_block.c b/utils/block/aes256cfb_decrypt_block.c deleted file mode 100644 index 9d320a5..0000000 --- a/utils/block/aes256cfb_decrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes256cfb_decrypt_block.exe KEY0 IV0 [CIPHERTEXT0...] [-- KEY1 IV1 [CIPHERTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes256_Key key; - AesNI_Aes256_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes256_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes256_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&ciphertext, *argv, NULL))) - { - print_error(status); - continue; - } - - plaintext = aesni_aes256_decrypt_block_cfb(ciphertext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&plaintext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes256cfb_encrypt_block.c b/utils/block/aes256cfb_encrypt_block.c deleted file mode 100644 index 94e8619..0000000 --- a/utils/block/aes256cfb_encrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes256cfb_encrypt_block.exe KEY0 IV0 [PLAINTEXT0...] [-- KEY1 IV1 [PLAINTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes256_Key key; - AesNI_Aes256_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes256_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes256_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&plaintext, *argv, NULL))) - { - print_error(status); - continue; - } - - ciphertext = aesni_aes256_encrypt_block_cfb(plaintext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&ciphertext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes256ctr_decrypt_block.c b/utils/block/aes256ctr_decrypt_block.c deleted file mode 100644 index a0f9ef0..0000000 --- a/utils/block/aes256ctr_decrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes256ctr_decrypt_block.exe KEY0 IV0 [CIPHERTEXT0...] [-- KEY1 IV1 [CIPHERTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes256_Key key; - AesNI_Aes256_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes256_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes256_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&ciphertext, *argv, NULL))) - { - print_error(status); - continue; - } - - plaintext = aesni_aes256_decrypt_block_ctr(ciphertext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&plaintext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes256ctr_encrypt_block.c b/utils/block/aes256ctr_encrypt_block.c deleted file mode 100644 index fbae884..0000000 --- a/utils/block/aes256ctr_encrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes256ctr_encrypt_block.exe KEY0 IV0 [PLAINTEXT0...] [-- KEY1 IV1 [PLAINTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes256_Key key; - AesNI_Aes256_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes256_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes256_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&plaintext, *argv, NULL))) - { - print_error(status); - continue; - } - - ciphertext = aesni_aes256_encrypt_block_ctr(plaintext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&ciphertext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes256ecb_decrypt_block.c b/utils/block/aes256ecb_decrypt_block.c deleted file mode 100644 index 16ffe77..0000000 --- a/utils/block/aes256ecb_decrypt_block.c +++ /dev/null @@ -1,70 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes256ecb_decrypt_block.exe KEY0 [CIPHERTEXT0...] [-- KEY1 [CIPHERTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext; - AesNI_Aes256_Key key; - AesNI_Aes256_RoundKeys encryption_keys, decryption_keys; - - if (argc < 1) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes256_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes256_expand_key(&key, &encryption_keys); - aesni_aes256_derive_decryption_keys(&encryption_keys, &decryption_keys); - - for (--argc, ++argv; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&ciphertext, *argv, NULL))) - { - print_error(status); - continue; - } - - plaintext = aesni_aes256_decrypt_block_ecb(ciphertext, &decryption_keys); - - if (aesni_is_error(status = aesni_aes_print_block(&plaintext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes256ecb_encrypt_block.c b/utils/block/aes256ecb_encrypt_block.c deleted file mode 100644 index 01ae7ed..0000000 --- a/utils/block/aes256ecb_encrypt_block.c +++ /dev/null @@ -1,69 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes256ecb_encrypt_block.exe KEY0 [PLAINTEXT0...] [-- KEY1 [PLAINTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext; - AesNI_Aes256_Key key; - AesNI_Aes256_RoundKeys encryption_keys; - - if (argc < 1) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes256_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes256_expand_key(&key, &encryption_keys); - - for (--argc, ++argv; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&plaintext, *argv, NULL))) - { - print_error(status); - continue; - } - - ciphertext = aesni_aes256_encrypt_block_ecb(plaintext, &encryption_keys); - - if (aesni_is_error(status = aesni_aes_print_block(&ciphertext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes256ofb_decrypt_block.c b/utils/block/aes256ofb_decrypt_block.c deleted file mode 100644 index a57c8db..0000000 --- a/utils/block/aes256ofb_decrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes256ofb_decrypt_block.exe KEY0 IV0 [CIPHERTEXT0...] [-- KEY1 IV1 [CIPHERTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes256_Key key; - AesNI_Aes256_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes256_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes256_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&ciphertext, *argv, NULL))) - { - print_error(status); - continue; - } - - plaintext = aesni_aes256_decrypt_block_ofb(ciphertext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&plaintext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/aes256ofb_encrypt_block.c b/utils/block/aes256ofb_encrypt_block.c deleted file mode 100644 index 7dc01b8..0000000 --- a/utils/block/aes256ofb_encrypt_block.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include <aesni/all.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void exit_with_usage() -{ - puts("Usage: aes256ofb_encrypt_block.exe KEY0 IV0 [PLAINTEXT0...] [-- KEY1 IV1 [PLAINTEXT1...]...]"); - exit(EXIT_FAILURE); -} - -static void print_error(AesNI_StatusCode status) -{ - fprintf(stderr, "AesNI error: %s\n", aesni_strerror(status)); -} - -int main(int argc, char** argv) -{ - AesNI_StatusCode status = AESNI_SUCCESS; - - for (--argc, ++argv; argc > -1; --argc, ++argv) - { - AesNI_Block128 plaintext, ciphertext, iv; - AesNI_Aes256_Key key; - AesNI_Aes256_RoundKeys encryption_keys; - - if (argc < 2) - exit_with_usage(); - - if (aesni_is_error(status = aesni_aes256_parse_key(&key, *argv, NULL))) - { - print_error(status); - exit_with_usage(); - } - - if (aesni_is_error(status = aesni_aes_parse_block(&iv, argv[1], NULL))) - { - print_error(status); - exit_with_usage(); - } - - aesni_aes256_expand_key(&key, &encryption_keys); - - for (argc -= 2, argv += 2; argc > 0; --argc, ++argv) - { - if (strcmp("--", *argv) == 0) - break; - - if (aesni_is_error(status = aesni_aes_parse_block(&plaintext, *argv, NULL))) - { - print_error(status); - continue; - } - - ciphertext = aesni_aes256_encrypt_block_ofb(plaintext, &encryption_keys, iv, &iv); - - if (aesni_is_error(status = aesni_aes_print_block(&ciphertext, NULL))) - { - print_error(status); - continue; - } - } - } - - return 0; -} diff --git a/utils/block/cxx/aes_common.hpp b/utils/block/aes_common.hpp index cd5d669..327efad 100644 --- a/utils/block/cxx/aes_common.hpp +++ b/utils/block/aes_common.hpp @@ -68,6 +68,7 @@ namespace CommandLineParser(const std::string& program_name) : m_program_name(program_name) , m_options("Options") + , m_boxes(false) { } bool parse_options(int argc, char** argv) @@ -76,6 +77,7 @@ namespace m_options.add_options() ("help,h", "show this message and exit") + ("box,b", po::bool_switch(&m_boxes)->default_value(false), "use the \"boxes\" interface") ("mode,m", po::value<aesni::Mode>(&m_mode)->required(), "set mode of operation") ("algorithm,a", po::value<aesni::Algorithm>(&m_algorithm)->required(), "set algorithm"); @@ -118,6 +120,11 @@ namespace return m_algorithm; } + bool use_boxes() const + { + return m_boxes; + } + std::deque<std::string> get_args() { return { std::make_move_iterator(m_args.begin()), std::make_move_iterator(m_args.end()) }; @@ -129,6 +136,7 @@ namespace aesni::Mode m_mode; aesni::Algorithm m_algorithm; + bool m_boxes; std::vector<std::string> m_args; }; } diff --git a/utils/block/aes_decrypt_block.cpp b/utils/block/aes_decrypt_block.cpp new file mode 100644 index 0000000..a8a39f4 --- /dev/null +++ b/utils/block/aes_decrypt_block.cpp @@ -0,0 +1,234 @@ +/** + * \file + * \author Egor Tensin <Egor.Tensin@gmail.com> + * \date 2015 + * \copyright This file is licensed under the terms of the MIT License. + * See LICENSE.txt for details. + */ + +#include "aes_common.hpp" + +#include <aesni/all.h> + +#include <aesnixx/all.hpp> + +#include <deque> +#include <exception> +#include <iostream> +#include <string> + +namespace +{ + template <aesni::Algorithm algorithm, aesni::Mode mode> + bool decrypt_with_mode( + const std::string& key_str, + std::deque<std::string>& ciphertexts) + { + typename aesni::aes::Types<algorithm>::BlockT iv; + + if (aesni::ModeRequiresInitializationVector<mode>()) + { + if (ciphertexts.empty()) + return false; + + aesni::aes::from_string(iv, ciphertexts.front()); + ciphertexts.pop_front(); + } + + typename aesni::aes::Types<algorithm>::KeyT key; + aesni::aes::from_string(key, key_str); + + aesni::aes::Encrypt<algorithm, mode> encrypt(key, iv); + + while (!ciphertexts.empty()) + { + typename aesni::aes::Types<algorithm>::BlockT ciphertext; + aesni::aes::from_string(ciphertext, ciphertexts.front()); + ciphertexts.pop_front(); + + std::cout << aesni::aes::to_string(encrypt.decrypt(ciphertext)) << "\n"; + } + + return true; + } + + template <aesni::Algorithm algorithm> + bool decrypt_with_algorithm( + aesni::Mode mode, + const std::string& key_str, + std::deque<std::string>& ciphertexts) + { + switch (mode) + { + case AESNI_ECB: + return decrypt_with_mode<algorithm, AESNI_ECB>(key_str, ciphertexts); + + case AESNI_CBC: + return decrypt_with_mode<algorithm, AESNI_CBC>(key_str, ciphertexts); + + case AESNI_CFB: + return decrypt_with_mode<algorithm, AESNI_CFB>(key_str, ciphertexts); + + case AESNI_OFB: + return decrypt_with_mode<algorithm, AESNI_OFB>(key_str, ciphertexts); + + case AESNI_CTR: + return decrypt_with_mode<algorithm, AESNI_CTR>(key_str, ciphertexts); + + default: + return false; + } + } + + bool decrypt( + aesni::Algorithm algorithm, + aesni::Mode mode, + const std::string& key_str, + std::deque<std::string> ciphertexts) + { + switch (algorithm) + { + case AESNI_AES128: + return decrypt_with_algorithm<AESNI_AES128>(mode, key_str, ciphertexts); + + case AESNI_AES192: + return decrypt_with_algorithm<AESNI_AES192>(mode, key_str, ciphertexts); + + case AESNI_AES256: + return decrypt_with_algorithm<AESNI_AES256>(mode, key_str, ciphertexts); + + default: + return false; + } + } + + bool decrypt_using_boxes( + aesni::Algorithm algorithm, + aesni::Mode mode, + const std::string& key, + std::deque<std::string> ciphertexts) + { + AesNI_BoxAlgorithmParams algorithm_params; + + switch (algorithm) + { + case AESNI_AES128: + aesni::aes::from_string(algorithm_params.aes128_key, key); + break; + + case AESNI_AES192: + aesni::aes::from_string(algorithm_params.aes192_key, key); + break; + + case AESNI_AES256: + aesni::aes::from_string(algorithm_params.aes256_key, key); + break; + + default: + return false; + } + + AesNI_BoxBlock iv; + AesNI_BoxBlock* iv_ptr = nullptr; + + if (aesni::mode_requires_initialization_vector(mode)) + { + if (ciphertexts.empty()) + return false; + + aesni::aes::from_string(iv.aes_block, ciphertexts.front()); + iv_ptr = &iv; + ciphertexts.pop_front(); + } + + AesNI_Box box; + aesni_box_init( + &box, + algorithm, + &algorithm_params, + mode, + iv_ptr, + aesni::ErrorDetailsThrowsInDestructor()); + + while (!ciphertexts.empty()) + { + AesNI_BoxBlock ciphertext; + aesni::aes::from_string(ciphertext.aes_block, ciphertexts.front()); + ciphertexts.pop_front(); + + AesNI_BoxBlock plaintext; + aesni_box_decrypt_block( + &box, + &ciphertext, + &plaintext, + aesni::ErrorDetailsThrowsInDestructor()); + + std::cout << aesni::aes::to_string(plaintext.aes_block) << "\n"; + } + + return true; + } +} + +int main(int argc, char** argv) +{ + try + { + CommandLineParser cmd_parser("aes_decrypt_block.exe"); + + if (!cmd_parser.parse_options(argc, argv)) + return 0; + + const auto algorithm = cmd_parser.get_algorithm(); + const auto mode = cmd_parser.get_mode(); + + auto args = cmd_parser.get_args(); + + while (!args.empty()) + { + const auto key = args.front(); + args.pop_front(); + + std::deque<std::string> ciphertexts; + + while (!args.empty()) + { + if (args.front() == "--") + { + args.pop_front(); + break; + } + + ciphertexts.push_back(args.front()); + args.pop_front(); + } + + const auto success = cmd_parser.use_boxes() + ? decrypt_using_boxes(algorithm, mode, key, ciphertexts) + : decrypt(algorithm, mode, key, ciphertexts); + + if (!success) + { + cmd_parser.print_usage(); + return 1; + } + } + + return 0; + } + catch (const boost::program_options::error& e) + { + std::cerr << "Usage error: " << e.what() << "\n"; + return 1; + } + catch (const aesni::Error& e) + { + std::cerr << e; + return 1; + } + catch (const std::exception& e) + { + std::cerr << e.what() << "\n"; + return 1; + } +} diff --git a/utils/block/aes_encrypt_block.cpp b/utils/block/aes_encrypt_block.cpp new file mode 100644 index 0000000..3b0e837 --- /dev/null +++ b/utils/block/aes_encrypt_block.cpp @@ -0,0 +1,234 @@ +/** + * \file + * \author Egor Tensin <Egor.Tensin@gmail.com> + * \date 2015 + * \copyright This file is licensed under the terms of the MIT License. + * See LICENSE.txt for details. + */ + +#include "aes_common.hpp" + +#include <aesni/all.h> + +#include <aesnixx/all.hpp> + +#include <deque> +#include <exception> +#include <iostream> +#include <string> + +namespace +{ + template <aesni::Algorithm algorithm, aesni::Mode mode> + bool encrypt_with_mode( + const std::string& key_str, + std::deque<std::string>& plaintexts) + { + typename aesni::aes::Types<algorithm>::BlockT iv; + + if (aesni::ModeRequiresInitializationVector<mode>()) + { + if (plaintexts.empty()) + return false; + + aesni::aes::from_string(iv, plaintexts.front()); + plaintexts.pop_front(); + } + + typename aesni::aes::Types<algorithm>::KeyT key; + aesni::aes::from_string(key, key_str); + + aesni::aes::Encrypt<algorithm, mode> encrypt(key, iv); + + while (!plaintexts.empty()) + { + typename aesni::aes::Types<algorithm>::BlockT plaintext; + aesni::aes::from_string(plaintext, plaintexts.front()); + plaintexts.pop_front(); + + std::cout << aesni::aes::to_string(encrypt.encrypt(plaintext)) << "\n"; + } + + return true; + } + + template <aesni::Algorithm algorithm> + bool encrypt_with_algorithm( + aesni::Mode mode, + const std::string& key_str, + std::deque<std::string>& plaintexts) + { + switch (mode) + { + case AESNI_ECB: + return encrypt_with_mode<algorithm, AESNI_ECB>(key_str, plaintexts); + + case AESNI_CBC: + return encrypt_with_mode<algorithm, AESNI_CBC>(key_str, plaintexts); + + case AESNI_CFB: + return encrypt_with_mode<algorithm, AESNI_CFB>(key_str, plaintexts); + + case AESNI_OFB: + return encrypt_with_mode<algorithm, AESNI_OFB>(key_str, plaintexts); + + case AESNI_CTR: + return encrypt_with_mode<algorithm, AESNI_CTR>(key_str, plaintexts); + + default: + return false; + } + } + + bool encrypt( + aesni::Algorithm algorithm, + aesni::Mode mode, + const std::string& key_str, + std::deque<std::string> plaintexts) + { + switch (algorithm) + { + case AESNI_AES128: + return encrypt_with_algorithm<AESNI_AES128>(mode, key_str, plaintexts); + + case AESNI_AES192: + return encrypt_with_algorithm<AESNI_AES192>(mode, key_str, plaintexts); + + case AESNI_AES256: + return encrypt_with_algorithm<AESNI_AES256>(mode, key_str, plaintexts); + + default: + return false; + } + } + + bool encrypt_using_boxes( + aesni::Algorithm algorithm, + aesni::Mode mode, + const std::string& key, + std::deque<std::string> plaintexts) + { + AesNI_BoxAlgorithmParams algorithm_params; + + switch (algorithm) + { + case AESNI_AES128: + aesni::aes::from_string(algorithm_params.aes128_key, key); + break; + + case AESNI_AES192: + aesni::aes::from_string(algorithm_params.aes192_key, key); + break; + + case AESNI_AES256: + aesni::aes::from_string(algorithm_params.aes256_key, key); + break; + + default: + return false; + } + + AesNI_BoxBlock iv; + AesNI_BoxBlock* iv_ptr = nullptr; + + if (aesni::mode_requires_initialization_vector(mode)) + { + if (plaintexts.empty()) + return false; + + aesni::aes::from_string(iv.aes_block, plaintexts.front()); + iv_ptr = &iv; + plaintexts.pop_front(); + } + + AesNI_Box box; + aesni_box_init( + &box, + algorithm, + &algorithm_params, + mode, + iv_ptr, + aesni::ErrorDetailsThrowsInDestructor()); + + while (!plaintexts.empty()) + { + AesNI_BoxBlock plaintext; + aesni::aes::from_string(plaintext.aes_block, plaintexts.front()); + plaintexts.pop_front(); + + AesNI_BoxBlock ciphertext; + aesni_box_encrypt_block( + &box, + &plaintext, + &ciphertext, + aesni::ErrorDetailsThrowsInDestructor()); + + std::cout << aesni::aes::to_string(ciphertext.aes_block) << "\n"; + } + + return true; + } +} + +int main(int argc, char** argv) +{ + try + { + CommandLineParser cmd_parser("aes_encrypt_block.exe"); + + if (!cmd_parser.parse_options(argc, argv)) + return 0; + + const auto algorithm = cmd_parser.get_algorithm(); + const auto mode = cmd_parser.get_mode(); + + auto args = cmd_parser.get_args(); + + while (!args.empty()) + { + const auto key = args.front(); + args.pop_front(); + + std::deque<std::string> plaintexts; + + while (!args.empty()) + { + if (args.front() == "--") + { + args.pop_front(); + break; + } + + plaintexts.push_back(args.front()); + args.pop_front(); + } + + const auto success = cmd_parser.use_boxes() + ? encrypt_using_boxes(algorithm, mode, key, plaintexts) + : encrypt(algorithm, mode, key, plaintexts); + + if (!success) + { + cmd_parser.print_usage(); + return 1; + } + } + + return 0; + } + catch (const boost::program_options::error& e) + { + std::cerr << "Usage error: " << e.what() << "\n"; + return 1; + } + catch (const aesni::Error& e) + { + std::cerr << e; + return 1; + } + catch (const std::exception& e) + { + std::cerr << e.what() << "\n"; + return 1; + } +} diff --git a/utils/block/cxx/CMakeLists.txt b/utils/block/cxx/CMakeLists.txt deleted file mode 100644 index 8df91d0..0000000 --- a/utils/block/cxx/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -find_package(Boost REQUIRED COMPONENTS program_options) - -add_executable(util_aes_encrypt_block aes_encrypt_block.cpp aes_common.hpp) -target_include_directories(util_aes_encrypt_block PRIVATE ${Boost_INCLUDE_DIRS}) -target_link_libraries(util_aes_encrypt_block libaesni libaesnixx ${Boost_LIBRARIES}) -set_target_properties(util_aes_encrypt_block PROPERTIES OUTPUT_NAME aes_encrypt_block) - -add_executable(util_aes_decrypt_block aes_decrypt_block.cpp aes_common.hpp) -target_include_directories(util_aes_decrypt_block PRIVATE ${Boost_INCLUDE_DIRS}) -target_link_libraries(util_aes_decrypt_block libaesni libaesnixx ${Boost_LIBRARIES}) -set_target_properties(util_aes_decrypt_block PROPERTIES OUTPUT_NAME aes_decrypt_block) diff --git a/utils/block/cxx/aes_decrypt_block.cpp b/utils/block/cxx/aes_decrypt_block.cpp deleted file mode 100644 index 835d945..0000000 --- a/utils/block/cxx/aes_decrypt_block.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include "aes_common.hpp" - -#include <aesni/all.h> - -#include <aesnixx/all.hpp> - -#include <exception> -#include <iostream> - -int main(int argc, char** argv) -{ - try - { - CommandLineParser cmd_parser("aes_encrypt_block.exe"); - - if (!cmd_parser.parse_options(argc, argv)) - return 0; - - auto args = cmd_parser.get_args(); - - while (!args.empty()) - { - AesNI_BoxAlgorithmParams algorithm_params; - - switch (cmd_parser.get_algorithm()) - { - case AESNI_AES128: - aesni::aes::from_string(algorithm_params.aes128_key, args.front()); - break; - - case AESNI_AES192: - aesni::aes::from_string(algorithm_params.aes192_key, args.front()); - break; - - case AESNI_AES256: - aesni::aes::from_string(algorithm_params.aes256_key, args.front()); - break; - } - - args.pop_front(); - - AesNI_BoxBlock iv; - AesNI_BoxBlock* iv_ptr = nullptr; - - switch (cmd_parser.get_mode()) - { - case AESNI_ECB: - break; - - case AESNI_CBC: - case AESNI_CFB: - case AESNI_OFB: - case AESNI_CTR: - if (args.empty()) - { - cmd_parser.print_usage(); - return 1; - } - aesni::aes::from_string(iv.aes_block, args.front()); - iv_ptr = &iv; - args.pop_front(); - break; - } - - AesNI_Box box; - aesni_box_init( - &box, - cmd_parser.get_algorithm(), - &algorithm_params, - cmd_parser.get_mode(), - iv_ptr, - aesni::ErrorDetailsThrowsInDestructor()); - - while (!args.empty()) - { - if (args.front() == "--") - { - args.pop_front(); - break; - } - - AesNI_BoxBlock ciphertext; - aesni::aes::from_string(ciphertext.aes_block, args.front()); - args.pop_front(); - - AesNI_BoxBlock plaintext; - aesni_box_decrypt_block( - &box, - &ciphertext, - &plaintext, - aesni::ErrorDetailsThrowsInDestructor()); - - std::cout << aesni::aes::to_string(plaintext.aes_block) << "\n"; - } - } - - return 0; - } - catch (const boost::program_options::error& e) - { - std::cerr << "Usage error: " << e.what() << "\n"; - return 1; - } - catch (const aesni::Error& e) - { - std::cerr << e; - return 1; - } - catch (const std::exception& e) - { - std::cerr << e.what() << "\n"; - return 1; - } -} diff --git a/utils/block/cxx/aes_encrypt_block.cpp b/utils/block/cxx/aes_encrypt_block.cpp deleted file mode 100644 index cd92fa3..0000000 --- a/utils/block/cxx/aes_encrypt_block.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/** - * \file - * \author Egor Tensin <Egor.Tensin@gmail.com> - * \date 2015 - * \copyright This file is licensed under the terms of the MIT License. - * See LICENSE.txt for details. - */ - -#include "aes_common.hpp" - -#include <aesni/all.h> - -#include <aesnixx/all.hpp> - -#include <exception> -#include <iostream> - -int main(int argc, char** argv) -{ - try - { - CommandLineParser cmd_parser("aes_encrypt_block.exe"); - - if (!cmd_parser.parse_options(argc, argv)) - return 0; - - auto args = cmd_parser.get_args(); - - while (!args.empty()) - { - AesNI_BoxAlgorithmParams algorithm_params; - - switch (cmd_parser.get_algorithm()) - { - case AESNI_AES128: - aesni::aes::from_string(algorithm_params.aes128_key, args.front()); - break; - - case AESNI_AES192: - aesni::aes::from_string(algorithm_params.aes192_key, args.front()); - break; - - case AESNI_AES256: - aesni::aes::from_string(algorithm_params.aes256_key, args.front()); - break; - } - - args.pop_front(); - - AesNI_BoxBlock iv; - AesNI_BoxBlock* iv_ptr = nullptr; - - switch (cmd_parser.get_mode()) - { - case AESNI_ECB: - break; - - case AESNI_CBC: - case AESNI_CFB: - case AESNI_OFB: - case AESNI_CTR: - if (args.empty()) - { - cmd_parser.print_usage(); - return 1; - } - aesni::aes::from_string(iv.aes_block, args.front()); - iv_ptr = &iv; - args.pop_front(); - break; - } - - AesNI_Box box; - aesni_box_init( - &box, - cmd_parser.get_algorithm(), - &algorithm_params, - cmd_parser.get_mode(), - iv_ptr, - aesni::ErrorDetailsThrowsInDestructor()); - - while (!args.empty()) - { - if (args.front() == "--") - { - args.pop_front(); - break; - } - - AesNI_BoxBlock plaintext; - aesni::aes::from_string(plaintext.aes_block, args.front()); - args.pop_front(); - - AesNI_BoxBlock ciphertext; - aesni_box_encrypt_block( - &box, - &plaintext, - &ciphertext, - aesni::ErrorDetailsThrowsInDestructor()); - - std::cout << aesni::aes::to_string(ciphertext.aes_block) << "\n"; - } - } - - return 0; - } - catch (const boost::program_options::error& e) - { - std::cerr << "Usage error: " << e.what() << "\n"; - return 1; - } - catch (const aesni::Error& e) - { - std::cerr << e; - return 1; - } - catch (const std::exception& e) - { - std::cerr << e.what() << "\n"; - return 1; - } -} |