Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -555,7 +555,7 @@ class DataStoreTest {
fun dataStore_getLibdigidocppVersion_success() {
val result = dataStore.getLibdigidocppVersion()

assertEquals("4.3.0.40", result)
assertEquals("4.5.0.52", result)
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ import ee.ria.DigiDoc.libdigidoclib.init.Initialization
import ee.ria.DigiDoc.libdigidoclib.init.LibdigidocLibraryLoader
import ee.ria.DigiDoc.smartcardreader.nfc.NfcSmartCardReaderManager
import ee.ria.DigiDoc.smartcardreader.nfc.NfcSmartCardReaderManager.NfcStatus
import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.launch
Expand Down Expand Up @@ -168,7 +167,7 @@ class NFCViewModelTest {

viewModel.removePendingSignature(signedContainer)

assertEquals(1, signedContainer.getSignatures(Main).size)
assertEquals(1, signedContainer.getSignatures().size)
}

@Test
Expand Down Expand Up @@ -477,7 +476,7 @@ class NFCViewModelTest {

viewModel.cancelNFCSignWorkRequest(signedContainer)

assertEquals(1, signedContainer.getSignatures(Main).size)
assertEquals(1, signedContainer.getSignatures().size)
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ import ee.ria.DigiDoc.utilsLib.extensions.isSignedPDF
import ee.ria.DigiDoc.utilsLib.extensions.isXades
import ee.ria.DigiDoc.utilsLib.logging.LoggingUtil.Companion.errorLog
import ee.ria.DigiDoc.utilsLib.mimetype.MimeTypeResolver
import kotlinx.coroutines.Dispatchers.Main
import java.io.File
import javax.inject.Inject
import javax.inject.Singleton
Expand Down Expand Up @@ -64,7 +63,7 @@ class SivaServiceImpl
override suspend fun isTimestampedContainer(signedContainer: SignedContainer): Boolean =
signedContainer.getDataFiles().size == 1 &&
signedContainer.containerMimetype().equals(ASICS_MIMETYPE) &&
signedContainer.getSignatures(Main).first().profile == "TimeStampToken"
signedContainer.getSignatures().firstOrNull()?.profile == "TimeStampToken"

override suspend fun getTimestampedContainer(
context: Context,
Expand All @@ -78,7 +77,7 @@ class SivaServiceImpl
nestedContainer?.rawContainer(),
parentContainer.getContainerFile(),
parentContainer.isExistingContainer(),
parentContainer.getSignatures(Main),
parentContainer.getSignatures(),
)
} catch (ex: Exception) {
errorLog(logTag, "Unable to open timestamped container", ex)
Expand Down
29 changes: 20 additions & 9 deletions app/src/main/kotlin/ee/ria/DigiDoc/init/LibrarySetup.kt
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import ee.ria.DigiDoc.libdigidoclib.exceptions.AlreadyInitializedException
import ee.ria.DigiDoc.libdigidoclib.init.Initialization
import ee.ria.DigiDoc.libdigidoclib.init.LibdigidocLibraryLoader
import ee.ria.DigiDoc.utils.snackbar.SnackBarManager
import ee.ria.DigiDoc.utilsLib.logging.LoggingUtil.Companion.debugLog
import ee.ria.DigiDoc.utilsLib.logging.LoggingUtil.Companion.errorLog
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.Dispatchers.Main
Expand Down Expand Up @@ -66,23 +67,31 @@ class LibrarySetup
if (!isConfigured) {
withContext(IO) {
try {
TSLUtil.setupTSLFiles(context)
try {
TSLUtil.setupTSLFiles(context)
} catch (ex: Exception) {
errorLog(logTag, "Unable to set up the bundled TSL files", ex)
}
configurationLoader.initConfiguration(
context,
dataStore.getProxySetting(),
dataStore.getManualProxySettings(),
)
isConfigured = true
} catch (ex: Exception) {
if (ex !is UnknownHostException &&
ex !is SocketTimeoutException &&
ex !is InterruptedIOException
) {
errorLog(
errorLog(logTag, "Unable to initialize configuration", ex)

val isNetworkFailure =
ex is UnknownHostException ||
ex is SocketTimeoutException ||
ex is InterruptedIOException
if (isNetworkFailure) {
debugLog(
logTag,
"Unable to initialize configuration: ",
ex,
"Configuration was not refreshed because the network is unreachable; " +
"continuing with the currently cached configuration",
)
} else {
withContext(Main) {
SnackBarManager.showMessage(
context,
Expand All @@ -97,7 +106,9 @@ class LibrarySetup
try {
initialization.init(context, isLoggingEnabled)
} catch (e: Exception) {
if (e !is AlreadyInitializedException) {
if (e is AlreadyInitializedException) {
debugLog(logTag, "libdigidocpp was already initialized")
} else {
errorLog(logTag, "Unable to initialize libdigidocpp", e)
withContext(Main) {
Toast
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -557,29 +557,25 @@ fun SigningNavigation(
signedContainer?.let {
val pastTime = System.currentTimeMillis()
showSignaturesLoadingIndicator.value = true
signatures = it.getSignatures(Main)
val validatedSignatures = it.getSignatures()
val signatureCounts = it.getSignaturesStatusCount(validatedSignatures)
val timestampCounts =
if (it.containerMimetype() != ASICS_MIMETYPE) it.getTimestampStatusCount() else null
val hasEmptyFile = signingViewModel.isEmptyFileInList(it.getDataFiles())
signatures = validatedSignatures
showSignaturesLoadingIndicator.value = false
withContext(Main) {
val signatureCounts = signedContainer?.getSignaturesStatusCount()
validSignaturesCount = signatureCounts?.get(ValidatorInterface.Status.Valid) ?: 0
unknownSignaturesCount =
signatureCounts?.get(ValidatorInterface.Status.Unknown) ?: 0
invalidSignaturesCount =
signatureCounts?.get(ValidatorInterface.Status.Invalid) ?: 0

if (signedContainer?.containerMimetype() != ASICS_MIMETYPE) {
val timestampCounts = signedContainer?.getTimestampStatusCount()
validTimestampsCount = timestampCounts?.get(ValidatorInterface.Status.Valid) ?: 0
unknownTimestampsCount =
timestampCounts?.get(ValidatorInterface.Status.Unknown) ?: 0
invalidTimestampsCount =
timestampCounts?.get(ValidatorInterface.Status.Invalid) ?: 0
validSignaturesCount = signatureCounts[ValidatorInterface.Status.Valid] ?: 0
unknownSignaturesCount = signatureCounts[ValidatorInterface.Status.Unknown] ?: 0
invalidSignaturesCount = signatureCounts[ValidatorInterface.Status.Invalid] ?: 0

if (timestampCounts != null) {
validTimestampsCount = timestampCounts[ValidatorInterface.Status.Valid] ?: 0
unknownTimestampsCount = timestampCounts[ValidatorInterface.Status.Unknown] ?: 0
invalidTimestampsCount = timestampCounts[ValidatorInterface.Status.Invalid] ?: 0
}

isEmptyFileInContainer =
signingViewModel.isEmptyFileInList(
signedContainer?.getDataFiles() ?: listOf(),
)
isEmptyFileInContainer = hasEmptyFile

sharedContainerViewModel.setContainerNotifications(
listOfNotNull(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ class MobileIdViewModel
setErrorState(context, status)
} else {
CoroutineScope(Main).launch {
val containerSignatures = container?.getSignatures(Main)
val containerSignatures = container?.getSignatures()
val signatureInterface =
if (containerSignatures?.isEmpty() == true) {
null
Expand Down
18 changes: 11 additions & 7 deletions app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/NFCViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ class NFCViewModel
}

suspend fun removePendingSignature(signedContainer: SignedContainer) {
val signatures = signedContainer.getSignatures(Main)
val signatures = signedContainer.getSignatures()
if (signatures.isNotEmpty()) {
val lastSignatureStatus = signatures.last().validator.status
if (lastSignatureStatus == ValidatorInterface.Status.Invalid ||
Expand Down Expand Up @@ -300,18 +300,22 @@ class NFCViewModel
signer.setUserAgent(UserAgentUtil.getAppInfo(context, SendDiagnostics.NFC))

val dataToSignBytes =
containerWrapper.prepareSignature(signer, container, signerCert, roleData)
runBlocking {
containerWrapper.prepareSignature(signer, container, signerCert, roleData)
}

val signatureArray =
card.calculateSignature(pin2Code, dataToSignBytes, true)
pin2Code.clearSensitive()
debugLog(logTag, "Signature: " + Hex.toHexString(signatureArray))

containerWrapper.finalizeSignature(
signer,
container,
signatureArray,
)
runBlocking {
containerWrapper.finalizeSignature(
signer,
container,
signatureArray,
)
}

_shouldResetPIN.postValue(true)
_signStatus.postValue(true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ class SmartIdViewModel
setErrorState(context, status)
} else {
CoroutineScope(Main).launch {
val containerSignatures = container?.getSignatures(Main)
val containerSignatures = container?.getSignatures()
val signatureInterface =
if (containerSignatures?.isEmpty() == true) {
null
Expand Down

This file was deleted.

Loading
Loading