コード例 #1
0
ファイル: ibenc_ckrs09.py プロジェクト: mhlakhani/charm
 def encrypt(self, mpk, ID, msg):
     s, s1, s2 = group.random(ZR, 3)
     hID = self.strToId(mpk, ID)
     hashID1 = mpk['g_l'][0] * dotprod2(range(1,mpk['n']), lam_func, mpk['g_l'], hID)
     c = {}
     c_pr = (mpk['omega'] ** s) * msg
     c[0] = hashID1 ** s
     c[1] = mpk['v1'] ** (s - s1)
     c[2] = mpk['v2'] ** s1
     c[3] = mpk['v3'] ** (s - s2)
     c[4] = mpk['v4'] ** s2        
     return {'c':c, 'c_prime':c_pr }
コード例 #2
0
ファイル: ibenc_ckrs09.py プロジェクト: mhlakhani/charm
 def extract(self, mpk, msk, ID):
     r1, r2 = group.random(ZR, 2) # should be params of extract
     hID = self.strToId(mpk, ID)
     hashID2 = mpk['h_l'][0] * dotprod2(range(1,mpk['n']), lam_func, mpk['h_l'], hID)        
     d = {}
     
     d[0] = mpk['h'] ** ((r1 * msk['t1'] * msk['t2']) + (r2 * msk['t3'] * msk['t4']))
     d[1] = (mpk['h'] ** (-msk['alpha'] * msk['t2'])) * (hashID2 ** (-r1 * msk['t2']))
     d[2] = (mpk['h'] ** (-msk['alpha'] * msk['t1'])) * (hashID2 ** (-r1 * msk['t1']))
     d[3] = hashID2 ** (-r2 * msk['t4'])
     d[4] = hashID2 ** (-r2 * msk['t3'])
     return { 'd':d }
コード例 #3
0
def transform(pk, skBlinded, 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)
    lam_func1 = lambda a, b, c, d, e, f: (pair((b[a] ** -c[a]), d[a]) * pair((e[a] ** c[a]), f[a]))
    A = dotprod2(range(0, Y), lam_func1, attrs, Cr, coeff, Dj, Djp, Cpr)
    result0 = pair(C, D) * A
    T0 = Ctl
    T2 = result0
    partCT = [T0, T1, T2]
    output = partCT
    return output
コード例 #4
0
def transform(pk, sk, ct):
	input = [pk, sk, ct]
	policy_str, Ctl, C, Cr, Cpr, T1 = ct
	S, D, Dj, Djp = sk
	policy = createPolicy(policy_str)
	attrs = prune(policy, S)
	coeff = getCoefficients(policy)
	Y = len(attrs)
	lam_func1 = lambda a,b,c,d,e,f: (pair((b[a] ** -c[a]), d[a]) * pair((e[a] ** c[a]), f[a]))
	A = dotprod2(range(0, Y), lam_func1, attrs, Cr, coeff, Dj, Djp, Cpr)
	result0 = (pair(C, D) * A)
	T0 = Ctl
	T2 = result0
	partCT = [T0, T1, T2]
	output = partCT
	return output
コード例 #5
0
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
コード例 #6
0
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