Commit Graph

655 Commits (v1.2.1-release)

Author SHA1 Message Date
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 6 years ago
Michael Schättgen 48d22fc06d
Merge pull request #304 from alexbakker/microsoft-auth
Add support for importing from Microsoft Authenticator
6 years ago
Alexander Bakker 2a4bb902df Add support for importing encrypted and manually entered tokens from Authy 6 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.
6 years ago
Alexander Bakker ef536a0c07 Abstract away the SQLite database reading logic into a separate class 6 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.
6 years ago
Alexander Bakker 2bf3546971 Make the parsing logic of the QR code URI more robust 6 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
Michael Schättgen 9f248e0802 Add checkbox to toggle visibility in password fields
Make string translatable
6 years ago
Michael Schättgen be3f30e666 Add minor text improvement 6 years ago
Michael Schättgen 34ef4b3fb4
Merge pull request #232 from alexbakker/chromebook
Explicitly state in AndroidManifest that a camera is not required
6 years ago
Michael Schättgen 63b0f6bb99
Merge pull request #220 from alexbakker/highlight-entry
Add the option to highlight entries when tapped
6 years ago
Michael Schättgen 36973669ea
Merge pull request #219 from alexbakker/new-andotp-format
Add support for the new andOTP backup format
6 years ago
Alexander Bakker 8b063815ab Explicitly state in AndroidManifest that a camera is not required
This hopefully fixes #226. I tested this on a Chromebook emulator, but it let me
install the app even without this patch, so we'll have to wait and see if this
fixes it when we release a new version.
6 years ago
Alexander Bakker 75b79d3d4a
Merge pull request #203 from michaelschattgen/feature-winauthimport
Add WinAuth importer
6 years ago
Michael Schättgen b61b73685f Add WinAuth importer
Fix WinAuthImporter
6 years ago
Alexander Bakker 864e3bd6f4 Merge pull request #218 from michaelschattgen/feature-translation 6 years ago
Alexander Bakker 51a0a16afb Add the option to highlight entries when tapped
This adds an option to highlight tapped entries, so that it's easier to
distinguisch between the one you're trying to enter into a website and the other
ones.

Only one entry can be highlighted at a time. Perhaps it would make sense to
change our tap to reveal functionality to behave the same, so that the two
features are nicely in sync. I can address that in a separate PR if we decide to
do so.
6 years ago
Alexander Bakker a5165e2345 Add support for the new andOTP backup format
This patch adds support for the new backup file format of andOTP. andOTP has
improved their security by switching from SHA-256 to PBKDF2 to derive the key
for encrypted backups.

Glad to see this has been addressed now. Awesome work, @flocke!

See: andOTP/andOTP@d96b037.
6 years ago
Alexander Bakker e58dec35c0 Target API 29, update gradle and update the dependencies
This also fixes an issue with the use of the Iconics library where it was
initialized twice. I also removed the dependency to [AndroidX Preference
eXtended](https://github.com/takisoft/preferencex-android), as there don't seem
to be any issues with using the vanilla AndroidX preference library anymore.
6 years ago
Michael Schättgen 45de9cea3a Add Crowdin support 6 years ago
Michael Schättgen 9f075e7bc6 Add ungrouped filter 6 years ago
Michael Schättgen a88d1cf11e
Merge pull request #211 from alexbakker/show-account-default
Set pref_account_name to true by default
6 years ago
Michael Schättgen a6eec88dcb
Merge pull request #195 from alexbakker/about-version-git
Add git commit hash and branch information to AboutActivity for debug builds
6 years ago
Michael Schättgen 3c4afe36e8
Merge pull request #202 from simonporte/patch-1
Update french translation
6 years ago
simonporte 5b71df37ec Update french translation.
Change a single word in english : change log --> changelog
6 years ago
Alexander Bakker d7d3d52a30 Set pref_account_name to true by default
This changes the default settings so that account names are shown by default
6 years ago
Alexander Bakker ac222c4946
Merge pull request #201 from michaelschattgen/feature-usernamesearch
Add ability to search in account names
6 years ago
奔跑的梅洛斯 0200287203 Add Simplified Chinese translation (#198) 6 years ago
Alexander Bakker 5677bd4112 Copy the version to the clipboard when tapped in AboutActivity 6 years ago
Alexander Bakker cbe3697d68 Add git commit hash and branch information to AboutActivity for debug builds
This will help us differentiate between custom/debug builds and release builds
of Aegis.
6 years ago
Michael Schättgen 445410fcd7 Add ability to search in account names 6 years ago
Michael Schättgen 1d513441c6 Release v1.0.2 6 years ago
Michael Schättgen 0a31103f91 Disable automatic backups through Google Play
Backups from the Google Play Store had some unintended consequences...
6 years ago
Michael Schättgen 85bf4adc72 Enable and fix search feature again
For some reason we used the old SearchView. Changed it to androidx.appcompat.widget.SearchView and it works on Huawei devices again.
6 years ago
Alexander Bakker cc55a6dacb Release v1.0.1 6 years ago
Alexander Bakker e099e2cacd Add missing null check in onBackPressed for SearchView 6 years ago
Michael Schättgen 658946ff70 Temporarily disable search feature when unavailable
Which isn't working on Huawei devices
6 years ago
Alexander Bakker b6a31ed789 Release v1.0 6 years ago
Michael Schättgen 3e626a37db Add AboutActivity
Add DialogStyles for different themes

Add review fixes

Remove unused usings
6 years ago
Alexander Bakker e2150e3823
Merge pull request #194 from michaelschattgen/feature-empty-dataset
Add placeholder for empty recyclerview
6 years ago
Michael Schättgen 6480fef315 Add placeholder for empty recyclerview 6 years ago
Alexander Bakker 95df2ceb42
Merge pull request #193 from michaelschattgen/fix-icon-onboarding
Fix app icon in IntroActivity
6 years ago
Michael Schättgen 189698dddb
Merge pull request #189 from alexbakker/entry-defaults
Set a default value for period and digits for new entries
6 years ago
Michael Schättgen 438d5581aa Fix app icon in IntroActivity 6 years ago
Alexander Bakker 7af78b11f5
Merge pull request #192 from michaelschattgen/feature-fixbackpress
Add temporary backpress fix
6 years ago
Michael Schättgen a7e1a88dc8 Add temporary backpress fix 6 years ago
Alexander Bakker 79279630ba Fix all linter errors
Well almost all, just ignore missing translation errors
6 years ago
Alexander Bakker e019fb6db2 Set a default value for period and digits for new entries
This is also in preparation for #24, but I haven't fully figured out how to do
that nicely yet, so that'll come later.
6 years ago
Alexander Bakker 85bdecc573 Fix syntax error in the XML file of the German translation 6 years ago
Andrey Saksonov 21f3d93295 Update Russian localization (#170) 6 years ago
xopez 888e9d0e4a Added German Translation (#188)
* Added German Translation

* Update arrays.xml
6 years ago
Alexander Bakker e6d84e6859 Release v1.0-beta1 6 years ago
Alexander Bakker 65371f18d4
Merge pull request #184 from michaelschattgen/feature-setgroupautomatically
Set group on new entries automatically when group filter is active
6 years ago
Michael Schättgen 1b5ab33c25 Add way to pass selected group to edit entry activity 6 years ago
Michael Schättgen c774796422 Change auto lock preference visibility behaviour 6 years ago
Alexander Bakker c12c6ab107
Merge pull request #173 from michaelschattgen/feature-tapholdswipe
Overhaul entry interaction
6 years ago
Michael Schättgen e3b9b67fee
Merge pull request #181 from alexbakker/fix-152
Check for the possibility of an overflow when parsing OTP period
6 years ago
Michael Schättgen 2407b4b780 Overhaul entry interaction
Add support for different card background colors
Add minor bug fixes
Add minor fixes

Fix minor bugs where action mode kept active
6 years ago
Michael Schättgen e962d91c77
Merge pull request #177 from alexbakker/fix-175
Correctly display codes with an uneven number of digits
6 years ago
Michael Schättgen d0afa2f61f Fix app icon 6 years ago
Alexander Bakker 58d13ba9e3 Check for the possibility of an overflow when parsing OTP period
The conversion of the OTP period value to milliseconds may overflow for large
values, causing the result to wrap around to Integer.MIN_VALUE. This
subsequently caused a crash when calling ObjectAnimator.setDuration.
6 years ago
Alexander Bakker 631ca76136 Correctly display codes with an uneven number of digits 6 years ago
Alexander Bakker 2323d89938 Introduce UUIDMap for storing objects that are keyed by a UUID
This patch introduces the new ``UUIDMap`` type, reducing code duplication and
making UUID lookups faster. We currently already use UUIDs as the identifier for
the ``DatabaseEntry`` and ``Slot`` types, but the way lookups by UUID work are
kind of ugly, as we simply iterate over the list until we find a match. As we're
probably going to have more types like this soon (groups and icons, for
example), I figured it'd be good to abstract this away into a separate type and
make it a map instead of a list.

The only thing that has gotten slower is the ``swap`` method. The internal
``LinkedHashMap`` retains insertion order with a linked list, but does not know
about the position of the values, so we basically have to copy the entire map to
simply swap two values. I don't think it's too big of a deal, because swap
operations still take less than a millisecond even with large vaults, but
suggestions for improving this are welcome.

I had to update gradle and JUnit to be able to use the new ``assertThrows``
assertion method, so this patch includes that as well.
6 years ago
Michael Schättgen 6769fefd00
Merge pull request #106 from alexbakker/feature-import-freeotp+
Add support for importing from FreeOTP+
6 years ago
Alexander Bakker 5dbf1c7ce2
Merge pull request #172 from michaelschattgen/feature-otpauthuri
Add support for deeplinking otpauth uris
6 years ago
Michael Schättgen 8d3c113475 Add support for deeplinking otpauth uris
Fix bug
6 years ago
Alexander Bakker 087bf08d44
Merge pull request #169 from michaelschattgen/feature-showpassword
Add ability to toggle password visibility
6 years ago
Michael Schättgen 32b2ce280c
Merge pull request #144 from alexbakker/fix-lag-part1
Unregister any listeners when destroying EntryListView
6 years ago
Michael Schättgen 37c9b033c5
Merge pull request #141 from alexbakker/pref-lang
Add a language option to the preference menu
6 years ago
Alexander Bakker f8d806999d
Merge pull request #157 from BM835/master
Updated Russian translation
6 years ago
Michael Schättgen 86c4011797
Merge pull request #158 from alexbakker/fix-150
Get external storage read permissions before selecting an image to scan
6 years ago
Michael Schättgen bbc4c1d61c Add ability to toggle password visibility 6 years ago
Alexander Bakker 951e908d4b
Merge pull request #148 from michaelschattgen/feature-notification
Add notification to warn user about the unlock state
6 years ago
Michael Schättgen 1f5a46b883 Add notification to warn user about the unlock state
Clean up code

Add minor changes
6 years ago
Michael Schättgen 4cab47235b Add new icon 6 years ago
Kasper Seweryn a3cdfe693d
Fix #162 6 years ago
Alexander Bakker 9e4ad1495d Get external storage read permissions before selecting an image to scan
Fixes #150
6 years ago
BM835 914da94c01 Updated Russian translation 6 years ago
Alexander Bakker 950dcce803 Unregister any listeners when destroying EntryListView
We were leaking some resources by not unregistering listeners when destroying
the entry list view. The code refresh loop of the leaked view started running in
a tight infinite loop, which causes a lot of lag in the main activity.
6 years ago
Alexander Bakker 9c5726cbca Use glide to load and cache icons
This patch adds a dependency to glide to handle the loading and caching of
icons. In my testing it eliminated the lag previously experienced in the main
activity when quickly scrolling through a large list of entries. It does add an
extra 1MB to the APK size, but I think that's acceptable for the amount of
complexity it handles for us.
6 years ago
Michael Schättgen 550e53f225
Merge pull request #140 from alexbakker/debug-flag-secure
Disable screen security by default for debug builds
6 years ago
Alexander Bakker b014d95005 Add a language option to the preference menu 6 years ago
Alexander Bakker 0123b98e47 Disable screen security by default for debug builds
I've lost count of how many times I've tried to record a demo video with
screen security enabled.
6 years ago
Alexander Bakker d7093487dd Add support for importing from FreeOTP+
This also includes some other small changes:
- Make FreeOtpImporter more reusable
- Refactor preference file parsing logic into a separate class
- Add support for importing Steam tokens from FreeOTP(+)
- Make FileReader a bit leaner
- Add some missing @Override annotations
6 years ago
Alexander Bakker 02c9a0cb1c Move entry divider logic to EntryListView
This patch makes EntryListView responsible for providing the divider between
entries, instead of setting a margin on every entry like we do now. It also
fixes a couple of miscellaneous issues, like use of the old package name.
6 years ago
Michael Schättgen eb29be587f Fix bug where searchview did not reset properly 6 years ago
Alexander Bakker f64a23d98f Release v0.4.3 6 years ago
Alexander Bakker 4066cd83cc Limit the amount of entry info passed to SelectEntriesActivitiy
This horrid patch changes the vault import logic to pass an ImportEntry list to
SelectEntriesActivity, instead of a DatabaseEntry list. Previously, a crash
would occur when importing a vault with lots of icons, because the maximum
Parcel size was exceeded.

Storing icons in the vault file was a bad idea.
6 years ago
Alexander Bakker cca35bd5e5
Merge pull request #109 from michaelschattgen/feature-entrysearch
Add ability to search for entries in vault
6 years ago
Michael Schättgen 187adfa738 Add ability to search for entries
Fix bug where new entries did not get filtered

Fix IsEntryFiltered
6 years ago
Alexander Bakker 246c03dea1
Merge pull request #107 from michaelschattgen/feature-importauthy
Add support for importing from Authy
6 years ago
Alexander Bakker e68571a7a6
Merge pull request #108 from michaelschattgen/feature-qrshortcuticon
Add new QR shortcut icon which follows material guidelines
6 years ago
Michael Schättgen c75b25c4b6 Add new QR shortcut icon which follows material guidelines
Remove superfluous drawable files
6 years ago
Michael Schättgen 6abcfcea75 Add ability to import from Authy
Fix importer and appImporter lists
6 years ago
Alexander Bakker b300b72626 Don't ignore the result of IntroActivity when the vault is locked
This fixes a bug where AuthActivity would be shown after finishing the intro.
6 years ago
Alexander Bakker b2995955b6 Release v0.4.2 6 years ago
Alexander Bakker 1c9d07a47d Adapt the unlock button size in AuthActivity to the text width 6 years ago
Alexander Bakker 66f99eb4d4 Always launch AuthActivity on lock if MainActivity is resumed 6 years ago
Alexander Bakker ff584a323d Always try to decrypt the password slot first, before the fallback
This makes sure the case where a user set up Aegis v0.4 with a password of over
64 bytes is also covered.
6 years ago
Alexander Bakker 8c658ac930 Use the old encode method for passwords over 64 bytes and repair the slot (#98)
Commit afb9e59711 fixed a bug where the password
encode function would add null bytes to the end of the output. Luckily (I
thought), PBKDF2 produces collisions for inputs with trailing null bytes and
thus scrypt does this as well, so we could safely change that function to remove
the null bytes without any impact. Unfortunately, that doesn't hold up if the
password is over 64 bytes in size. So after that change, the KDF started
producing different keys than before for such passwords and thus some users
could no longer unlock their vault.

This patch addresses the issue by using the old password encode function for
passwords over 64 bytes and repairing the affected password slot.
6 years ago
mdmk 588c1c07df Update french translation (#97)
* Update strings.xml
6 years ago
Alexander Bakker f54639c791
Merge pull request #89 from michaelschattgen/feature-ignorespaces
Add possibility to ignore spaces in EditTexts
6 years ago
Alexander Bakker 7c78ddc929 Release v0.4.1 6 years ago
Alexander Bakker 9f3ccdc508 Force a period uniformity check when initializing EntryAdapter
This fixes a bug where the progress bar was not shown upon unlock.
We'll come up with a better solution later. This is just a hot fix.
6 years ago
Alexander Bakker 99c222cffa Release v0.4 6 years ago
Michael Schättgen 3556cd0e66 Add possibility to ignore spaces in EditTexts 6 years ago
Alexander Bakker 57e3574693 Fix a bug where Aegis would forcibly pop up after unlocking the device 6 years ago