Commit Graph

655 Commits (v1.2.1-release)

Author SHA1 Message Date
Alexander Bakker 1824d38f75 Import from ZIP for the Authenticator Plus, instead of SQLite databases 5 years ago
Alexander Bakker ccc990f854 Reuse existing PreferencesFragment when restoring from instance state
This fixes an issue where the existing PreferencesFragment was discarded when
restoring PreferencesActivity from instance state. This issue caused the
PreferencesFragment to no longer receive activity results. Most notably, this
resulted in 0 byte vault files being created when exporting the vault.
5 years ago
Alexander Bakker 56bde0e19b Add support for importing from the new Google Authenticator export QR codes 5 years ago
Alexander Bakker 49a7fda932 Display a warning if automatic time sync is not enabled
This'll display a warning to users who don't have automatic time synchronization
enabled on their device. Aegis will try to take the user to the right settings
menu if they tap "Yes". Users also have the option to silence the warning.

[<img width=300 src="https://alexbakker.me/u/jf1o8087lr.png">](https://alexbakker.me/u/jf1o8087lr.png)
5 years ago
Michael Schättgen 3a85a05078 Add minor card entry layout overhaul 5 years ago
Alexander Bakker cda78c56c5 Improve overall exception handling and error feedback to the user
The main goals of this patch are to:
- Improve the exception handling in Aegis and the way we present errors messages
  to the user when they occur.
- Write exception stack traces to the log in more places, so that the ADB logs
  we ask for from our users when reporting bugs become more useful.
- Reduce the amount of times we throw a RuntimeException, particularly when an
  Android Keystore operation fails.

Achieving the above goals ended up resulting in a very large refactor. The
intro and unlock flow of the app need to be retested entirely.
5 years ago
Michael Schättgen 499f930086
Merge pull request #400 from NotWoods/about-activity
Change license link color so it is legible on dark
5 years ago
Michael Schättgen 393b815409
Merge pull request #394 from alexbakker/update-appintro
Update AppIntro to 6.0.0
5 years ago
Michael Schättgen 984010dc7a
Merge pull request #392 from alexbakker/export-filename
Append a timestamp to the filename of exported vaults
5 years ago
Michael Schättgen 0bbc413423
Merge pull request #389 from alexbakker/edit-entry-fix
Write entries to the vault directly in EditEntryActivity
5 years ago
Michael Schättgen 98a90e3e1e
Merge pull request #388 from alexbakker/proguard
Minify and optimize the APK using ProGuard
5 years ago
Tiger Oakes 3ccbece822 Change license link color so it is legible on dark 5 years ago
Alexander Bakker 0f81233d4f Add the Hungarian translation to the settings menu 5 years ago
Alexander Bakker 301476ff5c Write entries to the vault directly in EditEntryActivity
This makes it so that EditEntryActivity directly saves entries to the vault,
instead of passing them back to MainActivity through an Intent first. This
prevents crashes that can occur when an entry has a large icon and the Bundle
inside the Intent becomes too large.

This is the first part of a series of patches I plan on submitting, where I try
to repair the damage done by my misguided obsession of only touching the global
state in certain places.
5 years ago
Balázs Meskó 842afe6745 Add Hungarian translation 5 years ago
Alexander Bakker bc5fa68de8 Update AppIntro to 6.0.0 5 years ago
Alexander Bakker fec2f3ff94 Append a timestamp to the filename of exported vaults
Close #297
5 years ago
Alexander Bakker 77718809ef Minify and optimize the APK using ProGuard
This enables some minification and optimization options to shrink the size of
our APK. A release APK would previously be 12 MB in size, but would now be 8.2
MB.

To test, check if *all* of the functionality of the app still works,
particularly parts that refer to dependencies. You'll know if ProGuard broke
something when the app crashes with a ``ClassNotFoundException`` or similar
exception. I think I've covered all of the cases where ProGuard removed too much
in the rule file.

Also, I was curious why our APK had gotten so large to begin with. I did some
digging and found that this is caused by the SQLCipher dependency. The APK
shrinks down to 2.7 MB without it! We should consider whether having support for
importing from Authenticator Plus is worth the extra 5.5 MB in size.
5 years ago
Michael Schättgen 7773a51f2a Use most frequent period to show progress 5 years ago
Michael Schättgen f68badb659
Merge pull request #377 from alexbakker/fix-weird-reminder-crash
Show the password reminder popup after the window has been attached
5 years ago
Michael Schättgen 4ea8501fa9
Merge pull request #369 from Timbals/master
automatically adapt to system theme
5 years ago
Alexander Bakker faf24e15bd Allow password reminder popup dismissal by typing
Close #379
5 years ago
Maxim Baz ad05e375f1
Show account name only if it's set 5 years ago
Alexander Bakker 8b30d451a4 Show the password reminder popup after the window has been attached
I noticed a strange crash in the Play Console:

```
android.view.WindowManager$BadTokenException:
  at android.view.ViewRootImpl.setView (ViewRootImpl.java:828)
  at android.view.WindowManagerGlobal.addView (WindowManagerGlobal.jav>
  at android.view.WindowManagerImpl.addView (WindowManagerImpl.java:93)
  at android.widget.PopupWindow.invokePopup (PopupWindow.java:1434)
  at android.widget.PopupWindow.showAsDropDown (PopupWindow.java:1284)
  at android.widget.PopupWindow.showAsDropDown (PopupWindow.java:1240)
  at android.widget.PopupWindow.showAsDropDown (PopupWindow.java:1219)
  at com.beemdevelopment.aegis.ui.AuthActivity.lambda$showPasswordRemi>
  at com.beemdevelopment.aegis.ui.-$$Lambda$AuthActivity$WWHxRKllBPcyH>
  at android.os.Handler.handleCallback (Handler.java:873)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:220)
  at android.app.ActivityThread.main (ActivityThread.java:6929)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (Runt>
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:870)
```

I can't reproduce this on my device, and we haven't received any reports from
users, but it would be pretty bad if Aegis crashes on some devices when showing
the password reminder popup. This patch is an attempt to fix that (see:
https://stackoverflow.com/a/33809860/12972657).
5 years ago
Lukas Marchesi 00e2e90aa7 Add setting to change from 3 digit group size to 2 digit group size 5 years ago
Tim Balsfulland f37d70b58e
automatically adapt to system theme
added two new theme options:
SYSTEM: dynamically switches between light and dark
SYSTEM_AMOLED: dynamically switches between light and amoled

reversed workaround for amoled themed preferences
launch screen now always follows the system theme
5 years ago
Michael Schättgen ad58960831 Fix bug where multiselect triggers copy animation
Fix multiselect
5 years ago
orangenbaumblatt 7ce74d378f
Added selection indicator in icon slot (#344)
Changed selection color for black theme


Changed indicator color to black secondary


Fix indicator flickering when scrolling


Applied patch


Fix unsharp selection icon


Add selection indicators to small and compact view
5 years ago
Michael Schättgen 8c0ba2dd1b
Merge pull request #366 from alexbakker/steam-otpauth
Add support for otpauth://steam URI's
5 years ago
Michael Schättgen 016c64610e
Merge pull request #359 from alexbakker/othauth-importer
Add support for importing a plain text Google Authenticator URI file
5 years ago
Michael Schättgen c578543e18
Merge pull request #341 from alexbakker/backups
Add support for backups
5 years ago
Alexander Bakker d247750e62
Merge pull request #323 from michaelschattgen/feature-copied
Improve method to notify users on copy
5 years ago
Alexander Bakker 4a69e9efb4 Add support for backups
Allow users to select a folder where automatic backups will be created. This
also bumps minSdkVersion to 21.
5 years ago
Michael Schättgen b43bac37db Improve method to notify users on copy
Add minor code improvements
5 years ago
Alexander Bakker 0c7b41747e Add support for otpauth://steam URI's
Close #343
5 years ago
Alexander Bakker 8fda6937a5 Add support for importing a plain text Google Authenticator URI file
This is the "standard" format discussed in #138.
5 years ago
Alexander Bakker 0a4a933a2a Rename "profile" text to "entry" 5 years ago
Vstory 866466d158
Update Chinese translation (#337)
* Update Chinese translation

* Remove extra characters
5 years ago
orangenbaumblatt 6885463b11 Keep groups when importing from Authenticator Plus 5 years ago
Alexander Bakker a273fdaa1d
Merge pull request #326 from andreysaksonov/master
Update Russian localization for new strings
5 years ago
orangenbaumblatt dc0f7c4668 Added Database Import from Authenticator Plus
Added copyright notice


Rearrange item position in import dialog


Refactor SqlImportHelper to support SQLCipher


Improved stream handling
5 years ago
Andrey Saksonov ba7fe15a57
update Russian localization 5 years ago
Alexander Bakker 3d51b84188
Merge pull request #325 from michaelschattgen/fix-confirm-password
Improve confirm password functionality
5 years ago
Andrey Saksonov 9e355c8e52
update Russian localization 5 years ago
Andrey Saksonov 9ce0982191
update Russian localization 5 years ago
Andrey Saksonov f543802f9e
Merge remote-tracking branch 'upstream/master' 5 years ago
Andrey Saksonov 32aecadf75
update Russian localization 5 years ago
Michael Schättgen d39e3d7b90 Improve confirm password functionality 5 years ago
Michael Schättgen bd66659b92 Set confirmation not required on BiometricPrompt 5 years ago
Alexander Bakker 1a7a794dc9 Bump versionCode to 29
The APK released to the Play Store has versionCode set to 29 instead of 28,
because the update had to be resubmitted due to an erroneous rejection by
Google.
5 years ago
Michael Schättgen 2519633265
Merge pull request #318 from alexbakker/fix-bna
Make the parsing logic of the QR code URI more robust
5 years ago
Michael Schättgen e38121efee
Merge pull request #306 from alexbakker/atomic-file
Protect writes of the vault file against corruption with AtomicFile
5 years ago
h4waii 7e857b53a7
Update strings.xml 5 years ago
Michael Schättgen 73e1d72403
Merge pull request #305 from alexbakker/fix-authy
Add support for importing encrypted and manually entered tokens from Authy
5 years ago
Alexander Bakker 5731cccddc Fix build 5 years ago
Michael Schättgen 48d22fc06d
Merge pull request #304 from alexbakker/microsoft-auth
Add support for importing from Microsoft Authenticator
5 years ago
Alexander Bakker 2a4bb902df Add support for importing encrypted and manually entered tokens from Authy 5 years ago
Alexander Bakker d3463b82bc Add support for importing from Microsoft Authenticator
Adds support for importing TOTP and Microsoft accounts from Microsoft
Authenticator. Microsoft accounts also use TOTP, but with 8 digits instead
of 6.

This implementation suffers from the same bug (#82) as Google Authenticator, but I
haven't thought of a nice way to solve it yet. We should fix that before
including this feature in a release, though.
5 years ago
Alexander Bakker ef536a0c07 Abstract away the SQLite database reading logic into a separate class 5 years ago
Alexander Bakker 7e7c5317b1 Add support for importing from TOTP Authenticator
This is by far the most ridiculous format/'security' I've seen so far.
5 years ago
Alexander Bakker 2bf3546971 Make the parsing logic of the QR code URI more robust 5 years ago
Alexander Bakker 4ba3caeaf4 Protect writes of the vault file against corruption with AtomicFile
This adds a recovery mechanism for (probably extremely rare) cases where the app
may be killed before it is finished writing the vault file to disk. In the
example below, we see that AtomicFile moved ``aegis.json`` to ``aegis.json.bak``
before writing to ``aegis.json``.

```
bonito:/ # ls -lah /data/data/com.beemdevelopment.aegis.debug/files
total 27M
drwxrwx--x 2 u0_a306 u0_a306 3.4K 2020-02-02 13:22 .
drwx------ 6 u0_a306 u0_a306 3.4K 2020-02-01 19:51 ..
-rw------- 1 u0_a306 u0_a306  19M 2020-02-02 13:22 aegis.json
-rw------- 1 u0_a306 u0_a306  34M 2020-02-02 13:21 aegis.json.bak
```

Because the app was killed before it could
finish writing, it is only 19M in size, instead of the expected 34M. The next
time the app starts, AtomicFile will notice that the .bak file is still present,
and use that instead of the corrupted ``aegis.json`` file.
6 years ago
Alexander Bakker 10ac1af6b0 Replace implementations of Base16, Base32 and Base64 with Guava
I kept the classes in the encoding package and turned them into wrappers for
Guava. I also changed the functions in the Base32 class to take and return
strings insteads if character arrays.
6 years ago
Andrea Colombo 7bbd80ed21 Add navigation bar color to themes 6 years ago
Alexander Bakker dbedc9d1d3 Release v1.1.4 6 years ago
Alexander Bakker d0108e9859 Append ".json" extension to export filenames
Apparently not all SAF providers append a file extension based on the specified
MIME type.
6 years ago
Alexander Bakker 025c89d78c Release v1.1.3 6 years ago
Alexander Bakker c52e60b410
Merge pull request #288 from michaelschattgen/set-locale
Fix setting locale on 7.0
6 years ago
Michael Schättgen 3cc644193f Update languages and gitignore 6 years ago
Michael Schättgen 8020792024 Fix setting locale on 7.0 6 years ago
Michael Schättgen 837a27f9d7
Merge pull request #293 from alexbakker/password-reminder
Remind users who use biometrics to enter their password periodically
6 years ago
Alexander Bakker bbea6c2ae4 Fix #295 6 years ago
Alexander Bakker fa799e9542 Remind users who use biometrics to enter their password periodically
Instead of showing the reminder after x unlocks, I decided to show the reminder
2 weeks after the vault was last unlocked with the password. Let me know if you
agree with that.

![](https://alexbakker.me/u/115z6be7go.png)
6 years ago
Alexander Bakker 7f1ce1e645 Release v1.1.2 6 years ago
Michael Schättgen dc6bf3795a
Merge pull request #286 from alexbakker/intro-text
Add explanation for the security options
6 years ago
Alexander Bakker 85c358043d Add explanation for the security options
This adds some extra explanation of the security options to the intro, as well
as a warning when setting a password.

[<img width=200 src="https://alexbakker.me/u/jipc03u3hx.png">](https://alexbakker.me/u/jipc03u3hx.png)
[<img width=200 src="https://alexbakker.me/u/uw9nbsd95s.png">](https://alexbakker.me/u/uw9nbsd95s.png)
[<img width=200 src="https://alexbakker.me/u/mdoe5m8c3o.png">](https://alexbakker.me/u/mdoe5m8c3o.png)
6 years ago
Alexander Bakker ab8f01284a Remove EXTERNAL_STORAGE permissions
As we switched to the SAF, we don't need these permissions anymore.
6 years ago
Alexander Bakker 97d824d779
Merge pull request #279 from michaelschattgen/feature/multi-select
Add ability to select multiple entries
6 years ago
Alexander Bakker 1ede56e137 Rewrite the export functionality to use the Storage Access Framework
We noticed after the v1.1 release that we need to switch our external storage
access code over to use the Storage Access Framework. The export functionality
was the only piece of code that still used the deprecated method and this patch
addresses that.

The Storage Access Framework is a little annoying to work with, but I don't
think it'll be too painful for our usecase. This switch comes with some nice
benefits for users as well. Users are now able to select a custom storage
location, which can be local or in the cloud.

This also removes ``requestLegacyExternalStorage`` from the manifest, as we
don't need it anymore.
6 years ago
Michael Schättgen f8c106bcb9 Add ability to select multiple entries
Improve code and add select listeners
6 years ago
Alexander Bakker 10c206270a Release v1.1.1 6 years ago
Alexander Bakker f5e8ba96e6 Set requestLegacyExternalStorage to true in AndroidManifest
This is a temporary workaround while we work on support for the Storage Access Framework.
6 years ago
Alexander Bakker 3506fdaad9 Release v1.1 6 years ago
Alexander Bakker 4cab92d615 Always cancel the persistent notification when the app task is removed 6 years ago
Alexander Bakker 35a14d3198
Merge pull request #269 from beemdevelopment/update-translations
Update translations
6 years ago
Michael Schättgen e46041ece0 Update translations 6 years ago
Michael Schättgen fc96e7919a Replace changelog css colors 6 years ago
Michael Schättgen 08b80d2e72 Fix build 6 years ago
Michael Schättgen 051cf9370b
Merge pull request #257 from alexbakker/action-copy
Add a 'copy' button to the entry action mode menu in MainActivity
6 years ago
Michael Schättgen 3d13296890
Merge pull request #267 from alexbakker/biometric-update
Update gradle and dependencies
6 years ago
Alexander Bakker f168768033 Update gradle and dependencies 6 years ago
Alexander Bakker 5ab4307963 Rename "Database" to "Vault"
We decided on calling the state file the "vault" a while back. This patch makes
the naming consistent across the codebase. I left "DatabaseImporter" classes
alone, because I'm not sure what a better name for those would be.
6 years ago
Alexander Bakker d0baeef064 Release v1.1-beta1 6 years ago
Michael Schättgen 44b83c888c
Merge pull request #255 from alexbakker/hightlight-and-reveal
Make the behavior of highlighting and revealing entries consistent
6 years ago
Michael Schättgen da45fa1969
Merge pull request #240 from alexbakker/biometric
Replace the custom fingerprint auth UI with BiometricPrompt
6 years ago
Christian Basler 9ec94a472f Fix exception when importing an old export 6 years ago
Alexander Bakker 4e4c39eea4 Add a 'copy' button to the entry action mode menu in MainActivity 6 years ago
Alexander Bakker 3be9aecb88 Replace the custom fingerprint auth UI with BiometricPrompt
This patch replaces the usage of the deprecated FingerprintManager API with
BiometricPrompt. This uses the Android X library, so we get the native biometric
prompt on recent versions of Android and a Google-made one on older versions. By
not working with custom prompts for biometric authentication like we do now, we
can be sure that any issues like #70, #81, #237 are not actually our fault.
Here's what it looks like:

![](https://alexbakker.me/u/b2rmf3x0b9.jpeg)

As a nice aside, this also adds support for the new facial recognition as an
authentication method on Pixel 4 phones.

This is still a draft, but early feedback is welcome.
6 years ago
Alexander Bakker a6a5af781e Make the behavior of highlighting and revealing entries consistent
I think this makes the highlight/reveal functionality feel a bit more
consistent, by not allowing multiple entries to be revealed at the same time,
just like you can't have multiple highlighted entries. Here's video of what it
looks like: https://alexbakker.me/u/3a9dhplrj2.mp4.
6 years ago
Alexander Bakker 82135c8b9d
Merge pull request #238 from michaelschattgen/feature-togglepassword
Add checkbox to toggle visibility in password fields
6 years ago