Commit 36a1d016930f889754651e014346a435189cce69

TEST: KSW tests correctly now
KSW.py
(8 / 20)
  
6161 def __init__(self, security) -> "(PK, SK)":
6262 self.security = security
6363 # select p, q, r
64 p = get_random_prime(200)
65 q = get_random_prime(200)
66 r = get_random_prime(200)
64 p = get_random_prime(100)
65 q = get_random_prime(100)
66 r = get_random_prime(100)
6767 # make n
6868 self.n = p*q*r
6969 # build the params
7171 # build the pairing
7272 self.pairing = Pairing(params)
7373 # find the generators for the G_p, G_q, and G_r subgroups
74 g_G = Element.random(self.pairing, G1)**self.n
7574 g_G_p = Element.random(self.pairing, G1)**(q*r)
7675 g_G_r = Element.random(self.pairing, G1)**(p*q)
7776 g_G_q = Element.random(self.pairing, G1)**(p*r)
7877 # choose R0
7978 R0 = g_G_r ** Element.random(self.pairing, Zr)
8079 # choose the random R's
81 Rs = []
82 for i in range(security):
83 ri1 = g_G_r**Element.random(self.pairing, Zr)
84 ri2 = g_G_r**Element.random(self.pairing, Zr)
85 Rs.append((ri1, ri2))
80 Rs = [(g_G_r**Element.random(self.pairing, Zr), g_G_r**Element.random(self.pairing, Zr)) for i in range(security)]
81 hs = [(g_G_p**Element.random(self.pairing, Zr), g_G_p**Element.random(self.pairing, Zr)) for i in range(security)]
8682 # choose the random H's
8783 Hs = []
8884 for i in range(security):
89 hi1 = g_G_p**Element.random(self.pairing, Zr)
90 hi2 = g_G_p**Element.random(self.pairing, Zr)
91 Hs.append((hi1, hi2))
85 Hs.append((hs[i][0] * Rs[i][0], hs[i][1] * Rs[i][1]))
9286 # calculate Q
9387 Q = g_G_q * R0
94 # build the vector
95 vector = []
96 for pos, h in enumerate(Hs):
97 Ri = Rs[pos]
98 vi = (Ri[0]*h[0], Ri[1]*h[0])
99 vector.append(vi)
10088 # build the public and master secret keys
101 self.pk = PublicKey(g_G_p, g_G_r, Q, vector)
102 self.sk = MasterSecretKey(p, q, r, g_G_q, Hs)
89 self.pk = PublicKey(g_G_p, g_G_r, Q, Hs)
90 self.sk = MasterSecretKey(p, q, r, g_G_q, hs)
10391
10492
10593 def keygen(self, v: "description of a predicate") -> "SK_f":