def METHOD_NAME(self, GP, attributes):
    '''Authority Setup for a given set of attributes'''
    #For each attribute i belonging to the authority, the authority chooses two random exponents, 
    #alpha_i, y_i and publishes PK={e(g,g)^alpha_i, g^y_i} for each attribute 
    #it keeps SK = {alpha_i, y_i} as its secret key
    SK = {} #dictionary of {s: {alpha_i, y_i}} 
    PK = {} #dictionary of {s: {e(g,g)^alpha_i, g^y}}
    for i in attributes:
        #TODO: Is ZR an appropriate choice for a random element in Zp?
        alpha_i, y_i = group.random(), group.random()
        e_gg_alpha_i = pair(GP['g'],GP['g']) ** alpha_i
        g_y_i = GP['g'] ** y_i
        SK[i.upper()] = {'alpha_i': alpha_i, 'y_i': y_i}
        PK[i.upper()] = {'e(gg)^alpha_i': e_gg_alpha_i, 'g^y_i': g_y_i}
    if(debug):
        print("Authority Setup for %s" % attributes)
        print("SK = {alpha_i, y_i}")
        print(SK)
        print("PK = {e(g,g) ^ alpha_i, g ^ y_i}")
        print(PK)
    return (SK, PK)