print("{0} is not a square mod {1}".format(y, q))
        return False
    else:
        if debug_mode:
            print("{0} is a square mod {1}".format(y, q))

    return True

if __name__ == "__main__":

    login = sys.argv[1]

    if "-debug" in sys.argv:
        debug_mode = True

    server = Server(BASE_URL)

    while not compute_y():
        continue

    #Signature de Rabin -> composé d'un couple x (message) et U (random)
    x = get_primal_signature(y, p, q, n, debug_mode)

    U = "{0:08x}".format(U)

    if debug_mode:
        print('x: {0}'.format(x))
        print('U: {0}'.format(U))

    print(server.query(CONFIRMATION + login, {'n': n, 's': x, 'u': U}))
BASE_URL = "http://pac.bouillaguet.info/TP5/RSA-keygen/"
GET_CHALLENGE = "challenge/"
GET_PK = "PK/"
CONFIRMATION = "confirmation/"

debug_mode = False

if __name__ == "__main__":
    login = sys.argv[1]

    if "-debug" in sys.argv:
        debug_mode = True

    #Récupération de l'exposant
    server = Server(BASE_URL)

    e = server.query(GET_CHALLENGE + login)['e']
    #Choix de p et q

    p = 1
    q = 1
    phi_n = 1

    #Vérification de p et q - ok si p != q et que si e est premier avec phi_n
    while ((p == q) or (PGCD(e, phi_n) != 1)):
        p = get_primal_number()
        q = get_primal_number()
        phi_n = get_phi(p,q)

    #Calcul de n, en fonction de p et q choisis
        debug_mode = True

    login = sys.argv[1]

    if login == "-debug":
        raise Exception("First argument must be your login...")

    print("Hello {0}!".format(login))

    while choice != "phi" and choice != "d":
        choice = input("Would you resolve 'phi' part or 'd' part?")

    #PHI
    if choice == "phi":

        server_phi = Server(BASE_URL + RSA_RED + PHI_PART)

        try:
            #Récupération de e,n et phi
            if debug_mode:
                print("Response... ", end='')
            response_phi = server_phi.query(GET_CHALLENGE + login)
            if debug_mode:
                print("OK!")
        except:
            #Login faux??
            if debug_mode:
                print("ERROR!")
            print("Exiting...")

        e = response_phi['e']