Commit Graph

4645 Commits

Author SHA1 Message Date
Jonathan White
518947e3aa
Fix typo in powershell release tool 2024-09-13 23:22:30 -04:00
Jonathan White
defb5f027d
Support KeePass2 TOTP settings
* Fixes #7263
* Also improves handling of custom TOTP settings
2024-09-13 22:48:57 -04:00
varjolintu
292046ff7f
Allow deleting extension plugin data from Browser Statistics 2024-09-13 22:48:51 -04:00
Sami Vänttinen
5a3bde7676
Document Custom Browser option (#11220) 2024-09-13 22:48:45 -04:00
Jonathan White
05167e7b21
Fix signal/slot disconnect when opening import wizard
* Fixes #11037
2024-09-13 22:48:31 -04:00
Jonathan White
ad9ef88e15
Prevent duplicate entries in passphrase wordlists
Replace a QVector for the wordlist with a QSet. This removes all duplicate entries in a given wordlist.
Thus, it hinders a malicious wordlist that has the proper length (>4000 entries) but with repetitions (effectively << 4000 entries) to be used and potentially create weaker passphrases than estimated.

Example:
List with 4000 items but only 64 unique words would lead to only 48 bit of Entropy instead of ~95 bit!
2024-09-13 22:48:16 -04:00
AMurkin
0ae88131f6
Fix unexpected additional resolved urls in testIconDownloader 2024-09-13 22:47:18 -04:00
Jonathan White
0e59f2745e
CLI: Add -d dry-run shortcut to merge command
* Fixes #11191
2024-09-13 22:46:25 -04:00
Jonathan White
78cff4b6d9
Fix copy-to-clipboard shortcut on macOS
It turns out that the previous implementation, based on installing an event filter in every QAction instance, does not work on macOS, likely due to a Qt bug.

Attempt to work around this by using a different implementation of the same idea, by reacting to ShortcutOverride events in the MainWindow object.

Fixes #10929.
2024-08-13 22:49:16 -04:00
Felix Nüsse
8bdbccf13f
Use Icons for password strength (#9844)
---------

Co-authored-by: Jonathan White <support@dmapps.us>
2024-08-13 22:48:59 -04:00
Jonathan White
4317e9d829
Prevent long-running threads from deadlocking the program with only 1 CPU
* Fixes #10391
2024-08-13 22:48:59 -04:00
Sami Vänttinen
e565f89d47
Add option to disable database lock when switching user on macOS (#9707) 2024-08-13 22:37:30 -04:00
varjolintu
41de1dff2d
Browser: Resolve references in Access Confirm dialog 2024-08-13 22:35:34 -04:00
Jonathan White
3d66618818
Refactor browser Access Control Dialog (#9607) 2024-08-13 22:35:16 -04:00
Christoph Honal
12cd224f42
Hardware keys: Fix PCSC daemon recovery on Linux 2024-08-13 22:31:41 -04:00
Andreas Deininger
2b5ab7db82
Bump GitHub workflow actions 2024-08-13 21:39:13 -04:00
Jonathan White
3e90f1b4d8
Fix code formatting with new clang-format version 2024-08-13 21:38:37 -04:00
StoyanDimitrov
8599f0903c
Fix typos in tooltips from EditEntryWidgetBrowser.ui 2024-07-02 06:53:13 -04:00
Carlo Teubner
182bcd4ef7
Database key settings: fix UI bug
Fix a bug in the database key settings dialog, where it was previously
always incorrectly applying an empty password if the password was not
changed but some other change was made (e.g. adding or removing a key
file).
2024-06-30 22:24:10 -04:00
Varij Kapil
8dd2377765
Docs: explain how to generate passwords with the browser extension (#9242)
---------

Co-authored-by: Jonathan White <support@dmapps.us>
2024-06-30 22:24:04 -04:00
Peter Mescalchin
bfa64aa8f0
Update URLs to Chrome Web Store page for KeePassXC-Browser extension 2024-06-30 22:23:56 -04:00
Sami Vänttinen
d883ca26a9
Update browser extension icon states in documentation (#10875) 2024-06-30 22:23:50 -04:00
xboxones1
249e71fe88
Fix сentering icon and text on buttons 2024-06-30 22:23:43 -04:00
Carlo Teubner
ed31da0021
Fix backup file path substitution
Previously, in a pattern like "{TIME:yy} {TIME}",
substituteBackupFilePath() would greedily use the entire string
"yy} {TIME" as the format specifier for the first TIME template, instead
of just "yy". Fix this, by adjusting the regular expression.

This ends up changing the behaviour of a weird corner case that is
covered in the tests, so change the test. I don't think anyone cares
about that case, and I think the current behaviour is better there.

Fixes #10505 (proved by adding a test case very similar to what was
reported there).
2024-06-30 22:23:33 -04:00
Rafael Sadowski
59bd71ddca
Verify USB listener callback handle
Do not use `handle` if `libusb_hotplug_register_callback` fails
2024-06-30 22:23:27 -04:00
Carlo Teubner
29feb5da79
Passkey importer: fix file picker parent
When selecting "Database → Import Passkey", we show a file picker.
Previously, we did not specify a parent widget for it. This could have
undesirable effects on its presentation. (For example, with the Sway
tiling Wayland compositor, it would show the file picker as a tiled
window rather than a floating one.)

Fix the issue by passing in the parent widget. This is also in line with
all other usages of FileDialog::getOpenFileName() in this project.
2024-06-30 22:23:18 -04:00
Jonathan White
ff89a05743
Show character count in password generator dialog (#10940)
Displays the number of characters in the password field in the password generator dialog. This fixes #10858.
2024-06-30 22:22:59 -04:00
varjolintu
fe7f1e0a51
Passkeys: Fix showing correct username in the reports 2024-06-30 22:10:07 -04:00
Michal Suchanek
a0b8abecb8
Increase the time interval for window show workaround
When the keepassxc window is shown something generetes a hide event, and it is hidden again immediately.

The 50ms interval for avoiding hiding the window when shown is not enough, even on modern systems.

Make the interval longer.
2024-06-30 22:09:21 -04:00
James Carroll
1de0da3d44
Snap: Remove $HOME access from keepassxc-proxy 2024-06-30 22:09:15 -04:00
Jonathan White
8f6dd13b0a
Update translations 2024-06-19 17:32:55 -04:00
Jonathan White
809fb0d457
Version Bump to 2.7.9 2024-06-19 17:26:36 -04:00
Guido Falsi
3ab7166e63
Correct libusb usage on FreeBSD (#10736)
Change type of Handle on FreeBSD. On FreeBSD the libusb_hotplug_register_callback() function uses a pointer to a struct as a handle.

---------

Co-authored-by: Janek Bevendorff <janek@keepassxc.org>
2024-06-19 17:12:40 -04:00
James Carroll
ee08ef421d
Snap: Improve Web-browser Native Messaging host functionality (#10906)
* Snap: Improve Web-browser Native Messaging host functionality

This commit allows for the snap distribution of KeepassXC to self-manage native messaging manifests
This is done by making the binary aware of the snapd environment changes that currently prevent this.
Furthermore, the snap sandbox is expanded to the bare minimum needed to access these privileged files.

Please note if running a self-compiled / untrusted KeepassXC snap build (I.E, installed with --dangerous)
that you must manually run `sudo snap connect keepassxc:browser-native-messaging` to grant permissions.

This will work on all distributions that expose `/snap/bin/` - such as Ubuntu, Debian, etc.
For systems which don't provide `/snap/`, such as Fedora, follow instructions for enabling "Classic" snaps.
e.g., `sudo ln -s /var/lib/snapd/snap /snap`

---------

Co-authored-by: Jonathan White <support@dmapps.us>
2024-06-19 15:50:52 -04:00
Jonathan White
48bf993ac5
Fix Copy Password button when text is selected
When the user chooses to copy the password for an entry to the clipboard, previously there was logic to check if text was selected, and if so, that text was instead copied to the clipboard. That made sense if
(a) the user invoked the Copy Password action via its keyboard shortcut, and (b) that keyboard shortcut was configured (as per default) to be Ctrl-C, i.e. the same as the system action for copy-to-clipboard.

However, it made no sense if the user invoked that action in some other way, for example by clicking the corresponding toolbar button.

It also made no sense in the case that the Copy Password action had some other keyboard shortcut assigned. Also, if some other action had Ctrl-C assigned, the logic would not kick in then.

Fix all of the above by modifying the keyboard shortcut logic to intervene precisely in the case where a shortcut is pressed that matches the system copy-to-clipboard shortcut; only in that case do we now check if text is selected and if so copy that to the clipboard instead of the action we would otherwise take.

Fixes #10734.
2024-06-19 15:50:52 -04:00
Carlo Teubner
b7e6679a58
Search entry: respect shortcut config on Copy key
If the system Copy key sequence (i.e. Ctrl+C or Cmd+C) is pressed while
inside the search entry without any text being selected, previously we
would copy the currently selected entry's password. This made sense when
keyboard shortcuts were fixed. Now that they are configurable, change it
to re-route the event to the main window, which can then take the
appropriate action (i.e. Ctrl+C might be bound to some other action).
2024-06-16 17:39:09 -04:00
Carlo Teubner
071145dd19
App settings: fix widget tab order
Fixes #9765.
2024-06-16 17:20:27 -04:00
Carlo Teubner
22811471ac
Improve Entry placeholder resolution (#10846)
* Entry placeholder resolution: don't overdo it

After resolving placeholders, previously the code would do it all over again if anything had changed, multiple times up to the recursion limit. This would have the effect of applying a much greater recursion limit, which is confusing and unnecessary, and probably undesired.

* Entry tweaks and minor refactoring

- Entry::size(): when computing tag size, use same delimiter set as in other places in the code
- Factor tag delimiter set regex out into global constant
- Placeholder resolution: remove unnecessary special casing for self-referential placeholders (these are taken care of by existing recursion depth limit)
- Placeholder resolution: less wasteful string building loop
- Move some constants from being public static data members of Entry to being local to Entry.cpp (in anonymous namespace)
- Migrate some QRegEx instances to QRegularExpression, the modern alternative
- Miscellanous minor code cleanups

* Entry: fix hitting recursion limit with {braces}

When encountering a {brace-enclosed} substring, the placeholder resolution logic would previously keep recursing until it hit the recursion depth limit (currently 10). This would lead to "Maximum depth of replacement has been reached" messages, and was also wasting CPU cycles.

Fixes #1741

---------

Co-authored-by: Jonathan White <support@dmapps.us>
2024-06-16 17:20:16 -04:00
Jonathan White
ed3f7f5a16
Improve overall database settings behavior
* Fixes #10723 - only display password strength warning when actively editing the password
* Also improve behavior of minimum quality warning
* Improve behavior and handling of password changes with the database settings dialog
* Prevents loss of newly entered password when toggling between elements in the settings page
* On error, switch to tab that prevents saving database settings for easier correction
2024-06-16 17:19:57 -04:00
Jonathan White
f83cd81ad7
Fix encryption settings behavior
* Fixes #10558
2024-06-16 17:13:11 -04:00
Jonathan White
c3259b2610
Improve CSV import when title field isn't specified
* Fixes #10433
2024-06-16 17:11:33 -04:00
Jonathan White
54afbe6a2f
Improve handling of clipboard actions
* Fix #10804
2024-06-16 17:11:21 -04:00
Jonathan White
0aba77ee55
Improve handling of encrypted Bitwarden json
* Fixes #10785
2024-06-16 17:11:13 -04:00
Jonathan White
cf023253a0
Fix password clear timer inconsistency
* Fixes #10695
2024-06-16 17:11:01 -04:00
Jonathan White
c464f2bfe9
Prevent checking file hash with an empty path
A warning is issued from Qt when the path is empty. This happens most often during test runs, but can also occur when closing a database before everything gets cleaned up.
2024-06-16 17:10:53 -04:00
Carlo Teubner
f19d254a0c
TestGui: testTotp: use QTRY_COMPARE
That test failed, presumably because of inherent raciness: https://ci.keepassxc.org/buildConfiguration/KeePassXC_MacOS/248424?expandBuildDeploymentsSection=false&hideTestsFromDependencies=false&hideProblemsFromDependencies=false&expandBuildChangesSection=true&expandBuildProblemsSection=true&showLog=248423_1081_942&logFilter=debug&logView=flowAware

Paper over the raciness by using QTRY_COMPARE instead of QCOMPARE.
2024-06-16 17:10:32 -04:00
varjolintu
e7f9d58541
Passkeys: Fix incorrect username fill 2024-06-16 17:10:17 -04:00
Kevin J
8cbbe7cdfc
Fix sidebar resize behaviour (#10641)
* Fix database view splitters resize behaviour
* Set default ratio sizes for first-run based on the size of the database widget itself
* Fix setting splitter sizes before database widget has had a chance to render for the first time
* Disallow collapsing the entry view (source of several bug reports)

Fixes: #10613

---------

Co-authored-by: Jonathan White <support@dmapps.us>
2024-06-16 17:10:06 -04:00
varjolintu
8bdc7c4702
Passkeys: Return authenticatorData and publicKeyAlgorithm to extension 2024-06-16 17:10:00 -04:00
Carlo Teubner
018686afeb
Cleanup compiler warnings on all platforms (#10847)
Fixes #10730.

Co-authored-by: Christoph Reiter <reiter.christoph@gmail.com>
2024-06-16 17:09:48 -04:00