Example #1
0
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!")

Example #4
0
        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!')