aboutsummaryrefslogtreecommitdiff
path: root/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp46
1 files changed, 4 insertions, 42 deletions
diff --git a/main.cpp b/main.cpp
index 2a46d8c..d11aba1 100644
--- a/main.cpp
+++ b/main.cpp
@@ -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;
}