aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/cxx/include/aesnixx/api.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'cxx/include/aesnixx/api.hpp')
-rw-r--r--cxx/include/aesnixx/api.hpp171
1 files changed, 0 insertions, 171 deletions
diff --git a/cxx/include/aesnixx/api.hpp b/cxx/include/aesnixx/api.hpp
deleted file mode 100644
index 6995ae2..0000000
--- a/cxx/include/aesnixx/api.hpp
+++ /dev/null
@@ -1,171 +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.
- */
-
-#pragma once
-
-#include "algorithm.hpp"
-#include "mode.hpp"
-
-#include <cstddef>
-
-#include <string>
-#include <type_traits>
-
-namespace aesni
-{
- 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>
- inline 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>
- inline 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>
- inline void expand_key(
- const typename Types<algorithm>::Key& key,
- typename Types<algorithm>::RoundKeys& encryption_keys);
-
- template <Algorithm algorithm>
- inline 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<ModeRequiresInitializationVector<mode>::value>::type* = 0>
- inline 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<!ModeRequiresInitializationVector<mode>::value>::type* = 0>
- inline 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<!ModeRequiresInitializationVector<mode>::value>::type* = 0>
- inline 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<ModeRequiresInitializationVector<mode>::value>::type* = 0>
- inline 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<!ModeRequiresInitializationVector<mode>::value>::type* = 0>
- inline 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<!ModeRequiresInitializationVector<mode>::value>::type* = 0>
- inline 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);
- }
-
- inline void encrypt_block(
- const typename Types<algorithm>::Block& plaintext,
- typename Types<algorithm>::Block& ciphertext)
- {
- aesni::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);
- }
- }
-
- inline void decrypt_block(
- const typename Types<algorithm>::Block& ciphertext,
- typename Types<algorithm>::Block& plaintext)
- {
- aesni::decrypt_block<algorithm, mode>(
- ciphertext, decryption_keys, iv, plaintext);
- }
-
- typename Types<algorithm>::Block iv;
- typename Types<algorithm>::RoundKeys decryption_keys;
- };
-}