This commit is contained in:
Adam Velebil 2023-09-25 14:59:57 +02:00
commit 5f78b0952f
No known key found for this signature in database
GPG Key ID: C9B1E4A3CBBD2E10

View File

@ -62,6 +62,7 @@ import io.flutter.plugin.common.MethodChannel
import kotlinx.coroutines.* import kotlinx.coroutines.*
import kotlinx.serialization.encodeToString import kotlinx.serialization.encodeToString
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
import java.io.IOException
import java.net.URI import java.net.URI
import java.util.concurrent.Executors import java.util.concurrent.Executors
import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicBoolean
@ -554,8 +555,17 @@ class OathManager(
NULL NULL
} }
private suspend fun requestRefresh() = private suspend fun requestRefresh() {
val clearCodes = {
val currentCredentials = oathViewModel.credentials.value
oathViewModel.updateCredentials(currentCredentials?.associate {
it.credential to null
} ?: emptyMap())
}
appViewModel.connectedYubiKey.value?.let { usbYubiKeyDevice -> appViewModel.connectedYubiKey.value?.let { usbYubiKeyDevice ->
try {
useOathSessionUsb(usbYubiKeyDevice) { session -> useOathSessionUsb(usbYubiKeyDevice) { session ->
try { try {
oathViewModel.updateCredentials(calculateOathCodes(session)) oathViewModel.updateCredentials(calculateOathCodes(session))
@ -576,7 +586,16 @@ class OathManager(
} }
} }
} }
} catch (ioException: IOException) {
logger.error("IOException when accessing USB device: ", ioException)
clearCodes()
} catch (illegalStateException: IllegalStateException) {
logger.error("IllegalStateException when accessing USB device: ", illegalStateException)
clearCodes()
} }
}
}
private suspend fun calculate(credentialId: String): String = private suspend fun calculate(credentialId: String): String =
useOathSession(OathActionDescription.CalculateCode) { session -> useOathSession(OathActionDescription.CalculateCode) { session ->