Skip to content

docs: record that libsecret is validated against GNOME Keyring only - #75

Merged
StuartMeeks merged 1 commit into
mainfrom
docs/19-kwallet-validation-findings
Aug 25, 2026
Merged

docs: record that libsecret is validated against GNOME Keyring only#75
StuartMeeks merged 1 commit into
mainfrom
docs/19-kwallet-validation-findings

Conversation

@StuartMeeks

Copy link
Copy Markdown
Owner

Fixes #19.

The issue said this couldn't be verified. It can.

Constraint: needs a KWallet environment; can't be verified on the current dev box or in headless CI without provisioning one.

Ubuntu 26.04's kwallet6 ships ksecretd, a Secret Service compatibility daemon. Its binary implements the full org.freedesktop.Secret.{Service,Collection,Item,Session,Prompt} set and claims the org.freedesktop.secrets bus name, so it can be swapped in for gnome-keyring locally. That is what I did.

The harness stops the gnome-keyring user unit, starts ksecretd, verifies which pid actually owns the bus name before trusting anything, runs the suite, and restores gnome-keyring. The ownership check is not ceremony — only one process can hold that name, so without it a "passing" run might just be gnome-keyring answering.

Result: two distinct failures

1. No session collection. 46 failures (23 tests × 2 TFMs), single root cause:

InvalidOperationException : secret_password_storev_sync failed:
  No such object path '/org/freedesktop/secrets/aliases/session'

The test suite targets "session" because CI runners have no provisioned login keyring. That collection is a GNOME Keyring convenience — KWallet does not provide it.

2. The shipped configuration hangs. Probing KeyringCollection = "default", the actual default, does not fail — it never returns. ksecretd logs:

Using kwallet without parent window!

It is trying to raise a wallet-unlock dialog. All four of our libsecret entry points pass a NULL GCancellable, so there is no timeout and no cancellation. The probe had to be killed at 120 s.

That second one is a product defect independent of KWallet — a locked GNOME login keyring would prompt too — so it is filed separately as #74 rather than buried in a docs change.

What this PR changes

Documentation only, no behaviour change:

Verification

Build clean, 412 tests (354 passed, 58 skipped) against gnome-keyring — unchanged, since nothing executable changed. gnome-keyring was confirmed restored as the bus-name owner after each experiment.

🤖 Generated with Claude Code

)

The backend was documented as working with "GNOME Keyring, KWallet's shim, any
Secret Service implementation". Testing against KWallet disproves that.

Ubuntu 26.04's kwallet6 ships ksecretd, a Secret Service compatibility daemon
that claims org.freedesktop.secrets, so the environment the issue said could not
be provisioned is in fact available. Running the suite against it, with the bus
name owner verified as ksecretd rather than assumed, produced 46 failures from a
single root cause: KWallet does not implement the session collection alias that
gnome-keyring provides, so the tests' KeyringCollection = "session" fails with
"No such object path '/org/freedesktop/secrets/aliases/session'".

Probing the shipped configuration instead -- KeyringCollection = "default" --
does not fail; it hangs. ksecretd logs "Using kwallet without parent window!"
and blocks trying to raise an unlock dialog. Our four libsecret entry points all
pass a NULL GCancellable, so there is no timeout and no cancellation. That is a
product defect in its own right and is filed as #74.

Docs now state what is validated: GNOME Keyring only, KWallet unsupported, other
implementations untested. KeyringCollection's doc notes that "session" is a
GNOME convenience rather than a portable value -- worth saying, since the test
suite depends on it. No behaviour change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@StuartMeeks
StuartMeeks merged commit e844610 into main Aug 25, 2026
9 checks passed
@StuartMeeks
StuartMeeks deleted the docs/19-kwallet-validation-findings branch August 25, 2026 04:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

libsecret: validate against KWallet's Secret Service shim

1 participant