Updated on 2026-08-14

This commit is contained in:
Tangem 2019-09-11 12:44:43 +03:00
commit 2402efda34
317 changed files with 2877 additions and 2683 deletions

View file

@ -1,6 +1,6 @@
package com.tangem.data;
import com.tangem.card_android.R;
import com.tangem.tangem_sdk.R;
/**
* Created by dvol on 06.08.2017.

View file

@ -3,7 +3,7 @@ package com.tangem.data;
import android.content.Context;
import android.util.Log;
import com.tangem.card_common.util.Util;
import com.tangem.tangem_card.util.Util;
import java.io.BufferedReader;
import java.io.BufferedWriter;

View file

@ -3,7 +3,7 @@ package com.tangem.data.fingerprint;
import android.os.AsyncTask;
import android.widget.Toast;
import com.tangem.ui.activity.PinSaveActivity;
import com.tangem.ui.fragment.pin.PinSaveFragment;
import com.tangem.wallet.R;
import java.lang.ref.WeakReference;
@ -11,9 +11,9 @@ import java.lang.ref.WeakReference;
import javax.crypto.Cipher;
public class ConfirmWithFingerprintTask extends AsyncTask<Void, Void, Boolean> {
private WeakReference<PinSaveActivity> reference;
private WeakReference<PinSaveFragment> reference;
public ConfirmWithFingerprintTask(PinSaveActivity context) {
public ConfirmWithFingerprintTask(PinSaveFragment context) {
reference = new WeakReference<>(context);
reference.get().setFingerprintHelper(new FingerprintHelper(reference.get()));
@ -21,40 +21,40 @@ public class ConfirmWithFingerprintTask extends AsyncTask<Void, Void, Boolean> {
@Override
protected Boolean doInBackground(Void... params) {
PinSaveActivity pinSaveActivity = reference.get();
PinSaveFragment pinSaveFragment = reference.get();
if (!pinSaveActivity.getKeyStore())
if (!pinSaveFragment.getKeyStore())
return false;
if (!pinSaveActivity.createNewKey(false))
if (!pinSaveFragment.createNewKey(false))
return false;
if (!pinSaveActivity.getCipher())
if (!pinSaveFragment.getCipher())
return false;
return pinSaveActivity.initCipher(Cipher.ENCRYPT_MODE) && pinSaveActivity.initCryptObject();
return pinSaveFragment.initCipher(Cipher.ENCRYPT_MODE) && pinSaveFragment.initCryptObject();
}
@Override
protected void onPostExecute(final Boolean success) {
PinSaveActivity pinSaveActivity = reference.get();
PinSaveFragment pinSaveFragment = reference.get();
onCancelled();
if (!success) {
Toast.makeText(pinSaveActivity, R.string.pin_save_notification_failed, Toast.LENGTH_LONG).show();
Toast.makeText(pinSaveFragment.getContext(), R.string.pin_save_notification_failed, Toast.LENGTH_LONG).show();
} else {
pinSaveActivity.getFingerprintHelper().startAuth(pinSaveActivity.getFingerprintManager(), pinSaveActivity.getCryptoObject());
pinSaveFragment.getFingerprintHelper().startAuth(pinSaveFragment.getFingerprintManager(), pinSaveFragment.getCryptoObject());
}
}
@Override
protected void onCancelled() {
PinSaveActivity pinSaveActivity = reference.get();
PinSaveFragment pinSaveFragment = reference.get();
if (pinSaveActivity.getDFingerPrintConfirmation() != null) {
pinSaveActivity.getDFingerPrintConfirmation().cancel();
if (pinSaveFragment.getDFingerPrintConfirmation() != null) {
pinSaveFragment.getDFingerPrintConfirmation().cancel();
}
}

View file

@ -9,8 +9,8 @@ import android.security.keystore.KeyPermanentlyInvalidatedException;
import android.security.keystore.KeyProperties;
import com.tangem.Constant;
import com.tangem.card_android.android.data.PINStorage;
import com.tangem.ui.activity.PinRequestActivity;
import com.tangem.tangem_sdk.android.data.PINStorage;
import com.tangem.ui.fragment.pin.PinRequestFragment;
import com.tangem.util.LOG;
import java.io.IOException;
@ -29,7 +29,7 @@ import javax.crypto.spec.IvParameterSpec;
public class StartFingerprintReaderTask extends AsyncTask<Void, Void, Boolean> {
public static final String TAG = StartFingerprintReaderTask.class.getSimpleName();
private WeakReference<PinRequestActivity> reference;
private WeakReference<PinRequestFragment> reference;
private KeyStore keyStore;
private Cipher cipher;
@ -39,13 +39,13 @@ public class StartFingerprintReaderTask extends AsyncTask<Void, Void, Boolean> {
FingerprintManager fingerprintManager;
FingerprintHelper fingerprintHelper;
PinRequestActivity activity;
PinRequestFragment fragment;
public StartFingerprintReaderTask(PinRequestActivity activity, FingerprintManager fingerprintManager, FingerprintHelper fingerprintHelper) {
reference = new WeakReference<>(activity);
public StartFingerprintReaderTask(PinRequestFragment fragment, FingerprintManager fingerprintManager, FingerprintHelper fingerprintHelper) {
reference = new WeakReference<>(fragment);
this.fingerprintManager = fingerprintManager;
this.fingerprintHelper = fingerprintHelper;
this.activity = activity;
this.fragment = fragment;
}
@Override
@ -80,9 +80,9 @@ public class StartFingerprintReaderTask extends AsyncTask<Void, Void, Boolean> {
@Override
protected void onCancelled() {
PinRequestActivity pinRequestActivity = reference.get();
PinRequestFragment fragment = reference.get();
pinRequestActivity.setStartFingerprintReaderTask(null);
fragment.setStartFingerprintReaderTask(null);
}
private boolean getKeyStore() {
@ -143,7 +143,7 @@ public class StartFingerprintReaderTask extends AsyncTask<Void, Void, Boolean> {
@TargetApi(Build.VERSION_CODES.M)
private boolean initCipher(int mode) {
PinRequestActivity pinRequestActivity = reference.get();
PinRequestFragment fragment = reference.get();
LOG.i(TAG, "Initializing cipher...");
try {
@ -154,9 +154,13 @@ public class StartFingerprintReaderTask extends AsyncTask<Void, Void, Boolean> {
cipher.init(mode, keyspec);
} else {
byte[] iv = null;
if (pinRequestActivity.getMode() == PinRequestActivity.Mode.RequestPIN || activity.getMode() == PinRequestActivity.Mode.RequestNewPIN || activity.getMode() == PinRequestActivity.Mode.ConfirmNewPIN) {
if (fragment.getMode() == PinRequestFragment.Mode.RequestPIN ||
fragment.getMode() == PinRequestFragment.Mode.RequestNewPIN ||
fragment.getMode() == PinRequestFragment.Mode.ConfirmNewPIN) {
iv = PINStorage.loadEncryptedIV();
} else if (activity.getMode() == PinRequestActivity.Mode.RequestPIN2 || activity.getMode() == PinRequestActivity.Mode.RequestNewPIN2 || activity.getMode() == PinRequestActivity.Mode.ConfirmNewPIN2) {
} else if (fragment.getMode() == PinRequestFragment.Mode.RequestPIN2 ||
fragment.getMode() == PinRequestFragment.Mode.RequestNewPIN2 ||
fragment.getMode() == PinRequestFragment.Mode.ConfirmNewPIN2) {
iv = PINStorage.loadEncryptedIV2();
}
IvParameterSpec ivspec = new IvParameterSpec(iv);

View file

@ -3,7 +3,7 @@ package com.tangem.data.local
import android.content.Context
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.tangem.card_common.data.TangemCard
import com.tangem.tangem_card.data.TangemCard
import java.io.File
import java.util.*
import kotlin.collections.HashMap

View file

@ -11,7 +11,7 @@ import com.google.gson.annotations.SerializedName;
import com.google.gson.internal.LinkedTreeMap;
import com.jakewharton.retrofit2.adapter.rxjava2.HttpException;
import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import com.tangem.card_common.util.Util;
import com.tangem.tangem_card.util.Util;
import com.tangem.wallet.R;
import java.io.IOException;
@ -25,7 +25,6 @@ import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.RequestBody;
//import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.http.Headers;
@ -34,6 +33,8 @@ import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Path;
//import okhttp3.logging.HttpLoggingInterceptor;
/**
* HTTP
* Used in CryptonitOtherApi service

View file

@ -6,7 +6,7 @@ import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import com.tangem.card_common.util.Util;
import com.tangem.tangem_card.util.Util;
import com.tangem.wallet.R;
import org.spongycastle.util.encoders.Base64;
@ -28,7 +28,6 @@ import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
//import okhttp3.logging.HttpLoggingInterceptor;
import okio.Buffer;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
@ -36,6 +35,8 @@ import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
//import okhttp3.logging.HttpLoggingInterceptor;
/**
* HTTP
* Used in Kraken service