diff --git a/app/src/main/java/com/beemdevelopment/aegis/otp/OtpInfo.java b/app/src/main/java/com/beemdevelopment/aegis/otp/OtpInfo.java index 7173d55e..d36eb727 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/otp/OtpInfo.java +++ b/app/src/main/java/com/beemdevelopment/aegis/otp/OtpInfo.java @@ -78,7 +78,8 @@ public abstract class OtpInfo implements Serializable { } public static boolean isDigitsValid(int digits) { - return digits == 6 || digits == 8; + // allow a max of 10 digits, as truncation will only extract 31 bits + return digits > 0 && digits <= 10; } public void setDigits(int digits) throws OtpInfoException { diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java index ca29f2ed..19c350d4 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/EditEntryActivity.java @@ -74,6 +74,7 @@ public class EditEntryActivity extends AegisActivity { private EditText _textIssuer; private EditText _textPeriod; private EditText _textCounter; + private EditText _textDigits; private EditText _textSecret; private TableRow _rowPeriod; @@ -81,7 +82,6 @@ public class EditEntryActivity extends AegisActivity { private Spinner _spinnerType; private Spinner _spinnerAlgo; - private Spinner _spinnerDigits; private Spinner _spinnerGroup; private List _spinnerGroupList = new ArrayList<>(); @@ -116,6 +116,7 @@ public class EditEntryActivity extends AegisActivity { _textName = findViewById(R.id.text_name); _textIssuer = findViewById(R.id.text_issuer); _textPeriod = findViewById(R.id.text_period); + _textDigits = findViewById(R.id.text_digits); _rowPeriod = findViewById(R.id.row_period); _textCounter = findViewById(R.id.text_counter); _rowCounter = findViewById(R.id.row_counter); @@ -124,8 +125,6 @@ public class EditEntryActivity extends AegisActivity { SpinnerHelper.fillSpinner(this, _spinnerType, R.array.otp_types_array); _spinnerAlgo = findViewById(R.id.spinner_algo); SpinnerHelper.fillSpinner(this, _spinnerAlgo, R.array.otp_algo_array); - _spinnerDigits = findViewById(R.id.spinner_digits); - SpinnerHelper.fillSpinner(this, _spinnerDigits, R.array.otp_digits_array); _spinnerGroup = findViewById(R.id.spinner_group); updateGroupSpinnerList(); SpinnerHelper.fillSpinner(this, _spinnerGroup, _spinnerGroupList); @@ -158,6 +157,7 @@ public class EditEntryActivity extends AegisActivity { } else { throw new RuntimeException(); } + _textDigits.setText(Integer.toString(info.getDigits())); byte[] secretBytes = _origEntry.getInfo().getSecret(); if (secretBytes != null) { @@ -171,9 +171,6 @@ public class EditEntryActivity extends AegisActivity { String algo = _origEntry.getInfo().getAlgorithm(false); _spinnerAlgo.setSelection(getStringResourceIndex(R.array.otp_algo_array, algo), false); - String digits = Integer.toString(_origEntry.getInfo().getDigits()); - _spinnerDigits.setSelection(getStringResourceIndex(R.array.otp_digits_array, digits), false); - String group = _origEntry.getGroup(); if (group != null) { int pos = _groups.contains(group) ? _groups.headSet(group).size() : -1; @@ -439,7 +436,7 @@ public class EditEntryActivity extends AegisActivity { int digits; try { - digits = Integer.parseInt(_spinnerDigits.getSelectedItem().toString()); + digits = Integer.parseInt(_textDigits.getText().toString()); } catch (NumberFormatException e) { throw new ParseException("Digits is not an integer."); } diff --git a/app/src/main/res/layout/activity_edit_entry.xml b/app/src/main/res/layout/activity_edit_entry.xml index 25c8d2d1..34cdb4f9 100644 --- a/app/src/main/res/layout/activity_edit_entry.xml +++ b/app/src/main/res/layout/activity_edit_entry.xml @@ -171,9 +171,8 @@ - + android:backgroundTint="#949494"/> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5078b0f9..f8bc276f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -74,17 +74,13 @@ SHA512 - - 6 - 8 - - Hello blank fragment Unlock Advanced seconds Counter + Digits Secret Scan QR code Enter manually