def report(user, message, reporter, sk_r, aux, pk_s, pk_j, test):
    auth = tweepy.OAuthHandler(CONSUMER_TOKEN, CONSUMER_SECRET)
    with open("messages.cfg", "rb") as f:
        lines = f.read().splitlines()
    auth.set_access_token(lines[1], lines[2])
    api = tweepy.API(auth)
    user_id = api.get_user(user).id

    m = parse_direct_message(api.direct_messages(full_text=True, count=50)[0], str(user_id))

    # parse each DM as msg + tag
    messages = list(map(parse_message_tag, m))
    (g, o) = aux

    for m in messages:
        if type(m[1]) is not tuple:
            continue
        if m[1][0] == message:
            sig = str_to_frank(m[1][1], G)
            if dmf.Verify(pk_s, sk_r, pk_j, m[1][0], sig, aux):
                response = requests.post(ADDRESS + "report",
                              data = {"frank" : DELIMITER.join(m[1][1]),
                                      "sender" : user,
                                      "reporter" : reporter,
                                      "message" : message,
                                      "test": test})
                print(response.text)
            else:
                print("Error: Message was not reported due to bad verification.")
            return
    print("Error: Message not found.")
def test_frank():
    msg = "hello"
    _, g, o = setup()
    aux = (g, o)
    (pk_s, sk_s) = dmf.KeyGen(aux)
    (pk_r, sk_r) = dmf.KeyGen(aux)
    (pk_j, sk_j) = dmf.KeyGen(aux)
    sig = dmf.Frank(sk_s, pk_r, pk_j, msg, aux)

    assert dmf.Verify(pk_s, sk_r, pk_j, msg, sig, aux)
    assert dmf.Judge(pk_s, pk_r, sk_j, msg, sig, aux)
def test_jforge():
    msg = "hello"
    _, g, o = setup()
    aux = (g, o)
    (pk_s, sk_s) = dmf.KeyGen(aux)
    (pk_r, sk_r) = dmf.KeyGen(aux)
    (pk_j, sk_j) = dmf.KeyGen(aux)
    sig = dmf.JForge(pk_s, pk_r, sk_j, msg, aux)

    assert dmf.Verify(pk_s, sk_r, pk_j, msg, sig, aux)
    assert dmf.Judge(pk_s, pk_r, sk_j, msg, sig, aux)

    (pi, T, U, A, B) = sig
    spok = dmf.Create_DMF_SPoK(pk_s, pk_j, T, U, A, aux)
    assert spok.verify(msg, pi)
def read(sk_r, aux, pk_s, pk_j, count=1, user=None):
    with open("blacklist.txt", "r") as f:
        blacklist = f.read().splitlines()

    if user is not None and user in blacklist:
        print("User " + user + " has been blocked.")
        return

    # Setup Twitter API
    auth = tweepy.OAuthHandler(CONSUMER_TOKEN, CONSUMER_SECRET)
    with open("messages.cfg", "rb") as f:
        lines = f.read().splitlines()
    auth.set_access_token(lines[1], lines[2])
    api = tweepy.API(auth)

    if user is None:
        user_id = None
    else:
        user_id = api.get_user(user).id

    m = parse_direct_message(api.direct_messages(full_text=True, count=50)[0], str(user_id))
    if len(m) < count:
        print("There are fewer than " + str(count) + " messages available.")
    m = m[:count]

    # parse each DM as msg + tag
    messages = list(map(parse_message_tag, m))

    for message in messages:
        if type(message[1]) is not tuple:
            print("Message is not well-formed.")
        else:
            if user is None and message[0] in blacklist:
                print("User " + message[0] + " has been blocked.")
            else:
                sig = str_to_frank(message[1][1], G)
                if dmf.Verify(pk_s, sk_r, pk_j, message[1][0], sig, aux):
                    if user is None:
                        print(message[0] + ": " + message[1][0])
                    else:
                        print(user + ": " + message[1][0])
                else:
                    print("Message could not be verified.")