bpellin / keepassdroid

KeePass implementation for android
http://www.keepassdroid.com
Other
1.38k stars 346 forks source link

How to use fingerprint sensor unlock feature #241

Open pierpippo opened 6 years ago

pierpippo commented 6 years ago

I try to enter in setup-->DataBase to enhable fingerprint sensor but database enter is grey and i cant enter in it. Database is done by phone and is in the keepassdroid director in phone memory. I'm using a Samsung A5(2016) with android 7.0 and a Samsung S5mini with Android 6.0.1 with the same problem. Thx for help.

ghost commented 6 years ago

Hello! To use fingerprint unlock you should enter password on *.kdb unlock screen, but instead pressing "Ok" you should touch the fingerprint sensor. Password then will be encrypted & saved in KeePassDroid. On the next unlock you would be able to simply touch the sensor instead of typing on the password.

pierpippo commented 6 years ago

I try but it doesn't work. i insert password and touch fingerprint sensor but nothing happened.

veelineen commented 6 years ago

Do touch the sensor at the back of your phone with your finger instead of clicking on the fingerprint icon on the screen. For me it worked.

jghaanstra commented 6 years ago

I'm seeing the save behavior as @pierpippo. No way to set the fingerprint. A long press on my fingerprint sensor activates the recent apps overview. Returning to Keepass doesn't change anything.

The only change I'm seeing is a new toast message saying invalid key problem. I don't even use keys.

pmontrasio commented 6 years ago

@pierpippo and @jghaanstra Maybe you're affected by issue #240.

@InviteCiel Thank you. I think there is a usability issue here. The first thing I did was touching the fingerprint icon without inserting the password. Nothing happened. Then I tried touching the fingerprint sensor. Nothing happened. I could have stopped there but I decided to go to the keepassdroid site and look for instructions. Then I came here on GitHub and I read the last comment to #240. I realized that I had to type in the password and then touch the icon. That should be obvious (it needs the password to decrypt the database) but obviously it wasn't.

I suggest an improvement: if the user touches the fingerprint icon with an empty password field, then the app displays a dialog prompting the user to enter the password and touch the icon to save it.

pierpippo commented 6 years ago

So what can I do to use fingerprint sensor? Thank you very much for your help

maky commented 6 years ago

Same issue on Huawei P10. You cannot open at all with fingerprint sensor. Also that icon has no sense at all next to the password.

avuton commented 6 years ago

Actually, it sounds more like #223 to me.

geoffhamer commented 6 years ago

I am able to replicate the issue @jghaanstra is having by following these steps.

As a work around, if you reinstall KeePassDroid on your phone and re-assign a fp to unlock the db, it will work fine again even with multiple fp registered on the phone.

I have a Galaxy S8+ SM-G955W, Android 7.0,

botanybay commented 6 years ago

I can replicate the issue and workaround @geoffhamer described on Android 8.0.0 (up to date with sec patch 5.11.2017). Will try to reproduce again as soon as 8.1.0 arrives.

blakjaknz commented 6 years ago

"Me too" for @geoffhamer and his description of the bug. SGS7 Android 7. Was working fine until I enrolled an additional fingerprint (had 3, now have 4). Opening keepassdroid by selecting my kdb puts up an error 'invalid key problem' but entering the key manually opens the file fine.

blakjaknz commented 6 years ago

Also support @pmontrasio regarding the UX around setting up for fingerprints in the first place. Stumbled into making it work, rather than being obvious. Using the fingerprint to open the file is a major boon - has made the app an order of magnitude more useful. Just a couple of little things to improve.

(Reinstalling the app and reconfiguring fingerprints has restored the feature for now)

tillias commented 6 years ago

If you have several fingerprints configured, tt seems keepassdroid uses first one. I have just tested it with the following sequence:

  1. Configure "Fingerprint 1". Log into database using it -> everything working fine
  2. Configure "!Fingerprint 1". Please note that first character is exclamation mark. This means new fingerprint will be now at position 1 and original "Fingerprint 1" on position 2 in a list
  3. Now it is not possible to unlock database using "Fingerprint 1" but it works just fine with "!Fingerprint 1"
HipToday commented 6 years ago

Feature Request: It would be great if how to use the fingerprint reader were documented in the app instead of having to guess or end up here.

gvaneynde commented 6 years ago

Hello I am using Version 2.2.0.9; Until this morning I could used my fingerprints suddenly I cannot more use it . I can still used my fingerprints to enter in my S8+ and also using Samsung Pass without problem.. What can I do to restore using my KeePassDroid App ? regards

woodyl commented 6 years ago

So, it appears that there's no official documentation for the fingerprint feature? I have some security concerns about it. What I'd like is for some sort of timeout on the fingerprint feature. Or maybe keepass would require a password the first time you use it, then the fingerprint feature would work would work for some period of time.

Also, is there a way to disable the feature, once it's turned on? I would really like to be able to toggle it off and on.

andreaprs commented 6 years ago

I have the same problem. When I added a new fingerprint I was not able to access the database anymore. The application does not give me the opportunity to insert the fingerprint, but I don't remember the password

computHome commented 6 years ago

Some devices put its fingerprint sensor to the same home button, the app seems to have bug that will trigger the long press home action and the fingerprint detection seems not working at all.

Manuauto commented 6 years ago

Before I had the same problem as described in this post, the fingerprint unlock worked fine. For some reason it suddenly stopped working and gave me the error message "fingerprint problem". I was able to resolve this issue by reinstalling the app.

hglade commented 6 years ago

Tha same issue with the fingerprint. After each time the KeePass starting, I see "Invalid key problem" message, and the fingerprint is not working too. The password does work. It began after I'd changed my set of fingerprints. Huawei MT7-L09 device.

Xavron commented 6 years ago

"Before I had the same problem as described in this post, the fingerprint unlock worked fine. For some reason it suddenly stopped working and gave me the error message "fingerprint problem". I was able to resolve this issue by reinstalling the app."

Seems to be caused if the finger print reader fails to accept the finger print (not keepassdroid). I can see this error message for this reason, but when I put my finger print on the sensor correctly then it works fine.

Certainly, there could be some other problem happening since the finger print required to use the password and the password required to open keepassdroid. Too long a chain for no bugs.

rjbcollege commented 6 years ago

I've followed the instructions but it just doesn't work.

To be clear, I have a working database that has a password. I try typing the password and then touching the fingerprint sensor and nothing happens. I exit the app and reopen it and touch the the fingerprint sensor and nothing happens.

I have a Xiaomi mi A1 Android phone.

imran-uk commented 6 years ago

Same for me, I'm using v2.2.0.9 on a Nexus 6P with Android 8.1.0

Password authentication works fine but nothing happens when I press the fingerprint icon or the fingerprint scanner on the back of my phone.

Fingerprint scanner is working fine with several other apps and unlocking my phone.

I would really love to ditch LastPass and give the annual subscription to this project instead as a yearly donation.

Xavron commented 6 years ago

Now that I have a little more free time, I see that there's an Samsung A5 with a problem. This might fall under the following linked issue where older Samsung devices return false with Google's finger print API FingerprintManager and needed Samsung's version (thank you Samsung, thank you Google) https://stackoverflow.com/questions/38266406/android-fingerprint-api-ishardwaredetected-returns-false-for-samsung-note-4/38267130#38267130

Also see: https://stackoverflow.com/questions/37935959/android-m-fingerprintmanager-ishardwaredetected-returns-false-on-a-samsung-gal?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

I have a Samsung A7 sitting here and it works fine. So, I really think its a user error or that. Knowing where its failing at would figure that out however.

There's also supposedly another issue where a device config may not supply the needed flag if you will resulting in it failing: https://stackoverflow.com/questions/42575967/fingerprintmanagercompat-ishardwaredetected-return-false-in-targetapi-25?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

If you have it work with one app and not with this one then I think the other apps are not using or not just using Google's fingerprint API which I see is used here. They may have a different range of support added as its quite clear cut with how Google code works and so its not like it should fail unless Google's API fails to return an "OK" to the app - though lots of stuff needed to do one just this one thing as is usual with Google sometimes.

Certainly, I would think there could be failure in other ways as well here such as with the encryption object that is needed which could potentially have its own problems on some devices and so on.

The fact that it fails with a Nexus 6P however, what's up with that one ;-) I get 0 search results of people with Nexus devices having a problem with it. In fact if it actually has a problem there than Google's API is really bad that it can't work on their own devices.

It seems some work may be needed here to support devices that are failing where possible and to express it better to the user if they can't be used or if they don't have the device set up correctly, etc.

Android P however has some changes for those who would like to know and they would also be good to implement here which should further improve user interaction in the future.

Hope that helps someone understand a little better and not too technical besides the links

don-reba commented 6 years ago

Samsung A8 2018, KeyPassDroid displays "invalid key problem" and does not react to the fingerprint sensor. Reinstalling the app fixed the problem. This doesn't fit with @Xavron's theory at all.

Xavron commented 6 years ago

Samsung A8 2018, KeyPassDroid displays "invalid key problem" and does not react to the fingerprint sensor. Reinstalling the app fixed the problem. This doesn't fit with @Xavron's theory at all.

Theory? I have cited developer references, a device without issue with the app, as well as stating that there could be additional problems, and I'm a app developer myself thank you very much =)

I know you're unhappy with how the app is performing and its in the back of my mind to submit a pull request and help out.

Others have already pointed out various problems so I pointed out some more and its context is in addition to other posts. On top of that, I've briefly examined their code before making the previous post and am on your side.

I want it fixed or improved for you as I don't need it fixed since it works with no problem on my device.

There are many potential problem areas, not just what I wrote in my post and better reporting to the user will make various things clear that are not. But that's really up to them and what they desire the app to be like.

All of this can be extrapolated from my previous post without having had to spell it out.

don-reba commented 6 years ago

Theory? I have cited developer references, a device without issue with the app, as well as stating that there could be additional problems, and I'm a app developer myself thank you very much =)

The theory that this specific problem is caused by config or older Samsung API implementation issues. It does not explain the "invalid key problem" message, or the fact that the problem is fixed by reinstalling the app, as others reported, or that it occurs on new devices.

I know you're unhappy with how the app is performing and its in the back of my mind to submit a pull request and help out.

I'm pretty happy. Reinstalling the app once is not a big deal.

Xavron commented 6 years ago

The theory that this specific problem is caused by config or older Samsung API implementation issues. It does not explain the "invalid key problem" message, or the fact that the problem is fixed by reinstalling the app, as others reported, or that it occurs on new devices.

Sorry, this is in reference to older Samsung devices specifically an older Samsung A5(2016) of which I said "This might fall under". At some point the compatibility has improved. I also said my A7 (2017) model does not have this problem which is exactly what you're saying about your A8 (2018) model. We actually said the same thing.

Its also not a theory as the link shows other developers have faced a problem there in the past. Is 2016 old enough, I don't know and don't have a 2016 model available to test and perhaps a newer update voided the issue anyway.

For additional reference the note 4 in the link was released in 2014 and had the problem. The developers posted with the link in 2016. An s7 edge from 2016 is quoted as working fine so in-between 2014 and 2016 devices could have a problem and there's no telling if Samsung improved it with all devices by/during 2016. Maybe additional research could show where it changes.

Additional reference. Developers have already thought about this last year anyway: https://stackoverflow.com/questions/45499713/which-samsung-devices-do-not-support-androids-native-fingerprint-api

Sadly, 2016 is terribly close to that time when Samsung devices have an issue and developers just last year have been struggling with it. It tends to lean this way, that if one app works and one doesn't then what's the difference? This one applies Google's code but not Samsung's as far as I noticed in my brief look at it. A quick search shows nothing for Samsung fingerprint in use here.

Of course, it could yet be something else. But if the app receives "not OK" back from the call to fingerprint, it should at the very least help the user to know how to use the fingerprint which in this specific case would be, "your device told me no :-(" or something to that effect lol

I'm pretty happy. Reinstalling the app once is not a big deal.

I'm happy that your pretty happy but I hope you get very happy :-D

Xavron commented 6 years ago

Attached a small patch to fix fingerprint not working on resume of app (if anyone cares). Tested as working.

Apparently after the app is paused, stopListening() is called but no one ever put in startListening() once app is resumed so the fingerprint no longer does anything at that point until the app is killed or the fingerprint is initialized.

I will request a pull should that be desired =)

keepass_resume_fp.zip

Xavron commented 6 years ago

You can give me a big thumbs down for that last one lol :-1: :-1: :-1:

Sorry, that one can crash on clean app. I went based on onPause() usage and it works fine when the fingerprint has been used. I should have tested a lot more.

New patch attached: keepass_resume_fp2.zip

Tests performed: Fingerprint device (Samsung A7) and non-fingerprint device (Moto G4 Play) - both Android N Other devices (non-fingerprint devices): phone Lineage OS with Android Kitkat, tablet AOSP OS with Android M App start and resume in various states (app data cleared, with and without fingerprint, etc.) Invalid and valid passwords Other tests (because you never know): No internet, no cells Rotation various tests ALL OK

Upcoming tests: Usage after long display off (sleep mode)

Fixes: Possible crash from last patch Annoying toast message on non-fingerprint devices

Additional problems found while testing: None

However there could potentially be a problem I've not yet tested or unable to test. I will continue to test. I hope you like =) Sorry about that. Its never as simple as you would hope it to be.

It would also be better to not have the fingerprint code get so far on non-fingerprint devices - save some code execution there if possible and remove a line from this patch. Will look into that.

alexsee75 commented 5 years ago

I've just noticed that adding the fingerprint on Nexus 6P only works when 1) fingerprint is configured (a PIN for the display lock is also obligatory) 2) the password is shown in cleartext (i.e. you must check the box "Show password") After this touching the fingerprint will work and associate the fingerprint with the password (YMMV)

If the password is shown with dots, it will not accept the fingerprint - no vibration at all.

gmnowels commented 5 years ago

Thxs, fantastic work.

tiptronic85 commented 5 years ago

I am able to replicate the issue @jghaanstra is having by following these steps.

  • register a fingerprint with the phone
  • start KeePassDroid, enter your password and tap the fp scanner
  • your fp will now unlock the db properly
  • register a SECOND fp with the phone
  • now when you open KeePassDroid "invalid key problem" is displayed and the app no longer responds to fp touches.

As a work around, if you reinstall KeePassDroid on your phone and re-assign a fp to unlock the db, it will work fine again even with multiple fp registered on the phone.

I have a Galaxy S8+ SM-G955W, Android 7.0,

Worked also for me with Samsung S9+

theGiallo commented 5 years ago

Mi Mix 2S: I solved deleting app data. I entered the password and touched the sensor. Didn't tap on the fingerprint button.

Nazz78 commented 4 years ago

Thanks @alexsee75 this works for me, too, but in a slightly different manner - I had to type in the password when it was set to show in cleartext. If I just turned on show password (when it was already typed in), fingerprint didn't grab it. Then I erased it, input it in a "shown" state and voila, it worked! Thanks!

Pagira commented 4 years ago

Thanks a lot!

ColinGoldstein commented 4 years ago

After trying many of the above solutions, here is what finally worked for me on a Galaxy S10 5G (with finger print reader built into the screen) 1) I cleared the app cache and app data 2) I clicked the kdbx file stored on my OneDrive 3) I unchecked the App Settings -> "Enable Fingerprint scanning" box 4) I typed in the password 5) I checked the "Show password" box 6) I touched the grey fingerprint icon, which enabled the S10 fingerprint scanner 7) I touched the fingerprint reader and saw a message about the encrypted password being stored 8) I closed the app, went back to the sign in screen, and unchecked the "Show password" box