aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/cxx/include/aesxx/api.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'cxx/include/aesxx/api.hpp')
-rw-r--r--cxx/include/aesxx/api.hpp174
1 files changed, 0 insertions, 174 deletions
diff --git a/cxx/include/aesxx/api.hpp b/cxx/include/aesxx/api.hpp
deleted file mode 100644
index 68112bf..0000000
--- a/cxx/include/aesxx/api.hpp
+++ /dev/null
@@ -1,174 +0,0 @@
-// Copyright (c) 2015 Egor Tensin <Egor.Tensin@gmail.com>
-// This file is part of the "AES tools" project.
-// For details, see https://github.com/egor-tensin/aes-tools.
-// Distributed under the MIT License.
-
-#pragma once
-
-#include "algorithm.hpp"
-#include "mode.hpp"
-
-#include <cstddef>
-
-#include <string>
-#include <type_traits>
-
-namespace aes
-{
- template <Algorithm algorithm>
- struct Types;
-
- template <Algorithm algorithm>
- std::size_t get_number_of_rounds();
-
- template <Algorithm algorithm>
- void from_string(
- typename Types<algorithm>::Block&,
- const char*);
-
- template <Algorithm algorithm>
- void from_string(
- typename Types<algorithm>::Block& dest,
- const std::string& src)
- {
- from_string<algorithm>(dest, src.c_str());
- }
-
- template <Algorithm algorithm>
- std::string to_string(const typename Types<algorithm>::Block&);
-
- template <Algorithm algorithm>
- std::string to_matrix_string(const typename Types<algorithm>::Block&);
-
- template <Algorithm algorithm>
- void from_string(
- typename Types<algorithm>::Key&,
- const char*);
-
- template <Algorithm algorithm>
- void from_string(
- typename Types<algorithm>::Key& dest,
- const std::string& src)
- {
- from_string<algorithm>(dest, src.c_str());
- }
-
- template <Algorithm algorithm>
- std::string to_string(const typename Types<algorithm>::Key&);
-
- template <Algorithm algorithm>
- void expand_key(
- const typename Types<algorithm>::Key& key,
- typename Types<algorithm>::RoundKeys& encryption_keys);
-
- template <Algorithm algorithm>
- void derive_decryption_keys(
- const typename Types<algorithm>::RoundKeys& encryption_keys,
- typename Types<algorithm>::RoundKeys& decryption_keys);
-
- template <Algorithm algorithm, Mode mode,
- typename std::enable_if<ModeRequiresInitVector<mode>::value>::type* = nullptr>
- void encrypt_block(
- const typename Types<algorithm>::Block& plaintext,
- const typename Types<algorithm>::RoundKeys& round_keys,
- typename Types<algorithm>::Block& iv,
- typename Types<algorithm>::Block& ciphertext);
-
- template <Algorithm algorithm, Mode mode,
- typename std::enable_if<!ModeRequiresInitVector<mode>::value>::type* = nullptr>
- void encrypt_block(
- const typename Types<algorithm>::Block& plaintext,
- const typename Types<algorithm>::RoundKeys& round_keys,
- typename Types<algorithm>::Block& ciphertext);
-
- template <Algorithm algorithm, Mode mode,
- typename std::enable_if<!ModeRequiresInitVector<mode>::value>::type* = nullptr>
- void encrypt_block(
- const typename Types<algorithm>::Block& plaintext,
- const typename Types<algorithm>::RoundKeys& round_keys,
- typename Types<algorithm>::Block&,
- typename Types<algorithm>::Block& ciphertext)
- {
- encrypt_block<algorithm, mode>(plaintext, round_keys, ciphertext);
- }
-
- template <Algorithm algorithm, Mode mode,
- typename std::enable_if<ModeRequiresInitVector<mode>::value>::type* = nullptr>
- void decrypt_block(
- const typename Types<algorithm>::Block& ciphertext,
- const typename Types<algorithm>::RoundKeys& round_keys,
- typename Types<algorithm>::Block& iv,
- typename Types<algorithm>::Block& plaintext);
-
- template <Algorithm algorithm, Mode mode,
- typename std::enable_if<!ModeRequiresInitVector<mode>::value>::type* = nullptr>
- void decrypt_block(
- const typename Types<algorithm>::Block& ciphertext,
- const typename Types<algorithm>::RoundKeys& round_keys,
- typename Types<algorithm>::Block& plaintext);
-
- template <Algorithm algorithm, Mode mode,
- typename std::enable_if<!ModeRequiresInitVector<mode>::value>::type* = nullptr>
- void decrypt_block(
- const typename Types<algorithm>::Block& ciphertext,
- const typename Types<algorithm>::RoundKeys& round_keys,
- typename Types<algorithm>::Block&,
- typename Types<algorithm>::Block& plaintext)
- {
- decrypt_block<algorithm, mode>(ciphertext, round_keys, plaintext);
- }
-
- template <Algorithm algorithm, Mode mode>
- struct EncryptWrapper
- {
- EncryptWrapper(
- const typename Types<algorithm>::Key& key,
- const typename Types<algorithm>::Block& iv) : iv{iv}
- {
- expand_key<algorithm>(key, encryption_keys);
- }
-
- void encrypt_block(
- const typename Types<algorithm>::Block& plaintext,
- typename Types<algorithm>::Block& ciphertext)
- {
- aes::encrypt_block<algorithm, mode>(
- plaintext, encryption_keys, iv, ciphertext);
- }
-
- typename Types<algorithm>::Block iv;
- typename Types<algorithm>::RoundKeys encryption_keys;
- };
-
- template <Algorithm algorithm, Mode mode>
- struct DecryptWrapper
- {
- DecryptWrapper(
- const typename Types<algorithm>::Key& key,
- const typename Types<algorithm>::Block& iv) : iv{iv}
- {
- typename Types<algorithm>::RoundKeys encryption_keys;
- expand_key<algorithm>(key, encryption_keys);
-
- if (ModeUsesEncryptionKeysOnly<mode>::value)
- {
- decryption_keys = encryption_keys;
- }
- else
- {
- derive_decryption_keys<algorithm>(encryption_keys, decryption_keys);
- }
- }
-
- void decrypt_block(
- const typename Types<algorithm>::Block& ciphertext,
- typename Types<algorithm>::Block& plaintext)
- {
- aes::decrypt_block<algorithm, mode>(
- ciphertext, decryption_keys, iv, plaintext);
- }
-
- typename Types<algorithm>::Block iv;
- typename Types<algorithm>::RoundKeys decryption_keys;
- };
-}