From fefe88873553b70a4a6f62498e4f3299cdc3fa02 Mon Sep 17 00:00:00 2001 From: Maarten Meijer <57093022+maarten0912@users.noreply.github.com> Date: Tue, 10 Oct 2023 10:03:27 +0200 Subject: [PATCH] Find password even with no username supplied in OSX backend --- keyring/backends/macOS/__init__.py | 3 --- keyring/backends/macOS/api.py | 4 +++- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/keyring/backends/macOS/__init__.py b/keyring/backends/macOS/__init__.py index 18ec1ec4..334db360 100644 --- a/keyring/backends/macOS/__init__.py +++ b/keyring/backends/macOS/__init__.py @@ -57,9 +57,6 @@ def set_password(self, service, username, password): @warn_keychain def get_password(self, service, username): - if username is None: - username = '' - try: return api.find_generic_password(self.keychain, service, username) except api.NotFound: diff --git a/keyring/backends/macOS/api.py b/keyring/backends/macOS/api.py index 8ea4849d..5dbbc0c6 100644 --- a/keyring/backends/macOS/api.py +++ b/keyring/backends/macOS/api.py @@ -128,11 +128,13 @@ class SecAuthFailure(Error): def find_generic_password(kc_name, service, username, not_found_ok=False): + username_kwarg = {'kSecAttrAccount': username} if username is not None else {} + q = create_query( kSecClass=k_('kSecClassGenericPassword'), kSecMatchLimit=k_('kSecMatchLimitOne'), kSecAttrService=service, - kSecAttrAccount=username, + **username_kwarg, kSecReturnData=create_cfbool(True), )