aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJack Lloyd <[email protected]>2016-09-09 13:00:30 -0400
committerJack Lloyd <[email protected]>2016-09-09 13:00:30 -0400
commit7bc5fb380295af3499be4b01ff7bb5e8af1080ba (patch)
tree0eb32c3f3c9c0149653218a3f59a0a16b9d4d01e /src
parent7dec665c4cbd63c27cb7d2d4d907daf13c3ff9bc (diff)
Add test of FPE_FE1
Self-generated vectors, just a basic smoke test right now.
Diffstat (limited to 'src')
-rw-r--r--src/tests/data/fpe_fe1.vec14
-rw-r--r--src/tests/test_fpe.cpp45
2 files changed, 59 insertions, 0 deletions
diff --git a/src/tests/data/fpe_fe1.vec b/src/tests/data/fpe_fe1.vec
new file mode 100644
index 000000000..4108a56a2
--- /dev/null
+++ b/src/tests/data/fpe_fe1.vec
@@ -0,0 +1,14 @@
+
+# FE1 outputs generated by botan
+
+Mod = 100000
+In = 666
+Out = 48166
+Key = AABB
+Tweak = CCDD
+
+Mod = 100000
+In = 48166
+Out = 69575
+Key = AABB
+Tweak = CCDD
diff --git a/src/tests/test_fpe.cpp b/src/tests/test_fpe.cpp
new file mode 100644
index 000000000..38c4f9a1c
--- /dev/null
+++ b/src/tests/test_fpe.cpp
@@ -0,0 +1,45 @@
+/*
+* (C) 2016 Jack Lloyd
+*
+* Botan is released under the Simplified BSD License (see license.txt)
+*/
+
+#include "tests.h"
+
+#if defined(BOTAN_HAS_FPE_FE1)
+ #include <botan/fpe_fe1.h>
+#endif
+
+namespace Botan_Tests {
+
+class FPE_FE1_Tests : public Text_Based_Test
+ {
+ public:
+ FPE_FE1_Tests() : Text_Based_Test("fpe_fe1.vec", {"Mod", "In", "Out", "Key", "Tweak"}) {}
+
+ Test::Result run_one_test(const std::string& algo, const VarMap& vars) override
+ {
+ const Botan::BigInt modulus = get_req_bn(vars, "Mod");
+ const Botan::BigInt input = get_req_bn(vars, "In");
+ const Botan::BigInt expected = get_req_bn(vars, "Out");
+ const std::vector<uint8_t> key = get_req_bin(vars, "Key");
+ const std::vector<uint8_t> tweak = get_req_bin(vars, "Tweak");
+
+ Test::Result result("FPE_FE1");
+
+ const Botan::BigInt got = Botan::FPE::fe1_encrypt(modulus, input, key, tweak);
+
+ result.test_eq("ciphertext", got, expected);
+
+ const Botan::BigInt decry = Botan::FPE::fe1_decrypt(modulus, got, key, tweak);
+
+ result.test_eq("decrypted", decry, input);
+
+ return result;
+ }
+
+ };
+
+BOTAN_REGISTER_TEST("fpe_fe1", FPE_FE1_Tests);
+
+}