diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 771e4699..a23781b5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,7 +15,7 @@ android:supportsRtl="true" android:theme="@style/AppTheme"> - + diff --git a/app/src/main/java/me/impy/aegis/AegisApplication.java b/app/src/main/java/me/impy/aegis/AegisApplication.java index 39f89d68..86f92ab7 100644 --- a/app/src/main/java/me/impy/aegis/AegisApplication.java +++ b/app/src/main/java/me/impy/aegis/AegisApplication.java @@ -13,6 +13,7 @@ import android.support.annotation.RequiresApi; import java.util.Collections; import me.impy.aegis.db.DatabaseManager; +import me.impy.aegis.ui.MainActivity; public class AegisApplication extends Application { private boolean _running = false; diff --git a/app/src/main/java/me/impy/aegis/EditProfileBottomSheetdialog.java b/app/src/main/java/me/impy/aegis/EditProfileBottomSheetdialog.java deleted file mode 100644 index e9556799..00000000 --- a/app/src/main/java/me/impy/aegis/EditProfileBottomSheetdialog.java +++ /dev/null @@ -1,28 +0,0 @@ -package me.impy.aegis; - -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.design.widget.BottomSheetDialogFragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.LinearLayout; - -public class EditProfileBottomSheetdialog extends BottomSheetDialogFragment { - LinearLayout _copyLayout; - - public static EditProfileBottomSheetdialog getInstance() { - return new EditProfileBottomSheetdialog(); - } - - public LinearLayout GetCopyLayout() - { - return _copyLayout; - } - - @Nullable - @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - return inflater.inflate(R.layout.bottom_sheet_edit_profile, container, false); - } -} diff --git a/app/src/main/java/me/impy/aegis/db/DatabaseFile.java b/app/src/main/java/me/impy/aegis/db/DatabaseFile.java index 98c5df1f..18cf1c9e 100644 --- a/app/src/main/java/me/impy/aegis/db/DatabaseFile.java +++ b/app/src/main/java/me/impy/aegis/db/DatabaseFile.java @@ -7,7 +7,7 @@ import java.lang.reflect.UndeclaredThrowableException; import java.util.Arrays; import me.impy.aegis.crypto.CryptParameters; -import me.impy.aegis.crypto.slots.SlotCollection; +import me.impy.aegis.db.slots.SlotCollection; import me.impy.aegis.crypto.CryptoUtils; import me.impy.aegis.util.LittleByteBuffer; diff --git a/app/src/main/java/me/impy/aegis/crypto/slots/FingerprintSlot.java b/app/src/main/java/me/impy/aegis/db/slots/FingerprintSlot.java similarity index 78% rename from app/src/main/java/me/impy/aegis/crypto/slots/FingerprintSlot.java rename to app/src/main/java/me/impy/aegis/db/slots/FingerprintSlot.java index 6f47a666..6db19c19 100644 --- a/app/src/main/java/me/impy/aegis/crypto/slots/FingerprintSlot.java +++ b/app/src/main/java/me/impy/aegis/db/slots/FingerprintSlot.java @@ -1,4 +1,4 @@ -package me.impy.aegis.crypto.slots; +package me.impy.aegis.db.slots; public class FingerprintSlot extends RawSlot { @Override diff --git a/app/src/main/java/me/impy/aegis/crypto/slots/PasswordSlot.java b/app/src/main/java/me/impy/aegis/db/slots/PasswordSlot.java similarity index 98% rename from app/src/main/java/me/impy/aegis/crypto/slots/PasswordSlot.java rename to app/src/main/java/me/impy/aegis/db/slots/PasswordSlot.java index 5584ec8c..ed029fb9 100644 --- a/app/src/main/java/me/impy/aegis/crypto/slots/PasswordSlot.java +++ b/app/src/main/java/me/impy/aegis/db/slots/PasswordSlot.java @@ -1,4 +1,4 @@ -package me.impy.aegis.crypto.slots; +package me.impy.aegis.db.slots; import java.security.NoSuchAlgorithmException; import java.security.spec.InvalidKeySpecException; diff --git a/app/src/main/java/me/impy/aegis/crypto/slots/RawSlot.java b/app/src/main/java/me/impy/aegis/db/slots/RawSlot.java similarity index 96% rename from app/src/main/java/me/impy/aegis/crypto/slots/RawSlot.java rename to app/src/main/java/me/impy/aegis/db/slots/RawSlot.java index 03b116da..ed2db6cc 100644 --- a/app/src/main/java/me/impy/aegis/crypto/slots/RawSlot.java +++ b/app/src/main/java/me/impy/aegis/db/slots/RawSlot.java @@ -1,4 +1,4 @@ -package me.impy.aegis.crypto.slots; +package me.impy.aegis.db.slots; import me.impy.aegis.crypto.CryptoUtils; import me.impy.aegis.util.LittleByteBuffer; diff --git a/app/src/main/java/me/impy/aegis/crypto/slots/Slot.java b/app/src/main/java/me/impy/aegis/db/slots/Slot.java similarity index 97% rename from app/src/main/java/me/impy/aegis/crypto/slots/Slot.java rename to app/src/main/java/me/impy/aegis/db/slots/Slot.java index 7c1247b2..92d0aca2 100644 --- a/app/src/main/java/me/impy/aegis/crypto/slots/Slot.java +++ b/app/src/main/java/me/impy/aegis/db/slots/Slot.java @@ -1,4 +1,4 @@ -package me.impy.aegis.crypto.slots; +package me.impy.aegis.db.slots; import android.annotation.SuppressLint; @@ -15,7 +15,7 @@ import javax.crypto.spec.SecretKeySpec; import me.impy.aegis.crypto.CryptoUtils; import me.impy.aegis.crypto.MasterKey; -import me.impy.aegis.util.Hex; +import me.impy.aegis.encoding.Hex; public abstract class Slot implements Serializable { public final static byte TYPE_RAW = 0x00; diff --git a/app/src/main/java/me/impy/aegis/crypto/slots/SlotCollection.java b/app/src/main/java/me/impy/aegis/db/slots/SlotCollection.java similarity index 99% rename from app/src/main/java/me/impy/aegis/crypto/slots/SlotCollection.java rename to app/src/main/java/me/impy/aegis/db/slots/SlotCollection.java index 9ff26ed9..c58f0ebc 100644 --- a/app/src/main/java/me/impy/aegis/crypto/slots/SlotCollection.java +++ b/app/src/main/java/me/impy/aegis/db/slots/SlotCollection.java @@ -1,4 +1,4 @@ -package me.impy.aegis.crypto.slots; +package me.impy.aegis.db.slots; import java.io.Serializable; import java.util.ArrayList; diff --git a/app/src/main/java/me/impy/aegis/crypto/slots/SlotIntegrityException.java b/app/src/main/java/me/impy/aegis/db/slots/SlotIntegrityException.java similarity index 62% rename from app/src/main/java/me/impy/aegis/crypto/slots/SlotIntegrityException.java rename to app/src/main/java/me/impy/aegis/db/slots/SlotIntegrityException.java index d3090359..79061a5e 100644 --- a/app/src/main/java/me/impy/aegis/crypto/slots/SlotIntegrityException.java +++ b/app/src/main/java/me/impy/aegis/db/slots/SlotIntegrityException.java @@ -1,4 +1,4 @@ -package me.impy.aegis.crypto.slots; +package me.impy.aegis.db.slots; public class SlotIntegrityException extends Exception { diff --git a/app/src/main/java/me/impy/aegis/util/Hex.java b/app/src/main/java/me/impy/aegis/encoding/Hex.java similarity index 97% rename from app/src/main/java/me/impy/aegis/util/Hex.java rename to app/src/main/java/me/impy/aegis/encoding/Hex.java index 34793984..86d12d88 100644 --- a/app/src/main/java/me/impy/aegis/util/Hex.java +++ b/app/src/main/java/me/impy/aegis/encoding/Hex.java @@ -1,4 +1,4 @@ -package me.impy.aegis.util; +package me.impy.aegis.encoding; // The hexadecimal utility functions in this file were taken and modified from: http://www.docjar.com/html/api/com/sun/xml/internal/bind/DatatypeConverterImpl.java.html // It is licensed under GPLv2 with a classpath exception. diff --git a/app/src/main/java/me/impy/aegis/helpers/AuthHelper.java b/app/src/main/java/me/impy/aegis/helpers/EditTextHelper.java similarity index 85% rename from app/src/main/java/me/impy/aegis/helpers/AuthHelper.java rename to app/src/main/java/me/impy/aegis/helpers/EditTextHelper.java index be804ebe..dd5baced 100644 --- a/app/src/main/java/me/impy/aegis/helpers/AuthHelper.java +++ b/app/src/main/java/me/impy/aegis/helpers/EditTextHelper.java @@ -7,8 +7,8 @@ import java.util.Arrays; import me.impy.aegis.crypto.CryptoUtils; -public class AuthHelper { - private AuthHelper() { +public class EditTextHelper { + private EditTextHelper() { } public static void clearEditText(EditText text) { @@ -22,7 +22,7 @@ public class AuthHelper { return chars; } - public static boolean arePasswordsEqual(EditText text1, EditText text2) { + public static boolean areEditTextsEqual(EditText text1, EditText text2) { char[] password = getEditTextChars(text1); char[] passwordConfirm = getEditTextChars(text2); return password.length != 0 && Arrays.equals(password, passwordConfirm); diff --git a/app/src/main/java/me/impy/aegis/AegisActivity.java b/app/src/main/java/me/impy/aegis/ui/AegisActivity.java similarity index 90% rename from app/src/main/java/me/impy/aegis/AegisActivity.java rename to app/src/main/java/me/impy/aegis/ui/AegisActivity.java index f7b96355..709bd1da 100644 --- a/app/src/main/java/me/impy/aegis/AegisActivity.java +++ b/app/src/main/java/me/impy/aegis/ui/AegisActivity.java @@ -1,8 +1,10 @@ -package me.impy.aegis; +package me.impy.aegis.ui; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; +import me.impy.aegis.AegisApplication; + public abstract class AegisActivity extends AppCompatActivity { private AegisApplication _app; diff --git a/app/src/main/java/me/impy/aegis/AuthActivity.java b/app/src/main/java/me/impy/aegis/ui/AuthActivity.java similarity index 93% rename from app/src/main/java/me/impy/aegis/AuthActivity.java rename to app/src/main/java/me/impy/aegis/ui/AuthActivity.java index 91210bde..9bf4b21c 100644 --- a/app/src/main/java/me/impy/aegis/AuthActivity.java +++ b/app/src/main/java/me/impy/aegis/ui/AuthActivity.java @@ -1,4 +1,4 @@ -package me.impy.aegis; +package me.impy.aegis.ui; import android.content.Intent; import android.hardware.fingerprint.FingerprintManager; @@ -15,20 +15,21 @@ import android.widget.TextView; import com.mattprecious.swirl.SwirlView; import java.lang.reflect.UndeclaredThrowableException; -import java.security.InvalidKeyException; import javax.crypto.Cipher; import javax.crypto.SecretKey; +import me.impy.aegis.R; import me.impy.aegis.crypto.KeyStoreHandle; import me.impy.aegis.crypto.MasterKey; -import me.impy.aegis.crypto.slots.FingerprintSlot; -import me.impy.aegis.crypto.slots.PasswordSlot; -import me.impy.aegis.crypto.slots.Slot; -import me.impy.aegis.crypto.slots.SlotCollection; +import me.impy.aegis.db.slots.FingerprintSlot; +import me.impy.aegis.db.slots.PasswordSlot; +import me.impy.aegis.db.slots.Slot; +import me.impy.aegis.db.slots.SlotCollection; import me.impy.aegis.helpers.FingerprintHelper; import me.impy.aegis.helpers.FingerprintUiHelper; -import me.impy.aegis.helpers.AuthHelper; +import me.impy.aegis.helpers.EditTextHelper; +import me.impy.aegis.ui.tasks.SlotCollectionTask; public class AuthActivity extends AegisActivity implements FingerprintUiHelper.Callback, SlotCollectionTask.Callback { private EditText _textPassword; @@ -93,7 +94,7 @@ public class AuthActivity extends AegisActivity implements FingerprintUiHelper.C button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - char[] password = AuthHelper.getEditTextChars(_textPassword); + char[] password = EditTextHelper.getEditTextChars(_textPassword); trySlots(PasswordSlot.class, password); } }); diff --git a/app/src/main/java/me/impy/aegis/EditProfileActivity.java b/app/src/main/java/me/impy/aegis/ui/EditProfileActivity.java similarity index 97% rename from app/src/main/java/me/impy/aegis/EditProfileActivity.java rename to app/src/main/java/me/impy/aegis/ui/EditProfileActivity.java index f96538ca..e556317e 100644 --- a/app/src/main/java/me/impy/aegis/EditProfileActivity.java +++ b/app/src/main/java/me/impy/aegis/ui/EditProfileActivity.java @@ -1,4 +1,4 @@ -package me.impy.aegis; +package me.impy.aegis.ui; import android.content.Intent; import android.os.Bundle; @@ -18,14 +18,15 @@ import android.widget.Spinner; import com.amulyakhare.textdrawable.TextDrawable; -import me.impy.aegis.crypto.CryptoUtils; +import me.impy.aegis.R; import me.impy.aegis.crypto.KeyInfo; import me.impy.aegis.crypto.KeyInfoException; import me.impy.aegis.db.DatabaseEntry; import me.impy.aegis.encoding.Base32; -import me.impy.aegis.helpers.AuthHelper; +import me.impy.aegis.helpers.EditTextHelper; import me.impy.aegis.helpers.SpinnerHelper; import me.impy.aegis.helpers.TextDrawableHelper; +import me.impy.aegis.ui.views.KeyProfile; public class EditProfileActivity extends AegisActivity { private boolean _isNew = false; @@ -217,7 +218,7 @@ public class EditProfileActivity extends AegisActivity { KeyInfo info = entry.getInfo(); try { - char[] secret = AuthHelper.getEditTextChars(_textSecret); + char[] secret = EditTextHelper.getEditTextChars(_textSecret); info.setSecret(secret); info.setIssuer(_textIssuer.getText().toString()); info.setPeriod(period); diff --git a/app/src/main/java/me/impy/aegis/IntroActivity.java b/app/src/main/java/me/impy/aegis/ui/IntroActivity.java similarity index 94% rename from app/src/main/java/me/impy/aegis/IntroActivity.java rename to app/src/main/java/me/impy/aegis/ui/IntroActivity.java index 115fc5a9..5710d6e9 100644 --- a/app/src/main/java/me/impy/aegis/IntroActivity.java +++ b/app/src/main/java/me/impy/aegis/ui/IntroActivity.java @@ -1,4 +1,4 @@ -package me.impy.aegis; +package me.impy.aegis.ui; import android.Manifest; import android.content.Intent; @@ -12,15 +12,20 @@ import com.github.paolorotolo.appintro.model.SliderPage; import javax.crypto.Cipher; import javax.crypto.SecretKey; +import me.impy.aegis.AegisApplication; +import me.impy.aegis.R; import me.impy.aegis.crypto.CryptResult; import me.impy.aegis.crypto.MasterKey; -import me.impy.aegis.crypto.slots.FingerprintSlot; -import me.impy.aegis.crypto.slots.PasswordSlot; -import me.impy.aegis.crypto.slots.Slot; -import me.impy.aegis.crypto.slots.SlotCollection; +import me.impy.aegis.db.slots.FingerprintSlot; +import me.impy.aegis.db.slots.PasswordSlot; +import me.impy.aegis.db.slots.Slot; +import me.impy.aegis.db.slots.SlotCollection; import me.impy.aegis.db.Database; import me.impy.aegis.db.DatabaseFile; import me.impy.aegis.db.DatabaseManager; +import me.impy.aegis.ui.slides.CustomAuthenticatedSlide; +import me.impy.aegis.ui.slides.CustomAuthenticationSlide; +import me.impy.aegis.ui.tasks.DerivationTask; public class IntroActivity extends AppIntro implements DerivationTask.Callback { public static final int RESULT_OK = 0; diff --git a/app/src/main/java/me/impy/aegis/MainActivity.java b/app/src/main/java/me/impy/aegis/ui/MainActivity.java similarity index 99% rename from app/src/main/java/me/impy/aegis/MainActivity.java rename to app/src/main/java/me/impy/aegis/ui/MainActivity.java index 9ffac3f0..536f4978 100644 --- a/app/src/main/java/me/impy/aegis/MainActivity.java +++ b/app/src/main/java/me/impy/aegis/ui/MainActivity.java @@ -1,4 +1,4 @@ -package me.impy.aegis; +package me.impy.aegis.ui; import android.Manifest; import android.content.ClipData; @@ -25,12 +25,16 @@ import java.io.InputStream; import java.lang.reflect.UndeclaredThrowableException; import java.util.List; +import me.impy.aegis.AegisApplication; +import me.impy.aegis.R; import me.impy.aegis.crypto.MasterKey; -import me.impy.aegis.crypto.slots.SlotCollection; +import me.impy.aegis.db.slots.SlotCollection; import me.impy.aegis.db.DatabaseEntry; import me.impy.aegis.db.DatabaseManager; import me.impy.aegis.helpers.PermissionHelper; import me.impy.aegis.importers.DatabaseImporter; +import me.impy.aegis.ui.views.KeyProfile; +import me.impy.aegis.ui.views.KeyProfileView; import me.impy.aegis.util.ByteInputStream; public class MainActivity extends AegisActivity implements KeyProfileView.Listener { diff --git a/app/src/main/java/me/impy/aegis/PreferencesActivity.java b/app/src/main/java/me/impy/aegis/ui/PreferencesActivity.java similarity index 98% rename from app/src/main/java/me/impy/aegis/PreferencesActivity.java rename to app/src/main/java/me/impy/aegis/ui/PreferencesActivity.java index a907aad9..f059e52d 100644 --- a/app/src/main/java/me/impy/aegis/PreferencesActivity.java +++ b/app/src/main/java/me/impy/aegis/ui/PreferencesActivity.java @@ -1,12 +1,13 @@ -package me.impy.aegis; +package me.impy.aegis.ui; import android.content.Intent; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceFragment; -import android.support.v7.app.AppCompatActivity; import android.widget.Toast; +import me.impy.aegis.R; + public class PreferencesActivity extends AegisActivity { public static final int ACTION_IMPORT = 0; public static final int ACTION_EXPORT = 1; diff --git a/app/src/main/java/me/impy/aegis/ScannerActivity.java b/app/src/main/java/me/impy/aegis/ui/ScannerActivity.java similarity index 96% rename from app/src/main/java/me/impy/aegis/ScannerActivity.java rename to app/src/main/java/me/impy/aegis/ui/ScannerActivity.java index a7c0bbc6..0e1128b3 100644 --- a/app/src/main/java/me/impy/aegis/ScannerActivity.java +++ b/app/src/main/java/me/impy/aegis/ui/ScannerActivity.java @@ -1,4 +1,4 @@ -package me.impy.aegis; +package me.impy.aegis.ui; import android.app.Activity; import android.content.Context; @@ -16,6 +16,7 @@ import me.dm7.barcodescanner.zxing.ZXingScannerView; import me.impy.aegis.crypto.KeyInfo; import me.impy.aegis.db.DatabaseEntry; import me.impy.aegis.helpers.SquareFinderView; +import me.impy.aegis.ui.views.KeyProfile; public class ScannerActivity extends AegisActivity implements ZXingScannerView.ResultHandler { private ZXingScannerView _scannerView; diff --git a/app/src/main/java/me/impy/aegis/SlotManagerActivity.java b/app/src/main/java/me/impy/aegis/ui/SlotManagerActivity.java similarity index 93% rename from app/src/main/java/me/impy/aegis/SlotManagerActivity.java rename to app/src/main/java/me/impy/aegis/ui/SlotManagerActivity.java index 3793c8a7..888183fb 100644 --- a/app/src/main/java/me/impy/aegis/SlotManagerActivity.java +++ b/app/src/main/java/me/impy/aegis/ui/SlotManagerActivity.java @@ -1,7 +1,6 @@ -package me.impy.aegis; +package me.impy.aegis.ui; import android.content.Intent; -import android.os.Build; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; @@ -14,14 +13,19 @@ import android.widget.Toast; import javax.crypto.Cipher; +import me.impy.aegis.R; import me.impy.aegis.crypto.KeyStoreHandle; import me.impy.aegis.crypto.KeyStoreHandleException; import me.impy.aegis.crypto.MasterKey; -import me.impy.aegis.crypto.slots.FingerprintSlot; -import me.impy.aegis.crypto.slots.PasswordSlot; -import me.impy.aegis.crypto.slots.Slot; -import me.impy.aegis.crypto.slots.SlotCollection; +import me.impy.aegis.db.slots.FingerprintSlot; +import me.impy.aegis.db.slots.PasswordSlot; +import me.impy.aegis.db.slots.Slot; +import me.impy.aegis.db.slots.SlotCollection; import me.impy.aegis.helpers.FingerprintHelper; +import me.impy.aegis.ui.dialogs.FingerprintDialogFragment; +import me.impy.aegis.ui.dialogs.PasswordDialogFragment; +import me.impy.aegis.ui.views.SlotAdapter; +import me.impy.aegis.ui.dialogs.SlotDialogFragment; public class SlotManagerActivity extends AegisActivity implements SlotAdapter.Listener, SlotDialogFragment.Listener { private MasterKey _masterKey; diff --git a/app/src/main/java/me/impy/aegis/FingerprintDialogFragment.java b/app/src/main/java/me/impy/aegis/ui/dialogs/FingerprintDialogFragment.java similarity index 94% rename from app/src/main/java/me/impy/aegis/FingerprintDialogFragment.java rename to app/src/main/java/me/impy/aegis/ui/dialogs/FingerprintDialogFragment.java index 9caddb72..d1ac0be4 100644 --- a/app/src/main/java/me/impy/aegis/FingerprintDialogFragment.java +++ b/app/src/main/java/me/impy/aegis/ui/dialogs/FingerprintDialogFragment.java @@ -1,4 +1,4 @@ -package me.impy.aegis; +package me.impy.aegis.ui.dialogs; import android.app.Dialog; import android.hardware.fingerprint.FingerprintManager; @@ -13,9 +13,10 @@ import com.mattprecious.swirl.SwirlView; import javax.crypto.Cipher; import javax.crypto.SecretKey; +import me.impy.aegis.R; import me.impy.aegis.crypto.KeyStoreHandle; -import me.impy.aegis.crypto.slots.FingerprintSlot; -import me.impy.aegis.crypto.slots.Slot; +import me.impy.aegis.db.slots.FingerprintSlot; +import me.impy.aegis.db.slots.Slot; import me.impy.aegis.helpers.FingerprintHelper; import me.impy.aegis.helpers.FingerprintUiHelper; diff --git a/app/src/main/java/me/impy/aegis/PasswordDialogFragment.java b/app/src/main/java/me/impy/aegis/ui/dialogs/PasswordDialogFragment.java similarity index 83% rename from app/src/main/java/me/impy/aegis/PasswordDialogFragment.java rename to app/src/main/java/me/impy/aegis/ui/dialogs/PasswordDialogFragment.java index 7cf2ad5d..aa105a44 100644 --- a/app/src/main/java/me/impy/aegis/PasswordDialogFragment.java +++ b/app/src/main/java/me/impy/aegis/ui/dialogs/PasswordDialogFragment.java @@ -1,4 +1,4 @@ -package me.impy.aegis; +package me.impy.aegis.ui.dialogs; import android.app.Dialog; import android.os.Bundle; @@ -12,9 +12,11 @@ import android.widget.EditText; import javax.crypto.Cipher; -import me.impy.aegis.crypto.slots.PasswordSlot; -import me.impy.aegis.crypto.slots.Slot; -import me.impy.aegis.helpers.AuthHelper; +import me.impy.aegis.R; +import me.impy.aegis.db.slots.PasswordSlot; +import me.impy.aegis.db.slots.Slot; +import me.impy.aegis.helpers.EditTextHelper; +import me.impy.aegis.ui.tasks.DerivationTask; public class PasswordDialogFragment extends SlotDialogFragment { private Button _buttonOK; @@ -39,11 +41,11 @@ public class PasswordDialogFragment extends SlotDialogFragment { // replace the default listener _buttonOK.setOnClickListener(v -> { - if (!AuthHelper.arePasswordsEqual(textPassword, textPasswordConfirm)) { + if (!EditTextHelper.areEditTextsEqual(textPassword, textPasswordConfirm)) { return; } - char[] password = AuthHelper.getEditTextChars(textPassword); + char[] password = EditTextHelper.getEditTextChars(textPassword); PasswordSlot slot = new PasswordSlot(); DerivationTask task = new DerivationTask(getContext(), key -> { Cipher cipher; @@ -66,7 +68,7 @@ public class PasswordDialogFragment extends SlotDialogFragment { TextWatcher watcher = new TextWatcher() { public void onTextChanged(CharSequence c, int start, int before, int count) { - boolean equal = AuthHelper.arePasswordsEqual(textPassword, textPasswordConfirm); + boolean equal = EditTextHelper.areEditTextsEqual(textPassword, textPasswordConfirm); _buttonOK.setEnabled(equal); } public void beforeTextChanged(CharSequence c, int start, int count, int after) { } diff --git a/app/src/main/java/me/impy/aegis/SlotDialogFragment.java b/app/src/main/java/me/impy/aegis/ui/dialogs/SlotDialogFragment.java similarity index 91% rename from app/src/main/java/me/impy/aegis/SlotDialogFragment.java rename to app/src/main/java/me/impy/aegis/ui/dialogs/SlotDialogFragment.java index b8d82ebb..cc5972ac 100644 --- a/app/src/main/java/me/impy/aegis/SlotDialogFragment.java +++ b/app/src/main/java/me/impy/aegis/ui/dialogs/SlotDialogFragment.java @@ -1,11 +1,11 @@ -package me.impy.aegis; +package me.impy.aegis.ui.dialogs; import android.content.Context; import android.support.v4.app.DialogFragment; import javax.crypto.Cipher; -import me.impy.aegis.crypto.slots.Slot; +import me.impy.aegis.db.slots.Slot; public class SlotDialogFragment extends DialogFragment { private Listener _listener; diff --git a/app/src/main/java/me/impy/aegis/CustomAuthenticatedSlide.java b/app/src/main/java/me/impy/aegis/ui/slides/CustomAuthenticatedSlide.java similarity index 93% rename from app/src/main/java/me/impy/aegis/CustomAuthenticatedSlide.java rename to app/src/main/java/me/impy/aegis/ui/slides/CustomAuthenticatedSlide.java index f99b6946..cc975104 100644 --- a/app/src/main/java/me/impy/aegis/CustomAuthenticatedSlide.java +++ b/app/src/main/java/me/impy/aegis/ui/slides/CustomAuthenticatedSlide.java @@ -1,4 +1,4 @@ -package me.impy.aegis; +package me.impy.aegis.ui.slides; import android.content.Context; import android.content.Intent; @@ -23,11 +23,12 @@ import java.lang.reflect.UndeclaredThrowableException; import javax.crypto.Cipher; import javax.crypto.SecretKey; +import me.impy.aegis.R; import me.impy.aegis.crypto.KeyStoreHandle; -import me.impy.aegis.crypto.slots.FingerprintSlot; -import me.impy.aegis.crypto.slots.Slot; +import me.impy.aegis.db.slots.FingerprintSlot; +import me.impy.aegis.db.slots.Slot; import me.impy.aegis.helpers.FingerprintUiHelper; -import me.impy.aegis.helpers.AuthHelper; +import me.impy.aegis.helpers.EditTextHelper; public class CustomAuthenticatedSlide extends Fragment implements FingerprintUiHelper.Callback, ISlidePolicy, ISlideSelectionListener { private int _cryptType; @@ -67,7 +68,7 @@ public class CustomAuthenticatedSlide extends Fragment implements FingerprintUiH } public char[] getPassword() { - return AuthHelper.getEditTextChars(_textPassword); + return EditTextHelper.getEditTextChars(_textPassword); } public Cipher getFingerCipher() { @@ -138,7 +139,7 @@ public class CustomAuthenticatedSlide extends Fragment implements FingerprintUiH } // intentional fallthrough case CustomAuthenticationSlide.CRYPT_TYPE_PASS: - return AuthHelper.arePasswordsEqual(_textPassword, _textPasswordConfirm); + return EditTextHelper.areEditTextsEqual(_textPassword, _textPasswordConfirm); default: throw new RuntimeException(); } @@ -147,7 +148,7 @@ public class CustomAuthenticatedSlide extends Fragment implements FingerprintUiH @Override public void onUserIllegallyRequestedNextPage() { String message; - if (!AuthHelper.arePasswordsEqual(_textPassword, _textPasswordConfirm)) { + if (!EditTextHelper.areEditTextsEqual(_textPassword, _textPasswordConfirm)) { message = "Passwords should be equal and non-empty"; } else if (!_fingerAuthenticated) { message = "Register your fingerprint"; diff --git a/app/src/main/java/me/impy/aegis/CustomAuthenticationSlide.java b/app/src/main/java/me/impy/aegis/ui/slides/CustomAuthenticationSlide.java similarity index 98% rename from app/src/main/java/me/impy/aegis/CustomAuthenticationSlide.java rename to app/src/main/java/me/impy/aegis/ui/slides/CustomAuthenticationSlide.java index fd3742d8..bf60c036 100644 --- a/app/src/main/java/me/impy/aegis/CustomAuthenticationSlide.java +++ b/app/src/main/java/me/impy/aegis/ui/slides/CustomAuthenticationSlide.java @@ -1,4 +1,4 @@ -package me.impy.aegis; +package me.impy.aegis.ui.slides; import android.content.Intent; import android.hardware.fingerprint.FingerprintManager; @@ -14,6 +14,7 @@ import android.widget.TextView; import com.github.paolorotolo.appintro.ISlidePolicy; +import me.impy.aegis.R; import me.impy.aegis.helpers.FingerprintHelper; public class CustomAuthenticationSlide extends Fragment implements ISlidePolicy, RadioGroup.OnCheckedChangeListener { diff --git a/app/src/main/java/me/impy/aegis/DerivationTask.java b/app/src/main/java/me/impy/aegis/ui/tasks/DerivationTask.java similarity index 89% rename from app/src/main/java/me/impy/aegis/DerivationTask.java rename to app/src/main/java/me/impy/aegis/ui/tasks/DerivationTask.java index 9eae2bfa..70d458d5 100644 --- a/app/src/main/java/me/impy/aegis/DerivationTask.java +++ b/app/src/main/java/me/impy/aegis/ui/tasks/DerivationTask.java @@ -1,4 +1,4 @@ -package me.impy.aegis; +package me.impy.aegis.ui.tasks; import android.content.Context; import android.os.Process; @@ -6,7 +6,7 @@ import android.os.Process; import javax.crypto.SecretKey; import me.impy.aegis.crypto.CryptoUtils; -import me.impy.aegis.crypto.slots.PasswordSlot; +import me.impy.aegis.db.slots.PasswordSlot; public class DerivationTask extends ProgressDialogTask { private Callback _cb; @@ -36,12 +36,12 @@ public class DerivationTask extends ProgressDialogTask extends ProgressDialogTask { private Callback _cb; @@ -71,12 +70,12 @@ public class SlotCollectionTask extends ProgressDialogTask implements ItemTouchHelperAdapter { diff --git a/app/src/main/java/me/impy/aegis/KeyProfileHolder.java b/app/src/main/java/me/impy/aegis/ui/views/KeyProfileHolder.java similarity index 98% rename from app/src/main/java/me/impy/aegis/KeyProfileHolder.java rename to app/src/main/java/me/impy/aegis/ui/views/KeyProfileHolder.java index c612247c..5b718a59 100644 --- a/app/src/main/java/me/impy/aegis/KeyProfileHolder.java +++ b/app/src/main/java/me/impy/aegis/ui/views/KeyProfileHolder.java @@ -1,4 +1,4 @@ -package me.impy.aegis; +package me.impy.aegis.ui.views; import android.animation.ObjectAnimator; import android.os.Handler; @@ -11,6 +11,8 @@ import android.widget.TextView; import com.amulyakhare.textdrawable.TextDrawable; +import me.impy.aegis.R; + public class KeyProfileHolder extends RecyclerView.ViewHolder { private TextView _profileName; private TextView _profileCode; diff --git a/app/src/main/java/me/impy/aegis/KeyProfileView.java b/app/src/main/java/me/impy/aegis/ui/views/KeyProfileView.java similarity index 98% rename from app/src/main/java/me/impy/aegis/KeyProfileView.java rename to app/src/main/java/me/impy/aegis/ui/views/KeyProfileView.java index c5bbbb10..d78b7ac1 100644 --- a/app/src/main/java/me/impy/aegis/KeyProfileView.java +++ b/app/src/main/java/me/impy/aegis/ui/views/KeyProfileView.java @@ -1,4 +1,4 @@ -package me.impy.aegis; +package me.impy.aegis.ui.views; import android.os.Bundle; import android.support.v4.app.Fragment; @@ -9,6 +9,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import me.impy.aegis.R; import me.impy.aegis.db.DatabaseEntry; import me.impy.aegis.helpers.SimpleItemTouchHelperCallback; diff --git a/app/src/main/java/me/impy/aegis/SlotAdapter.java b/app/src/main/java/me/impy/aegis/ui/views/SlotAdapter.java similarity index 95% rename from app/src/main/java/me/impy/aegis/SlotAdapter.java rename to app/src/main/java/me/impy/aegis/ui/views/SlotAdapter.java index 5e650e3b..6a0c084b 100644 --- a/app/src/main/java/me/impy/aegis/SlotAdapter.java +++ b/app/src/main/java/me/impy/aegis/ui/views/SlotAdapter.java @@ -1,4 +1,4 @@ -package me.impy.aegis; +package me.impy.aegis.ui.views; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; @@ -7,7 +7,8 @@ import android.view.ViewGroup; import java.util.ArrayList; -import me.impy.aegis.crypto.slots.Slot; +import me.impy.aegis.R; +import me.impy.aegis.db.slots.Slot; public class SlotAdapter extends RecyclerView.Adapter { private Listener _listener; diff --git a/app/src/main/java/me/impy/aegis/SlotHolder.java b/app/src/main/java/me/impy/aegis/ui/views/SlotHolder.java similarity index 90% rename from app/src/main/java/me/impy/aegis/SlotHolder.java rename to app/src/main/java/me/impy/aegis/ui/views/SlotHolder.java index b2b9492b..8d6002cb 100644 --- a/app/src/main/java/me/impy/aegis/SlotHolder.java +++ b/app/src/main/java/me/impy/aegis/ui/views/SlotHolder.java @@ -1,4 +1,4 @@ -package me.impy.aegis; +package me.impy.aegis.ui.views; import android.support.v7.widget.RecyclerView; import android.view.View; @@ -6,12 +6,13 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import me.impy.aegis.R; import me.impy.aegis.crypto.KeyStoreHandle; import me.impy.aegis.crypto.KeyStoreHandleException; -import me.impy.aegis.crypto.slots.FingerprintSlot; -import me.impy.aegis.crypto.slots.PasswordSlot; -import me.impy.aegis.crypto.slots.RawSlot; -import me.impy.aegis.crypto.slots.Slot; +import me.impy.aegis.db.slots.FingerprintSlot; +import me.impy.aegis.db.slots.PasswordSlot; +import me.impy.aegis.db.slots.RawSlot; +import me.impy.aegis.db.slots.Slot; import me.impy.aegis.helpers.FingerprintHelper; public class SlotHolder extends RecyclerView.ViewHolder { diff --git a/app/src/main/res/layout/activity_auth.xml b/app/src/main/res/layout/activity_auth.xml index 35ead88e..23fc8329 100644 --- a/app/src/main/res/layout/activity_auth.xml +++ b/app/src/main/res/layout/activity_auth.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" - tools:context="me.impy.aegis.AuthActivity"> + tools:context="me.impy.aegis.ui.AuthActivity"> + tools:context="me.impy.aegis.ui.IntroActivity"> diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index a11b3ef6..4d8f0bb3 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" - tools:context="me.impy.aegis.MainActivity"> + tools:context="me.impy.aegis.ui.MainActivity"> + tools:context="me.impy.aegis.ui.ScannerActivity"> diff --git a/app/src/main/res/layout/activity_slots.xml b/app/src/main/res/layout/activity_slots.xml index 7e27a845..b4d5007f 100644 --- a/app/src/main/res/layout/activity_slots.xml +++ b/app/src/main/res/layout/activity_slots.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" - tools:context="me.impy.aegis.SlotManagerActivity"> + tools:context="me.impy.aegis.ui.SlotManagerActivity"> + tools:context="me.impy.aegis.ui.EditProfileActivity"> + tools:context="me.impy.aegis.ui.MainActivity"> + tools:context="me.impy.aegis.ui.SlotManagerActivity">