Repository for the Android app core module.

Overview

EU Digital COVID Certificate App Core - Android

AboutDevelopmentDocumentationSupportContributeContributorsLicensing

About

This repository contains the source code of the EU Digital COVID Certificate App Core for Android.

The app core provides shared functionality for the verifier and wallet apps.

Development

Prerequisites

  • TODO: Describe prerequisites

Build

Whether you cloned or downloaded the 'zipped' sources you will either find the sources in the chosen checkout-directory or get a zip file with the source code, which you can expand to a folder of your choice.

In either case open a terminal pointing to the directory you put the sources in. The local build process is described afterwards depending on the way you choose.

XYZ (Maven, Docker ...) based build

  • TODO: Add instructions for different build types

Documentation

  • TODO: Link to documentation

Support and feedback

The following channels are available for discussions, feedback, and support requests:

Type Channel
Issues
Other requests

How to contribute

Contribution and feedback is encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our Contribution Guidelines. By participating in this project, you agree to abide by its Code of Conduct at all times.

Contributors

Our commitment to open source means that we are enabling -in fact encouraging- all interested parties to contribute and become part of its developer community.

Licensing

Copyright (C) 2021 T-Systems International GmbH and all other contributors

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.

You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the LICENSE for the specific language governing permissions and limitations under the License.

Comments
  • Update dependency json-schema-validator resolving dep. conflict with outdated transitives

    Update dependency json-schema-validator resolving dep. conflict with outdated transitives

    Current Implementation

    com.github.fge:json-schema-validator:2.2.6

    This version depends on Guava v16.0.1.

    Suggested Enhancement

    com.github.java-json-tools:json-schema-validator:2.2.14

    (this is the same project; at least v2.2.13 is needed)

    Expected Benefits

    Resolves a dependency conflict for Google Guava. Java-based apps often explicitly depend on current versions of Guava.

    enhancement 
    opened by zollole 6
  • JSON schema version 1.3 validation

    JSON schema version 1.3 validation

    Your Question

    • Source File: JsonSchema.kt (https://github.com/eu-digital-green-certificates/dgca-app-core-android/blob/63a1eb32cef65b8a4cfe2210dd58442cb1a8190f/decoder/src/main/java/dgca/verifier/app/decoder/JsonSchema.kt)
    • Line(s): 120, 138
    • Question: We saw that the schema got updated to support incomplete dates, as stated by the last json schema version 1.3. However the updated omitted fnt and gnt fields max length, that should be put to 80 instead of 50. Is this planned for the next release ? This is also true for EuDgcSchema.swift (https://github.com/eu-digital-green-certificates/dgca-app-core-ios/blob/main/Sources/SupportingFiles/EuDgcSchema.swift)

    Thank you very much for your answer !

    question 
    opened by Yasser-R 5
  • Remove useless dependency to rhino

    Remove useless dependency to rhino

    Describe the improvement

    The project is dependent on the Rhino lib but it doesn't seem to be used

    Expected behaviour

    The lib should import as little lib as possible

    Content of this PR

    Remove the Rhino dependency

    How did you test?

    Clone repo Open in Android Studio Run unit tests ✅

    opened by qmetzler-luna 3
  • Date Time Support

    Date Time Support

    Please relax all dates in the schema so that date times accepted as well. (e.g. vaccination date):

    image

    Please add a unit test for the special cases.

    Test Code: https://github.com/eu-digital-green-certificates/dcc-quality-assurance/blob/6c5f94da95e1e96cc09660fac111c96e238042fb/PL/1.0.0/specialcases/VAC-12.png

    enhancement 
    opened by SchulzeStTSI 3
  • Crash during schema validation when minifyEnabled=true

    Crash during schema validation when minifyEnabled=true

    When executing schema validation using the dgca-app-core-android library and minifyEnabled=true the app crashes with this stacktrace:

    I guess this library is not yet prepared for R8 code shrinking. I also included the dgca-app-code-android lib and got the same error.

    Steps to reproduce the issue

    Steps

    1. enable R8 code shrinking: minifyEnabled=true
    2. start Application
    3. scan QR Code
    4. Enter TAN -> Crash
    2021-07-21 16:32:15.947 10614-10614/dgca.wallet.app.android E/AndroidRuntime: FATAL EXCEPTION: main
        Process: dgca.wallet.app.android, PID: 10614
        java.lang.ExceptionInInitializerError
            at e.b.a.b.g.g.a.b(:53)
            at e.b.a.b.g.g.b.<clinit>(:58)
            at e.b.a.b.g.g.b.b(:48)
            at e.b.a.b.g.a.<clinit>(:35)
            at e.b.a.b.g.a.a(:45)
            at e.b.a.b.b.b.<clinit>(:63)
            at e.b.a.b.b.a.h(:97)
            at e.b.a.b.b.a.a(:107)
            at e.b.a.b.h.c.<init>(:68)
            at e.b.a.b.h.b.d(:123)
            at e.b.a.b.h.b.b(:113)
            at g.a.a.b.p.a.a(:53)
            at dgca.wallet.app.android.certificate.claim.ClaimCertificateViewModel$b$a.u(:96)
            at j.e0.j.a.a.i(:33)
            at k.a.r0.run(:106)
            at k.a.u2.a.Y(:571)
            at k.a.u2.a$b.c(:750)
            at k.a.u2.a$b.m(:678)
            at k.a.u2.a$b.run(:665)
         Caused by: java.lang.IllegalArgumentException: class "e.b.a.b.f.b.e.a" has no appropriate constructor (keyword "additionalItems"; expected a constructor with a JsonNode as an argument)
            at e.b.a.b.f.b.d.<init>(:31)
            at e.b.a.b.g.g.a.a(:125)
            at e.b.a.b.g.g.a.<clinit>(:68)
            at e.b.a.b.g.g.a.b(:53) 
            at e.b.a.b.g.g.b.<clinit>(:58) 
            at e.b.a.b.g.g.b.b(:48) 
            at e.b.a.b.g.a.<clinit>(:35) 
            at e.b.a.b.g.a.a(:45) 
            at e.b.a.b.b.b.<clinit>(:63) 
            at e.b.a.b.b.a.h(:97) 
            at e.b.a.b.b.a.a(:107) 
            at e.b.a.b.h.c.<init>(:68) 
            at e.b.a.b.h.b.d(:123) 
            at e.b.a.b.h.b.b(:113) 
            at g.a.a.b.p.a.a(:53) 
            at dgca.wallet.app.android.certificate.claim.ClaimCertificateViewModel$b$a.u(:96) 
            at j.e0.j.a.a.i(:33) 
            at k.a.r0.run(:106) 
            at k.a.u2.a.Y(:571) 
            at k.a.u2.a$b.c(:750) 
            at k.a.u2.a$b.m(:678) 
            at k.a.u2.a$b.run(:665)
    

    Technical details

    • Device Pixel 2 (Android 11)

    Possible Fix

    I couldn't fix it but I started using these rules:

    -keep public class dgca.verifier.app.decoder.model.*
    -keep public class com.github.fge.jsonschema.** { *; }
    
    bug 
    opened by robzerg 2
  • Release version in a public maven repository (like maven central)

    Release version in a public maven repository (like maven central)

    Feature description

    dgca app core provides a decoder that is useful to others. It would be great if it was provided in an easy consumable format like an artifact in a public maven repository.

    Problem and motivation

    By using a public maven repo, it's easy for downstream dependencies to keep up to date with any bugfixes etc.

    opened by emilaleborn 2
  • Trimming JSON-fields for whitespaces

    Trimming JSON-fields for whitespaces

    Current Implementation

    Decoded JSON fields might contain whitespaces. E.g. GR/EL QR Vaccination Codes in Field "mp"

    Suggested Enhancement

    During the CBOR Deserialization, all fields must be trimmed for whitespaces.

    enhancement 
    opened by Hendrik-Schmidt-Schierhorn-TSI 1
  • A problem occurred evaluating project ':decoder'

    A problem occurred evaluating project ':decoder'

    Hi when try to build it-dgc-verificaC19-android project I hev this error : * Exception is: org.gradle.api.GradleScriptException: A problem occurred evaluating project ':decoder'. ...... Caused by: groovy.lang.MissingPropertyException: No such property: desugar_jdk_libs for class: Deps

    Any info? the dgca-app-core-android project is in the same root folder...

    Regards

    question 
    opened by Deltafox79 1
  • Polish Vaccination certificate CBOR error in German Android apps

    Polish Vaccination certificate CBOR error in German Android apps

    Hi, could you please have a look here:

    https://github.com/corona-warn-app/cwa-app-android/issues/3417

    Do you have any idea what might have gone wrong?

    Summary: CBOR error while decoding a valid Polish vaccination certificate in two different Android apps (Corona-Warn-App and CovPass app), while iOS (Corona-Warn-App) works fine. Suspected: Are there probably differences between the platforms how CBOR libraries treat special characters?

    bug 
    opened by vaubaehn 1
  • Deps.json_validation_rhino declaration is missing

    Deps.json_validation_rhino declaration is missing

    Describe the bug

    Gradle build fails because Deps.json_validation_rhino is not declared in the buildSrc module.

    Expected behaviour

    I expected that cloning and building the project from main would work.

    Steps to reproduce the issue

    image

    1. Clone repo
    2. Open in Android Studio
    3. Initial build fails

    Possible Fix

    Add json_validation_rhino to Versions- and Dependencies-objects under buildSrc.

    bug 
    opened by anskaal 1
  • A certificate from the Ukrainian дія that results in an exception due to midle name.

    A certificate from the Ukrainian дія that results in an exception due to midle name.

    I have Qr code, conteins next fields: {4: 1666386000, 1: "UA", -260: {1: {"type": "local", "nam": {"gn": "Євгенія", "fnt": "SHEVTSOVA", "fn": "Шевцова", "mn": "Валеріївна", "gnt": "YEVHENIIA"}, "itn": "2830208121", "ver": "1.3.0", "dob": "1977-06-27", "v": [{"sd": 2, "mp": "EU/1/20/1528", "vp": "1119349007", "tg": "840539006", "dn": 2, "ci": "URN:UVCI:01:UA:7NV72MZWKJ1V1ZDG4ZGX2KMF", "is": "State Enterprise "DIIA"", "co": "UA", "dt": "2021-10-22", "ma": "ORG-100030215"}]}}, 6: 1634926088}

    Main problem in "mn": "Валеріївна" field: dgca/verifier/app/decoder/cbor/DefaultCborService.kt:70 Unrecognized field "mn" (class dgca.verifier.app.decoder.model.Person), not marked as ignorable In class dgca-app-core-android/decoder/src/main/java/dgca/verifier/app/decoder/model/Person.kt Has not field mn, and also it has not annotation @JsonIgnoreProperties(ignoreUnknown = true) photo5420440524067813742

    bug 
    opened by lubagov 0
  • Unable to use dgca-app-core-android on Android 7 (24) devices

    Unable to use dgca-app-core-android on Android 7 (24) devices

    Hi,

    I integrated your dgci-app-core-android library in my app which is minsdk 24 (Android 7). Your decoder is working fine except on Android 7 devices.

    What is the reason that your libraries minSDK is 26? Is there a way to make it work for SDK 24 (Android 7) devices?

    Thanks or your feedback!

    Best regards Robert

    question 
    opened by robzerg 2
Releases(1.3.0)
Owner
Official GitHub Organization of the EU Digital COVID Certificates (EUDCC) project, previously known as the EU Digital Green Certificates (DGC).
null
SimpleCloud-haste-module - SimpleCloud module for uploading the logs of your services to hastebin

SimpleCloud Haste Module A SimpleCloud Module for uploading the current logs of

NeverStopGaming.net 5 Mar 6, 2022
Android AR Application using AR-Core

It all started with Albert Einstein’s theory of special relativity, which showed us that lengths of space and durations of time vary depending on who is looking A new perspective on the fabric of reality. ARCore SDK Implementation, Android Bouncing ball App

Suraj Sahani 3 Jul 25, 2022
Warscape core library. Includes common models for sharing between platforms.

warscope-core This repository uses for sharing common models between backend and frontend sides. Implementation $version available at top of README.md

Warscape 5 Oct 8, 2021
Open-source Kotlin library to connect Alsat pardakht peyment API (Core)

Alsat IPG Core با استفاده از این کتابخانه میتوانید پروژه جاوا یا کاتلین خودتون رو به شبکه پرداخت آل‌سات پرداخت وصل کنید و به راحتی محصولات خودتون رو د

Alsat Pardakht 4 Mar 14, 2022
An android app built using Kotlin following Multi-Module Clean Architecture MVVM

Notflix ??️ Work In Progress ?? An android app built using Kotlin that consumes TMDB API to display current trending, upcoming and popular movies ?? a

Victor Kabata 290 Dec 30, 2022
Easy Note: Building a Notes app using MVVM, JetPack Compose with a clean multi-module architecture approach.

Easy Note Easy Note: Notes app using JetPack Compose and MVVM with a clean architecture approach. This app shows the usage of the new Navigation Archi

Akhilesh Patil 10 Dec 17, 2022
A minimalistic Face Recognition module which can be easily incorporated in any Android project.

Real Time Face Recognition with TfLite A minimalistic Face Recognition module which can be easily incorporated in any Android project. Key Features Fa

Abhinav Sharma 2 Jun 21, 2022
Mixed Xposed+Magisk module for customization of AOSP-based Android 12+

This is a mixed Xposed+Magisk module, which is made to allow customizations that are not originally designed in AOSP (Android Open Source Project).

Siavash 654 Jan 4, 2023
Android Package Inspector - dynamic analysis with api hooks, start unexported activities and more. (Xposed Module)

Inspeckage - Android Package Inspector Inspeckage is a tool developed to offer dynamic analysis of Android applications. By applying hooks to function

acpm 2.5k Jan 8, 2023
Xposed module to set the Signature Scheme for Android 30 >= to 1. This allows system apps to be modified

SetSignatureSchemeV1 Xposed module to set the Signature Scheme for Android 30+ to 1. This allows system apps to be modified. This module makes the met

null 4 Sep 20, 2022
Communicating between Wear OS and Android device using the OpWear module and a sample of displaying real-time camera on the watch and sending commands to the mobile by Wear OS.

OpWear-Cam Communicating between Wear OS and Android device using the OpWear module and a sample of displaying real-time camera on the watch and sendi

AmirHosseinAghajari 6 Nov 8, 2022
Ein LabyMod-Module für SimpleCloud

LabyMod Module Ein LabyMod-Module für SimpleCloud Download · Report Bug · SimpleCloud · LabyMod Docs Was kann dieses Module? Das ist ein CloudModule f

MrManHD 3 Jul 28, 2022
BuildConfiguration information for use in multi-module, or Kotlin Multiplatform common code

component-build-configuration A small library supporting Kotlin Multiplatform for utilizing BuildConfiguration details from common code and across mod

Matthew Nelson 2 Mar 6, 2022
A simple xposed module that helps you use your AdGuard subscription in multiple devices

DualGuard A simple xposed module that helps you use your AdGuard subscription in multiple (>3) devices. Monstor ahead! / 警告 This is NOT a module that

null 7 Oct 2, 2022
This project shows trending github repositories using MVI (Model View Intent) using kotlin flows and multi module clean architecture

GithubTrendingMVIFlow Build Architecture: This project shows trending github repositories using MVI (Model View Intent) using kotlin flows and multi m

Zulqurnain Haider 0 Jun 2, 2022
SIMNumberSetter - A small Xposed module to set the SIM card's phone subscriber number

SIM Number Setter SIM Number Setter is a small Xposed module that invokes normal

Kieron Quinn 99 Dec 30, 2022
AnyText - An Xposed module trying to hook TextView in any activities

AnyText What's this This application provides features to modify any TextView in

Leonardo 41 Nov 30, 2022
Xposed module for Snapchat.

SnapMod Xposed module for Snapchat. Setup To set SnapMod up, download and install the latest apk from here. When you open it, it will ask to install s

Rodi 141 Jan 5, 2023
Media Provider Manager - An Xposed module intended to prevent media storage abuse

Media Provider Manager - An Xposed module intended to prevent media storage abuse

null 104 Dec 26, 2022