You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Refs #8017 (is not a direct fix but allows an "improved workaround" which should be enough for most use cases)
It adds two methods to the DBus interface called isHardwareKeySupported and refreshHardwareKeys. The first one reflects if KeePassXC was built with hardware key support and can be used to verify that calling the second method (or future methods) makes sense. The second one allows one to force KeePassXC to refresh the list of detected hardware keys (similar to clicking on "Refresh" in the UI). This enables 3rd-party services to e.g. inform KeePassXC that a YubiKey was inserted and, like described in #8017 (comment), allows 3rd-party applications to unlock a database which is secured with a Yubikey (semi-)automatically (given the key inserted was remembered to be last used for this database).
Screenshots
feature not really visible in UI
Testing strategy
tested manually by
calling isHardwareKeySupported with and without hardware key support and checking return value
inserting & removing YubiKey multiple times, calling refresh via DBus and verify in UI that KeePassXC detects inserted key / key was missing again and selected key automatically if recently used
documentated and commented new functions properly
did not add any unit tests because
testing isHardwareKeySupported properly without rebuilding not possible and unit test would depend on same code
I really have no good idea how to test refreshHardwareKeys using unit tests, ideas are appreciated
You don't need the issupported call because you return false if it's not in the refresh call. There is no circumstance where you would call issupported and NOT call refresh right afterwards if it is supported. Might as well collapse them.
isSupported can help with deducting what the error was. Refresh will also return false if no devices were found. Instead of calling them in the order you suggested, if you call them as described below, isSupported serves the purpose to detuct what the error was:
ifrefresh():
print("Devices were found successfully")
else:
ifisSupported():
print("User, please insert your Yubikey")
else:
print("Oh, you seem to use a KeePassXC version which does not support Yubikeys. You might need to reinstall another KeePassXC variant")
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #8017 (is not a direct fix but allows an "improved workaround" which should be enough for most use cases)
It adds two methods to the DBus interface called isHardwareKeySupported and refreshHardwareKeys. The first one reflects if KeePassXC was built with hardware key support and can be used to verify that calling the second method (or future methods) makes sense. The second one allows one to force KeePassXC to refresh the list of detected hardware keys (similar to clicking on "Refresh" in the UI). This enables 3rd-party services to e.g. inform KeePassXC that a YubiKey was inserted and, like described in #8017 (comment), allows 3rd-party applications to unlock a database which is secured with a Yubikey (semi-)automatically (given the key inserted was remembered to be last used for this database).
Screenshots
feature not really visible in UI
Testing strategy
Type of change