def METHOD_NAME(self, mpk):
    a, b, c = group.random(ZR), group.random(ZR), group.random(ZR)
    A = mpk['g1'] ** a; B = mpk['g1'] ** b; C = mpk['g1'] ** c 
    At = mpk['g2'] ** a; Bt = mpk['g2'] ** b; Ct = mpk['g2'] ** c
    sk = {'a':a, 'b':b, 'c':c}
    pk = {'A':A, 'B':B, 'C':C, 'At':At, 'Bt':Bt, 'Ct':Ct}
    return (pk, sk)