def METHOD_NAME(self, gp, pk, M, policy_str):
    if type(M) != bytes and type(policy_str) != str:
        raise Exception("message and policy not right type!")
    key = group.random(GT)
    c1 = abencma.METHOD_NAME(gp, pk, key, policy_str)
    # instantiate a symmetric enc scheme from this key
    cipher = AuthenticatedCryptoAbstraction(sha2(key))
    c2 = cipher.METHOD_NAME(M)
    return { 'c1':c1, 'c2':c2 }