MCPcopy Create free account
hub / github.com/data61/MP-SPDZ / fake

Method fake

FHEOffline/DataSetup.cpp:52–91  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

50
51template <class FD>
52void PartSetup<FD>::fake(vector<FHE_SK>& sks, vector<T>& alphais,
53 int nplayers, bool distributed, bool check_security)
54{
55 if (check_security)
56 insecure("global key generation");
57 if (distributed)
58 cout << "Faking distributed key generation" << endl;
59 else
60 cout << "Faking key generation with extra noise" << endl;
61 PRNG G;
62 G.ReSeed();
63 pk = FHE_PK(params, FieldD.get_prime());
64 FHE_SK sk(params, FieldD.get_prime());
65 calpha = Ciphertext(params);
66 sks.resize(nplayers, pk);
67 alphais.resize(nplayers);
68
69 if (distributed)
70 DistKeyGen::fake(pk, sks, FieldD.get_prime(), nplayers);
71 else
72 {
73 Rq_Element sk = FHE_SK(pk).s();
74 for (int i = 0; i < nplayers; i++)
75 {
76 Rq_Element ski = pk.sample_secret_key(G);
77 sks[i].assign(ski);
78 sk += ski;
79 }
80 pk.KeyGen(sk, G, nplayers);
81 }
82
83 for (int i = 0; i < nplayers; i++)
84 {
85 Plaintext_<FD> m(FieldD);
86 m.randomize(G,Diagonal);
87 Ciphertext calphai = pk.encrypt(m);
88 calpha += calphai;
89 alphais[i] = m.element(0);
90 }
91}
92
93template <class FD>
94void PartSetup<FD>::fake(vector<PartSetup<FD> >& setups, int nplayers,

Callers 1

fake_keysMethod · 0.45

Calls 14

insecureFunction · 0.85
FHE_SKClass · 0.85
ReSeedMethod · 0.80
sample_secret_keyMethod · 0.80
KeyGenMethod · 0.80
elementMethod · 0.80
encryptMethod · 0.60
FHE_PKClass · 0.50
CiphertextClass · 0.50
get_primeMethod · 0.45
resizeMethod · 0.45
assignMethod · 0.45

Tested by

no test coverage detected