Ejemplo n.º 1
0
 private Object[] RecoveryQ(Message m) {
   int sessID = (int) m.msg[m.msg.length - 1];
   Object[] rms = null;
   Challenge reoveryChallenge = challengeHanlder.generateChallenge(sessID);
   boolean success = challengeHanlder.checkChallenge(reoveryChallenge);
   if (success) {
     String userName = (String) m.msg[0];
     Person p = LoginManager.get(userName);
     if (p != null) {
       int qIDs[] = p.getQID();
       rms =
           new Object[] {
             Message.Type.RecoveryQResponse.name().toCharArray(),
             String.valueOf(qIDs[0]).toCharArray(),
             String.valueOf(qIDs[1]).toCharArray(),
             String.valueOf(reoveryChallenge.nonce).toCharArray()
           };
       network.sendMessage(rms, sessID);
       return rms;
     } else {
       rms =
           new Object[] {
             Message.Type.Failed.name().toCharArray(), "UserName invalid".toCharArray()
           };
       network.sendMessage(rms, sessID);
       return rms;
     }
   } else {
     rms =
         new Object[] {
           Message.Type.Failed.name().toCharArray(),
           "tried too many, wait for 2 mins".toCharArray()
         };
     network.sendMessage(rms, sessID);
     return rms;
     // no response.. ignore, the request.
   }
 }
Ejemplo n.º 2
0
 private Object[] Login(Message m) {
   int sessID = (int) m.msg[m.msg.length - 1];
   Challenge loginChallenge = challengeHanlder.generateChallenge(sessID);
   Object[] rms = null;
   boolean success = challengeHanlder.checkChallenge(loginChallenge);
   if (success) {
     rms =
         new Object[] {
           Message.Type.LoginResponse.name().toCharArray(),
           String.valueOf(loginChallenge.nonce).toCharArray()
         };
     network.sendMessage(rms, sessID);
     return rms;
   } else {
     rms =
         new Object[] {
           Message.Type.Failed.name().toCharArray(),
           "tried too many, wait for 2 mins".toCharArray()
         };
     // no response.. ignore, the request.
   }
   return rms;
 }
Ejemplo n.º 3
0
  public Message LoginResponse(Message m) {
    int sessID = (int) m.msg[m.msg.length - 1];
    char[] pw = null;
    Message rm = null;
    try {
      String userName = (String) m.msg[0];
      pw = (char[]) m.msg[1];
      Integer userNonce = (Integer) m.msg[2];
      Challenge userPrevNonce = challengeHanlder.getChallege(sessID);
      Person user = null;
      if (userPrevNonce.nonce + 1 == userNonce) {
        for (Person p : LoginManager.getPersons()) {
          if (p.getUsername().equals(userName)) {
            user = p;
            break;
          }
        }

        // System.out.println("In server, user.checkLogin(pw): "+ user.checkLogin(pw));

        if (user != null && user.checkLogin(pw)) {
          LoginResponse lr = new LoginResponse(true, user);
          rm = new Message(Message.Type.Authenticated, lr);
          network.setAuthentication(
              (SecretKey) m.msg[3], (SecretKey) m.msg[4], (int) m.msg[m.msg.length - 1], userName);
          network.sendMessage(rm, sessID);
        } else {
          rm = new Message(Message.Type.Failed, "Login failed");
          network.setAuthentication(
              (SecretKey) m.msg[3], (SecretKey) m.msg[4], (int) m.msg[m.msg.length - 1], userName);
          network.sendMessage(rm, (int) m.msg[m.msg.length - 1]);
          network.setAuthentication(null, null, sessID, "");
        }
      }
    } finally {
      if (pw != null) {
        for (int i = 0; i < pw.length; i++) {
          pw[i] = '\0';
        }
      }
    }

    return rm;
  }
Ejemplo n.º 4
0
  private Object[] RecoveryQResponse(Message m) {
    int sessID = (int) m.msg[m.msg.length - 1];
    Challenge challenge = challengeHanlder.getChallege(sessID);
    String userName = String.valueOf(m.msg[0]);
    int userR = (int) m.msg[4];
    Object[] rms = null;
    if (challenge.nonce + 1 == userR) {
      Person p = LoginManager.get(userName);
      char[] pw = (char[]) m.msg[3];
      if (p != null && p.checkRecovery((char[]) m.msg[1], (char[]) m.msg[2])) {
        if (Person.checkPasswordValidity(pw)) {
          p.resetPassword(pw);
          rms =
              new Object[] {
                Message.Type.Recovered.name().toCharArray(),
                "Password change completed".toCharArray()
              };
          network.sendMessage(rms, sessID);
          return rms;
        } else {
          rms =
              new Object[] {
                Message.Type.Failed.name().toCharArray(), "New Password is invalid".toCharArray()
              };
          network.sendMessage(rms, sessID);
          return rms;
        }

      } else {
        rms =
            new Object[] {Message.Type.Failed.name().toCharArray(), "wrong answers".toCharArray()};
        network.sendMessage(rms, sessID);
        return rms;
      }
    }
    rms =
        new Object[] {
          Message.Type.Failed.name().toCharArray(), "Password change failed".toCharArray()
        };
    network.sendMessage(rms, sessID);

    return rms;
  }