Commit 414a825e by Juho Juopperi

utility project stuff

1 parent 9c07914e
......@@ -13,7 +13,7 @@
<dependent-module archiveName="LanBortalBeansClient.jar" deploy-path="/lib" handle="module:/resource/LanBortalBeansClient/LanBortalBeansClient">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module archiveName="LanBortalUtilities.jar" deploy-path="/" handle="module:/resource/LanBortalUtilities/LanBortalUtilities">
<dependent-module archiveName="LanBortalUtilities.jar" deploy-path="/lib" handle="module:/resource/LanBortalUtilities/LanBortalUtilities">
<dependency-type>uses</dependency-type>
</dependent-module>
</wb-module>
......
......@@ -3,6 +3,7 @@
<name>LanBortalDatabase</name>
<comment></comment>
<projects>
<project>LanBortalUtilities</project>
</projects>
<buildSpec>
<buildCommand>
......
......@@ -20,8 +20,14 @@ import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.persistence.Version;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
/**
*
*/
......@@ -159,6 +165,9 @@ public class User implements ModelInterface<Integer> {
@OneToMany(mappedBy = "admin")
private List<EventSettings> eventSettings;
@Transient
private static final Logger logger = LoggerFactory.getLogger(User.class);
public User() {
}
......@@ -200,10 +209,12 @@ public class User implements ModelInterface<Integer> {
}
public String getPassword() {
logger.warn("Directly reading raw User password");
return password;
}
public void setPassword(String password) {
logger.warn("Directly settings raw User password");
this.password = password;
}
......@@ -522,5 +533,12 @@ public class User implements ModelInterface<Integer> {
this.eventSettings = eventSettings;
}
public void resetPassword(String password) {
// XXX: Couldn't reference utility project
throw new NotImplementedException();
}
public boolean checkPassword(String password) {
throw new NotImplementedException();
}
}
Manifest-Version: 1.0
Class-Path:
Class-Path: lib/slf4j-api-1.5.8.jar
......@@ -13,66 +13,68 @@ import sun.misc.BASE64Encoder;
public class PasswordFunctions {
private static BASE64Decoder decoder = new BASE64Decoder();
private static BASE64Encoder encoder = new BASE64Encoder();
private static final Logger logger = LoggerFactory.getLogger(PasswordFunctions.class);
public static String getEncryptedPassword(String password) {
String salt = generateSalt();
String base64Str = shaWithSaltToBase64(password, salt);
String ssha = "{SSHA}" + base64Str;
return ssha;
}
private static String shaWithSaltToBase64(String password, String salt) {
MessageDigest algo = null;
try {
algo = MessageDigest.getInstance("SHA");
} catch (NoSuchAlgorithmException e) {
logger.error("WTF!! digest function not found!!", e);
return null;
}
String hashed = new String(algo.digest((password + salt).getBytes()));
String both = hashed + salt;
String base64Str = encoder.encode(both.getBytes());
return base64Str;
}
public static boolean checkPlainPassword(String plainPassword, String saltedPassword) {
String oldBase64 = saltedPassword.substring("{SSHA}".length());
String decodedHashedAndSalt;
try {
decodedHashedAndSalt = new String(decoder.decodeBuffer(oldBase64));
} catch (IOException e) {
logger.error("Something awful happened...", e);
return false;
}
String salt = decodedHashedAndSalt.substring(
decodedHashedAndSalt.length() - getSaltLenght(),
decodedHashedAndSalt.length());
String newBase64 = shaWithSaltToBase64(plainPassword, salt);
boolean theSame = oldBase64.equals(newBase64);
return theSame;
}
private static int getSaltLenght() {
return 8;
}
private static String generateSalt() {
Random random = new Random();
String lettahs = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < getSaltLenght(); i++) {
int index = random.nextInt(lettahs.length());
sb.append(lettahs.charAt(index));
}
return sb.toString();
}
private static BASE64Decoder decoder = new BASE64Decoder();
private static BASE64Encoder encoder = new BASE64Encoder();
private static final Logger logger = LoggerFactory
.getLogger(PasswordFunctions.class);
public static String getEncryptedPassword(String password) {
String salt = generateSalt();
String base64Str = shaWithSaltToBase64(password, salt);
String ssha = "{SSHA}" + base64Str;
return ssha;
}
private static String shaWithSaltToBase64(String password, String salt) {
MessageDigest algo = null;
try {
algo = MessageDigest.getInstance("SHA");
} catch (NoSuchAlgorithmException e) {
logger.error("WTF!! digest function not found!!", e);
return null;
}
String hashed = new String(algo.digest((password + salt).getBytes()));
String both = hashed + salt;
String base64Str = encoder.encode(both.getBytes());
return base64Str;
}
public static boolean checkPlainPassword(String plainPassword,
String saltedPassword) {
String oldBase64 = saltedPassword.substring("{SSHA}".length());
String decodedHashedAndSalt;
try {
decodedHashedAndSalt = new String(decoder.decodeBuffer(oldBase64));
} catch (IOException e) {
logger.error("Something awful happened...", e);
return false;
}
String salt = decodedHashedAndSalt.substring(decodedHashedAndSalt
.length()
- getSaltLenght(), decodedHashedAndSalt.length());
String newBase64 = shaWithSaltToBase64(plainPassword, salt);
boolean theSame = oldBase64.equals(newBase64);
return theSame;
}
private static int getSaltLenght() {
return 8;
}
private static String generateSalt() {
Random random = new Random();
String lettahs = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < getSaltLenght(); i++) {
int index = random.nextInt(lettahs.length());
sb.append(lettahs.charAt(index));
}
return sb.toString();
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!