X-Git-Url: https://git.siccegge.de//index.cgi?p=software%2FDIPE.git;a=blobdiff_plain;f=tests%2FtestDIPE.cpp;h=4219ba46ec3f182ef9c178b34478f97628b21424;hp=f1b6332398d5f95b6ad7aed938424324b5959260;hb=d4e7cbce6db6c8a08ca82b12d9eeaa5a4f59fc3e;hpb=9e276a2fee29d54cc7d742b4ab26d4885a70cf6b diff --git a/tests/testDIPE.cpp b/tests/testDIPE.cpp index f1b6332..4219ba4 100644 --- a/tests/testDIPE.cpp +++ b/tests/testDIPE.cpp @@ -172,6 +172,61 @@ TEST(DipeTest, DipeDecapSuccess) { dipe_free_ctxt(ctxt); } +TEST(DipeTest, DipeDecryptSuccessSmall) { + char ctxt[768]; + char ptxt[768]; + size_t ptxt_len; + size_t overhead; + dipe_master_publickey_t pk; + dipe_master_secretkey_t msk; + dipe_secretkey_t sk; + + element_t y[6]; + element_t x[6]; + + for (size_t i = 0; i < 6; i+=2) { + element_init_Zr(y[i], *dipe_get_pairing(param)); + element_init_Zr(x[i], *dipe_get_pairing(param)); + element_init_Zr(y[i+1], *dipe_get_pairing(param)); + element_init_Zr(x[i+1], *dipe_get_pairing(param)); + + element_set1(y[i]); + element_set1(x[i+1]); + element_random(y[i+1]); + element_neg(x[i], y[i+1]); + } + + dipe_master_keygen(param, 6, &pk, &msk); + dipe_keygen(param, msk, "1234567890abcdef", y, &sk); + overhead = dipe_ciphertext_overhead(param, 6); + + for (size_t clen = overhead; clen < 768; ++clen) { + memset(ctxt, 0, 768); + memset(ptxt, 0, 768); + memcpy(ptxt, "test", 4); + + dipe_encrypt(param, pk, x, 4, ptxt, clen, ctxt); + ptxt_len = dipe_decrypt(param, sk, "1234567890abcdef", y, clen, ctxt, ptxt); + + if (clen >= overhead) { + ASSERT_EQ(ptxt_len, 4); + ASSERT_STREQ(ptxt, "test"); + } + else { + ASSERT_EQ(ptxt_len, 0); + } + } + + for (size_t i = 0; i < 6; ++i) { + element_clear(y[i]); + element_clear(x[i]); + } + + dipe_free_master_secretkey(msk); + dipe_free_master_publickey(pk); + dipe_free_secretkey(sk); +} + int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv);