def main(): # scheme designed for symmetric billinear groups grp = PairingGroup('SS512') n = 5 # total # of users ibe = IBE_Revoke(grp) ID = "*****@*****.**" S = ["*****@*****.**", "*****@*****.**", "*****@*****.**"] (mpk, msk) = ibe.setup(n) sk = ibe.keygen(mpk, msk, ID) if debug: print("Keygen...\nsk :=", sk) M = grp.random(GT) ct = ibe.encrypt(mpk, M, S) if debug: print("Ciphertext...\nct :=", ct) m = ibe.decrypt(S, ct, sk) assert M == m, "Decryption FAILED!" if debug: print("Successful Decryption!!!")
A2 = (pair(C[6], D[6]) * pair(C[7], D[7])) A3 = (A1 / A2) A4 = (pair((E1**tag), D[7]) * pair((E2**-tag), K)) T2 = (A3 / A4) T0 = C[0] T1 = None partCT = [T0, T1, T2] output = partCT return output def decout(partCT, zz): T0, T1, T2 = partCT return T0 / (T2**zz) if __name__ == "__main__": global groupObj groupObj = PairingGroup('SS512') setup() id = "*****@*****.**" M = groupObj.random(GT) (zz, skBlinded) = keygen(id) ct = encrypt(M, id) partCT = transform(ct, skBlinded) orig_M = decout(partCT, zz) assert M == orig_M, "no balls on fire!!!!" print("Successful Decryption!")
A1 = (pair(C[1], D[1]) * (pair(C[2], D[2]) * (pair(C[3], D[3]) * (pair(C[4], D[4]) * pair(C[5], D[5]))))) A2 = (pair(C[6], D[6]) * pair(C[7], D[7])) A3 = (A1 / A2) A4 = (pair((E1 ** tag), D[7]) * pair((E2 ** -tag), K)) T2 = (A3 / A4) T0 = C[0] T1 = None partCT = [T0, T1, T2] output = partCT return output def decout(partCT, zz): T0, T1, T2 = partCT return T0 / (T2 ** zz) if __name__ == "__main__": global groupObj groupObj = PairingGroup('SS512') setup() id = "*****@*****.**" M = groupObj.random(GT) (zz, skBlinded) = keygen(id) ct = encrypt(M, id) partCT = transform(ct, skBlinded) orig_M = decout(partCT, zz) assert M == orig_M, "no balls on fire!!!!" print("Successful Decryption!")
if self.verbose: print("coefficients: ", coeff) secret = 0 for i in list: secret += (coeff[i] * shares[i]) return secret if __name__ == "__main__": # Testing Secret sharing python API k = 3 n = 4 p = PairingGroup('SS512') s = SecretShare(p, True) sec = p.random(ZR) shares = s.genShares(sec, k, n) K = shares[0] print('\nOriginal secret: %s' % K) y = {1:shares[1], 2:shares[2], 3:shares[3]} secret = s.recoverSecret(y) if(K == secret): print('\nRecovered secret: %s' % secret) else: print('\nCould not recover the secret!')