Skip to content

Commit 97c3c9a

Browse files
committed
[Core] [Security] Refactor Session
1 parent abd158d commit 97c3c9a

2 files changed

Lines changed: 15 additions & 17 deletions

File tree

core/security/src/main/kotlin/de/davis/keygo/core/security/data/SessionImpl.kt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,27 @@ package de.davis.keygo.core.security.data
33
import de.davis.keygo.core.security.domain.Session
44
import de.davis.keygo.core.security.domain.crypto.model.AesKey
55
import org.koin.core.annotation.Single
6+
import javax.security.auth.DestroyFailedException
67

78
@Single
89
internal class SessionImpl : Session {
910

11+
private var _dek: AesKey? = null
12+
13+
override val dek: AesKey
14+
get() = _dek ?: throw IllegalStateException("No active session")
15+
1016
override fun startSession(dek: AesKey) {
1117
endSession()
12-
scope.declare(dek)
18+
_dek = dek
1319
}
1420

1521
override fun endSession() {
16-
if (scope.isNotClosed()) {
17-
scope.close()
22+
try {
23+
_dek?.key?.destroy()
24+
} catch (_: DestroyFailedException) {
25+
// Not all SecretKey implementations support destroy
1826
}
27+
_dek = null
1928
}
2029
}
Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,11 @@
11
package de.davis.keygo.core.security.domain
22

33
import de.davis.keygo.core.security.domain.crypto.model.AesKey
4-
import org.koin.core.component.KoinScopeComponent
5-
import org.koin.core.qualifier.named
6-
import org.koin.core.scope.Scope
74

8-
interface Session : KoinScopeComponent {
5+
interface Session {
96

10-
override val scope: Scope
11-
get() = getKoin().getScopeOrNull(SCOPE_ID) ?: getKoin().createScope(
12-
SCOPE_ID,
13-
named<Session>()
14-
)
7+
val dek: AesKey
158

169
fun startSession(dek: AesKey)
17-
fun endSession() // TODO invoke on logout / app close
18-
19-
companion object {
20-
const val SCOPE_ID = "session-scope"
21-
}
10+
fun endSession()
2211
}

0 commit comments

Comments
 (0)