Commit accf4cce authored by Hyene's avatar Hyene
Browse files

Initial commit

parents
*.iml
.gradle
/local.properties
/.idea
/.idea/caches
/.idea/codeStyles
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
/app/prod
/app/build
ENTRE :
L’Institut national de recherche en informatique et en automatique (Inria), établissement public à caractère scientifique et technologique dont le siège social est situé Domaine de Voluceau Rocquencourt - B.P. 105 78153 Le Chesnay Cedex – France, Siret N° 18008904700013, représenté par Bruno SPORTISSE en sa qualité de Président Directeur général, dûment habilité à l'effet des présentes,
Ci-après dénommée « Inria » ou le « Concédant »
ET :
VOUS qui venez de bénéficier d’une licence d’utilisation des codes éditée par Inria et vous apprêtez à procéder à leur utilisation conformément aux instructions qui vous ont été communiquées à sa Documentation.
Ci-après « l’Utilisateur »
Le Concédant et l’Utilisateur étant dénommés individuellement une « Partie » ou collectivement les « Parties ».
Avant toute utilisation des Codes, connaissance prise de l’intégralité du contenu de la présente licence (ci-après désignée la « Licence »), l’Utilisateur déclare accepter expressément l’ensemble des clauses de la présente Licence et reconnaît que ladite Licence revêt un caractère exécutoire.
DEFINITIONS
Les termes suivants, lorsqu’ils commencent par une lettre capitale, employés au singulier ou au pluriel dans les présentes, auront toujours la définition indiquée dans le préambule ou ci-après :
Code Objet : désigne les fichiers binaires issus de la compilation du Code Source.
Code Source : désigne l'ensemble des instructions et des lignes de programme du Logiciel, propriété exclusive d’IN Groupe, et auquel l'accès est nécessaire en vue de modifier le Logiciel.
Documentation : désigne tout document avec lequel les Codes Source et Codes Objet sont mis à la disposition des Utilisateurs et qui font partie de la présente Licence par référence. Cette documentation comprend notamment le « Read Me ».
Logiciel : désigne le logiciel développé et mis au point par le Titulaire, pour lequel Inria bénéficie d’une licence lui permettant la concession aux Utilisateurs de la présente Licence, sous sa forme de Code Objet et/ou de Code Source et le cas échéant sa documentation, dans leur état au moment de l'acceptation de la Licence par l’Utilisateur.
Titulaire : désigne IN Groupe, nom commercial de la société IMPRIMERIE NATIONALE, société anonyme au capital de 34.500.000 euros dont le siège social est situé 104, avenue du Président KENNEDY - 75016 PARIS, immatriculée au registre du commerce et des sociétés sous le numéro 352 973 622 RCS PARIS, représentée par Didier TRUTT, en qualité de Président, seule détentrice des droits patrimoniaux d'auteur sur le Logiciel et les Codes Source et Codes Objet.
OBJET
La présente Licence a pour objet de définir les conditions et modalités dans lesquelles l’Inria met les Codes Source et Codes Objet du Logiciel (ci-après ensemble les « Codes ») à la disposition des Utilisateurs, et d'autre part, les conditions dans lesquelles l’Utilisateur peut utiliser lesdits Codes.
ACCEPTATION
L’accès et l’utilisation des Codes par l’Utilisateur impliquent la connaissance, l’acceptation exprès et sans réserve et le respect par ce dernier de la présente Licence et de la Documentation. L’Utilisateur reconnaît donc en avoir pris connaissance et accepter l’ensemble des termes de la Licence avant tout acte d’utilisation des Codes.
PRISE D’EFFET - DUREE
L'acceptation par l’Utilisateur des termes de la Licence est réputée acquise dès que l’Utilisateur accède aux Codes. La présente Licence produira ensuite ses effets pendant toute la durée de la publication des Codes au public, ce jusqu’à ce qu’une nouvelle version de la Licence vienne remplacer la précédente.
DROITS D’UTILISATION CONCEDES
Etendue des droits concédés
Le Concédant accorde à l’Utilisateur qui l’accepte, pour la durée de la Licence et le territoire visés ci-après, le droit non-exclusif, non-transférable et non-cessible de :
Reproduire de manière permanente ou provisoire les Codes en tout ou partie par tout moyen et sous toute forme.
Afficher, exécuter ou stocker les Codes sur tout support.
En observer, étudier ou tester le fonctionnement afin de déterminer les idées et principes qui sont à la base de n'importe quel élément de ces Codes.
L’Utilisateur reconnaît expressément que tous les droits afférents aux concepts techniques délivrés dans la Documentation élaborée par le Titulaire ainsi que les droits afférents au Logiciel, en ce compris les Codes objet de la présente licence, demeurent la propriété exclusive de ce dernier.
L’Utilisateur ne pourra les vendre, céder, publier, présenter, divulguer, diffuser, distribuer ou les mettre à disposition de tiers d’une quelconque autre manière, à titre gratuit ou onéreux.
Domaine d’utilisation
La présente Licence est expressément limitée aux actes exclusivement nécessaires à l’utilisation des Codes conformément aux stipulations de la présente Licence, à l’exclusion de tout autre.
Territoire
La présente Licence est concédée à l’Utilisateur pour tous les territoires du monde entier.
Restrictions à l’utilisation
L’utilisation des Codes est soumise aux limitations décrites ci-après.
La présente Licence est strictement personnelle et l’Utilisateur ne pourra céder, transmettre ni déléguer les droits ou obligations qu’il détient au titre de la présente Licence sans l’accord écrit et préalable du Concédant et du Titulaire.
Outre ce qui est expressément autorisé ci-dessus, et à titre indicatif, le Concédant interdit à l’Utilisateur, sans son autorisation écrite, à effectuer l’une des opérations suivantes :
Modifier, altérer, adapter, supprimer ou apporter quelque changement de quelque nature que ce soit à la présentation et au contenu des Codes et à ne pas supprimer les mentions d’identification et de propriété des Codes ;
Traduire, adapter, arranger ou modifier en tout ou partie des Codes, les exporter ou les fusionner avec d'autres applications informatiques ;
Louer, prêter, utiliser les Codes dans le but de les partager ou d’une mise à disposition de tiers ;
Publier, sauf accord préalable écrit du Concédant, tout test ou analyse de performance ou d’évaluation relatifs aux Codes.
OBLIGATIONS DE L’UTILISATEUR
L’Utilisateur s'engage à ne pas développer ou commercialiser des solutions logicielles similaires ou identiques au Logiciel dont les Codes font l’objet de la présente Licence ou des produits susceptibles de le concurrencer.
L’Utilisateur s'engage à ne pas porter atteinte, directement ou indirectement, aux droits de propriété intellectuelle du Titulaire et à prendre, à l'égard de son personnel toutes les mesures nécessaires pour assurer le respect desdits droits de propriété intellectuelle du Titulaire
RESPONSABILITE
Le Concédant et/ou le Titulaire ne seront en aucun cas responsable notamment :
Des conséquences d'une utilisation frauduleuse, abusive ou excessive des Codes par un ou plusieurs Utilisateurs,
De tout dommage de quelque nature qu’il soit résultant de l’interprétation ou de l’utilisation des informations et/ou documents mis à la disposition de l’Utilisateur,
Le Concédant et/ou le Titulaire ne sauraient être tenu responsable du non fonctionnement, d'une impossibilité d'accès ou de dysfonctionnement des services du fournisseur d'accès des Utilisateurs, à ceux du réseau internet. Il en sera de même pour toutes autres raisons extérieures au Concédant et/ou au Titulaire.
De plus, la responsabilité du Concédant et/ou du Titulaire ne peut être engagée pour retard ou défaillance tenant soit à un cas de force majeure, soit à un évènement échappant à leur contrôle, soit encore du fait de l’Utilisateur.
La responsabilité du Concédant est limitée aux engagements pris en application de la Licence et ne saurait être engagée en raison notamment : (i) des dommages dus à l'inexécution, totale ou partielle, de ses obligations par l’Utilisateur, (ii) des dommages directs ou indirects découlant de l'utilisation des Codes par l’Utilisateur et (iii) plus généralement d'un quelconque dommage indirect. En particulier, les Parties conviennent expressément que tout préjudice financier ou commercial ou toute action dirigée contre l’Utilisateur par un tiers, constitue un dommage indirect et n'ouvre pas droit à réparation par le Concédant.
GARANTIE
Le Concédant déclare de bonne foi être en droit de concéder les droits objets de la présente Licence.
L’Utilisateur reconnaît que les Codes sont fournis « en l'état » par le Concédant sans aucune autre garantie, expresse ou tacite, que celle prévue ci-dessus.
Le Concédant et le Titulaire ne garantissent pas, de manière expresse ou tacite, que les Codes ne porte pas atteinte à un quelconque droit de propriété intellectuelle d'un tiers portant sur un brevet, un logiciel ou sur tout autre droit de propriété. Ainsi, le Concédant exclut toute garantie au profit de l’Utilisateur contre les actions en contrefaçon qui pourraient être diligentées au titre de l'utilisation, de la modification, et de la redistribution du Logiciel. Néanmoins, si de telles actions sont exercées contre l’Utilisateur, le Concédant et/ou le Titulaire lui apporteront son aide technique et juridique pour sa défense. Cette aide technique et juridique est déterminée au cas par cas entre le Concédant et/ou le Titulaire et l’Utilisateur dans le cadre d'un protocole d'accord. Le Concédant et le Titulaire dégagent toute responsabilité quant à l'utilisation de la dénomination du Logiciel par l’Utilisateur. Enfin, aucune garantie n'est apportée quant à l'existence de droits antérieurs sur le nom du Logiciel et sur l'existence d'une marque.
RESILIATION
En cas de manquement par l’Utilisateur aux obligations mises à sa charge au titre de la présente Licence, le Concédant pourra immédiatement et de plein droit résilier la Licence, par tout moyen écrit, sans autre formalité.
L’Utilisateur dont la Licence est résiliée n'est plus autorisé à utiliser les Codes.
PROPRIETE INTELLECTUELLE
Les outils, méthodes, œuvres, logiciels, savoir-faire, ou autre éléments susceptibles d'appropriation intellectuelle, propriété du Concédant ou du Titulaire, utilisés, même partiellement, dans le cadre des présentes, restent la propriété exclusive du Concédant ou du Titulaire, la présente Licence ne pouvant aucunement être interprété comme organisant une cession de l’un quelconque des éléments incorporels détenu par le Concédant ou le Titulaire.
A ce titre, le Titulaire conserve la propriété exclusive des Codes concédés dans le cadre des présentes et du Logiciel.
Il conserve donc l’ensemble des droits représentation et de reproduction attachés aux Codes concédés dans le cadre des présentes et notamment, sans que cette liste ne soit limitative, le droit de représentation, de publication, de traduction, de correction, d'adaptation, d'arrangement, de modification de distribution ainsi que le droit de mise sur le marché à titre gratuit ou onéreux.
DISPOSITIONS GENERALES
Nullité
Si l'une quelconque des stipulations de la Licence est réputée nulle au regard d'une règle de droit ou d'une loi en vigueur, elle sera réputée non écrite mais les autres stipulations de la Licence garderont leur force et leur portée.
Renonciation
Sauf dispositions contraires spécifiées dans la Licence, le fait que l'une des Parties n'ait pas exigé l'application d'une clause quelconque de la présente Licence ne pourra en aucun cas être considère comme une renonciation aux droits de cette Partie découlant de ladite clause.
Porte-fort
Chacune des Parties s’engage, le cas échéant, à faire respecter la présente Licence par ses employé(s), collaborateur(s), associé(s), filiale(s) ou société(s) mère(s).
Loi applicable et langue de la licence
La présente Licence est soumise à la loi française.
Elle est rédigée en langue française et seule sa version française fera foi en cas de litige.
Juridiction compétente
En cas de litige découlant de l'interprétation ou de l'exécution de la présente Licence, les Parties s'engagent à rechercher une solution amiable.
A défaut d'une telle solution dans les trente (30) jours à compter de la date de survenance du litige, le différend sera de la compétence exclusive des tribunaux français matériellement et géographiquement compétents, qu'il y ait ou non pluralité de défendeurs ou appel en garantie, même pour les procédures d'urgence ou conservatoires, en référé ou sur requête.
![IN Groupe](http://www.w3.org/2000/svg)
Le code présenté ci-dessous est celui de l'application TAC-Verif pour les OS Android et iOS
=====================
Ce code est publié sous une licence propre à IN Groupe disponible ici : [https://gitlab.inria.fr/tousanticovid-verif/tousanticovid-verif-ios/-/blob/ffffa948698ff38518de3fc9f1b7661cfa42e76c/LICENSE](https://gitlab.inria.fr/tousanticovid-verif/tousanticovid-verif-ios/-/blob/ffffa948698ff38518de3fc9f1b7661cfa42e76c/LICENSE), que toute personne s'engage à consulter et respecter avant toute utilisation du code objet de la présente publication.
Usage et fonctionnalité
-------------------
Le code ainsi publié est celui de l'application TousAntiCovid Verif dont l'usage est strictement réservé aux personnes habilitées et services autorisée dans le cadre de la Loi de Sortie de l'Etat d'Urgence Sanitaire du 2 juin 2021, article 1 et de ces décrets d'applications [https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000043618403](https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000043618403)
Cette application dispose de deux modes de fonctionnement :
* Un mode lite destiné à des vérifications simples. Dans ce mode, sont affichés les noms, prénoms et date de naissance de la personne concernée par le justificatif, ainsi qu'un résultat positif ou négatif de détention d'un justificatif conforme.
* Un mode détaillé qui affiche plus de données correspondant aux éléments contenus dans le pass sanitaire (2D DOC ou QR européen) et réservé aux catégories de personnes dûment habilitées au titre de la réglementation en vigueur.
Applications & roadmap
-------------------
Les applications Android et iOS rendent les mêmes fonctionnalités. Elles ont été developpées à partir de sources distinctes qui peut expliquer les différences entre les deux codes (au delà des aspects techniques)
Les applications vont évoluer avec, entre autres, deux points déjà identifiés :
* Le remplacement de la Librairie MLKit
* Le remplacement du service AKAMAI par un service équivalent issue d'une entité européenne
Licences
-------------------
___Apache 2.0___
*Component*: Retrofit
*License Text URL*: [https://github.com/square/retrofit/blob/master/LICENSE.txt](https://github.com/square/retrofit/blob/master/LICENSE.txt)
*Source Code*: [https://github.com/square/retrofit](https://github.com/square/retrofit)
*Component*: EventBus
*License Text URL*: [https://github.com/greenrobot/EventBus/blob/master/LICENSE](https://github.com/greenrobot/EventBus/blob/master/LICENSE)
*Source Code*: [https://github.com/greenrobot/EventBus](https://github.com/greenrobot/EventBus)
*Component*: Anko
*License Text URL*: [https://github.com/Kotlin/anko/blob/master/LICENSE](https://github.com/Kotlin/anko/blob/master/LICENSE)
*Source Code*: [https://github.com/Kotlin/anko](https://github.com/Kotlin/anko)
*Component*: Apache Commons Codec
*License Text URL*: [https://github.com/apache/commons-codec/blob/master/LICENSE.txt](https://github.com/apache/commons-codec/blob/master/LICENSE.txt)
*Source Code*: [https://github.com/apache/commons-codec](https://github.com/apache/commons-codec)
*Component*: EU Digital COVID Certificate App Core - Android
*License Text URL*: [URL: http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
*Source Code*: [https://github.com/eu-digital-green-certificates/dgca-app-core-android](https://github.com/eu-digital-green-certificates/dgca-app-core-android)
___MIT___
*Component*: JWTDecode.Android
*License Text URL*: [https://github.com/auth0/JWTDecode.Android/blob/master/LICENSE](https://github.com/auth0/JWTDecode.Android/blob/master/LICENSE)
*Source Code*: [https://github.com/auth0/JWTDecode.Android](https://github.com/auth0/JWTDecode.Android)
*Component*: The Bouncy Castle Crypto Package For Java
*License Text URL*: [https://github.com/bcgit/bc-java/blob/master/LICENSE.html](https://github.com/bcgit/bc-java/blob/master/LICENSE.html)
*Source Code*: [https://github.com/bcgit/bc-java](https://github.com/bcgit/bc-java)
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
compileSdkVersion 30
defaultConfig {
applicationId "com.ingroupe.verify.anticovid"
minSdkVersion 23
targetSdkVersion 30
versionCode 41
versionName "1.5.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildFeatures {
viewBinding true
}
flavorDimensions "environment"
productFlavors {
prod {
dimension = "environment"
resValue "string", "app_name", "TAC Verif"
buildConfigField "Boolean", "BLOCK_SCREENSHOT", "true"
buildConfigField "String", "ENDPOINT_URL", "\"https://XXX.com\""
buildConfigField "String", "KC_PUBLICKEY", "\"XXX\""
buildConfigField "String", "PERSISTENT_TOKEN", "\"XXX\""
}
}
sourceSets {
prod {
java.srcDirs = ['src/prod/java', 'src/authSecure/java']
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
debuggable true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
pickFirst 'META-INF/AL2.0'
pickFirst 'META-INF/LGPL2.1'
pickFirst 'META-INF/ASL-2.0.txt'
pickFirst 'META-INF/LGPL-3.0.txt'
pickFirst 'draftv3/schema'
pickFirst 'draftv4/schema'
}
compileOptions {
coreLibraryDesugaringEnabled = true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
freeCompilerArgs += [
"-Xjsr305=strict"
]
}
}
dependencies {
def work_version = "2.5.0"
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test:runner:1.3.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
// google play updater
implementation 'com.google.android.play:core:1.10.0'
//Lifecycle
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
//ml kit
implementation 'com.google.mlkit:barcode-scanning:16.1.2'
//Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
testImplementation 'com.squareup.retrofit2:retrofit-mock:2.5.0'
// EventBus
implementation 'org.greenrobot:eventbus:3.1.1'
// Anko Commons
implementation "org.jetbrains.anko:anko-commons:0.10.5"
implementation "org.jetbrains.anko:anko-appcompat-v7-commons:0.10.5"
implementation 'com.auth0.android:jwtdecode:2.0.0'
// Apache commons-codec
implementation "commons-codec:commons-codec:1.10"
// bouncycastle
implementation 'org.bouncycastle:bcpkix-jdk15to18:1.68'
implementation 'org.bouncycastle:bcprov-jdk15to18:1.68'
implementation "androidx.work:work-runtime-ktx:$work_version"
implementation project(path: ':dgca-decoder')
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.5")
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
implementation "org.jetbrains.kotlin:kotlin-reflect:1.5.10"
}
\ No newline at end of file
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
#implementation 'androidx.legacy:legacy-support-v4:1.0.0'
# implementation 'com.google.android.material:material:1.0.0'
# implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
# testImplementation 'junit:junit:4.12'
# androidTestImplementation 'androidx.test:runner:1.2.0'
# androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
#
# //Lifecycle
# implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
# annotationProcessor 'androidx.lifecycle:lifecycle-compiler:2.2.0'
#
# //Retrofit
# implementation 'com.squareup.okhttp3:logging-interceptor:3.12.1'
# testImplementation 'com.squareup.retrofit2:retrofit-mock:2.5.0'
#
##---------------Begin: proguard configuration for Retrofit -----------
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions
-keepclasseswithmembers class * {
@retrofit2.http.* <methods>;
}
-keepclasseswithmembers interface * {
@retrofit2.* <methods>;
}
##---------------End: proguard configuration for Retrofit -------------
##---------------Begin: proguard configuration for OkHttp -------------
-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn javax.annotation.**
# A resource is loaded with a relative path so the package of this class must be preserved.
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
##---------------End: proguard configuration for OkHttp ---------------
##---------------Begin: proguard configuration for Gson ---------------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-dontwarn sun.misc.**
#-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
# Prevent proguard from stripping interface information from TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
##---------------End: proguard configuration for Gson -----------------
##---------------Begin: proguard configuration for Kotlin -------------
-dontwarn kotlin.reflect.jvm.internal.**
-keep class kotlin.reflect.jvm.internal.** { *; }
##---------------End: proguard configuration for Kotlin ---------------
##---------------Begin: proguard configuration for EventBus -----------
-keepattributes *Annotation*
-keepclassmembers class * {
@org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
# And if you use AsyncExecutor:
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
<init>(java.lang.Throwable);
}
##---------------End: proguard configuration for EventBus -------------
-keepclassmembers,allowobfuscation class * {
@com.google.gson.annotations.SerializedName <fields>;
}
-keep,allowobfuscation @interface com.google.gson.annotations.SerializedName
#
# //Google Play Service(Google CheckLocation and Activity Recognition)
# implementation('com.google.android.gms:play-services-location:17.0.0') {
# exclude group: 'com.android.support', module:'support-v4'
# }
#
# // Anko Commons
# implementation "org.jetbrains.anko:anko-commons:0.10.5"
# implementation "org.jetbrains.anko:anko-appcompat-v7-commons:0.10.5"
#
# // Zxing android embedded
# implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
-keepclassmembers class * extends java.lang.Enum {
<fields>;
public static **[] values();
public static ** valueOf(java.lang.String);
}
-dontobfuscate
-keep public class dgca.verifier.app.decoder.model.** { *; }
# Bouncy Castle -- Keep ECDH
-keep class org.bouncycastle.jcajce.provider.asymmetric.EC$* { *; }
-keep class org.bouncycastle.jcajce.provider.asymmetric.ec.KeyPairGeneratorSpi$ECDH { *; }
-keep class org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi$ECDH { *; }
-keep class org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi$ECDSA { *; }
# json-schema-validator
-keep class com.github.fge.jsonschema.** { *; }
-keep class org.mozilla.javascript.** { *; }
package com.ingroupe.verify.anticovid.auth
import android.content.Context
import com.ingroupe.verify.anticovid.BuildConfig
import com.ingroupe.verify.anticovid.common.Utils
import com.ingroupe.verify.anticovid.service.api.configuration.ConfigurationService
import okhttp3.OkHttpClient
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
object WSConf: IWSConf {
const val TAG = "WSConf"
override fun getConfigurationBaseUrl(): String {
return "/api/client/configuration/synchronisation"
}
override fun getConfigurationService(context: Context): ConfigurationService {
return Retrofit.Builder().baseUrl(BuildConfig.ENDPOINT_URL)
.client(getOkHttpClient(context))
.addConverterFactory(GsonConverterFactory.create()).build().create(
ConfigurationService::class.java
)
}
@Suppress("ConstantConditionIf")
override fun getOkHttpClient(context: Context): OkHttpClient {
val builder: OkHttpClient.Builder = OkHttpClient.Builder()
// cas de base : non authentifié sans proxy
return builder
.addInterceptor(Utils.generateNetworkAvailableInterceptor(context))
.addInterceptor(AcceptLanguageHeaderInterceptor())
.addInterceptor(AddAuthorizationInterceptor(context))
.build()
}
}
\ No newline at end of file
package com.ingroupe.verify.anticovid.auth
import android.content.Context
import com.google.gson.GsonBuilder
import com.ingroupe.verify.anticovid.BuildConfig
import com.ingroupe.verify.anticovid.common.Utils
import com.ingroupe.verify.anticovid.service.api.configuration.ConfigurationService
import okhttp3.OkHttpClient
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import java.security.cert.CertificateException
import java.security.cert.X509Certificate
import java.util.*
import javax.net.ssl.*
object WSConf: IWSConf {
const val TAG = "WSConf"
override fun getConfigurationBaseUrl(): String {
return BuildConfig.CONFIGURATION_BASE_URL
}
override fun getConfigurationService(context: Context): ConfigurationService {
val gsonBuilder = GsonBuilder().registerTypeAdapter(Date::class.java, DateDeserializer())
return Retrofit.Builder().baseUrl(BuildConfig.ENDPOINT_URL)
.client(getOkHttpClient(context))
.addConverterFactory(GsonConverterFactory.create(gsonBuilder.create())).build().create(
ConfigurationService::class.java
)
}
@Suppress("ConstantConditionIf")
override fun getOkHttpClient(context: Context): OkHttpClient {
val builder: OkHttpClient.Builder = getUnsafeOkHttpClientBuilder()
// cas de base : non authentifié sans proxy
return builder
.addInterceptor(Utils.generateNetworkAvailableInterceptor(context))
.addInterceptor(AcceptLanguageHeaderInterceptor())
.addInterceptor(AddAuthorizationInterceptor(context))
.build()
}
private fun getUnsafeOkHttpClientBuilder(): OkHttpClient.Builder {
try {
// Create a trust manager that does not validate certificate chains
val trustAllCerts = arrayOf<TrustManager>(object : X509TrustManager {
override fun getAcceptedIssuers(): Array<X509Certificate> {
return arrayOf()
}
@Throws(CertificateException::class)
override fun checkClientTrusted(chain: Array<X509Certificate>, authType: String) {
}
@Throws(CertificateException::class)
override fun checkServerTrusted(chain: Array<X509Certificate>, authType: String) {
}
})
// Install the all-trusting trust manager
val sslContext = SSLContext.getInstance("SSL")
sslContext.init(null, trustAllCerts, java.security.SecureRandom())
// Create an ssl socket factory with our all-trusting manager
val sslSocketFactory = sslContext.getSocketFactory()
val builder = OkHttpClient.Builder()
builder.sslSocketFactory(sslSocketFactory, trustAllCerts[0] as X509TrustManager)
builder.hostnameVerifier(object : HostnameVerifier {
override fun verify(hostname: String, session: SSLSession): Boolean {
return true
}
</