def encrypt(M, policy_str): global Y global s global attrs global sh global share global Cr global Cpr input = [pk, M, policy_str] g, g2, h, f, egg = pk policy = createPolicy(policy_str) attrs = getAttributeList(policy) R = groupObj.random(GT) print("R :=", R) s = groupObj.hash([R, M], ZR) s_sesskey = SHA1(R) print("s_sesskey :=", s_sesskey) Ctl = (R * (egg ** s)) sh = calculateSharesDict(s, policy) Y = len(sh) C = (h ** s) for y in range(0, Y): y1 = attrs[y] share[y1] = sh[y1] Cr[y1] = (g ** share[y1]) Cpr[y1] = (groupObj.hash(y1, G2) ** share[y1]) T1 = SymEnc(s_sesskey, M) ct = [policy_str, Ctl, C, Cr, Cpr, T1] output = ct return output
def encrypt(M, policy_str): global Y global s global attrs global sh global share global Cr global Cpr input = [pk, M, policy_str] g, g2, h, f, egg = pk policy = createPolicy(policy_str) attrs = getAttributeList(policy) R = groupObj.random(GT) print("R :=", R) s = groupObj.hash([R, M], ZR) s_sesskey = SHA1(R) print("s_sesskey :=", s_sesskey) Ctl = (R * (egg**s)) sh = calculateSharesDict(s, policy) Y = len(sh) C = (h**s) for y in range(0, Y): y1 = attrs[y] share[y1] = sh[y1] Cr[y1] = (g**share[y1]) Cpr[y1] = (groupObj.hash(y1, G2)**share[y1]) T1 = SymEnc(s_sesskey, M) ct = [policy_str, Ctl, C, Cr, Cpr, T1] output = ct return output
def transform(ct): input = [pk, skBlinded, ct] policy_str, Ctl, C, Cr, Cpr, T1 = ct S, D, Dj, Djp = skBlinded policy = createPolicy(policy_str) attrs = prune(policy, S) coeff = getCoefficients(policy) Y = len(attrs) A = dotprod2(range(0,Y), transformLambdaFunc, attrs, Cr, coeff, Dj, Djp, Cpr) print(" A := ", A) result0 = (pair(C, D) * A) T0 = Ctl T2 = result0 print("T2 :=>", result0) partCT = {'T0':T0, 'T1':T1, 'T2':T2} output = partCT return output
def transform(ct): input = [pk, skBlinded, ct] policy_str, Ctl, C, Cr, Cpr, T1 = ct S, D, Dj, Djp = skBlinded policy = createPolicy(policy_str) attrs = prune(policy, S) coeff = getCoefficients(policy) Y = len(attrs) A = dotprod2(range(0, Y), transformLambdaFunc, attrs, Cr, coeff, Dj, Djp, Cpr) print(" A := ", A) result0 = (pair(C, D) * A) T0 = Ctl T2 = result0 print("T2 :=>", result0) partCT = {'T0': T0, 'T1': T1, 'T2': T2} output = partCT return output