Skip to content

Commit ae51c2f

Browse files
authored
WD-330 Update versions of java & libs, fix HashUtils (#20)
* WD-330 Update versions of java & libs, fix HashUtils * WD-330 Review fix (constant)
1 parent 8022997 commit ae51c2f

File tree

10 files changed

+67
-36
lines changed

10 files changed

+67
-36
lines changed

.github/workflows/distribution.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
- uses: actions/checkout@v2
1313
- uses: actions/setup-java@v1
1414
with:
15-
java-version: 1.8
15+
java-version: 11
1616
- uses: eskatos/gradle-command-action@v1
1717
with:
1818
arguments: build

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ repositories {
1212
}
1313

1414
// Append dependency
15-
implementation("com.icerockdev:web-utils:0.6.1")
15+
implementation("com.icerockdev:web-utils:0.7.0")
1616
````
1717

1818
## Library usage

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ allprojects {
1616

1717
plugins.withId('org.jetbrains.kotlin.jvm', { _ ->
1818
compileJava.dependsOn copyLibsCompile
19-
sourceCompatibility=1.8
19+
sourceCompatibility=JavaVersion.VERSION_11
2020
})
2121

2222
task copyLibsCompile(type: Copy) {

gradle.properties

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,21 @@ org.gradle.configureondemand=false
33
org.gradle.parallel=true
44
org.gradle.caching=true
55

6-
logback_version=1.2.3
76
kotlin.code.style=official
8-
kotlin_version=1.3.70
9-
coroutines_version=1.3.3
10-
ktor_version=1.3.1
11-
jodatime_version = 2.9.9
12-
# validation
13-
jsonassert_version=1.5.0
14-
junit_version=4.13
7+
kotlin_version=1.4.0
8+
ktor_version=1.4.0
9+
logback_version=1.2.3
10+
jodatime_version = 2.10.6
11+
# Validation
12+
javax_validation=2.0.0.Final
1513
javax_el_version=2.2.6
1614
javax_el_api_version=3.0.0
1715
beanutils_version=1.9.4
18-
javax_validation=2.0.0.Final
1916
hibernate_validator_version=6.0.2.Final
2017
hibernate_validator_annotation_processor_version=6.0.2.Final
21-
# i18n
18+
# I18N
2219
gnu_gettext_version=0.18.3
23-
# bcrypt
24-
spring_core_version=5.1.6.RELEASE
20+
# BCrypt
21+
bcrypt_version=0.9.0
22+
# Testing
23+
junit_version=4.13
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
#Tue Nov 27 11:58:01 NOVT 2018
21
distributionBase=GRADLE_USER_HOME
32
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6-all.zip

sample/build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ dependencies {
3535
}
3636

3737
java {
38-
sourceCompatibility = JavaVersion.VERSION_1_8
39-
targetCompatibility = JavaVersion.VERSION_1_8
38+
sourceCompatibility = JavaVersion.VERSION_11
39+
targetCompatibility = JavaVersion.VERSION_11
4040
}
4141

4242
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
4343
kotlinOptions {
44-
jvmTarget = "1.8"
44+
jvmTarget = JavaVersion.VERSION_11.toString()
4545
}
4646
}
4747

settings.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ pluginManagement {
2727
}
2828

2929
include(":web-utils")
30-
//
31-
val properties = startParameter.projectProperties
30+
31+
val properties: Map<String, String> = startParameter.projectProperties
3232

3333
// ./gradlew -PlibraryPublish publishToMavenLocal
3434
// ./gradlew -DBINTRAY_USER=user -DBINTRAY_KEY=key -PlibraryPublish
3535
val libraryPublish: Boolean = properties.containsKey("libraryPublish")
3636
if(!libraryPublish) {
3737
include(":sample")
38-
}
38+
}

web-utils/build.gradle.kts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ apply(plugin = "java")
1313
apply(plugin = "kotlin")
1414

1515
group = "com.icerockdev"
16-
version = "0.6.1"
16+
version = "0.7.0"
1717

1818
val sourcesJar by tasks.registering(Jar::class) {
1919
classifier = "sources"
@@ -44,7 +44,7 @@ dependencies {
4444
api("commons-beanutils:commons-beanutils:${properties["beanutils_version"]}")
4545

4646
// BCrypt
47-
implementation(group = "org.springframework.security", name = "spring-security-core", version = properties["spring_core_version"].toString())
47+
implementation("at.favre.lib:bcrypt:${properties["bcrypt_version"]}")
4848

4949
// i18n
5050
implementation("org.gnu.gettext:libintl:${properties["gnu_gettext_version"]}")
@@ -55,13 +55,13 @@ dependencies {
5555
}
5656

5757
java {
58-
sourceCompatibility = JavaVersion.VERSION_1_8
59-
targetCompatibility = JavaVersion.VERSION_1_8
58+
sourceCompatibility = JavaVersion.VERSION_11
59+
targetCompatibility = JavaVersion.VERSION_11
6060
}
6161

6262
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
6363
kotlinOptions {
64-
jvmTarget = "1.8"
64+
jvmTarget = JavaVersion.VERSION_11.toString()
6565
}
6666
}
6767

web-utils/src/main/kotlin/com/icerockdev/util/HashUtils.kt

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
11
package com.icerockdev.util
22

3-
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
3+
import at.favre.lib.crypto.bcrypt.BCrypt
44
import java.security.MessageDigest
55

6+
// To avoid using springframework components and keep backward compatibility
7+
// GENSALT_DEFAULT_LOG2_ROUNDS in org.springframework.security.crypto.bcrypt.Bcrypt
8+
const val BCRYPT_COST = 10
9+
610
object HashUtils {
7-
fun sha512(input: String) = hashString("SHA-512", input)
11+
fun sha512(input: String): String = hash("SHA-512", input)
812

9-
fun sha256(input: String) = hashString("SHA-256", input)
13+
fun sha256(input: String): String = hash("SHA-256", input)
1014

11-
fun sha1(input: String) = hashString("SHA-1", input)
15+
fun sha1(input: String): String = hash("SHA-1", input)
1216

1317
fun generatePasswordHash(password: String): String {
14-
return BCryptPasswordEncoder().encode(password)
18+
return BCrypt.withDefaults().hashToString(BCRYPT_COST, password.toCharArray());
1519
}
1620

1721
fun verifyPassword(password: String, passwordHash: String): Boolean {
18-
return BCryptPasswordEncoder().matches(password, passwordHash)
22+
return BCrypt.verifyer().verify(password.toCharArray(), passwordHash).verified
1923
}
2024

2125
fun generateRandomToken(): String {
@@ -36,9 +40,9 @@ object HashUtils {
3640
}
3741

3842

39-
private fun hashString(type: String, input: String): String {
43+
private fun hash(algorithm: String, input: String): String {
4044
return MessageDigest
41-
.getInstance(type)
45+
.getInstance(algorithm)
4246
.digest(input.toByteArray())
4347
.fold("", { str, it -> str + "%02x".format(it) })
4448
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.icerockdev.util
2+
3+
import org.junit.Test
4+
import kotlin.test.assertEquals
5+
import kotlin.test.assertTrue
6+
7+
const val RAW_STRING = "123456"
8+
const val SHA_1_HASH = "7c4a8d09ca3762af61e59520943dc26494f8941b"
9+
const val SHA_256_HASH = "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92"
10+
const val SHA_512_HASH =
11+
"ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413"
12+
13+
class HashUtilsTest {
14+
@Test
15+
fun bcryptPasswordHashTest() {
16+
val passwordHash = HashUtils.generatePasswordHash(RAW_STRING)
17+
18+
assertTrue {
19+
HashUtils.verifyPassword(RAW_STRING, passwordHash)
20+
}
21+
}
22+
23+
@Test
24+
fun hashTest() {
25+
assertEquals(HashUtils.sha1(RAW_STRING), SHA_1_HASH)
26+
assertEquals(HashUtils.sha256(RAW_STRING), SHA_256_HASH)
27+
assertEquals(HashUtils.sha512(RAW_STRING), SHA_512_HASH)
28+
}
29+
}

0 commit comments

Comments
 (0)