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 @@ -174,7 +174,7 @@ class RecentDocumentsViewModelTest {

viewModel.openSignatureDocument(tempFile, true)

verify(sivaRepository).getTimestampedContainer(anyOrNull(), anyOrNull())
verify(sivaRepository).getTimestampedContainer(anyOrNull(), anyOrNull(), anyOrNull())
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -484,9 +484,11 @@ class SigningViewModelTest {
)

`when`(sivaRepository.isTimestampedContainer(signedContainer)).thenReturn(true)
`when`(sivaRepository.getTimestampedContainer(context, signedContainer)).thenReturn(timestampedContainer)
`when`(
sivaRepository.getTimestampedContainer(context, signedContainer, true),
).thenReturn(timestampedContainer)

val tsContainer = viewModel.getTimestampedContainer(context, signedContainer)
val tsContainer = viewModel.getTimestampedContainer(context, signedContainer, true)
assertNotNull(tsContainer)
}

Expand All @@ -499,7 +501,7 @@ class SigningViewModelTest {

`when`(sivaRepository.isTimestampedContainer(signedContainer)).thenReturn(false)

val container = viewModel.getTimestampedContainer(context, signedContainer)
val container = viewModel.getTimestampedContainer(context, signedContainer, false)

assertNotNull(container)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,6 @@ interface SivaRepository {
suspend fun getTimestampedContainer(
context: Context,
parentContainer: SignedContainer,
isSivaConfirmed: Boolean,
): SignedContainer
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,5 +45,6 @@ class SivaRepositoryImpl
override suspend fun getTimestampedContainer(
context: Context,
parentContainer: SignedContainer,
): SignedContainer = sivaService.getTimestampedContainer(context, parentContainer)
isSivaConfirmed: Boolean,
): SignedContainer = sivaService.getTimestampedContainer(context, parentContainer, isSivaConfirmed)
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,6 @@ interface SivaService {
suspend fun getTimestampedContainer(
context: Context,
parentContainer: SignedContainer,
isSivaConfirmed: Boolean,
): SignedContainer
}
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,10 @@ class SivaServiceImpl
override suspend fun getTimestampedContainer(
context: Context,
parentContainer: SignedContainer,
isSivaConfirmed: Boolean,
): SignedContainer {
try {
val nestedContainer = parentContainer.getNestedTimestampedContainer()
val nestedContainer = parentContainer.getNestedTimestampedContainer(isSivaConfirmed)
return SignedContainer(
context,
nestedContainer?.rawContainer(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ import ee.ria.DigiDoc.utils.snackbar.SnackBarManager.showMessage
import ee.ria.DigiDoc.utilsLib.container.ContainerUtil.createContainerAction
import ee.ria.DigiDoc.utilsLib.container.ContainerUtil.removeExtensionFromContainerFilename
import ee.ria.DigiDoc.utilsLib.extensions.isContainer
import ee.ria.DigiDoc.utilsLib.extensions.isSignedPDF
import ee.ria.DigiDoc.utilsLib.extensions.mimeType
import ee.ria.DigiDoc.utilsLib.file.FileUtil.sanitizeString
import ee.ria.DigiDoc.utilsLib.logging.LoggingUtil.Companion.errorLog
Expand Down Expand Up @@ -277,7 +278,8 @@ fun EncryptNavigation(
{ nestedContainer, isSivaConfirmed ->
scope.launch(IO) {
try {
val isSigningContainer = nestedContainer.isContainer(context)
val isSigningContainer =
nestedContainer.isContainer(context) || nestedContainer.isSignedPDF(context)

if (isSigningContainer) {
signingViewModel.openNestedContainer(
Expand Down Expand Up @@ -321,7 +323,7 @@ fun EncryptNavigation(
val handleSivaCancel: () -> Unit = {
showSivaDialog.value = false
nestedFile.value?.let { file ->
if (DDOC_MIMETYPE != file.mimeType(context)) {
if (DDOC_MIMETYPE != file.mimeType(context) && !file.isSignedPDF(context)) {
openNestedContainer(file, false)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ fun SigningNavigation(
showSivaDialog.value = false
isSivaConfirmed = false
nestedFile.value?.let { file ->
if (DDOC_MIMETYPE != file.mimeType(context)) {
if (DDOC_MIMETYPE != file.mimeType(context) && !file.isSignedPDF(context)) {
openNestedContainer(file, false)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,11 +153,12 @@ class EncryptViewModel
suspend fun getTimestampedContainer(
context: Context,
signedContainer: SignedContainer,
isSivaConfirmed: Boolean,
): SignedContainer {
if (sivaRepository.isTimestampedContainer(signedContainer) &&
!signedContainer.isXades()
) {
return sivaRepository.getTimestampedContainer(context, signedContainer)
return sivaRepository.getTimestampedContainer(context, signedContainer, isSivaConfirmed)
}

return signedContainer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,7 @@ class FileOpeningViewModel
sivaRepository.getTimestampedContainer(
context,
signedContainer,
isSivaConfirmed,
)
_signedContainer.postValue(nestedTimestampedContainer)
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ class RecentDocumentsViewModel
if (sivaRepository.isTimestampedContainer(signedContainer) &&
!signedContainer.isXades()
) {
return sivaRepository.getTimestampedContainer(context, signedContainer)
return sivaRepository.getTimestampedContainer(context, signedContainer, isSivaConfirmed)
}

return SignedContainer.openOrCreate(context, document, listOf(document), isSivaConfirmed)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ class SigningViewModel

if (ASICS_MIMETYPE == nestedFile.mimeType(context)) {
val timestampedNestedContainer =
getTimestampedContainer(context, nestedContainer)
getTimestampedContainer(context, nestedContainer, isSivaConfirmed)
sharedContainerViewModel.setSignedContainer(timestampedNestedContainer)
} else {
sharedContainerViewModel.setSignedContainer(nestedContainer)
Expand All @@ -230,9 +230,10 @@ class SigningViewModel
suspend fun getTimestampedContainer(
context: Context,
signedContainer: SignedContainer,
isSivaConfirmed: Boolean,
): SignedContainer {
if (isTimestampedContainer(signedContainer)) {
return sivaRepository.getTimestampedContainer(context, signedContainer)
return sivaRepository.getTimestampedContainer(context, signedContainer, isSivaConfirmed)
}

return signedContainer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import androidx.lifecycle.ViewModel
import com.google.common.io.ByteStreams
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import ee.ria.DigiDoc.common.Constant.PDF_MIMETYPE
import ee.ria.DigiDoc.common.Constant.SEND_SIVA_CONTAINER_NOTIFICATION_MIMETYPES
import ee.ria.DigiDoc.common.container.Container
import ee.ria.DigiDoc.cryptolib.Addressee
Expand All @@ -45,9 +46,11 @@ import ee.ria.DigiDoc.libdigidoclib.domain.model.SignatureInterface
import ee.ria.DigiDoc.network.mid.dto.response.MobileCreateSignatureProcessStatus
import ee.ria.DigiDoc.network.sid.dto.response.SessionStatusResponseProcessStatus
import ee.ria.DigiDoc.utilsLib.container.ContainerUtil
import ee.ria.DigiDoc.utilsLib.extensions.isCades
import ee.ria.DigiDoc.utilsLib.extensions.isContainer
import ee.ria.DigiDoc.utilsLib.extensions.isCryptoContainer
import ee.ria.DigiDoc.utilsLib.extensions.isSignedPDF
import ee.ria.DigiDoc.utilsLib.extensions.isXades
import ee.ria.DigiDoc.utilsLib.extensions.mimeType
import ee.ria.DigiDoc.utilsLib.logging.LoggingUtil.Companion.errorLog
import kotlinx.coroutines.delay
Expand Down Expand Up @@ -220,7 +223,13 @@ class SharedContainerViewModel
val mimetype = containerDataFile.mimeType(context)
ContainerFileOpeningResult.OpenNestedFile(
file = containerDataFile,
needsSivaDialog = SEND_SIVA_CONTAINER_NOTIFICATION_MIMETYPES.contains(mimetype),
needsSivaDialog =
(
SEND_SIVA_CONTAINER_NOTIFICATION_MIMETYPES.contains(mimetype) &&
!containerDataFile.isXades(context)
) ||
(PDF_MIMETYPE == mimetype && containerDataFile.isSignedPDF(context)) ||
containerDataFile.isCades(context),
)
} else {
ContainerFileOpeningResult.OpenWithFile(containerDataFile)
Expand Down Expand Up @@ -255,7 +264,13 @@ class SharedContainerViewModel
val mimetype = containerDataFile.mimeType(context)
ContainerFileOpeningResult.OpenNestedFile(
file = containerDataFile,
needsSivaDialog = SEND_SIVA_CONTAINER_NOTIFICATION_MIMETYPES.contains(mimetype),
needsSivaDialog =
(
SEND_SIVA_CONTAINER_NOTIFICATION_MIMETYPES.contains(mimetype) &&
!containerDataFile.isXades(context)
) ||
(PDF_MIMETYPE == mimetype && containerDataFile.isSignedPDF(context)) ||
containerDataFile.isCades(context),
)
} else {
ContainerFileOpeningResult.OpenWithFile(containerDataFile)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ class SignedContainerTest {
runTest {
val signedContainer = openOrCreate(context, container, listOf(container), true)

val result = signedContainer.getNestedTimestampedContainer()
val result = signedContainer.getNestedTimestampedContainer(true)

assertNull(result)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ class SignedContainer
}

@Throws(Exception::class)
suspend fun getNestedTimestampedContainer(): SignedContainer? {
suspend fun getNestedTimestampedContainer(isSivaConfirmed: Boolean): SignedContainer? {
if ((containerMimetype().equals(ASICS_MIMETYPE, ignoreCase = true) && getDataFiles().size == 1) ||
isCades() &&
!isXades()
Expand All @@ -97,7 +97,7 @@ class SignedContainer
return nestedTimestampedFile?.let {
SignedContainer(
context = context,
container = open(context, it, true).rawContainer(),
container = open(context, it, isSivaConfirmed).rawContainer(),
containerFile = it,
isExistingContainer = true,
)
Expand Down
Loading