def METHOD_NAME(self, pk, M):
    r     = group.random()
    u1    = (pk['g1'] ** r)
    u2    = (pk['g2'] ** r)
    e     = group.encode(M) * (pk['h'] ** r)
    alpha = group.hash((u1, u2, e))
    v     = (pk['c'] ** r) * (pk['d'] ** (r * alpha))		