Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.46 KB | None | 0 0
  1. package edu.uci.ics.khoinn2.service.idm.resource;
  2.  
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import edu.uci.ics.khoinn2.service.idm.logger.ServiceLogger;
  5. import edu.uci.ics.khoinn2.service.idm.models.HashPassRequestModel;
  6. import edu.uci.ics.khoinn2.service.idm.models.HashedPassResponseModel;
  7. import edu.uci.ics.khoinn2.service.idm.models.SessionModel;
  8. import edu.uci.ics.khoinn2.service.idm.models.SessionRequestModel;
  9. import edu.uci.ics.khoinn2.service.idm.security.Crypto;
  10. import edu.uci.ics.khoinn2.service.idm.security.Session;
  11.  
  12. import javax.ws.rs.Consumes;
  13. import javax.ws.rs.POST;
  14. import javax.ws.rs.Path;
  15. import javax.ws.rs.Produces;
  16. import javax.ws.rs.core.MediaType;
  17. import javax.ws.rs.core.Response;
  18. import java.io.IOException;
  19. import java.util.Arrays;
  20.  
  21. @Path("test")
  22. public class TestPage {
  23. @Path("session")
  24. @POST
  25. @Consumes(MediaType.APPLICATION_JSON)
  26. @Produces(MediaType.APPLICATION_JSON)
  27. public Response getToken(String jsonText) {
  28. ServiceLogger.LOGGER.info("Received request for session.");
  29. ServiceLogger.LOGGER.info("Request:\n" + jsonText);
  30. ObjectMapper mapper = new ObjectMapper();
  31. SessionRequestModel rsm = null;
  32. SessionModel sessionModel = null;
  33.  
  34. try {
  35. rsm = mapper.readValue(jsonText, SessionRequestModel.class);
  36. ServiceLogger.LOGGER.info("Email: " + rsm.getEmail());
  37. Session session = Session.createSession(rsm.getEmail());
  38. sessionModel = new SessionModel(session.getEmail(), session.getSessionID().toString());
  39. } catch (IOException e) {
  40. ServiceLogger.LOGGER.info("IOException.");
  41. }
  42. ServiceLogger.LOGGER.info("Returning session: " + sessionModel);
  43. return Response.status(Response.Status.OK).entity(sessionModel).build();
  44. }
  45.  
  46. @Path("hashedPass")
  47. @POST
  48. @Consumes(MediaType.APPLICATION_JSON)
  49. @Produces(MediaType.APPLICATION_JSON)
  50. public Response hashPassword(String jsonText) {
  51. ServiceLogger.LOGGER.info("Received request to hash password.");
  52. ServiceLogger.LOGGER.info("Request:\n" + jsonText);
  53. ObjectMapper mapper = new ObjectMapper();
  54. HashPassRequestModel requestModel = null;
  55. HashedPassResponseModel responseModel = null;
  56.  
  57. try {
  58. requestModel = mapper.readValue(jsonText, HashPassRequestModel.class);
  59. char[] pword = requestModel.getPassword().toCharArray();
  60. byte[] salt = Crypto.genSalt();
  61. byte[] hashedPassword = Crypto.hashPassword(pword, salt, Crypto.ITERATIONS, Crypto.KEY_LENGTH);
  62. String password = getHashedPass(hashedPassword);
  63.  
  64. responseModel = new HashedPassResponseModel(requestModel.getPassword(), password);
  65. } catch (IOException e) {
  66. ServiceLogger.LOGGER.info("IOException");
  67. }
  68. return Response.status(Response.Status.OK).entity(responseModel).build();
  69. }
  70.  
  71. private String getHashedPass(byte[] hashedPassword) {
  72. StringBuffer buf = new StringBuffer();
  73. for (byte b : hashedPassword) {
  74. buf.append(format(Integer.toHexString(Byte.toUnsignedInt(b))));
  75. }
  76. return buf.toString();
  77. }
  78.  
  79. private String format(String binS) {
  80. int length = 2 - binS.length();
  81. char[] padArray = new char[length];
  82. Arrays.fill(padArray, '0');
  83. String padString = new String(padArray);
  84. return padString + binS;
  85. }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement