File tree Expand file tree Collapse file tree
core/security/src/main/kotlin/de/davis/keygo/core/security Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -3,18 +3,27 @@ package de.davis.keygo.core.security.data
33import de.davis.keygo.core.security.domain.Session
44import de.davis.keygo.core.security.domain.crypto.model.AesKey
55import org.koin.core.annotation.Single
6+ import javax.security.auth.DestroyFailedException
67
78@Single
89internal 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}
Original file line number Diff line number Diff line change 11package de.davis.keygo.core.security.domain
22
33import 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}
You can’t perform that action at this time.
0 commit comments