Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Riina Antikainen
/
Moya
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 414a825e
authored
Mar 21, 2010
by
Juho Juopperi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
utility project stuff
1 parent
9c07914e
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
86 additions
and
65 deletions
code/LanBortal/.settings/org.eclipse.wst.common.component
code/LanBortalDatabase/.project
code/LanBortalDatabase/src/fi/insomnia/bortal/model/User.java
code/LanBortalUtilities/src/META-INF/MANIFEST.MF
code/LanBortalUtilities/src/fi/insomnia/bortal/utilities/PasswordFunctions.java
code/LanBortal/.settings/org.eclipse.wst.common.component
View file @
414a825
...
...
@@ -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>
...
...
code/LanBortalDatabase/.project
View file @
414a825
...
...
@@ -3,6 +3,7 @@
<name>
LanBortalDatabase
</name>
<comment></comment>
<projects>
<project>
LanBortalUtilities
</project>
</projects>
<buildSpec>
<buildCommand>
...
...
code/LanBortalDatabase/src/fi/insomnia/bortal/model/User.java
View file @
414a825
...
...
@@ -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
();
}
}
code/LanBortalUtilities/src/META-INF/MANIFEST.MF
View file @
414a825
Manifest-Version: 1.0
Class-Path:
Class-Path:
lib/slf4j-api-1.5.8.jar
code/LanBortalUtilities/src/fi/insomnia/bortal/utilities/PasswordFunctions.java
View file @
414a825
...
...
@@ -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
();
}
}
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment