diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ced5cd40eb..335c2c2985 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,19 +1,19 @@ + package="com.tangem.wallet"> + android:required="true" /> - - - - - + + + + + - - + + + android:grantUriPermissions="true" /> - + - + @@ -47,85 +47,85 @@ android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar"> - - + + + android:scheme="http" /> - + + android:resource="@xml/nfc_tech_filter" /> + android:theme="@style/AppTheme.NoActionBar" /> + android:theme="@style/AppTheme.NoActionBar" /> + android:theme="@style/AppTheme.NoActionBar" /> + android:theme="@style/AppTheme.NoActionBar" /> + android:theme="@style/AppTheme.NoActionBar" /> + android:theme="@style/AppTheme.NoActionBar" /> + android:theme="@style/AppTheme.NoActionBar" /> + android:theme="@style/AppTheme.NoActionBar" /> + android:theme="@style/AppTheme.NoActionBar" /> + android:theme="@style/AppTheme.NoActionBar" /> + android:theme="@style/AppTheme.NoActionBar" /> + android:theme="@style/AppTheme.NoActionBar" /> + android:theme="@style/AppTheme.NoActionBar" /> diff --git a/app/src/main/java/com/tangem/data/network/task/request_pin/StartFingerprintReaderTask.java b/app/src/main/java/com/tangem/data/network/task/request_pin/StartFingerprintReaderTask.java index 0b5416d9b9..977a50176e 100644 --- a/app/src/main/java/com/tangem/data/network/task/request_pin/StartFingerprintReaderTask.java +++ b/app/src/main/java/com/tangem/data/network/task/request_pin/StartFingerprintReaderTask.java @@ -10,7 +10,7 @@ import android.security.keystore.KeyProperties; import com.tangem.domain.wallet.FingerprintHelper; import com.tangem.domain.wallet.PINStorage; -import com.tangem.presentation.activity.RequestPINActivity; +import com.tangem.presentation.activity.PinRequestActivity; import java.io.IOException; import java.lang.ref.WeakReference; @@ -26,7 +26,7 @@ import javax.crypto.SecretKey; import javax.crypto.spec.IvParameterSpec; public class StartFingerprintReaderTask extends AsyncTask { - private WeakReference reference; + private WeakReference reference; private KeyStore keyStore; private Cipher cipher; @@ -36,9 +36,9 @@ public class StartFingerprintReaderTask extends AsyncTask { FingerprintManager fingerprintManager; FingerprintHelper fingerprintHelper; - RequestPINActivity activity; + PinRequestActivity activity; - public StartFingerprintReaderTask(RequestPINActivity activity, FingerprintManager fingerprintManager, FingerprintHelper fingerprintHelper) { + public StartFingerprintReaderTask(PinRequestActivity activity, FingerprintManager fingerprintManager, FingerprintHelper fingerprintHelper) { reference = new WeakReference<>(activity); this.fingerprintManager = fingerprintManager; this.fingerprintHelper = fingerprintHelper; @@ -64,32 +64,32 @@ public class StartFingerprintReaderTask extends AsyncTask { @Override protected void onPostExecute(final Boolean success) { - RequestPINActivity requestPINActivity = reference.get(); + PinRequestActivity pinRequestActivity = reference.get(); onCancelled(); if (!success) { - requestPINActivity.doLog("Authentication failed!"); + pinRequestActivity.doLog("Authentication failed!"); } else { fingerprintHelper.startAuth(fingerprintManager, cryptoObject); - requestPINActivity.doLog("Authenticate using fingerprint!"); + pinRequestActivity.doLog("Authenticate using fingerprint!"); } } @Override protected void onCancelled() { - RequestPINActivity requestPINActivity = reference.get(); + PinRequestActivity pinRequestActivity = reference.get(); - requestPINActivity.setStartFingerprintReaderTask(null); + pinRequestActivity.setStartFingerprintReaderTask(null); } private boolean getKeyStore() { - RequestPINActivity requestPINActivity = reference.get(); + PinRequestActivity pinRequestActivity = reference.get(); - requestPINActivity.doLog("Getting keystore..."); + pinRequestActivity.doLog("Getting keystore..."); try { - keyStore = KeyStore.getInstance(RequestPINActivity.KEYSTORE); + keyStore = KeyStore.getInstance(PinRequestActivity.KEYSTORE); keyStore.load(null); // Create empty keystore return true; } catch (KeyStoreException | CertificateException | NoSuchAlgorithmException | IOException e) { @@ -101,17 +101,17 @@ public class StartFingerprintReaderTask extends AsyncTask { @TargetApi(Build.VERSION_CODES.M) public boolean createNewKey(boolean forceCreate) { - RequestPINActivity requestPINActivity = reference.get(); + PinRequestActivity pinRequestActivity = reference.get(); - requestPINActivity.doLog("Creating new key..."); + pinRequestActivity.doLog("Creating new key..."); try { if (forceCreate) - keyStore.deleteEntry(RequestPINActivity.KEY_ALIAS); + keyStore.deleteEntry(PinRequestActivity.KEY_ALIAS); - if (!keyStore.containsAlias(RequestPINActivity.KEY_ALIAS)) { - KeyGenerator generator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, RequestPINActivity.KEYSTORE); + if (!keyStore.containsAlias(PinRequestActivity.KEY_ALIAS)) { + KeyGenerator generator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, PinRequestActivity.KEYSTORE); - generator.init(new KeyGenParameterSpec.Builder(RequestPINActivity.KEY_ALIAS, + generator.init(new KeyGenParameterSpec.Builder(PinRequestActivity.KEY_ALIAS, KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT) .setBlockModes(KeyProperties.BLOCK_MODE_CBC) .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7) @@ -120,9 +120,9 @@ public class StartFingerprintReaderTask extends AsyncTask { ); generator.generateKey(); - requestPINActivity.doLog("Key created."); + pinRequestActivity.doLog("Key created."); } else - requestPINActivity.doLog("Key exists."); + pinRequestActivity.doLog("Key exists."); return true; } catch (Exception e) { @@ -133,9 +133,9 @@ public class StartFingerprintReaderTask extends AsyncTask { } private boolean getCipher() { - RequestPINActivity requestPINActivity = reference.get(); + PinRequestActivity pinRequestActivity = reference.get(); - requestPINActivity.doLog("Getting cipher..."); + pinRequestActivity.doLog("Getting cipher..."); try { cipher = Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/" + KeyProperties.BLOCK_MODE_CBC + "/" + KeyProperties.ENCRYPTION_PADDING_PKCS7); return true; @@ -148,20 +148,20 @@ public class StartFingerprintReaderTask extends AsyncTask { @TargetApi(Build.VERSION_CODES.M) private boolean initCipher(int mode) { - RequestPINActivity requestPINActivity = reference.get(); + PinRequestActivity pinRequestActivity = reference.get(); - requestPINActivity.doLog("Initializing cipher..."); + pinRequestActivity.doLog("Initializing cipher..."); try { keyStore.load(null); - SecretKey keyspec = (SecretKey) keyStore.getKey(RequestPINActivity.KEY_ALIAS, null); + SecretKey keyspec = (SecretKey) keyStore.getKey(PinRequestActivity.KEY_ALIAS, null); if (mode == Cipher.ENCRYPT_MODE) { cipher.init(mode, keyspec); } else { byte[] iv = null; - if (requestPINActivity.getMode() == RequestPINActivity.Mode.RequestPIN || activity.getMode() == RequestPINActivity.Mode.RequestNewPIN || activity.getMode() == RequestPINActivity.Mode.ConfirmNewPIN) { + if (pinRequestActivity.getMode() == PinRequestActivity.Mode.RequestPIN || activity.getMode() == PinRequestActivity.Mode.RequestNewPIN || activity.getMode() == PinRequestActivity.Mode.ConfirmNewPIN) { iv = PINStorage.loadEncryptedIV(); - } else if (activity.getMode() == RequestPINActivity.Mode.RequestPIN2 || activity.getMode() == RequestPINActivity.Mode.RequestNewPIN2 || activity.getMode() == RequestPINActivity.Mode.ConfirmNewPIN2) { + } else if (activity.getMode() == PinRequestActivity.Mode.RequestPIN2 || activity.getMode() == PinRequestActivity.Mode.RequestNewPIN2 || activity.getMode() == PinRequestActivity.Mode.ConfirmNewPIN2) { iv = PINStorage.loadEncryptedIV2(); } IvParameterSpec ivspec = new IvParameterSpec(iv); @@ -181,9 +181,9 @@ public class StartFingerprintReaderTask extends AsyncTask { @TargetApi(Build.VERSION_CODES.M) private boolean initCryptObject() { - RequestPINActivity requestPINActivity = reference.get(); + PinRequestActivity pinRequestActivity = reference.get(); - requestPINActivity.doLog("Initializing crypt object..."); + pinRequestActivity.doLog("Initializing crypt object..."); try { cryptoObject = new FingerprintManager.CryptoObject(cipher); return true; diff --git a/app/src/main/java/com/tangem/data/network/task/save_pin/ConfirmWithFingerprintTask.java b/app/src/main/java/com/tangem/data/network/task/save_pin/ConfirmWithFingerprintTask.java index ca11e15bfc..f147050c3b 100644 --- a/app/src/main/java/com/tangem/data/network/task/save_pin/ConfirmWithFingerprintTask.java +++ b/app/src/main/java/com/tangem/data/network/task/save_pin/ConfirmWithFingerprintTask.java @@ -4,7 +4,7 @@ import android.os.AsyncTask; import android.widget.Toast; import com.tangem.domain.wallet.FingerprintHelper; -import com.tangem.presentation.activity.SavePINActivity; +import com.tangem.presentation.activity.PinSaveActivity; import com.tangem.wallet.R; import java.lang.ref.WeakReference; @@ -12,9 +12,9 @@ import java.lang.ref.WeakReference; import javax.crypto.Cipher; public class ConfirmWithFingerprintTask extends AsyncTask { - private WeakReference reference; + private WeakReference reference; - public ConfirmWithFingerprintTask(SavePINActivity context) { + public ConfirmWithFingerprintTask(PinSaveActivity context) { reference = new WeakReference<>(context); reference.get().setFingerprintHelper(new FingerprintHelper(reference.get())); @@ -22,40 +22,40 @@ public class ConfirmWithFingerprintTask extends AsyncTask { @Override protected Boolean doInBackground(Void... params) { - SavePINActivity savePINActivity = reference.get(); + PinSaveActivity pinSaveActivity = reference.get(); - if (!savePINActivity.getKeyStore()) + if (!pinSaveActivity.getKeyStore()) return false; - if (!savePINActivity.createNewKey(false)) + if (!pinSaveActivity.createNewKey(false)) return false; - if (!savePINActivity.getCipher()) + if (!pinSaveActivity.getCipher()) return false; - return savePINActivity.initCipher(Cipher.ENCRYPT_MODE) && savePINActivity.initCryptObject(); + return pinSaveActivity.initCipher(Cipher.ENCRYPT_MODE) && pinSaveActivity.initCryptObject(); } @Override protected void onPostExecute(final Boolean success) { - SavePINActivity savePINActivity = reference.get(); + PinSaveActivity pinSaveActivity = reference.get(); onCancelled(); if (!success) { - Toast.makeText(savePINActivity, R.string.pin_save_fail, Toast.LENGTH_LONG).show(); + Toast.makeText(pinSaveActivity, R.string.pin_save_fail, Toast.LENGTH_LONG).show(); } else { - savePINActivity.getFingerprintHelper().startAuth(savePINActivity.getFingerprintManager(), savePINActivity.getCryptoObject()); + pinSaveActivity.getFingerprintHelper().startAuth(pinSaveActivity.getFingerprintManager(), pinSaveActivity.getCryptoObject()); } } @Override protected void onCancelled() { - SavePINActivity savePINActivity = reference.get(); + PinSaveActivity pinSaveActivity = reference.get(); - if (savePINActivity.getDFingerPrintConfirmation() != null) { - savePINActivity.getDFingerPrintConfirmation().cancel(); + if (pinSaveActivity.getDFingerPrintConfirmation() != null) { + pinSaveActivity.getDFingerPrintConfirmation().cancel(); } } diff --git a/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt b/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt index 2317d47a19..59afcb1852 100644 --- a/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/ConfirmPaymentActivity.kt @@ -166,8 +166,8 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { } requestPIN2Count = 0 - val intent = Intent(baseContext, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + val intent = Intent(baseContext, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", card!!.uid) intent.putExtra("Card", card!!.asBundle) startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2) @@ -241,8 +241,8 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { } if (resultCode == SignPaymentActivity.RESULT_INVALID_PIN && requestPIN2Count < 2) { requestPIN2Count++ - val intent = Intent(baseContext, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + val intent = Intent(baseContext, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", card!!.uid) intent.putExtra("Card", card!!.asBundle) startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2) diff --git a/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.kt b/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.kt index 4e0caf774b..cc8766da2c 100644 --- a/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/EmptyWalletActivity.kt @@ -82,8 +82,8 @@ class EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card btnNewWallet.setOnClickListener { requestPIN2Count = 0 - val intent = Intent(baseContext, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + val intent = Intent(baseContext, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", card!!.uid) intent.putExtra("Card", card!!.asBundle) startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2) @@ -123,8 +123,8 @@ class EmptyWalletActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Card } if (resultCode == CreateNewWalletActivity.RESULT_INVALID_PIN && requestPIN2Count < 2) { requestPIN2Count++ - val intent = Intent(baseContext, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + val intent = Intent(baseContext, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", card!!.uid) intent.putExtra("Card", card!!.asBundle) startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2) diff --git a/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt b/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt index 5f7273477b..87505f26ef 100644 --- a/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/MainActivity.kt @@ -397,13 +397,13 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco } private fun showSavePinActivity() { - val intent = Intent(baseContext, SavePINActivity::class.java) + val intent = Intent(baseContext, PinSaveActivity::class.java) intent.putExtra("PIN2", false) startActivity(intent) } private fun showSavePin2Activity() { - val intent = Intent(baseContext, SavePINActivity::class.java) + val intent = Intent(baseContext, PinSaveActivity::class.java) intent.putExtra("PIN2", true) startActivity(intent) } @@ -424,8 +424,8 @@ class MainActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtoco } private fun doEnterPIN() { - val intent = Intent(this, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN.toString()) + val intent = Intent(this, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN.toString()) startActivityForResult(intent, REQUEST_CODE_ENTER_PIN_ACTIVITY) } diff --git a/app/src/main/java/com/tangem/presentation/activity/RequestPINActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PinRequestActivity.kt similarity index 97% rename from app/src/main/java/com/tangem/presentation/activity/RequestPINActivity.kt rename to app/src/main/java/com/tangem/presentation/activity/PinRequestActivity.kt index 7e19f851d3..ed04259989 100644 --- a/app/src/main/java/com/tangem/presentation/activity/RequestPINActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PinRequestActivity.kt @@ -25,11 +25,11 @@ import com.tangem.domain.wallet.FingerprintHelper import com.tangem.domain.wallet.PINStorage import com.tangem.domain.wallet.TangemCard import com.tangem.wallet.R -import kotlinx.android.synthetic.main.activity_request_pin.* +import kotlinx.android.synthetic.main.activity_pin_request.* import kotlinx.android.synthetic.main.layout_pin_buttons.* import java.io.IOException -class RequestPINActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, FingerprintHelper.FingerprintHelperListener { +class PinRequestActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, FingerprintHelper.FingerprintHelperListener { companion object { const val KEY_ALIAS = "pinKey" @@ -51,7 +51,7 @@ class RequestPINActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Finge override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_request_pin) + setContentView(R.layout.activity_pin_request) MainActivity.commonInit(applicationContext) @@ -246,7 +246,7 @@ class RequestPINActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, Finge if (!allowFingerprint) return - fingerprintHelper = FingerprintHelper(this@RequestPINActivity) + fingerprintHelper = FingerprintHelper(this@PinRequestActivity) startFingerprintReaderTask = StartFingerprintReaderTask(this, fingerprintManager, fingerprintHelper) startFingerprintReaderTask!!.execute(null as Void?) } diff --git a/app/src/main/java/com/tangem/presentation/activity/SavePINActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PinSaveActivity.kt similarity index 93% rename from app/src/main/java/com/tangem/presentation/activity/SavePINActivity.kt rename to app/src/main/java/com/tangem/presentation/activity/PinSaveActivity.kt index 24d07529c1..6f4192cdd4 100644 --- a/app/src/main/java/com/tangem/presentation/activity/SavePINActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PinSaveActivity.kt @@ -23,7 +23,7 @@ import com.tangem.data.network.task.save_pin.ConfirmWithFingerprintTask import com.tangem.domain.wallet.FingerprintHelper import com.tangem.domain.wallet.PINStorage import com.tangem.wallet.R -import kotlinx.android.synthetic.main.activity_save_pin.* +import kotlinx.android.synthetic.main.activity_pin_save.* import kotlinx.android.synthetic.main.layout_pin_buttons.* import java.io.IOException import java.security.KeyStore @@ -36,7 +36,7 @@ import javax.crypto.NoSuchPaddingException import javax.crypto.SecretKey import javax.crypto.spec.IvParameterSpec -class SavePINActivity : AppCompatActivity(), FingerprintHelper.FingerprintHelperListener { +class PinSaveActivity : AppCompatActivity(), FingerprintHelper.FingerprintHelperListener { private var confirmWithFingerprintTask: ConfirmWithFingerprintTask? = null private var keyStore: KeyStore? = null @@ -54,7 +54,7 @@ class SavePINActivity : AppCompatActivity(), FingerprintHelper.FingerprintHelper override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_save_pin) + setContentView(R.layout.activity_pin_save) MainActivity.commonInit(applicationContext) @@ -121,7 +121,7 @@ class SavePINActivity : AppCompatActivity(), FingerprintHelper.FingerprintHelper cipher = result.cryptoObject.cipher when (onConfirmAction) { - SavePINActivity.OnConfirmAction.Save -> { + PinSaveActivity.OnConfirmAction.Save -> { val textToEncrypt = tvPin.text.toString() if (usePIN2) { PINStorage.saveEncryptedPIN2(cipher, textToEncrypt) @@ -130,7 +130,7 @@ class SavePINActivity : AppCompatActivity(), FingerprintHelper.FingerprintHelper } } - SavePINActivity.OnConfirmAction.Delete -> { + PinSaveActivity.OnConfirmAction.Delete -> { if (usePIN2) { PINStorage.deleteEncryptedPIN2() } else { @@ -140,7 +140,7 @@ class SavePINActivity : AppCompatActivity(), FingerprintHelper.FingerprintHelper tvPin.text = "" } - SavePINActivity.OnConfirmAction.DeleteEncryptedAndSave -> if (usePIN2) { + PinSaveActivity.OnConfirmAction.DeleteEncryptedAndSave -> if (usePIN2) { PINStorage.deleteEncryptedPIN2() PINStorage.saveEncryptedPIN2(cipher, tvPin.text.toString()) } else { @@ -155,7 +155,7 @@ class SavePINActivity : AppCompatActivity(), FingerprintHelper.FingerprintHelper fun getKeyStore(): Boolean { try { - keyStore = KeyStore.getInstance(RequestPINActivity.KEYSTORE) + keyStore = KeyStore.getInstance(PinRequestActivity.KEYSTORE) // create empty keystore keyStore!!.load(null) return true @@ -176,12 +176,12 @@ class SavePINActivity : AppCompatActivity(), FingerprintHelper.FingerprintHelper fun createNewKey(forceCreate: Boolean): Boolean { try { if (forceCreate) - keyStore!!.deleteEntry(RequestPINActivity.KEY_ALIAS) + keyStore!!.deleteEntry(PinRequestActivity.KEY_ALIAS) - if (!keyStore!!.containsAlias(RequestPINActivity.KEY_ALIAS)) { - val generator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, RequestPINActivity.KEYSTORE) + if (!keyStore!!.containsAlias(PinRequestActivity.KEY_ALIAS)) { + val generator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, PinRequestActivity.KEYSTORE) - generator.init(KeyGenParameterSpec.Builder(RequestPINActivity.KEY_ALIAS, + generator.init(KeyGenParameterSpec.Builder(PinRequestActivity.KEY_ALIAS, KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT) .setBlockModes(KeyProperties.BLOCK_MODE_CBC) .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7) @@ -217,7 +217,7 @@ class SavePINActivity : AppCompatActivity(), FingerprintHelper.FingerprintHelper fun initCipher(mode: Int): Boolean { try { keyStore!!.load(null) - val keyspec = keyStore!!.getKey(RequestPINActivity.KEY_ALIAS, null) as SecretKey + val keyspec = keyStore!!.getKey(PinRequestActivity.KEY_ALIAS, null) as SecretKey if (mode == Cipher.ENCRYPT_MODE) { cipher!!.init(mode, keyspec) @@ -285,7 +285,7 @@ class SavePINActivity : AppCompatActivity(), FingerprintHelper.FingerprintHelper onConfirmAction = OnConfirmAction.Save - confirmWithFingerprintTask = ConfirmWithFingerprintTask(this@SavePINActivity) + confirmWithFingerprintTask = ConfirmWithFingerprintTask(this@PinSaveActivity) confirmWithFingerprintTask!!.execute(null as Void?) } else { @@ -303,7 +303,7 @@ class SavePINActivity : AppCompatActivity(), FingerprintHelper.FingerprintHelper // show a progress spinner, and kick off a background task to perform the user login attempt //showProgress(true); - confirmWithFingerprintTask = ConfirmWithFingerprintTask(this@SavePINActivity) + confirmWithFingerprintTask = ConfirmWithFingerprintTask(this@PinSaveActivity) confirmWithFingerprintTask!!.execute(null as Void?) } else { PINStorage.savePIN(tvPin.text.toString()) @@ -321,7 +321,7 @@ class SavePINActivity : AppCompatActivity(), FingerprintHelper.FingerprintHelper return } onConfirmAction = OnConfirmAction.Delete - confirmWithFingerprintTask = ConfirmWithFingerprintTask(this@SavePINActivity) + confirmWithFingerprintTask = ConfirmWithFingerprintTask(this@PinSaveActivity) confirmWithFingerprintTask!!.execute(null as Void?) } else { tvPin.text = "" @@ -334,7 +334,7 @@ class SavePINActivity : AppCompatActivity(), FingerprintHelper.FingerprintHelper return } onConfirmAction = OnConfirmAction.Delete - confirmWithFingerprintTask = ConfirmWithFingerprintTask(this@SavePINActivity) + confirmWithFingerprintTask = ConfirmWithFingerprintTask(this@PinSaveActivity) confirmWithFingerprintTask!!.execute(null as Void?) } else { tvPin.text = "" diff --git a/app/src/main/java/com/tangem/presentation/activity/SwapPINActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PinSwapActivity.kt similarity index 96% rename from app/src/main/java/com/tangem/presentation/activity/SwapPINActivity.kt rename to app/src/main/java/com/tangem/presentation/activity/PinSwapActivity.kt index dcd149d929..70ce84b5d2 100644 --- a/app/src/main/java/com/tangem/presentation/activity/SwapPINActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PinSwapActivity.kt @@ -20,12 +20,12 @@ import com.tangem.presentation.dialog.NoExtendedLengthSupportDialog import com.tangem.presentation.dialog.WaitSecurityDelayDialog import com.tangem.util.Util import com.tangem.wallet.R -import kotlinx.android.synthetic.main.activity_swap_pin.* +import kotlinx.android.synthetic.main.activity_pin_swap.* -class SwapPINActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtocol.Notifications { +class PinSwapActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProtocol.Notifications { companion object { - val TAG: String = SwapPINActivity::class.java.simpleName + val TAG: String = PinSwapActivity::class.java.simpleName const val RESULT_INVALID_PIN = Activity.RESULT_FIRST_USER } @@ -42,7 +42,7 @@ class SwapPINActivity : AppCompatActivity(), NfcAdapter.ReaderCallback, CardProt override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_swap_pin) + setContentView(R.layout.activity_pin_swap) MainActivity.commonInit(applicationContext) diff --git a/app/src/main/java/com/tangem/presentation/activity/PreparePaymentActivity.kt b/app/src/main/java/com/tangem/presentation/activity/PreparePaymentActivity.kt index c4e941c034..a0fcf4cdba 100644 --- a/app/src/main/java/com/tangem/presentation/activity/PreparePaymentActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/PreparePaymentActivity.kt @@ -124,7 +124,7 @@ class PreparePaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback { } ivCamera.setOnClickListener { - val intent = Intent(baseContext, QRScanActivity::class.java) + val intent = Intent(baseContext, QrScanActivity::class.java) startActivityForResult(intent, REQUEST_CODE_SCAN_QR) } } diff --git a/app/src/main/java/com/tangem/presentation/activity/QRScanActivity.kt b/app/src/main/java/com/tangem/presentation/activity/QrScanActivity.kt similarity index 96% rename from app/src/main/java/com/tangem/presentation/activity/QRScanActivity.kt rename to app/src/main/java/com/tangem/presentation/activity/QrScanActivity.kt index 21ce513635..de92ba3256 100644 --- a/app/src/main/java/com/tangem/presentation/activity/QRScanActivity.kt +++ b/app/src/main/java/com/tangem/presentation/activity/QrScanActivity.kt @@ -12,7 +12,7 @@ import com.google.zxing.Result import me.dm7.barcodescanner.zxing.ZXingScannerView -class QRScanActivity : AppCompatActivity(), ZXingScannerView.ResultHandler { +class QrScanActivity : AppCompatActivity(), ZXingScannerView.ResultHandler { private var scannerView: ZXingScannerView? = null diff --git a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt index 1ca895b434..91cbda3ec2 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/LoadedWallet.kt @@ -247,16 +247,16 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific REQUEST_CODE_ENTER_NEW_PIN -> if (resultCode == Activity.RESULT_OK) { if (data != null) { if (data.extras != null && data.extras!!.containsKey("confirmPIN")) { - val intent = Intent(context, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + val intent = Intent(context, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", mCard!!.uid) intent.putExtra("Card", mCard!!.asBundle) newPIN = data.getStringExtra("newPIN") startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN) } else { - val intent = Intent(context, RequestPINActivity::class.java) + val intent = Intent(context, PinRequestActivity::class.java) intent.putExtra("newPIN", data.getStringExtra("newPIN")) - intent.putExtra("mode", RequestPINActivity.Mode.ConfirmNewPIN.toString()) + intent.putExtra("mode", PinRequestActivity.Mode.ConfirmNewPIN.toString()) startActivityForResult(intent, REQUEST_CODE_ENTER_NEW_PIN) } } @@ -264,16 +264,16 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific REQUEST_CODE_ENTER_NEW_PIN2 -> if (resultCode == Activity.RESULT_OK) { if (data != null) { if (data.extras != null && data.extras!!.containsKey("confirmPIN2")) { - val intent = Intent(context, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + val intent = Intent(context, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", mCard!!.uid) intent.putExtra("Card", mCard!!.asBundle) newPIN2 = data.getStringExtra("newPIN2") startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN) } else { - val intent = Intent(context, RequestPINActivity::class.java) + val intent = Intent(context, PinRequestActivity::class.java) intent.putExtra("newPIN2", data.getStringExtra("newPIN2")) - intent.putExtra("mode", RequestPINActivity.Mode.ConfirmNewPIN2.toString()) + intent.putExtra("mode", PinRequestActivity.Mode.ConfirmNewPIN2.toString()) startActivityForResult(intent, REQUEST_CODE_ENTER_NEW_PIN2) } } @@ -317,8 +317,8 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } if (resultCode == CreateNewWalletActivity.RESULT_INVALID_PIN && requestPIN2Count < 2) { requestPIN2Count++ - val intent = Intent(context, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + val intent = Intent(context, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", mCard!!.uid) intent.putExtra("Card", mCard!!.asBundle) startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN) @@ -356,8 +356,8 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } if (resultCode == CreateNewWalletActivity.RESULT_INVALID_PIN && requestPIN2Count < 2) { requestPIN2Count++ - val intent = Intent(context, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + val intent = Intent(context, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", mCard!!.uid) intent.putExtra("Card", mCard!!.asBundle) startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_PURGE) @@ -743,7 +743,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific } private fun startSwapPINActivity() { - val intent = Intent(context, SwapPINActivity::class.java) + val intent = Intent(context, PinSwapActivity::class.java) intent.putExtra("UID", mCard!!.uid) intent.putExtra("Card", mCard!!.asBundle) intent.putExtra("newPIN", newPIN) diff --git a/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt b/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt index 0543cb19c0..ba24d31a26 100644 --- a/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt +++ b/app/src/main/java/com/tangem/presentation/fragment/VerifyCard.kt @@ -18,8 +18,8 @@ import com.tangem.domain.wallet.PINStorage import com.tangem.domain.wallet.TangemCard import com.tangem.presentation.activity.CreateNewWalletActivity import com.tangem.presentation.activity.PurgeActivity -import com.tangem.presentation.activity.RequestPINActivity -import com.tangem.presentation.activity.SwapPINActivity +import com.tangem.presentation.activity.PinRequestActivity +import com.tangem.presentation.activity.PinSwapActivity import com.tangem.presentation.dialog.PINSwapWarningDialog import com.tangem.wallet.BuildConfig import com.tangem.wallet.R @@ -101,16 +101,16 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback { REQUEST_CODE_ENTER_NEW_PIN -> if (resultCode == Activity.RESULT_OK) { if (data != null) { if (data.extras!!.containsKey("confirmPIN")) { - val intent = Intent(context, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + val intent = Intent(context, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", mCard!!.uid) intent.putExtra("Card", mCard!!.asBundle) newPIN = data.getStringExtra("newPIN") startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN) } else { - val intent = Intent(context, RequestPINActivity::class.java) + val intent = Intent(context, PinRequestActivity::class.java) intent.putExtra("newPIN", data.getStringExtra("newPIN")) - intent.putExtra("mode", RequestPINActivity.Mode.ConfirmNewPIN.toString()) + intent.putExtra("mode", PinRequestActivity.Mode.ConfirmNewPIN.toString()) startActivityForResult(intent, REQUEST_CODE_ENTER_NEW_PIN) } } @@ -118,16 +118,16 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback { REQUEST_CODE_ENTER_NEW_PIN2 -> if (resultCode == Activity.RESULT_OK) { if (data != null) { if (data.extras!!.containsKey("confirmPIN2")) { - val intent = Intent(context, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + val intent = Intent(context, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", mCard!!.uid) intent.putExtra("Card", mCard!!.asBundle) newPIN2 = data.getStringExtra("newPIN2") startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN) } else { - val intent = Intent(context, RequestPINActivity::class.java) + val intent = Intent(context, PinRequestActivity::class.java) intent.putExtra("newPIN2", data.getStringExtra("newPIN2")) - intent.putExtra("mode", RequestPINActivity.Mode.ConfirmNewPIN2.toString()) + intent.putExtra("mode", PinRequestActivity.Mode.ConfirmNewPIN2.toString()) startActivityForResult(intent, REQUEST_CODE_ENTER_NEW_PIN2) } } @@ -168,8 +168,8 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback { } if (resultCode == CreateNewWalletActivity.RESULT_INVALID_PIN && requestPIN2Count < 2) { requestPIN2Count++ - val intent = Intent(context, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + val intent = Intent(context, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", mCard!!.uid) intent.putExtra("Card", mCard!!.asBundle) startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_SWAP_PIN) @@ -206,8 +206,8 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback { } if (resultCode == CreateNewWalletActivity.RESULT_INVALID_PIN && requestPIN2Count < 2) { requestPIN2Count++ - val intent = Intent(context, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + val intent = Intent(context, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", mCard!!.uid) intent.putExtra("Card", mCard!!.asBundle) startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_PURGE) @@ -432,8 +432,8 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback { private fun doSetPin() { requestPIN2Count = 0 - val intent = Intent(context, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestNewPIN.toString()) + val intent = Intent(context, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestNewPIN.toString()) newPIN = "" newPIN2 = "" startActivityForResult(intent, REQUEST_CODE_ENTER_NEW_PIN) @@ -441,8 +441,8 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback { private fun doResetPin() { requestPIN2Count = 0 - val intent = Intent(context, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + val intent = Intent(context, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", mCard!!.uid) intent.putExtra("Card", mCard!!.asBundle) newPIN = PINStorage.getDefaultPIN() @@ -452,8 +452,8 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback { private fun doResetPin2() { requestPIN2Count = 0 - val intent = Intent(context, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + val intent = Intent(context, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", mCard!!.uid) intent.putExtra("Card", mCard!!.asBundle) newPIN = "" @@ -463,8 +463,8 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback { private fun doResetPins() { requestPIN2Count = 0 - val intent = Intent(context, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + val intent = Intent(context, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", mCard!!.uid) intent.putExtra("Card", mCard!!.asBundle) newPIN = PINStorage.getDefaultPIN() @@ -474,8 +474,8 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback { private fun doSetPin2() { requestPIN2Count = 0 - val intent = Intent(context, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestNewPIN2.toString()) + val intent = Intent(context, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestNewPIN2.toString()) newPIN = "" newPIN2 = "" startActivityForResult(intent, REQUEST_CODE_ENTER_NEW_PIN2) @@ -491,15 +491,15 @@ class VerifyCard : Fragment(), NfcAdapter.ReaderCallback { return } - val intent = Intent(context, RequestPINActivity::class.java) - intent.putExtra("mode", RequestPINActivity.Mode.RequestPIN2.toString()) + val intent = Intent(context, PinRequestActivity::class.java) + intent.putExtra("mode", PinRequestActivity.Mode.RequestPIN2.toString()) intent.putExtra("UID", mCard!!.uid) intent.putExtra("Card", mCard!!.asBundle) startActivityForResult(intent, REQUEST_CODE_REQUEST_PIN2_FOR_PURGE) } private fun startSwapPINActivity() { - val intent = Intent(context, SwapPINActivity::class.java) + val intent = Intent(context, PinSwapActivity::class.java) intent.putExtra("UID", mCard!!.uid) intent.putExtra("Card", mCard!!.asBundle) intent.putExtra("newPIN", newPIN) diff --git a/app/src/main/res/layout/activity_request_pin.xml b/app/src/main/res/layout/activity_pin_request.xml similarity index 96% rename from app/src/main/res/layout/activity_request_pin.xml rename to app/src/main/res/layout/activity_pin_request.xml index 996c485a58..19bd30c52d 100644 --- a/app/src/main/res/layout/activity_request_pin.xml +++ b/app/src/main/res/layout/activity_pin_request.xml @@ -4,7 +4,7 @@ android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical" - tools:context="com.tangem.presentation.activity.RequestPINActivity"> + tools:context="com.tangem.presentation.activity.PinRequestActivity"> + tools:context="com.tangem.presentation.activity.PinSaveActivity"> - - - - - - - - - - - - - - + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_progress_horizontal.xml b/app/src/main/res/layout/layout_progress_horizontal.xml index c0f0850604..84d773dee8 100644 --- a/app/src/main/res/layout/layout_progress_horizontal.xml +++ b/app/src/main/res/layout/layout_progress_horizontal.xml @@ -9,4 +9,4 @@ android:layout_alignParentBottom="true" android:elevation="1dp" app:layout_constraintBottom_toBottomOf="parent" - tools:showIn="@layout/activity_swap_pin" /> \ No newline at end of file + tools:showIn="@layout/activity_pin_swap" /> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 81dfda939a..bd9143ac3a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,214 +1,214 @@ - - - OK - Cancel - Continue - Not found - Not ISO tag! - Card must be loaded first! - Tag lost! - OK - Quit - Enable NFC? - This app is useless when NFC is disabled. Reader mode depends on it. Hit OK to go to Settings, where you can enable NFC. - command - response - Hello World from section: %1$d - Successfully authenticated! - Successfully saved! - Saving pin failed - PIN is empty - Please enter the PIN for confirmation! - Enter PIN and save it - Enter PIN2 and save it - Bitcoin - Etherium - - @string/bcBitcoin - @string/bcEtherium - - Settings - Balance - verified offline - Blockchain - Last withdrawal - Try to scan again - Cannot erase wallet with non-zero balance - Send payment - From banknote - with balance - Send to wallet - Amount - (including fee) - mBTC - Scan again to verify the card - Smart Cash AG - Wallet - Scan again to verify the card - READING… - VERIFYING… - - - Your Android device is rooted. Security at risk! - Got it - Warning - Security delay - The NFC adapter of the device does not support extended length APDU, it\'s possible that some functions will not work! - Your money is at risk! - This banknote has enforced security delay - Please hold the banknote firmly\n until the operation is completed… - You may be required to repeat this operation a few times depending on the NFC performance of your smartphone.\n This is made for safety of your funds. - - - Clean up - Manage user PIN1… - Manage user PIN2… - Send logs… - About… - - - Set PIN1 - Set PIN2 - Reset PIN1 to default - Reset PIN2 to default - Reset PINs to default - Erase wallet - - - Tap Tangem card with your smartphone - Scan a banknote with your \n %1$s \n as shown above - phone - Last unspent - Wallet was erased - Not personalized - - - The wallet is empty - No compatible wallet installed - Not enough funds for transaction fee (gas)! - Please wait while previous transaction is confirmed in blockchain - Could not obtain all inputs. Swipe down to refresh. - Card has no remaining signature! - EXPLORE - Swipe down to refresh data - Message! - Error! - SEND - If you forget your new PIN you will lose your money forever! - If you use default PIN someone can steal your money! - Cannot obtain data from blockchain - Sending cached transaction… - NOT IMPLEMENTED - This banknote is protected by default PIN1 code - This banknote is protected by user\'s PIN1 code - This banknote is protected by default PIN2 code - This banknote is protected by user\'s PIN2 code - Unlocked banknote, only for development use - This banknote will enforce %.0f seconds security delay for all operations requiring PIN2 code - Share wallet address with: - Copied to clipboard - EXTRACT - LOAD - EXPLORE - COPY - DETAILS - NEW SCAN - - - BETA - - - Now touch the banknote with ID - to create the wallet - to erase the wallet - to sign the payment - to change PIN/PIN2 codes - By tapping the card, you will permanently remove the blockchain wallet. Ensure there will be no further incoming transactions - Cannot erase wallet. Make sure you enter correct PIN2! - - - enter wallet address - enter amount - Verify - - - Enter new PIN or use fingerprint scanner - Enter new PIN - Enter PIN or use fingerprint scanner - Enter PIN2 or use fingerprint scanner - Confirm new PIN - Confirm new PIN2 - Enter PIN - Enter PIN2 - Enter new PIN2 or use fingerprint scanner - Enter new PIN2 - - - Please wait while the payment is sent… - Transaction has been successfully signed and sent to blockchain node. Wallet balance will be updated in a while - Try again. Failed to send transaction (%1$s) - - - Not enough funds on your card - Unknown amount format - Incorrect destination wallet address - Destination wallet address equal source address - - - target wallet address - payment amount - Fee - Send - Minimal - Normal - Priority - The obtained data is outdated! Try again - Cannot reach current active blockchain node. Try again - Cannot check balance! No connection with blockchain nodes - The wallet is empty - Please wait for confirmation of incoming transaction - Fee exceeds payment amount. Enter correct value and repeat sending. - PIN2 is required to sign the payment - - - Wallet hasn\'t been yet created - Create Wallet - - - Card ID - Signing method - This card is - Signed transactions - Remaining signatures - Time of last signing - Features - Manufacturer - Card identity - Attested - Not confirmed - Reusable - None - Last one! - Unlimited - One-off banknote - Firmware - Registration date - Possession proved - Possession NOT proved - not available - Issuer - Private key - Validation node - Issuer Data - Unspents - - - Save - Delete - Protect with fingerprint - Touch fingerprint scanner to confirm - User hasn\'t enabled Lock Screen - User hasn\'t granted permission to use Fingerprint - User hasn\'t registered any fingerprints - + + + OK + Cancel + Continue + Not found + Not ISO tag! + Card must be loaded first! + Tag lost! + OK + Quit + Enable NFC? + This app is useless when NFC is disabled. Reader mode depends on it. Hit OK to go to Settings, where you can enable NFC. + command + response + Hello World from section: %1$d + Successfully authenticated! + Successfully saved! + Saving pin failed + PIN is empty + Please enter the PIN for confirmation! + Enter PIN and save it + Enter PIN2 and save it + Bitcoin + Etherium + + @string/bcBitcoin + @string/bcEtherium + + Settings + Balance + verified offline + Blockchain + Last withdrawal + Try to scan again + Cannot erase wallet with non-zero balance + Send payment + From banknote + with balance + Send to wallet + Amount + (including fee) + mBTC + Scan again to verify the card + Smart Cash AG + Wallet + Scan again to verify the card + READING… + VERIFYING… + + + Your Android device is rooted. Security at risk! + Got it + Warning + Security delay + The NFC adapter of the device does not support extended length APDU, it\'s possible that some functions will not work! + Your money is at risk! + This banknote has enforced security delay + Please hold the banknote firmly\n until the operation is completed… + You may be required to repeat this operation a few times depending on the NFC performance of your smartphone.\n This is made for safety of your funds. + + + Clean up + Manage user PIN1… + Manage user PIN2… + Send logs… + About… + + + Set PIN1 + Set PIN2 + Reset PIN1 to default + Reset PIN2 to default + Reset PINs to default + Erase wallet + + + Tap Tangem card with your smartphone + Scan a banknote with your \n %1$s \n as shown above + phone + Last unspent + Wallet was erased + Not personalized + + + The wallet is empty + No compatible wallet installed + Not enough funds for transaction fee (gas)! + Please wait while previous transaction is confirmed in blockchain + Could not obtain all inputs. Swipe down to refresh. + Card has no remaining signature! + EXPLORE + Swipe down to refresh data + Message! + Error! + SEND + If you forget your new PIN you will lose your money forever! + If you use default PIN someone can steal your money! + Cannot obtain data from blockchain + Sending cached transaction… + NOT IMPLEMENTED + This banknote is protected by default PIN1 code + This banknote is protected by user\'s PIN1 code + This banknote is protected by default PIN2 code + This banknote is protected by user\'s PIN2 code + Unlocked banknote, only for development use + This banknote will enforce %.0f seconds security delay for all operations requiring PIN2 code + Share wallet address with: + Copied to clipboard + EXTRACT + LOAD + EXPLORE + COPY + DETAILS + NEW SCAN + + + BETA + + + Now touch the banknote with ID + to create the wallet + to erase the wallet + to sign the payment + to change PIN/PIN2 codes + By tapping the card, you will permanently remove the blockchain wallet. Ensure there will be no further incoming transactions + Cannot erase wallet. Make sure you enter correct PIN2! + + + enter wallet address + enter amount + Verify + + + Enter new PIN or use fingerprint scanner + Enter new PIN + Enter PIN or use fingerprint scanner + Enter PIN2 or use fingerprint scanner + Confirm new PIN + Confirm new PIN2 + Enter PIN + Enter PIN2 + Enter new PIN2 or use fingerprint scanner + Enter new PIN2 + + + Please wait while the payment is sent… + Transaction has been successfully signed and sent to blockchain node. Wallet balance will be updated in a while + Try again. Failed to send transaction (%1$s) + + + Not enough funds on your card + Unknown amount format + Incorrect destination wallet address + Destination wallet address equal source address + + + target wallet address + payment amount + Fee + Send + Minimal + Normal + Priority + The obtained data is outdated! Try again + Cannot reach current active blockchain node. Try again + Cannot check balance! No connection with blockchain nodes + The wallet is empty + Please wait for confirmation of incoming transaction + Fee exceeds payment amount. Enter correct value and repeat sending. + PIN2 is required to sign the payment + + + Wallet hasn\'t been yet created + Create Wallet + + + Card ID + Signing method + This card is + Signed transactions + Remaining signatures + Time of last signing + Features + Manufacturer + Card identity + Attested + Not confirmed + Reusable + None + Last one! + Unlimited + One-off banknote + Firmware + Registration date + Possession proved + Possession NOT proved + not available + Issuer + Private key + Validation node + Issuer Data + Unspents + + + Save + Delete + Protect with fingerprint + Touch fingerprint scanner to confirm + User hasn\'t enabled Lock Screen + User hasn\'t granted permission to use Fingerprint + User hasn\'t registered any fingerprints + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 0a1f33f360..6eb4b05de7 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,4 @@ buildscript { - ext.kotlin_version = '1.2.60' repositories { google() @@ -20,4 +19,4 @@ allprojects { task clean(type: Delete) { delete rootProject.buildDir -} +} \ No newline at end of file