/** * \file * \author Egor Tensin * \date 2015 * \copyright This file is licensed under the terms of the MIT License. * See LICENSE.txt for details. */ #pragma once #include #include namespace aesni { typedef AesNI_Mode Mode; template struct ModeRequiresInitializationVector : public std::true_type { }; template <> struct ModeRequiresInitializationVector : public std::false_type { }; template struct ModeUsesEncryptionKeysOnly : public std::true_type { }; inline bool mode_requires_initialization_vector(Mode mode) { return mode != AESNI_ECB; } template <> struct ModeUsesEncryptionKeysOnly : public std::false_type { }; template <> struct ModeUsesEncryptionKeysOnly : public std::false_type { }; inline bool mode_uses_encryption_keys_only(Mode mode) { return mode != AESNI_ECB && mode != AESNI_CBC; } }