From f13331294db25341f34c7a17c7e5588439fa9500 Mon Sep 17 00:00:00 2001 From: rtalbi <dr_talbi@esi.dz> Date: Thu, 9 Jan 2020 18:00:46 +0100 Subject: [PATCH] New tests for the S&P paper --- CONFIG/DAPPLE.config | 2 +- CRYPTO/EvalAddPow2.cpp | 4 +- CRYPTO/EvalCmp.cpp | 4 +- CRYPTO/EvalCmp100.cpp | 4 +- CRYPTO/EvalDiv.cpp | 3 +- CRYPTO/EvalDiv100.cpp | 4 +- CRYPTO/EvalDotProd.cpp | 3 +- CRYPTO/EvalEntropy.cpp | 3 +- CRYPTO/EvalExpo.cpp | 2 + CRYPTO/EvalHBound.cpp | 4 +- CRYPTO/EvalLog.cpp | 3 +- CRYPTO/EvalLrUpdate.cpp | 5 +- CRYPTO/EvalMult.cpp | 4 +- CRYPTO/EvalProba.cpp | 3 +- CRYPTO/EvalSigmoid.cpp | 2 +- CRYPTO/EvalSqrt.cpp | 4 +- CRYPTO/EvalStandardDiv.cpp | 5 +- CRYPTO/EvalThreashold.cpp | 6 + CRYPTO/SkeySwitch.cpp | 5 +- TEST/TESTBuildingBlocks.cpp | 552 ++++++++++++++---------------------- 20 files changed, 261 insertions(+), 361 deletions(-) diff --git a/CONFIG/DAPPLE.config b/CONFIG/DAPPLE.config index f3cc156d..1694bd84 100755 --- a/CONFIG/DAPPLE.config +++ b/CONFIG/DAPPLE.config @@ -46,7 +46,7 @@ sendParaClient="true"; blindingSize="20"; encryptData="true"; - delay="1000"; + delay="2"; } # Naive Bayes parameters diff --git a/CRYPTO/EvalAddPow2.cpp b/CRYPTO/EvalAddPow2.cpp index 6b12d939..a0c67e33 100755 --- a/CRYPTO/EvalAddPow2.cpp +++ b/CRYPTO/EvalAddPow2.cpp @@ -73,13 +73,15 @@ Cipher EvalAddPow2::EvalAddPow2_U2_step2(std::vector <Cipher> res1) res = dtpkc.enc(x*x,A.Pub); - std::this_thread::sleep_for(dtpkc.delay); + auto en = chrono::high_resolution_clock::now(); std::chrono::duration<double, std::milli> duration = en - begin ; timeSU = duration.count(); bdwSU = mpz_size(res.T1.get_mpz_t())+ mpz_size(res.T2.get_mpz_t())* sizeof(mp_limb_t); + std::this_thread::sleep_for(dtpkc.delay); + return res; diff --git a/CRYPTO/EvalCmp.cpp b/CRYPTO/EvalCmp.cpp index 99cdf03d..89c0cf20 100755 --- a/CRYPTO/EvalCmp.cpp +++ b/CRYPTO/EvalCmp.cpp @@ -118,7 +118,7 @@ bool EvalCmp::EvalCmp_U2_step2(std::vector <Cipher> res1) } - std::this_thread::sleep_for(dtpkc.delay); + // return the comparison output auto en = chrono::high_resolution_clock::now(); @@ -126,7 +126,7 @@ bool EvalCmp::EvalCmp_U2_step2(std::vector <Cipher> res1) timeSU = duration.count(); bdwSU = 1; - + std::this_thread::sleep_for(dtpkc.delay); return x < y ; } diff --git a/CRYPTO/EvalCmp100.cpp b/CRYPTO/EvalCmp100.cpp index a26eb7eb..e30c3bce 100755 --- a/CRYPTO/EvalCmp100.cpp +++ b/CRYPTO/EvalCmp100.cpp @@ -95,14 +95,14 @@ bool EvalCmp100::EvalCmp_U2_step2(std::vector <Cipher> res1) y = dtpkc.PSdec1(res1[2], res1[3]); - std::this_thread::sleep_for(dtpkc.delay); + // return the comparison output auto en = chrono::high_resolution_clock::now(); std::chrono::duration<double, std::milli> duration = en - begin ; timeSU = duration.count(); bdwSU = 1; - + std::this_thread::sleep_for(dtpkc.delay); return x < y ; } diff --git a/CRYPTO/EvalDiv.cpp b/CRYPTO/EvalDiv.cpp index 8288afc4..d7842b2f 100755 --- a/CRYPTO/EvalDiv.cpp +++ b/CRYPTO/EvalDiv.cpp @@ -191,12 +191,13 @@ EvalDiv ::EvalDiv_U1_step3(Cipher S7) S9.Pub=a.Pub; - std::this_thread::sleep_for(dtpkc.delay); + auto en = chrono::high_resolution_clock::now(); std::chrono::duration<double, std::milli> duration = en - begin ; timeMU += duration.count(); bdwMU += mpz_size(S9.T1.get_mpz_t())+ mpz_size(S9.T2.get_mpz_t())* sizeof(mp_limb_t); + std::this_thread::sleep_for(dtpkc.delay); return S9; diff --git a/CRYPTO/EvalDiv100.cpp b/CRYPTO/EvalDiv100.cpp index 8f746477..84c1c387 100755 --- a/CRYPTO/EvalDiv100.cpp +++ b/CRYPTO/EvalDiv100.cpp @@ -100,7 +100,7 @@ EvalDiv100 ::EvalDiv_U1_step3(Cipher S7) S9.T2=S7.T2*S88.T2; S9.Pub=a.Pub; - std::this_thread::sleep_for(dtpkc.delay); + @@ -109,6 +109,8 @@ EvalDiv100 ::EvalDiv_U1_step3(Cipher S7) timeMU += duration.count(); bdwMU += mpz_size(S9.T1.get_mpz_t())+ mpz_size(S9.T2.get_mpz_t())* sizeof(mp_limb_t); + std::this_thread::sleep_for(dtpkc.delay); + return S9; } diff --git a/CRYPTO/EvalDotProd.cpp b/CRYPTO/EvalDotProd.cpp index 02134e1c..584c7e5c 100755 --- a/CRYPTO/EvalDotProd.cpp +++ b/CRYPTO/EvalDotProd.cpp @@ -126,13 +126,14 @@ Cipher EvalDotProd::EvalDotProd_U1_step3(Cipher val) std::vector <Cipher> res = evalDiv.EvalDiv_U1_step1(); Cipher out = evalDiv.EvalDiv_U1_step3(evalDiv.EvalDiv_U2_step2(res[0],res[1], res[2], res[3])); out.sign = val.sign; - std::this_thread::sleep_for(dtpkc.delay); + auto en = chrono::high_resolution_clock::now(); std::chrono::duration<double, std::milli> duration = en - begin ; timeMU += duration.count(); bdwMU += mpz_size(out.T1.get_mpz_t())+ mpz_size ( out.T2.get_mpz_t())* sizeof(mp_limb_t); + std::this_thread::sleep_for(dtpkc.delay); return out; diff --git a/CRYPTO/EvalEntropy.cpp b/CRYPTO/EvalEntropy.cpp index aad407aa..c63eaec1 100755 --- a/CRYPTO/EvalEntropy.cpp +++ b/CRYPTO/EvalEntropy.cpp @@ -241,7 +241,7 @@ EvalEntropy ::EvalEntropy_U1_step3(Cipher blinded_result) S9.Pub=T.Pub; - std::this_thread::sleep_for(dtpkc.delay); + auto en = chrono::high_resolution_clock::now(); @@ -249,6 +249,7 @@ EvalEntropy ::EvalEntropy_U1_step3(Cipher blinded_result) timeMU += duration.count(); bdwMU += mpz_size(S9.T1.get_mpz_t())+ mpz_size(S9.T2.get_mpz_t())* sizeof(mp_limb_t); + std::this_thread::sleep_for(dtpkc.delay); return S9; diff --git a/CRYPTO/EvalExpo.cpp b/CRYPTO/EvalExpo.cpp index 256f92db..d068d12a 100755 --- a/CRYPTO/EvalExpo.cpp +++ b/CRYPTO/EvalExpo.cpp @@ -82,6 +82,8 @@ EvalExpo::EvalSig_U2_step2(Cipher S1, Cipher S2) timeSU = duration.count(); bdwSU = mpz_size(S4.T1.get_mpz_t())+ mpz_size(S4.T2.get_mpz_t())* sizeof(mp_limb_t); + std::this_thread::sleep_for(dtpkc.delay); + return S4; } diff --git a/CRYPTO/EvalHBound.cpp b/CRYPTO/EvalHBound.cpp index 71310316..179775ea 100755 --- a/CRYPTO/EvalHBound.cpp +++ b/CRYPTO/EvalHBound.cpp @@ -157,13 +157,15 @@ EvalHBound::EvalHbound_U1_step3(Cipher res2) out = evalDiv.EvalDiv_U1_step3(evalDiv.EvalDiv_U2_step2(res[0],res[1], res[2], res[3])); - std::this_thread::sleep_for(dtpkc.delay); + auto en = chrono::high_resolution_clock::now(); std::chrono::duration<double, std::milli> duration = en - begin ; timeMU += duration.count(); bdwMU += mpz_size(out.T1.get_mpz_t())+ mpz_size(out.T2.get_mpz_t())* sizeof(mp_limb_t); + std::this_thread::sleep_for(dtpkc.delay); + return out; } diff --git a/CRYPTO/EvalLog.cpp b/CRYPTO/EvalLog.cpp index 110ee3e9..bf87254b 100755 --- a/CRYPTO/EvalLog.cpp +++ b/CRYPTO/EvalLog.cpp @@ -88,7 +88,7 @@ EvalLog::EvalLog_U1_step3(Cipher S4) c.T1=S4.T1*mpz_class_powm(R.T1,dtpkc.n-1,dtpkc.n2); c.T2=S4.T2*mpz_class_powm(R.T2,dtpkc.n-1,dtpkc.n2); c.Pub=u.Pub; - std::this_thread::sleep_for(dtpkc.delay); + auto en = chrono::high_resolution_clock::now(); @@ -96,6 +96,7 @@ EvalLog::EvalLog_U1_step3(Cipher S4) timeMU += duration.count(); bdwMU += mpz_size(S4.T1.get_mpz_t())+ mpz_size(S4.T2.get_mpz_t())* sizeof(mp_limb_t); + std::this_thread::sleep_for(dtpkc.delay); return c; diff --git a/CRYPTO/EvalLrUpdate.cpp b/CRYPTO/EvalLrUpdate.cpp index 6e1d14f1..4b7fad45 100755 --- a/CRYPTO/EvalLrUpdate.cpp +++ b/CRYPTO/EvalLrUpdate.cpp @@ -159,13 +159,16 @@ Cipher EvalLrUpdate::EvalLrUpdate_U1_step3(Cipher val) //out.T2 = mpz_class_powm(out.T2,100000,dtpkc.n2*dtpkc.n2); - std::this_thread::sleep_for(dtpkc.delay); + auto en = chrono::high_resolution_clock::now(); std::chrono::duration<double, std::milli> duration = en - begin ; timeMU += duration.count(); bdwMU += mpz_size(out.T1.get_mpz_t())+ mpz_size(out.T2.get_mpz_t())* sizeof(mp_limb_t); + std::this_thread::sleep_for(dtpkc.delay); + + return out; } diff --git a/CRYPTO/EvalMult.cpp b/CRYPTO/EvalMult.cpp index 95f1a9e1..123d10d2 100755 --- a/CRYPTO/EvalMult.cpp +++ b/CRYPTO/EvalMult.cpp @@ -188,13 +188,15 @@ Cipher EvalMult::EvalMult_U1_step3(Cipher res2) S10.Pub=A.Pub; - std::this_thread::sleep_for(dtpkc.delay); + auto en = chrono::high_resolution_clock::now(); std::chrono::duration<double, std::milli> duration = en - begin ; timeMU += duration.count(); bdwMU += mpz_size(S10.T1.get_mpz_t())+ mpz_size(S10.T2.get_mpz_t())* sizeof(mp_limb_t); + std::this_thread::sleep_for(dtpkc.delay); + return S10; } diff --git a/CRYPTO/EvalProba.cpp b/CRYPTO/EvalProba.cpp index 708267d3..fcfcfdfb 100755 --- a/CRYPTO/EvalProba.cpp +++ b/CRYPTO/EvalProba.cpp @@ -110,14 +110,13 @@ EvalProba :: EvalProba_U1_step3(Cipher blinded_result) vector<Cipher> res1 = evalDiv100.EvalDiv_U1_step1(); S9= evalDiv100.EvalDiv_U1_step3(evalDiv100.EvalDiv_U2_step2(res1[0], res1[1], res1[2], res1[3])); - std::this_thread::sleep_for(dtpkc.delay); - auto en = chrono::high_resolution_clock::now(); std::chrono::duration<double, std::milli> duration = en - begin ; timeMU += duration.count(); bdwMU += mpz_size(S9.T1.get_mpz_t())+ mpz_size(S9.T2.get_mpz_t())* sizeof(mp_limb_t); + std::this_thread::sleep_for(dtpkc.delay); return S9; diff --git a/CRYPTO/EvalSigmoid.cpp b/CRYPTO/EvalSigmoid.cpp index 0cabbab6..34a52909 100755 --- a/CRYPTO/EvalSigmoid.cpp +++ b/CRYPTO/EvalSigmoid.cpp @@ -137,7 +137,7 @@ EvalSigmoid::EvalSig_U1_step3(Cipher S4) //S9.T1 = mpz_class_powm(S9.T1,100000,dtpkc.n2*dtpkc.n2); //S9.T2 = mpz_class_powm(S9.T2,100000,dtpkc.n2*dtpkc.n2); - cout << " S9 " << S9 << endl; + //cout << " S9 " << S9 << endl; std::this_thread::sleep_for(dtpkc.delay); diff --git a/CRYPTO/EvalSqrt.cpp b/CRYPTO/EvalSqrt.cpp index af117b16..9ddc9cdc 100755 --- a/CRYPTO/EvalSqrt.cpp +++ b/CRYPTO/EvalSqrt.cpp @@ -153,13 +153,13 @@ EvalSqrt::EvalHbound_U1_step3(Cipher res2) out = evalDiv.EvalDiv_U1_step3(evalDiv.EvalDiv_U2_step2(res[0],res[1], res[2], res[3])); - std::this_thread::sleep_for(dtpkc.delay); - auto en = chrono::high_resolution_clock::now(); std::chrono::duration<double, std::milli> duration = en - begin ; timeMU += duration.count(); bdwMU += mpz_size(out.T1.get_mpz_t())+ mpz_size(out.T2.get_mpz_t())* sizeof(mp_limb_t); + std::this_thread::sleep_for(dtpkc.delay); + return out; } diff --git a/CRYPTO/EvalStandardDiv.cpp b/CRYPTO/EvalStandardDiv.cpp index 420b54f1..81381d18 100755 --- a/CRYPTO/EvalStandardDiv.cpp +++ b/CRYPTO/EvalStandardDiv.cpp @@ -90,13 +90,16 @@ EvalStandardDiv::EvalStandardDiv_U1_step3(Cipher res2) EvalDiv evalDiv(res2,blindVal,dtpkc); std::vector <Cipher> res = evalDiv.EvalDiv_U1_step1(); Cipher out = evalDiv.EvalDiv_U1_step3(evalDiv.EvalDiv_U2_step2(res[0],res[1], res[2], res[3])); - std::this_thread::sleep_for(dtpkc.delay); + auto en = chrono::high_resolution_clock::now(); std::chrono::duration<double, std::milli> duration = en - begin ; timeMU += duration.count(); bdwMU += mpz_size(out.T1.get_mpz_t())+ mpz_size(out.T2.get_mpz_t())* sizeof(mp_limb_t); + + std::this_thread::sleep_for(dtpkc.delay); + return out; } diff --git a/CRYPTO/EvalThreashold.cpp b/CRYPTO/EvalThreashold.cpp index 24f1ba9b..787e3df9 100755 --- a/CRYPTO/EvalThreashold.cpp +++ b/CRYPTO/EvalThreashold.cpp @@ -58,6 +58,9 @@ EvalThreashold::eval() timeMU += div.timeMU; timeSU = div.timeSU; + bdwMU = div.bdwMU; + bdwSU = div.bdwSU; + //cout << "S1 =" << S1 << endl; @@ -95,6 +98,9 @@ EvalThreashold::eval() timeMU += div.timeMU; timeSU = div.timeSU; + bdwMU = div.bdwMU; + bdwSU = div.bdwSU; + //cout << "A =" << A << endl; begin = chrono::high_resolution_clock::now(); diff --git a/CRYPTO/SkeySwitch.cpp b/CRYPTO/SkeySwitch.cpp index 7e4893b9..a38d58f6 100755 --- a/CRYPTO/SkeySwitch.cpp +++ b/CRYPTO/SkeySwitch.cpp @@ -97,13 +97,16 @@ Cipher SkeySwitch::SkeySwitch_U1_step3(Cipher res2) res.Pub = pkey; - std::this_thread::sleep_for(dtpkc.delay); + auto en = chrono::high_resolution_clock::now(); std::chrono::duration<double, std::milli> duration = en - begin ; timeMU += duration.count(); bdwMU += mpz_size(res.T1.get_mpz_t())+ mpz_size(res.T2.get_mpz_t())* sizeof(mp_limb_t); + + std::this_thread::sleep_for(dtpkc.delay); + return res; } diff --git a/TEST/TESTBuildingBlocks.cpp b/TEST/TESTBuildingBlocks.cpp index 2d78981b..27f064ff 100755 --- a/TEST/TESTBuildingBlocks.cpp +++ b/TEST/TESTBuildingBlocks.cpp @@ -284,434 +284,306 @@ void TESTBuildingBlocks::run (bool deserialize, int keysize, int prec, int error DTPKC::Cipher C_A, C_B, C_C; gmp_randstate_t randstate; - int cptF = 0; - if (deserialize) - { - dtpkc.deserializeDtpkc(filename); - dtpkc.blindVal = prec; - pkey = dtpkc.pkw; - //cout << "Deserialized dtpkc " << endl; - - }else - { - - gmp_randinit_default(randstate); - gmp_randseed_ui(randstate,time(NULL)); - std::chrono::milliseconds delay(1000); - dtpkc.keygen(prec,randstate, delay, keysize, error); - - // Generate public key - dtpkc.getKey(pkey,skey); - dtpkc.updatePkw(pkey); - cout << "Generated dtpkc parameters " << endl; - } + double timeMU_SKS, timeSU_SKS, bdwMU_SKS, bdwSU_SKS; + double timeMU_SE, timeSU_SE, bdwMU_SE, bdwSU_SE; + double timeMU_STS, timeSU_STS, bdwMU_STS, bdwSU_STS; + double timeMU_SHBC, timeSU_SHBC, bdwMU_SHBC, bdwSU_SHBC; + double timeMU_SSig, timeSU_SSig, bdwMU_SSig, bdwSU_SSig; + double timeMU_SDP, timeSU_SDP, bdwMU_SDP, bdwSU_SDP; + double timeMU_SD, timeSU_SD, bdwMU_SD, bdwSU_SD; + double timeMU_SM, timeSU_SM, bdwMU_SM, bdwSU_SM; + double timeMU_SC, timeSU_SC, bdwMU_SC, bdwSU_SC; + double timeMU_SLog, timeSU_SLog, bdwMU_SLog, bdwSU_SLog; + double timeMU_SSqrt, timeSU_SSqrt, bdwMU_SSqrt, bdwSU_SSqrt; + double timeMU_SExpo, timeSU_SExpo, bdwMU_SExpo, bdwSU_SExpo; + double timeMU_SPU, timeSU_SPU, bdwMU_SPU, bdwSU_SPU; - dtpkc.getKey(newPkey,newSkey); - dtpkc.updatePkw(newPkey); + int N=1; - // Read operands - B = mpz_class_get_z_bits(15); - //cout << A << endl; - A = B + mpz_class_get_z_bits(15); + if (deserialize) { + dtpkc.deserializeDtpkc(filename); + dtpkc.blindVal = prec; + pkey = dtpkc.pkw; - // Encrypt operands - C_A = dtpkc.enc(A,pkey); - C_B = dtpkc.enc(B,pkey); + } else { - Cipher C_T; + gmp_randinit_default(randstate); + gmp_randseed_ui(randstate, time(NULL)); + std::chrono::milliseconds delay(1000); + dtpkc.keygen(prec, randstate, delay, keysize, error); - T.set_str("1000",10); - C_T = dtpkc.enc(T,pkey); + // Generate public key + dtpkc.getKey(pkey, skey); + dtpkc.updatePkw(pkey); + //cout << "Generated dtpkc parameters " << endl; + } - int size = 2; - int t = 1000; - vector<mpz_class> INTER (size); - vector<Cipher> classses (size); - vector<int> inter (size); - inter[0] = 700; - inter [1]=300; - INTER[0].set_str("700",10); - classses[0] = dtpkc.enc(INTER[0],pkey); - INTER[1].set_str("300",10); - classses[1] = dtpkc.enc(INTER[1],pkey); + dtpkc.getKey(newPkey, newSkey); + dtpkc.updatePkw(newPkey); -/** -* Test SDec - * -*/ + // Generate operands - cpt++; - - mpz_class c_a = dtpkc.Sdec(C_A); - const char* state = (c_a == A) ? " passed":" failed"; - cout<<"Test(" << cpt << ") : <<SDec> gave : " << c_a << " state :" << state << endl; - if (c_a != A) cptF++; + B = mpz_class_get_z_bits(15); + A = B + mpz_class_get_z_bits(15); + // Encrypt operands + C_A = dtpkc.enc(A, pkey); + C_B = dtpkc.enc(B, pkey); + Cipher C_T; -/** -* Test Comparion -*/ - cpt ++; + T.set_str("1000", 10); + C_T = dtpkc.enc(T, pkey); - EvalCmp evalCmp(C_A,C_B,dtpkc); - bool r = evalCmp.EvalCmp_U2_step2(evalCmp.EvalCmp_U1_step1()); + int size = 2; + int t = 1000; + vector<mpz_class> INTER(size); + vector<Cipher> classses(size); + vector<int> inter(size); + inter[0] = 700; + inter[1] = 300; + INTER[0].set_str("700", 10); + classses[0] = dtpkc.enc(INTER[0], pkey); + INTER[1].set_str("300", 10); + classses[1] = dtpkc.enc(INTER[1], pkey); + for (int j=0; j<N; j++) { - state = (A<B == r) ? " passed":" failed"; - cout<<"Test(" << cpt << ") : <<comparison>> gave : " << r << " state :" << state << " Time MU " << evalCmp.timeMU << " Time SU " << evalCmp.timeSU << " bdw MU " << evalCmp.bdwMU << " bdw SU " << evalCmp.bdwSU << endl; - if (A<B != r) cptF++; /** -* Test EvalHBound -*/ - - cpt ++; - mpz_class i = 10000; - i = i * pow(log2(3) * 100,2) * log(1/0.00001); - EvalHBound evalHBound(dtpkc.enc(i,pkey),dtpkc.enc(1000,pkey),dtpkc); - C_C = evalHBound.EvalHbound_U1_step3(evalHBound.EvalHBound_U2_step2(evalHBound.EvalHBound_U1_step1())); - C= dtpkc.Sdec(C_C); - int hbound = (VFDT_Classifier::HBound(log2(3),log(1/0.00001),1000) * 10000 ) ; - - state = (abs(int(hbound - C.get_ui())) < 300) ? " passed":" failed"; - cout<<"Test(" << cpt << ") <<HBound>> gave : " << C.get_str() << " expected result : " << hbound << " state :" << state << " Time MU " << evalHBound.timeMU << " Time SU " << evalHBound.timeSU << " bdw MU " << evalHBound.bdwMU << " bdw SU " << evalHBound.bdwSU << endl; - if (abs(int(hbound - C.get_ui())) > 300) cptF++; - - - - /** -* Test EvalSqrt +* Test Comparion */ - cpt ++; - - - EvalSqrt evalsqrt (C_A,dtpkc); - C_C = evalsqrt.EvalHbound_U1_step3(evalsqrt.EvalHBound_U2_step2(evalsqrt.EvalHBound_U1_step1())); - C= dtpkc.Sdec(C_C); - int sqrt_ = (VFDT_Classifier::HBound(log2(3),log(1/0.00001),1000) * 10000 ) ; - - //state = (abs(int(hbound - C.get_ui())) < 300) ? " passed":" failed"; - cout<<"Test(" << cpt << ") <<SQRT>> gave : " << C.get_str() << " expected result : " << sqrt_ << " state :" << state << " Time MU " << evalsqrt.timeMU << " Time SU " << evalsqrt.timeSU << " bdw MU " << evalsqrt.bdwMU << " bdw SU " << evalsqrt.bdwSU << endl; - if (abs(int(hbound - C.get_ui())) > 300) cptF++; + EvalCmp evalCmp(C_A, C_B, dtpkc); + bool r = evalCmp.EvalCmp_U2_step2(evalCmp.EvalCmp_U1_step1()); /** -* Test EvalAdd +* Test EvalHBound */ - cpt++; - EvalAdd add(C_A,C_B); - C_C=add.EvalAdd_U1(); - C=dtpkc.Sdec(C_C); + mpz_class i = 10000; + i = i * pow(log2(3) * 100, 2) * log(1 / 0.00001); + EvalHBound evalHBound(dtpkc.enc(i, pkey), dtpkc.enc(1000, pkey), dtpkc); + C_C = evalHBound.EvalHbound_U1_step3(evalHBound.EvalHBound_U2_step2(evalHBound.EvalHBound_U1_step1())); - state = (A+B == C) ? " passed":" failed"; - cout<<"Test(" << cpt << ") <<addition>> gave : " << C.get_str() << " state :" << state << endl; - if (A+B != C) cptF++; /** -* Test EvalSub +* Test EvalSqrt */ - cpt ++; - // Run EvalSub - EvalSub sub(C_A,C_B,dtpkc); - C_C=sub.EvalSub_U1(); - C=dtpkc.Sdec(C_C); - state = (A-B == C) ? " passed":" failed"; - cout<<"Test(" << cpt << ") <<subtraction>> gave : " << C.get_str() << " state :" << state << endl; - if (A-B != C) cptF++; + EvalSqrt evalsqrt(C_A, dtpkc); + C_C = evalsqrt.EvalHbound_U1_step3(evalsqrt.EvalHBound_U2_step2(evalsqrt.EvalHBound_U1_step1())); + C = dtpkc.Sdec(C_C); + /** * Test EvalDiv */ - cpt ++; - // Run EvalDiv - EvalDiv div(C_A,C_B,dtpkc); - std::vector <DTPKC::Cipher> res = div.EvalDiv_U1_step1(); - C_C=div.EvalDiv_U1_step3(div.EvalDiv_U2_step2(res[0],res[1],res[2],res[3])); - C=dtpkc.Sdec(C_C); - state = (abs (A/B - C.get_ui()) < 300) ? " passed":" failed"; - cout<<"Test(" << cpt << ") <<division>> gave : " << C.get_str() << " expected result " << A/B << " state :" << state << " Time MU " << div.timeMU << " Time SU " << div.timeSU << " bdw MU " << div.bdwMU << " bdw SU " << div.bdwSU << endl; - if (abs (A/B - C.get_ui()) > 300) cptF++; + EvalDiv div(C_A, C_B, dtpkc); + std::vector<DTPKC::Cipher> res = div.EvalDiv_U1_step1(); + C_C = div.EvalDiv_U1_step3(div.EvalDiv_U2_step2(res[0], res[1], res[2], res[3])); + C = dtpkc.Sdec(C_C); -/** -* Test logarithm on big numbers -*/ - cpt++; - mpz_class ress = mpz_class_log2_10(A); - state = (abs(trunc(log2(A.get_ui())*100) - ress) < 100) ? " passed":" failed"; - - cout<<"Test(" << cpt << ") <<Logarithme>> gave : " << ress << " expected result : " << log2(A.get_ui())*100 << " state : " << state << endl; - if (abs(trunc(log2(A.get_ui())*100) - ress) > 100) cptF++; /** * Test Secure entropy */ - // Read operands - cpt ++; - EvalEntropy evalEntropy(C_T,classses,dtpkc); - C_C= evalEntropy.EvalEntropy_U1_step3(evalEntropy.EvalEntropy_U2_step2(evalEntropy.EvalEntropy_U1_step1())); - C=dtpkc.Sdec(C_C); + EvalEntropy evalEntropy(C_T, classses, dtpkc); + C_C = evalEntropy.EvalEntropy_U1_step3(evalEntropy.EvalEntropy_U2_step2(evalEntropy.EvalEntropy_U1_step1())); + C = dtpkc.Sdec(C_C); - double result = VFDT_Classifier::Entropy(t,inter)*10000; - state = ( result - C < 300 ) ? " passed":" failed"; - cout<<"Test(" << cpt << ") <<Entropy>> gave : " << C.get_str() << " exepcted result = "<<result << " state : " << state << " Time MU " << evalEntropy.timeMU << " Time SU " << evalEntropy.timeSU << " bdw MU " << evalEntropy.bdwMU << " bdw SU " << evalEntropy.bdwSU << endl; - if (result - C > 300) cptF++; - - /** +/** * Test EvalProba */ - // Read operands - - cpt ++; - EvalProba evalProba (classses,dtpkc); - C_C= evalProba.EvalProba_U1_step3(evalProba.EvalProba_U2_step2(evalProba.EvalProba_U1_step1())); - C=dtpkc.Sdec(C_C); + EvalProba evalProba(classses, dtpkc); + C_C = evalProba.EvalProba_U1_step3(evalProba.EvalProba_U2_step2(evalProba.EvalProba_U1_step1())); + C = dtpkc.Sdec(C_C); - //double result = VFDT_Classifier::Entropy(t,inter)*10000; - //state = ( result - C < 300 ) ? " passed":" failed"; - cout<<"Test(" << cpt << ") <<EvalProba>> gave : " << C.get_str() << " exepcted result = "<<result << " state : " << state << " Time MU " << evalProba.timeMU << " Time SU " << evalProba.timeSU << " bdw MU " << evalProba.bdwMU << " bdw SU " << evalProba.bdwSU << endl; - if (result - C > 300) cptF++; /** * Test SkeySwitch */ - cpt++; + SkeySwitch skeySwitch(C_A, newPkey, dtpkc); + C_C = skeySwitch.SkeySwitch_U1_step3(skeySwitch.SkeySwitch_U2_step2(skeySwitch.SkeySwitch_U1_step1())); + C = dtpkc.Sdec(C_C); - SkeySwitch skeySwitch (C_A,newPkey, dtpkc); - C_C = skeySwitch.SkeySwitch_U1_step3(skeySwitch.SkeySwitch_U2_step2(skeySwitch.SkeySwitch_U1_step1())); - C = dtpkc.Sdec(C_C); - - state = ( C == A ) ? " passed":" failed"; - cout<<"Test(" << cpt << ") <<Key Switch>> gave : " << C.get_str() << " state : " << state << " Time MU " << skeySwitch.timeMU << " Time SU " << skeySwitch.timeSU << " bdw MU " << skeySwitch.bdwMU << " bdw SU " << skeySwitch.bdwSU << endl; - if ( C != A ) cptF++; /** * Test EvalMult */ - cpt++; - EvalMult e1(C_A, C_B, dtpkc); - C_C = e1.EvalMult_U1_step3(e1.EvalMult_U2_step2(e1.EvalMult_U1_step1())); - - C = dtpkc.Sdec(C_C); - - state = ( C == A*B) ? " passed":" failed"; - cout<<"Test(" << cpt << ") <<Multplication>> gave : " << C.get_str() << " state : " << state << " Time MU " << e1.timeMU << " Time SU " << e1.timeSU << " bdw MU " << e1.bdwMU << " bdw SU " << e1.bdwSU << endl; - if ( C != A*B) cptF++; - - -/** -* Test EvalAddPow2 -*/ - cpt++; - EvalAddPow2 evalAddPow2(C_A,C_B,dtpkc); - C_C = evalAddPow2.EvalAddPow2_U1_step3(evalAddPow2.EvalAddPow2_U2_step2(evalAddPow2.EvalAddPow2_U1_step1())); + EvalMult e1(C_A, C_B, dtpkc); + C_C = e1.EvalMult_U1_step3(e1.EvalMult_U2_step2(e1.EvalMult_U1_step1())); + C = dtpkc.Sdec(C_C); - C = dtpkc.Sdec(C_C); - mpz_class inter2 = A+mpz_class_powm(B,2,1000000000000000); - state = ( C == inter2 ) ? " passed":" failed"; - cout<<"Test(" << cpt << ") <<AddPowerOf2>> gave : " << C.get_str() <<" expected result : " << inter2.get_str( 10 )<< " state : " << state << " Time MU " << evalAddPow2.timeMU << " Time SU " << evalAddPow2.timeSU << " bdw MU " << evalAddPow2.bdwMU << " bdw SU " << evalAddPow2.bdwSU << endl; - if ( C != inter2 ) cptF++; - -/** -* Test EvalTestStandardDiv -*/ - cpt++; - mpz_class i1, i2, i3; - i1.set_str("100000000",10); - i2.set_str("100",10); - i3.set_str("200",10); - EvalStandardDiv evalStadardDiv(dtpkc.enc(i1,pkey),dtpkc.enc(i2,pkey),dtpkc.enc(i3,pkey), dtpkc); - C_C = evalStadardDiv.EvalStandardDiv_U1_step3(evalStadardDiv.EvalStandardDiv_U2_step2(evalStadardDiv.EvalStandardDiv_U1_step1())); - - C = dtpkc.Sdec(C_C); - int l = sqrt(1000000-pow(200,2)); - state = ( C == l) ? " passed":" failed"; - cout<<"Test(" << cpt << ") <<standard div>> gave : " << C.get_str() <<" expected result = " << l << " state : " << state << " Time MU " << evalStadardDiv.timeMU << " Time SU " << evalStadardDiv.timeSU << " bdw MU " << evalStadardDiv.bdwMU << " bdw SU " << evalStadardDiv.bdwSU << endl; - if (C != l) cptF++; /** * Test EvalThreashold **/ + mpz_class i1, i2; - cpt++; - - i1.set_str("1000",10); - i2.set_str("280",10); - double x = 0.7; - EvalThreashold evalThreashold(dtpkc.enc(i1,pkey),dtpkc.enc(i2,pkey),x, dtpkc); - C_C= evalThreashold.eval(); + i1.set_str("1000", 10); + i2.set_str("280", 10); + double x = 0.7; + EvalThreashold evalThreashold(dtpkc.enc(i1, pkey), dtpkc.enc(i2, pkey), x, dtpkc); + C_C = evalThreashold.eval(); - C = dtpkc.Sdec(C_C); - double m = (1000+280*NormalCDFInverse(x))*100; - state = ( C-m<300 ) ? " passed":" failed"; - cout<<"Test(" << cpt << ") <<EvalTh>> gave : " << C.get_str() << " expected result =" << m << " state : " << state << " Time MU " << evalThreashold.timeMU << " Time SU " << evalThreashold.timeSU << " bdw MU " << evalThreashold.bdwMU << " bdw SU " << evalThreashold.bdwSU << endl; - if ( C-m>300 ) cptF++; - /** -* Test EvalDiv100 +/** +* Test Sigmoid */ - cpt ++; - EvalDiv100 div2(C_A,C_B,dtpkc); - std::vector <DTPKC::Cipher> res3 = div2.EvalDiv_U1_step1(); - C_C=div2.EvalDiv_U1_step3(div2.EvalDiv_U2_step2(res3[0],res3[1],res3[2],res3[3])); - C=dtpkc.Sdec(C_C); - - state = (100*A/B == C) ? " passed":" failed"; - cout<<"Test(" << cpt << ") <<EvalDiv100> gave : " << C.get_str() << "expected result " << 100*A/B << " state :" << state << endl; - if ( 100*A/B != C ) cptF++; - - /** - * Test Sigmoid - */ - - x=2; - Cipher C_x = dtpkc.enc(x,dtpkc.pkw); - C_x.sign=0; - cpt ++; - EvalSigmoid evalSigmoid(C_x,100,dtpkc); - vector<Cipher> in = evalSigmoid.EvalSig_U1_step1(); - C_C=evalSigmoid.EvalSig_U1_step3(evalSigmoid.EvalSig_U2_step2(in[0],in[1])); - C=dtpkc.Sdec(C_C); - - state = (abs(int(evalSigmoid.sigmoid(x,100)*100- C.get_ui())) < 300 ) ? " passed":" failed"; - - if (abs(int(evalSigmoid.sigmoid(x,100)*100-C.get_ui())) > 300 ) cptF++; - - cout<<"Test(" << cpt << ") <<Sigmoid> gave : " << C.get_str() << " expected result " << evalSigmoid.sigmoid(-x,100)<< " state :" << state << " Time MU " << evalSigmoid.timeMU << " Time SU " << evalSigmoid.timeSU << " bdw MU " << evalSigmoid.bdwMU << " bdw SU " << evalSigmoid.bdwSU << endl; + x = 2; + Cipher C_x = dtpkc.enc(x, dtpkc.pkw); + C_x.sign = 0; + cpt++; + EvalSigmoid evalSigmoid(C_x, 100, dtpkc); + vector<Cipher> in = evalSigmoid.EvalSig_U1_step1(); + C_C = evalSigmoid.EvalSig_U1_step3(evalSigmoid.EvalSig_U2_step2(in[0], in[1])); + C = dtpkc.Sdec(C_C); - /** - * Test Expo - */ - - cpt ++; - EvalExpo evalExpo (C_A,100,dtpkc); - vector<Cipher> in_ = evalExpo.EvalSig_U1_step1(); - C_C=evalExpo.EvalSig_U1_step3(evalExpo.EvalSig_U2_step2(in_[0],in_[1])); - C=dtpkc.Sdec(C_C); - //state = (abs(int(evalSigmoid.sigmoid(x,100)*100- C.get_ui())) < 300 ) ? " passed":" failed"; +/** +* Test Expo +*/ - //if (abs(int(evalSigmoid.sigmoid(x,100)*100-C.get_ui())) > 300 ) cptF++; + cpt++; + EvalExpo evalExpo(C_A, 100, dtpkc); + vector<Cipher> in_ = evalExpo.EvalSig_U1_step1(); + C_C = evalExpo.EvalSig_U1_step3(evalExpo.EvalSig_U2_step2(in_[0], in_[1])); + C = dtpkc.Sdec(C_C); - cout<<"Test(" << cpt << ") <<Expo> gave : " << " expected result " << " state :" << state << " Time MU " << evalExpo.timeMU << " Time SU " << evalExpo.timeSU << " bdw MU " << evalExpo.bdwMU << " bdw SU " << evalExpo.bdwSU << endl; +/** +* Test Log +*/ + x = 194; + C_x = dtpkc.enc(x, dtpkc.pkw); + C_x.sign = 1; + cpt++; + EvalLog evalLog(C_x, 10000, dtpkc); + in = evalLog.EvalLog_U1_step1(); + C_C = evalLog.EvalLog_U1_step3(evalLog.EvalLog_U2_step2(in[0], in[1])); + C = dtpkc.Sdec(C_C); + + /** + * Testing the dot product protocol + */ + + + vector<mpz_class> av, bv, cv; + int alpha = 20; + mpz_class alpha2 = 20; + + av.push_back(0); + av.push_back(0); + av.push_back(0); + av.push_back(0); + av.push_back(0); + av.push_back(0); + av.push_back(0); + av.push_back(0); + + bv.push_back(30); + bv.push_back(3); + bv.push_back(1); + bv.push_back(3000); + bv.push_back(20); + bv.push_back(15); + bv.push_back(17); + bv.push_back(200); + + + cv.push_back(15); + cv.push_back(-3); + cv.push_back(10); + cv.push_back(30); + cv.push_back(-10); + cv.push_back(-105); + cv.push_back(107); + cv.push_back(4200); + + vector<Cipher> C_av, C_bv, C_cv; + mpz_class output = 0; + mpz_class output2 = 0; + for (int i = 0; i < 8; i++) { + C_av.push_back(dtpkc.enc(av[i], dtpkc.pkw)); + C_bv.push_back(dtpkc.enc(bv[i], dtpkc.pkw)); + C_cv.push_back(dtpkc.enc(cv[i], dtpkc.pkw)); + output = output + alpha2 * (av[i] - bv[i]) * cv[i]; + output2 = output2 + cv[i] * bv[i]; + } + + + EvalDotProd evalDotProd(C_cv, C_bv, C_bv.size(), dtpkc); + C_C = evalDotProd.EvalDotProd_U1_step3(evalDotProd.EvalDotProd_U2_step2(evalDotProd.EvalDotProd_U1_step1())); + C = dtpkc.Sdec(C_C); - ////////////////////// - x=194; - C_x = dtpkc.enc(x,dtpkc.pkw); - C_x.sign=1; - cpt ++; - EvalLog evalLog(C_x,10000,dtpkc); - in = evalLog.EvalLog_U1_step1(); - C_C=evalLog.EvalLog_U1_step3(evalLog.EvalLog_U2_step2(in[0],in[1])); - C=dtpkc.Sdec(C_C); +/** + * Summary + */ - state = (abs(log(1+x)*100- C.get_ui()) < 300 ) ? " passed":" failed"; - if (abs(log(1+x)*100-C.get_ui()) > 300 ) cptF++; - cout<<"Test(" << cpt << ") <<EvalLog> gave : " << C.get_str() << " expected result " <<log(10000+x)*10000<< " state :" << state << " Time MU " << evalLog.timeMU << " Time SU " << evalLog.timeSU << " bdw MU " << evalLog.bdwMU << " bdw SU " << evalLog.bdwSU << endl; + timeMU_SKS += skeySwitch.timeMU; timeSU_SKS += skeySwitch.timeSU; bdwMU_SKS +=skeySwitch.bdwMU; bdwSU_SKS +=skeySwitch.bdwSU; + timeMU_SE += evalEntropy.timeMU; timeSU_SE += evalEntropy.timeSU; bdwMU_SE +=evalEntropy.bdwMU; bdwSU_SE +=evalEntropy.bdwSU; + timeMU_STS += evalThreashold.timeMU; timeSU_STS += evalThreashold.timeSU; bdwMU_STS +=evalThreashold.bdwMU; bdwSU_STS +=evalThreashold.bdwSU; + timeMU_SHBC += evalHBound.timeMU; timeSU_SHBC += evalHBound.timeSU; bdwMU_SHBC +=evalHBound.bdwMU; bdwSU_SHBC +=evalHBound.bdwSU; + timeMU_SSig += evalSigmoid.timeMU; timeSU_SSig += evalSigmoid.timeSU; bdwMU_SSig +=evalSigmoid.bdwMU; bdwSU_SSig +=evalSigmoid.bdwSU; + timeMU_SDP += evalDotProd.timeMU; timeSU_SDP += evalDotProd.timeSU; bdwMU_SDP +=evalDotProd.bdwMU; bdwSU_SDP +=evalDotProd.bdwSU; + timeMU_SD += div.timeMU; timeSU_SD += div.timeSU; bdwMU_SD +=div.bdwMU; bdwSU_SD +=div.bdwSU; + timeMU_SM += e1.timeMU; timeSU_SM += e1.timeSU; bdwMU_SM +=e1.bdwMU; bdwSU_SM +=e1.bdwSU; + timeMU_SC += evalCmp.timeMU; timeSU_SC += evalCmp.timeSU; bdwMU_SC +=evalCmp.bdwMU; bdwSU_SC +=evalCmp.bdwSU; + timeMU_SLog += evalLog.timeMU; timeSU_SLog += evalLog.timeSU; bdwMU_SLog +=evalLog.bdwMU; bdwSU_SLog +=evalLog.bdwSU; + timeMU_SSqrt += evalsqrt.timeMU; timeSU_SSqrt += evalsqrt.timeSU; bdwMU_SSqrt +=evalsqrt.bdwMU; bdwSU_SSqrt +=evalsqrt.bdwSU; + timeMU_SExpo += evalExpo.timeMU; timeSU_SExpo += evalExpo.timeSU; bdwMU_SExpo +=evalExpo.bdwMU; bdwSU_SExpo +=evalExpo.bdwSU; + timeMU_SPU += evalProba.timeMU; timeSU_SPU += evalProba.timeSU; bdwMU_SPU +=evalProba.bdwMU; bdwSU_SPU +=evalProba.bdwSU; - /** - * Testing the LRUpdate protocol - */ - cpt ++; - vector<mpz_class> av, bv, cv; - int alpha = 20; - mpz_class alpha2 = 20; - - av.push_back(0); - av.push_back(0); - av.push_back(0); - av.push_back(0); - av.push_back(0); - av.push_back(0); - av.push_back(0); - av.push_back(0); - - bv.push_back(30); - bv.push_back(3); - bv.push_back(1); - bv.push_back(3000); - bv.push_back(20); - bv.push_back(15); - bv.push_back(17); - bv.push_back(200); - - - cv.push_back(15); - cv.push_back(-3); - cv.push_back(10); - cv.push_back(30); - cv.push_back(-10); - cv.push_back(-105); - cv.push_back(107); - cv.push_back(4200); - - vector<Cipher> C_av, C_bv, C_cv; - mpz_class output =0; - mpz_class output2 =0; - for(int i=0; i < 8; i++) - { - C_av.push_back(dtpkc.enc(av[i],dtpkc.pkw)); - C_bv.push_back(dtpkc.enc(bv[i],dtpkc.pkw)); - C_cv.push_back(dtpkc.enc(cv[i],dtpkc.pkw)); - output = output + alpha2 * (av[i]-bv[i])*cv[i]; - output2 = output2 + cv[i]*bv[i]; } - EvalLrUpdate evalLrUpdate(C_av, C_bv, C_cv ,alpha, dtpkc); - C_C = evalLrUpdate.EvalLrUpdate_U1_step3(evalLrUpdate.EvalLrUpdate_U2_step2(evalLrUpdate.EvalLrUpdate_U1_step1())); - C = dtpkc.Sdec(C_C); - if ( dtpkc.n - C < 10000000000000 ) C= 0 - (dtpkc.n - dtpkc.Sdec(C_C)); - else - state = (abs(int(output.get_ui()- C.get_ui())) < 3 ) ? " passed":" failed"; - - if (abs(int(output.get_ui()- C.get_ui())) > 3 ) cptF++; - - cout<<"Test(" << cpt << ") <<LRupdate> gave : " << C.get_str() << " expected result " << output << " state :" << state << endl; - - - EvalDotProd evalDotProd(C_cv, C_bv , C_bv.size(), dtpkc); - C_C = evalDotProd.EvalDotProd_U1_step3(evalDotProd.EvalDotProd_U2_step2(evalDotProd.EvalDotProd_U1_step1())); - C = dtpkc.Sdec(C_C); - if ( dtpkc.n - C < 10000000000000 ) C= 0 - (dtpkc.n - dtpkc.Sdec(C_C)); - else - state = (abs(int(output2.get_ui()- C.get_ui())) < 3 ) ? " passed":" failed"; - - if (abs(int(output2.get_ui()- C.get_ui())) > 3 ) cptF++; - - cout<<"Test(" << cpt << ") <<Dot Product> gave : " << C.get_str() << " expected result " << output2 << " state :" << state << " Time MU " << evalDotProd.timeMU << " Time SU " << evalDotProd.timeSU << " bdw MU " << evalDotProd.bdwMU << " bdw SU " << evalDotProd.bdwSU << endl; - //cout << dtpkc.n << endl; - -/** - * Summary - */ - - cout <<"***************************" << endl; - cout << "Total tests run : " << cpt << " Failed : " << cptF << endl; - cout <<"***************************" << endl; - + timeMU_SKS /=N; timeSU_SKS /=N; bdwMU_SKS /=N; bdwSU_SKS /=N; + timeMU_SE /=N; timeSU_SE /=N; bdwMU_SE /=N; bdwSU_SE /=N; + timeMU_STS /=N; timeSU_STS /=N; bdwMU_STS /=N; bdwSU_STS /=N; + timeMU_SHBC /=N; timeSU_SHBC /=N; bdwMU_SHBC /=N; bdwSU_SHBC /=N; + timeMU_SSig /=N; timeSU_SSig /=N; bdwMU_SSig /=N; bdwSU_SSig /=N; + timeMU_SDP /=N; timeSU_SDP /=N; bdwMU_SDP /=N; bdwSU_SDP /=N; + timeMU_SD /=N; timeSU_SD /=N; bdwMU_SD /=N; bdwSU_SD /=N; + timeMU_SM /=N; timeSU_SM /=N; bdwMU_SM /=N; bdwSU_SM /=N; + timeMU_SC /=N; timeSU_SC /=N; bdwMU_SC /=N; bdwSU_SC /=N; + timeMU_SLog /=N; timeSU_SLog /=N; bdwMU_SLog /=N; bdwSU_SLog/=N; + timeMU_SSqrt /=N; timeSU_SSqrt /=N; bdwMU_SSqrt /=N; bdwSU_SSqrt /=N; + timeMU_SExpo /=N; timeSU_SExpo /=N; bdwMU_SExpo /=N; bdwSU_SExpo /=N; + timeMU_SPU /=N; timeSU_SPU/=N; bdwMU_SPU /=N; bdwSU_SPU /=N; + + cout << " timeMU_SKS= " << timeMU_SKS << " timeSU_SKS= " << timeSU_SKS << " bdwMU_SKS= " << bdwMU_SKS << " bdwSU_SKS= "<< bdwSU_SKS<< endl; + cout << " timeMU_SE= " << timeMU_SE << " timeSU_SE= " << timeSU_SE << " bdwMU_SE= " << bdwMU_SE << " bdwSU_SE= "<< bdwSU_SE << endl; + cout << " timeMU_STS= " << timeMU_STS << " timeSU_STS= " << timeSU_STS << " bdwMU_STS= " << bdwMU_STS << " bdwSU_STS= "<< bdwSU_STS << endl; + cout << " timeMU_SHBC= " << timeMU_SHBC << " timeSU_SHBC= " << timeSU_SHBC << " bdwMU_SHBC= " << bdwMU_SHBC << " bdwSU_SHBC= "<< bdwSU_SHBC << endl; + cout << " timeMU_SSig= " << timeMU_SSig << " timeSU_SSig= " << timeSU_SSig << " bdwMU_SSig= " << bdwMU_SSig << " bdwSU_SSig= "<< bdwSU_SSig << endl; + cout << " timeMU_SDP= " << timeMU_SDP << " timeSU_SDP= " << timeSU_SDP << " bdwMU_SDP= " << bdwMU_SDP << " bdwSU_SDP= "<< bdwSU_SDP << endl; + cout << " timeMU_SD= " << timeMU_SD << " timeSU_SD= " << timeSU_SD << " bdwMU_SD= " << bdwMU_SD << " bdwSU_SD= "<< bdwSU_SD << endl; + cout << " timeMU_SM= " << timeMU_SM << " timeSU_SM= " << timeSU_SM << " bdwMU_SM= " << bdwMU_SM << " bdwSU_SM= "<< bdwSU_SM << endl; + cout << " timeMU_SC= " << timeMU_SC << " timeSU_SC= " << timeSU_SC << " bdwMU_SC= " << bdwMU_SC << " bdwSU_SC= "<< bdwSU_SC << endl; + cout << " timeMU_SLog= " << timeMU_SLog << " timeSU_SLog= " << timeSU_SLog << " bdwMU_SLog= " << bdwMU_SC << " bdwSU_SLog= "<< bdwSU_SLog << endl; + cout << " timeMU_SExpo= " << timeMU_SExpo << " timeSU_SExpo= " << timeSU_SExpo << " bdwMU_SExpo= " << bdwMU_SExpo << " bdwSU_SExpo= "<< bdwSU_SExpo<< endl; + cout << " timeMU_SSqrt= " << timeMU_SSqrt << " timeSU_SSqrt= " << timeSU_SSqrt << " bdwMU_SSqrt= " << bdwMU_SSqrt << " bdwSU_SExpo= "<< bdwSU_SSqrt<< endl; + cout << " timeMU_SPU= " << timeMU_SPU << " timeSU_SPU= " << timeSU_SPU << " bdwMU_SPU= " << bdwMU_SPU << " bdwSU_SPU= "<< bdwSU_SPU<< endl; if(!deserialize) gmp_randclear(randstate); } -- GitLab