CryptoMessage v1.3.2版本的 MD5 值为:66c611ce56a11450659dc23697562928

以下内容为反编译后的 VTalkApp.java 源代码,内容仅作参考


package kz.gamma.VTalk;

import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.AssetManager;
import android.os.Build;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.preference.PreferenceManager;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.nio.charset.Charset;
import java.security.Security;
import java.util.Arrays;
import kotlin.Unit;
import kotlin.io.ByteStreamsKt;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlin.jvm.internal.Intrinsics;
import kotlin.text.Charsets;
import kotlin.text.StringsKt__StringsJVMKt;
import kotlin.text.StringsKt__StringsKt;
import kz.gamma.VTalk.api.PreferencesHelper;
import kz.gamma.VTalk.tools.FileLogTree;
import kz.gamma.VTalk.tools.LoggerUtil;
import kz.gamma.jce.provider.GammaTechProvider;
import kz.gamma.testsip.R;
import kz.gamma.tumarcsp.DataConverter;
import kz.gamma.tumarcsp.LibraryWrapper;
import kz.gamma.tumarcsp.TumarCspFunctions;
import org.jivesoftware.smack.CSPConfiguration;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.SASLAuthentication;
import org.jivesoftware.smack.db.DatabaseManager;
import org.jivesoftware.smack.debugger.ConsoleDebugger;
import org.jivesoftware.smack.sasl.SASLMechanism;
import org.jivesoftware.smack.tcp.XMPPTCPConnection;
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
import org.kodein.di.Kodein;
import org.kodein.di.KodeinAware;
import org.kodein.di.KodeinContext;
import org.kodein.di.KodeinTrigger;
import org.kodein.di.LazyKodein;
import org.kodein.di.TypeReference;
import org.kodein.di.TypesKt;
import org.kodein.di.bindings.NoArgSimpleBindingKodein;
import org.kodein.di.bindings.Singleton;
import timber.log.Timber;

public final class VTalkApp extends Application implements KodeinAware {
    public static final Companion Companion = new Companion(null);
    private static int firstLogin;
    private final String TAG = VTalkApp.class.getName();
    private final LazyKodein kodein = Kodein.Companion.lazy$default(Kodein.Companion, false, new Function1<Kodein.MainBuilder, Unit>() {
        {
            super(1);
        }

        public final void invoke2(Kodein.MainBuilder lazy) {
            Intrinsics.checkNotNullParameter(lazy, "$this$lazy");
            lazy.Bind(null, null).from(new Singleton(lazy.getScope(), lazy.getContextType(), TypesKt.TT(new TypeReference<SharedPreferences>() {
            }), null, true, new Function1<NoArgSimpleBindingKodein<? extends Object>, SharedPreferences>() {
                @Override
                public final SharedPreferences invoke(NoArgSimpleBindingKodein<? extends Object> singleton) {
                    Intrinsics.checkNotNullParameter(singleton, "$this$singleton");
                    return PreferenceManager.getDefaultSharedPreferences((Context) singleton.getDkodein().Instance(TypesKt.TT(new TypeReference<Context>() {
                    }), null));
                }
            }));
            lazy.Bind(TypesKt.TT(new TypeReference<DatabaseManager>() {
            }), null, null).with(new Singleton(lazy.getScope(), lazy.getContextType(), TypesKt.TT(new TypeReference<DatabaseManager>() {
            }), null, true, new Function1<NoArgSimpleBindingKodein<? extends Object>, DatabaseManager>() {
                @Override
                public final DatabaseManager invoke(NoArgSimpleBindingKodein<? extends Object> singleton) {
                    Intrinsics.checkNotNullParameter(singleton, "$this$singleton");
                    return DatabaseManager.getInstance();
                }
            }));
            Kodein.Builder.TypeBinder Bind = lazy.Bind(TypesKt.TT(new TypeReference<XMPPTCPConnection>() {
            }), null, null);
            final VTalkApp vTalkApp = VTalkApp.this;
            Bind.with(new Singleton(lazy.getScope(), lazy.getContextType(), TypesKt.TT(new TypeReference<XMPPTCPConnection>() {
            }), null, true, new Function1<NoArgSimpleBindingKodein<? extends Object>, XMPPTCPConnection>() {
                {
                    super(1);
                }

                @Override
                public final XMPPTCPConnection invoke(NoArgSimpleBindingKodein<? extends Object> singleton) {
                    XMPPTCPConnection createConnection;
                    Intrinsics.checkNotNullParameter(singleton, "$this$singleton");
                    createConnection = VTalkApp.this.createConnection();
                    return createConnection;
                }
            }));
            Kodein.Builder.TypeBinder Bind2 = lazy.Bind(TypesKt.TT(new TypeReference<PreferencesHelper>() {
            }), null, null);
            final VTalkApp vTalkApp2 = VTalkApp.this;
            Bind2.with(new Singleton(lazy.getScope(), lazy.getContextType(), TypesKt.TT(new TypeReference<PreferencesHelper>() {
            }), null, true, new Function1<NoArgSimpleBindingKodein<? extends Object>, PreferencesHelper>() {
                {
                    super(1);
                }

                @Override
                public final PreferencesHelper invoke(NoArgSimpleBindingKodein<? extends Object> singleton) {
                    Intrinsics.checkNotNullParameter(singleton, "$this$singleton");
                    Context applicationContext = VTalkApp.this.getApplicationContext();
                    Intrinsics.checkNotNullExpressionValue(applicationContext, "applicationContext");
                    return new PreferencesHelper(applicationContext);
                }
            }));
        }

        @Override
        public Unit invoke(Kodein.MainBuilder mainBuilder) {
            invoke2(mainBuilder);
            return Unit.INSTANCE;
        }
    }, 1, null);

    @Override
    public KodeinContext<?> getKodeinContext() {
        return KodeinAware.DefaultImpls.getKodeinContext(this);
    }

    @Override
    public KodeinTrigger getKodeinTrigger() {
        KodeinAware.DefaultImpls.getKodeinTrigger(this);
        return null;
    }

    @Override
    public LazyKodein getKodein() {
        return this.kodein;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        File file = new File(getExternalFilesDir(""), getString(R.string.fileLog));
        LoggerUtil.INSTANCE.reCreateFile(file);
        String absolutePath = file.getAbsolutePath();
        Intrinsics.checkNotNullExpressionValue(absolutePath, "filelog.absolutePath");
        Timber.plant(new FileLogTree(absolutePath));
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
        installLicense();
        try {
            Security.addProvider(new GammaTechProvider());
        } catch (Throwable th) {
            Timber.e("Не удалось обнаружить криптопровайдер TumarCSP", new Object[0]);
            Timber.e(th);
        }
        infoLicense();
        DatabaseManager databaseManager = DatabaseManager.getInstance();
        try {
            databaseManager.init(getApplicationContext());
            Timber.d("Cache loaded", new Object[0]);
        } catch (Exception e) {
            Timber.e(e);
        }
        try {
            databaseManager.createTables();
        } catch (Exception e2) {
            Timber.e(e2);
        }
        try {
            databaseManager.upgrade();
        } catch (Exception e3) {
            Timber.e(e3);
        }
        System.setOut(new PrintStream(new OutputStream() {
            @Override
            public void write(int i) {
            }

            @Override
            public void write(byte[] bArr) {
            }
        }));
        System.setErr(new PrintStream(new OutputStream() {
            @Override
            public void write(int i) {
                System.out.print(i);
            }

            @Override
            public void write(byte[] bArr) {
                String replace$default;
                if (bArr != null) {
                    replace$default = StringsKt__StringsJVMKt.replace$default(new String(bArr, Charsets.UTF_8), '\n', ' ', false, 4, null);
                    Timber.e(replace$default, new Object[0]);
                }
            }

            @Override
            public void write(byte[] bArr, int i, int i2) {
                String replace$default;
                if (bArr != null) {
                    if (bArr[i] == 10 && i2 == 1) {
                        return;
                    }
                    byte[] copyOfRange = Arrays.copyOfRange(bArr, i, i2);
                    Intrinsics.checkNotNullExpressionValue(copyOfRange, "copyOfRange(arg0, off, len)");
                    replace$default = StringsKt__StringsJVMKt.replace$default(new String(copyOfRange, Charsets.UTF_8), '\n', ' ', false, 4, null);
                    Timber.e(replace$default, new Object[0]);
                }
            }
        }));
    }

    public final void reload() {
        Timber.i("VTalk: reload() start", new Object[0]);
        createConnection();
        Timber.i("VTalk: reload() end", new Object[0]);
    }

    public final XMPPTCPConnection createConnection() {
        int indexOf;
        int indexOf$default;
        File file = new File(String.valueOf(getExternalFilesDir("")), "/TumarCSP/");
        indexOf = StringsKt__StringsKt.indexOf((CharSequence) "C=KZ;O=Ministry of Foreign Affairs_FILE_GOST;CN=", "O=", 0, true);
        int i = indexOf + 2;
        indexOf$default = StringsKt__StringsKt.indexOf$default((CharSequence) "C=KZ;O=Ministry of Foreign Affairs_FILE_GOST;CN=", ";", i, false, 4, (Object) null);
        String substring = "C=KZ;O=Ministry of Foreign Affairs_FILE_GOST;CN=".substring(i, indexOf$default);
        Intrinsics.checkNotNullExpressionValue(substring, "this as java.lang.String…ing(startIndex, endIndex)");
        CSPConfiguration build = CSPConfiguration.builder().setCaHost("m.mfa.kz").setCaPort(62222).setCmpUrl("http://m.mfa.kz:62306").setCrlUrl("http://m.mfa.kz:62280/cgi/RevListGOST.crl").setProfilePath(file.getAbsolutePath()).setO(substring).setProvider("GAMMA").build();
        SASLAuthentication.blacklistSASLMechanism("SCRAM-SHA-1");
        SASLAuthentication.blacklistSASLMechanism(SASLMechanism.CRAMMD5);
        SASLAuthentication.blacklistSASLMechanism("DIGEST-MD5");
        SASLAuthentication.unBlacklistSASLMechanism("PLAIN");
        XMPPTCPConnection xMPPTCPConnection = new XMPPTCPConnection(XMPPTCPConnectionConfiguration.builder().setMediaDirectory(getExternalFilesDir("") + "/files").setFileUploadAddress("http://m.mfa.kz:7777").setHost("m.mfa.kz").setXmppDomain("m.mfa.kz").setPort(5222).setDebuggerFactory(ConsoleDebugger.Factory.INSTANCE).setConnectTimeout(60000).setSecurityMode(ConnectionConfiguration.SecurityMode.disabled).setCspConfiguration(build).build());
        xMPPTCPConnection.setReplyTimeout(60000L);
        return xMPPTCPConnection;
    }

    private final boolean installLicense() {
        try {
            makeFolder(getExternalFilesDir("") + "/files/");
            if (makeFolder(getExternalFilesDir("") + "/TumarCSP/")) {
                File file = new File(getExternalFilesDir("") + "/TumarCSP/cptumar.reg");
                if (file.exists()) {
                    file.delete();
                }
                AssetManager assets = getAssets();
                String[] list = assets.list("TumarCSP");
                if (list == null) {
                    return false;
                }
                InputStream open = assets.open("TumarCSP/" + list[0]);
                Intrinsics.checkNotNullExpressionValue(open, "assetManager.open(\"TumarCSP/\" + files[0])");
                FileOutputStream fileOutputStream = new FileOutputStream(file, false);
                ByteStreamsKt.copyTo$default(open, fileOutputStream, 0, 2, null);
                fileOutputStream.close();
                open.close();
                File file2 = new File(String.valueOf(getExternalFilesDir("")), "/TumarCSP/");
                TumarCspFunctions.initialize(LibraryWrapper.LIBRARY_NAME);
                TumarCspFunctions.cpSetProvParam((Number) 0, 82, DataConverter.stringToByteArray(file2.getAbsolutePath() + "/cptumar.reg"), 0);
                return true;
            }
            Timber.w("***cptumar.reg** can't reach storage", new Object[0]);
            return false;
        } catch (Exception e) {
            Timber.w(e, "***cptumar.reg** exception", new Object[0]);
            return false;
        }
    }

    private final void infoLicense() {
        ?? r1;
        Charset charset;
        Number number;
        Exception e;
        try {
            Timber.i("KM version 1.3.2 , release , mid", new Object[0]);
            Object[] objArr = new Object[0];
            Timber.i(Build.BRAND + " - " + Build.DEVICE + " - " + Build.MODEL + " - " + Build.ID + " - " + Build.PRODUCT + " - " + Build.TYPE, objArr);
            try {
                objArr = new Object[0];
                Timber.i("Android " + Build.VERSION.RELEASE_OR_CODENAME, objArr);
                r1 = objArr;
            } catch (Throwable th) {
                Timber.e(th);
                r1 = objArr;
            }
            try {
                Timber.i("sun.arch.data.model - " + System.getProperty("sun.arch.data.model"), new Object[0]);
                Timber.i("Tumar bit: " + TumarCspFunctions.cpGetTumarCspBit(), new Object[0]);
                StringBuilder sb = new StringBuilder();
                sb.append("Tumar build: ");
                byte[] cpGetTumarCspBuild = TumarCspFunctions.cpGetTumarCspBuild();
                Intrinsics.checkNotNullExpressionValue(cpGetTumarCspBuild, "cpGetTumarCspBuild()");
                charset = Charsets.UTF_8;
                sb.append(new String(cpGetTumarCspBuild, charset));
                Timber.i(sb.toString(), new Object[0]);
            } catch (Throwable th2) {
                th = th2;
            }
            try {
                number = TumarCspFunctions.cpAcquireContext("", -268435456, LibraryWrapper.PV_TABLE);
                Intrinsics.checkNotNullExpressionValue(number, "cpAcquireContext(\"\",Libr…,LibraryWrapper.PV_TABLE)");
                try {
                    byte[] cpGetProvParamByte = TumarCspFunctions.cpGetProvParamByte(number, 66, 1, 3);
                    if (cpGetProvParamByte != null) {
                        Timber.i("crypto helper license result " + new String(cpGetProvParamByte, charset), new Object[0]);
                    } else {
                        Timber.i("crypto helper license result is null", new Object[0]);
                    }
                    if (number.intValue() == 0) {
                        return;
                    }
                } catch (Exception e2) {
                    e = e2;
                    Timber.e(e);
                    if (number.intValue() != 0) {
                        TumarCspFunctions.cpReleaseContext(number, 0);
                    }
                    return;
                }
            } catch (Exception e3) {
                number = 0;
                e = e3;
            } catch (Throwable th3) {
                r1 = 0;
                th = th3;
                if (r1.intValue() != 0) {
                    TumarCspFunctions.cpReleaseContext((Number) r1, 0);
                }
                throw th;
            }
            TumarCspFunctions.cpReleaseContext(number, 0);
        } catch (Exception e4) {
            Timber.e(e4);
        }
    }

    private final boolean makeFolder(String str) {
        int i = 0;
        try {
            File file = new File(str);
            if (!file.exists()) {
                i = file.mkdirs();
            } else if (file.isDirectory()) {
                i = 1;
            } else {
                boolean delete = file.delete();
                i = delete ? file.mkdirs() : delete;
            }
        } catch (Exception e) {
            Timber.w(e, "makeFolder Exception", new Object[i]);
        }
        return i;
    }

    public static final class Companion {
        public Companion(DefaultConstructorMarker defaultConstructorMarker) {
            this();
        }

        private Companion() {
        }

        public final int getFirstLogin() {
            return VTalkApp.firstLogin;
        }

        public final void setFirstLogin(int i) {
            VTalkApp.firstLogin = i;
        }
    }
}