diff options
Diffstat (limited to 'main.cpp')
-rw-r--r-- | main.cpp | 46 |
1 files changed, 4 insertions, 42 deletions
@@ -2,49 +2,11 @@ #include "vectors.h" #include <cstdio> -constexpr uint64_t k(const uint8_t key[8]) { - uint64_t r = 0; - for (int i = 0; i < 8; ++i) { - r += static_cast<uint64_t>(key[i]) << (64 - 8 * (i + 1)); - } - return r; -} - -template <int i> struct wrapper { - constexpr void operator()() const { - constexpr Blowfish::Context<8> b(std::to_array(variable_key[i])); - constexpr Blowfish::Block x(plaintext_l[i], plaintext_r[i]); - - constexpr auto y = b.encrypt(x); - static_assert(y.L == ciphertext_l[i]); - static_assert(y.R == ciphertext_r[i]); - - constexpr auto z = b.decrypt(y); - static_assert(x.L == z.L); - static_assert(x.R == z.R); - - printf("0x%016lx\t", k(variable_key[i])); - printf("0x%016lx\t", static_cast<uint64_t>(x)); - printf("0x%016lx\t", static_cast<uint64_t>(y)); - printf("0x%016lx\n", static_cast<uint64_t>(z)); - } -}; - -template <template <int> class W, std::size_t... I> -void caller_impl(std::index_sequence<I...>) { - int t[] = {0, ((void)W<I>()(), 1)...}; - (void)t; -} - -template <template <int> class W, std::size_t N, - typename Indices = std::make_index_sequence<N>> -void call_times() { - caller_impl<W>(Indices()); -} +void run_variable_key_wrapper(); +void run_set_key_wrapper(); int main(int, char **) { - printf("%-18s\t%-18s\t%-18s\t%-18s\n", "/ key", "/ cleartext", "/ encrypt", - "/ decrypt"); - call_times<wrapper, NUM_VARIABLE_KEY_TESTS>(); + run_variable_key_wrapper(); + run_set_key_wrapper(); return 0; } |