#include #include #include #include using namespace TFHEpp; int main() { cout << "lvl1" << endl; constexpr uint32_t num_test = 1000; for (int test = 0; test < num_test; test++) { random_device seed_gen; default_random_engine engine(seed_gen()); uniform_int_distribution binary(0, 1); lweKey key; array p; for (bool &i : p) i = binary(engine) > 0; array pmu; for (int i = 0; i < lvl1param::n; i++) pmu[i] = p[i] ? lvl1param::μ : -lvl1param::μ; TRLWE c; trlweSymEncrypt(c, pmu, key.get()); // if constexpr(hasq) for (int i = 0; i < lvl1param::n; i++) // if(c[lvl1param::k][i] >= lvl1param::q) // std::cout< p2 = trlweSymDecrypt(c, key.get()); for (int i = 0; i < lvl1param::n; i++) assert(p[i] == p2[i]); } cout << "Passed" << endl; cout << "lvl2" << endl; for (int test = 0; test < num_test; test++) { random_device seed_gen; default_random_engine engine(seed_gen()); uniform_int_distribution binary(0, 1); lweKey key; array p; for (bool &i : p) i = binary(engine) > 0; array pmu; for (int i = 0; i < lvl2param::n; i++) pmu[i] = p[i] ? lvl2param::μ : -lvl2param::μ; TRLWE c; trlweSymEncrypt(c, pmu, key.get()); array p2 = trlweSymDecrypt(c, key.get()); for (int i = 0; i < lvl2param::n; i++) assert(p[i] == p2[i]); } cout << "Passed" << endl; }