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;
}
}
}