From 51528ecf3d90d09351322e172d91eed0cb45b2e7 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sun, 8 Nov 2020 20:34:13 +0200 Subject: Add more test vectors --- test_variable_keys.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 test_variable_keys.cpp (limited to 'test_variable_keys.cpp') diff --git a/test_variable_keys.cpp b/test_variable_keys.cpp new file mode 100644 index 0000000..8382900 --- /dev/null +++ b/test_variable_keys.cpp @@ -0,0 +1,36 @@ +#include "blowfish.hpp" +#include "vectors.h" +#include + +constexpr uint64_t castVarKey(const uint8_t key[8]) { + uint64_t r = 0; + for (int i = 0; i < 8; ++i) { + r += static_cast(key[i]) << (64 - 8 * (i + 1)); + } + return r; +} + +template struct variable_key_wrapper { + constexpr void operator()() const { + constexpr Blowfish::Context<8> b(std::span(variable_key[i], 8)); + 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", castVarKey(variable_key[i])); + printf("0x%016lx\t", static_cast(x)); + printf("0x%016lx\t", static_cast(y)); + printf("0x%016lx\n", static_cast(z)); + } +}; +void run_variable_key_wrapper() { + printf("%-18s\t%-18s\t%-18s\t%-18s\n", "/ key", "/ cleartext", "/ encrypt", + "/ decrypt"); + call_times(); +} -- cgit v1.2.1