Skip to content
Boriss Melikjan edited this page Sep 9, 2025 · 1 revision

Android application that allows signing containers with Mobile-ID, Smart-ID and ID-card (via USB reader or NFC) and encrypting/decrypting containers with ID-card.

Application

Application is developed using single-activity approach using declarative UI framework Jetpack Compose and Material Design, Kotlin programming language and MVVM Architecture pattern.

Architecture is based on MVI (Model-View-ViewModel) paradigm and relies heavily on Couroutines.


Developing

The application uses FLAG_SECURE flag, to prevent window content to be shown on screenshots and video recordings. When developing the software, please use the FLAG_SECURE when creating new screens. More info about FLAG_SECURE window leaks is here

Modules

Several modules are being developed along with the mobile application that can be used separately.

  • app - basic application module

  • buildSrc - Libdigidocpp and Libcdoc update plugin

    • This is the location of the Libdigidocpp update plugin (LibdigidocppPlugin) which contains the UpdateLibdigidocppTask Gradle command needed to pull a new version of Libdigidocpp from the local folder and install the libdigidoc-lib module into the libs folder.
    ./gradlew libdigidoc-lib:updateLibdigidocpp --dir=../Downloads/libdigidocppFiles
    # path to zip artifacts files (arm, x64, x86_64) e.g.: libdigidocpp.androidarm.zip, libdigidocpp.androidarm64.zip, libdigidocpp.androidx86_64.zip.
    
    ./gradlew libcdoc-lib:updateLibcdoc --dir=../Downloads/libcdocFiles
    # path to zip artifacts files (arm, x64, x86_64) e.g.: libcdoc.androidarm.zip, libcdoc.androidarm64.zip, libcdoc.androidx86_64.zip.
    
  • commons-lib - Shared and Commons module

  • config-lib - Central Management Configuration module

  • crypto-lib - Encryption library module

  • id-card-lib - ID-card support (NFC, USB-reader) library module

  • libdigidoc-lib - Libdigidocpp library support module

  • mobile-id-lib - Mobile-ID signing support module

  • smart-id-lib - Smart-ID signing support module

  • networking-lib - Networking and Service support module

  • utils-lib - Support utilities module

  • Additional support things - In addition to the components of the modules in the project are also included additional support things:

    • The /scripts folder containing the commandline scripting repository that could be installed to return Git pre-commit hooks, commit content in Kotlin Lint to parse to make sure that the version control content goes into version control without any static code errors.
    • The /gradle folder, which contains the Gradle wrapper with updated versions, and the libs.versions.toml file which contains the versions of all the project's techs and plugin dependencies and references to Maven repos.
Clone this wiki locally