mirror of
https://github.com/beemdevelopment/Aegis.git
synced 2025-05-14 22:12:55 +00:00
Reorganize classes into separate packages
This commit is contained in:
parent
a778cd5661
commit
7eaffc933e
42 changed files with 132 additions and 131 deletions
|
@ -15,7 +15,7 @@
|
|||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:name=".ui.MainActivity"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme.Default.NoActionBar"
|
||||
android:alwaysRetainTaskState="true"
|
||||
|
@ -26,31 +26,31 @@
|
|||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ScannerActivity"
|
||||
android:name=".ui.ScannerActivity"
|
||||
android:label="Scan a QR code"
|
||||
android:theme="@style/AppTheme.Fullscreen"
|
||||
android:screenOrientation="portrait"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize">
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".EditProfileActivity"
|
||||
android:name=".ui.EditProfileActivity"
|
||||
android:label="Edit profile"
|
||||
android:theme="@style/AppTheme.Default.TransparentActionBar">
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".IntroActivity"
|
||||
android:name=".ui.IntroActivity"
|
||||
android:theme="@style/Theme.Intro"
|
||||
android:launchMode="singleTop">
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".AuthActivity"
|
||||
android:name=".ui.AuthActivity"
|
||||
android:launchMode="singleTop"
|
||||
android:theme="@style/AppTheme.Default.NoActionBar">
|
||||
</activity>
|
||||
<activity android:name=".PreferencesActivity">
|
||||
<activity android:name=".ui.PreferencesActivity">
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".SlotManagerActivity"
|
||||
android:name=".ui.SlotManagerActivity"
|
||||
android:label="Manage key slots"
|
||||
android:theme="@style/AppTheme.Default.NoActionBar">
|
||||
</activity>
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package me.impy.aegis.crypto.slots;
|
||||
package me.impy.aegis.db.slots;
|
||||
|
||||
public class FingerprintSlot extends RawSlot {
|
||||
@Override
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -1,4 +1,4 @@
|
|||
package me.impy.aegis.crypto.slots;
|
||||
package me.impy.aegis.db.slots;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
|
@ -1,4 +1,4 @@
|
|||
package me.impy.aegis.crypto.slots;
|
||||
package me.impy.aegis.db.slots;
|
||||
|
||||
public class SlotIntegrityException extends Exception {
|
||||
|
|
@ -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.
|
|
@ -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);
|
|
@ -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;
|
||||
|
|
@ -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);
|
||||
}
|
||||
});
|
|
@ -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);
|
|
@ -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;
|
|
@ -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 {
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
||||
|
|
@ -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) { }
|
|
@ -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;
|
|
@ -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";
|
|
@ -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 {
|
|
@ -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<DerivationTask.Params, SecretKey> {
|
||||
private Callback _cb;
|
||||
|
@ -36,12 +36,12 @@ public class DerivationTask extends ProgressDialogTask<DerivationTask.Params, Se
|
|||
_cb.onTaskFinished(key);
|
||||
}
|
||||
|
||||
static class Params {
|
||||
public static class Params {
|
||||
public PasswordSlot Slot;
|
||||
public char[] Password;
|
||||
}
|
||||
|
||||
interface Callback {
|
||||
public interface Callback {
|
||||
void onTaskFinished(SecretKey key);
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package me.impy.aegis;
|
||||
package me.impy.aegis.ui.tasks;
|
||||
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Context;
|
|
@ -1,4 +1,4 @@
|
|||
package me.impy.aegis;
|
||||
package me.impy.aegis.ui.tasks;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Process;
|
||||
|
@ -8,13 +8,12 @@ import java.lang.reflect.UndeclaredThrowableException;
|
|||
import javax.crypto.Cipher;
|
||||
import javax.crypto.SecretKey;
|
||||
|
||||
import me.impy.aegis.crypto.CryptoUtils;
|
||||
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.crypto.slots.SlotIntegrityException;
|
||||
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.slots.SlotIntegrityException;
|
||||
|
||||
public class SlotCollectionTask<T extends Slot> extends ProgressDialogTask<SlotCollectionTask.Params, MasterKey> {
|
||||
private Callback _cb;
|
||||
|
@ -71,12 +70,12 @@ public class SlotCollectionTask<T extends Slot> extends ProgressDialogTask<SlotC
|
|||
_cb.onTaskFinished(masterKey);
|
||||
}
|
||||
|
||||
static class Params {
|
||||
public static class Params {
|
||||
public SlotCollection Slots;
|
||||
public Object Obj;
|
||||
}
|
||||
|
||||
interface Callback {
|
||||
public interface Callback {
|
||||
void onTaskFinished(MasterKey key);
|
||||
}
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
package me.impy.aegis;
|
||||
package me.impy.aegis.ui.views;
|
||||
|
||||
import com.amulyakhare.textdrawable.TextDrawable;
|
||||
import com.amulyakhare.textdrawable.util.ColorGenerator;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.UndeclaredThrowableException;
|
|
@ -1,4 +1,4 @@
|
|||
package me.impy.aegis;
|
||||
package me.impy.aegis.ui.views;
|
||||
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
|
@ -8,6 +8,7 @@ import android.view.ViewGroup;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
||||
import me.impy.aegis.R;
|
||||
import me.impy.aegis.helpers.ItemTouchHelperAdapter;
|
||||
|
||||
public class KeyProfileAdapter extends RecyclerView.Adapter<KeyProfileHolder> implements ItemTouchHelperAdapter {
|
|
@ -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;
|
|
@ -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;
|
||||
|
|
@ -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<SlotHolder> {
|
||||
private Listener _listener;
|
|
@ -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 {
|
|
@ -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">
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -5,6 +5,6 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
tools:context="me.impy.aegis.IntroActivity">
|
||||
tools:context="me.impy.aegis.ui.IntroActivity">
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
|
|
|
@ -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">
|
||||
|
||||
<android.support.design.widget.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
|
@ -22,7 +22,7 @@
|
|||
</android.support.design.widget.AppBarLayout>
|
||||
|
||||
<fragment
|
||||
android:name="me.impy.aegis.KeyProfileView"
|
||||
android:name="me.impy.aegis.ui.views.KeyProfileView"
|
||||
android:id="@+id/key_profiles"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -9,6 +9,6 @@
|
|||
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||
android:paddingTop="@dimen/activity_vertical_margin"
|
||||
tools:context="me.impy.aegis.ScannerActivity">
|
||||
tools:context="me.impy.aegis.ui.ScannerActivity">
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
|
@ -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">
|
||||
|
||||
<android.support.design.widget.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:context="me.impy.aegis.EditProfileActivity">
|
||||
tools:context="me.impy.aegis.ui.EditProfileActivity">
|
||||
<item
|
||||
android:id="@+id/action_save"
|
||||
app:showAsAction="ifRoom"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:context="me.impy.aegis.MainActivity">
|
||||
tools:context="me.impy.aegis.ui.MainActivity">
|
||||
<item
|
||||
android:id="@+id/action_lock"
|
||||
android:icon="@drawable/ic_lock"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:context="me.impy.aegis.SlotManagerActivity">
|
||||
tools:context="me.impy.aegis.ui.SlotManagerActivity">
|
||||
<item
|
||||
android:id="@+id/action_save"
|
||||
app:showAsAction="ifRoom"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue