3DS 2.1 Deprecation Notice
EMVCo and the card schemes will shortly be sunsetting 3D Secure version 2.1.
Please contact Ravelin if you have any questions in advance of this change.

ProGuard rules

///////////
// 3DS SDK:
///////////
-keeppackagenames com.ravelin.**,com.ul.**
-keep,includecode class com.ravelin.** { *; }
-keep,includecode enum com.ravelin.** { *; }
-keep public class com.ul.** { *; }

////////////////
// Bouncycastle:
////////////////
-keep class org.bouncycastle.jcajce.provider.** { *; }
-keep class org.bouncycastle.jce.provider.** { *; }

-dontwarn javax.naming.**

////////
// 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.** { <fields>; }

// Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory,
// JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * extends com.google.gson.TypeAdapter
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

// Prevent R8 from leaving Data object members always null
-keepclassmembers,allowobfuscation class * {
@com.google.gson.annotations.SerializedName <fields>;
}

// Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher.
-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken
-keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken

////////////
// Retrofit:
////////////
// Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and
// EnclosingMethod is required to use InnerClasses.
-keepattributes Signature, InnerClasses, EnclosingMethod

// Retrofit does reflection on method and parameter annotations.
-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations

// Keep annotation default values (e.g., retrofit2.http.Field.encoded).
-keepattributes AnnotationDefault

// Retain service method parameters when optimizing.
-keepclassmembers,allowshrinking,allowobfuscation interface * {
@retrofit2.http.* <methods>;
}

// Ignore annotation used for build tooling.
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement

// Ignore JSR 305 annotations for embedding nullability information.
-dontwarn javax.annotation.**

// Guarded by a NoClassDefFoundError try/catch and only used when on the classpath.
-dontwarn kotlin.Unit

// Top-level functions that can only be used by Kotlin.
-dontwarn retrofit2.KotlinExtensions
-dontwarn retrofit2.KotlinExtensions$*

// With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy
// and replaces all potential values with null. Explicitly keeping the interfaces prevents this.
-if interface * { @retrofit2.http.* <methods>; }
-keep,allowobfuscation interface <1>

// Keep inherited services.
-if interface * { @retrofit2.http.* <methods>; }
-keep,allowobfuscation interface * extends <1>

// With R8 full mode generic signatures are stripped for classes that are not
// kept. Suspend functions are wrapped in continuations where the type argument
// is used.
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation

// R8 full mode strips generic signatures from return types if not kept.
-if interface * { @retrofit2.http.* public *** *(...); }
-keep,allowoptimization,allowshrinking,allowobfuscation class <3>

// With R8 full mode generic signatures are stripped for classes that are not kept.
-keep,allowobfuscation,allowshrinking class retrofit2.Response

////////////
// Protobuf:
////////////
// Required only for some versions of protobuf
-keep class * extends com.google.protobuf.GeneratedMessageLite { *; }

Feedback