linux-credentials / linux-credentials/oo7

Fails to migrate a non-encrypted keyring

Open
#572 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
373
Forks
39
Avg merge
14h 2m
Merged PRs (30d)
14

Description

I removed the password from my login.keyring in GNOME Keyring (due to various ongoing problems), which causes gnome-keyring-daemon to write the file in text (GLib "keyfile") format, instead of binary format. Currently oo7 version 0.6.0 does not recognize this and fails with:

```
2026-09-17T08:51:45.315958Z DEBUG oo7_daemon::service: Scanning for v0 keyrings in /home/grawity/.local/share/keyrings
2026-09-17T08:51:45.316207Z DEBUG oo7_daemon::service: Found v0 keyring: login
2026-09-17T08:51:45.316338Z DEBUG oo7::file::locked_keyring: Keyring file found, loading its content
2026-09-17T08:51:45.316618Z WARN oo7_daemon::service: Failed to load keyring "/home/grawity/.local/share/keyrings/login.keyring": Portal error File header doesn't match FILE_HEADER Some(
"[keyring]\ndispla",
)
2026-09-17T08:51:45.316677Z INFO oo7_daemon::service: No keyrings discovered in data directory
2026-09-17T08:51:45.316690Z INFO oo7_daemon::service: No default collection found, creating 'Login' keyring
2026-09-17T08:51:45.316765Z DEBUG oo7::file::locked_keyring: Keyring file not found, creating a new one
2026-09-17T08:51:45.316810Z INFO oo7_daemon::service: Created default 'Login' collection (locked)
```

I did not notice any changes in Git since `0.6.0` that would add support for the decrypted format.

The contents of login.keyring look like:

```
[keyring]
display-name=Login
ctime=0
mtime=1441960049
lock-on-idle=false
lock-after=false

[917]
item-type=0
display-name=Remmina: Shore - password
secret=BlahBlahBlahblah
mtime=1768377640
ctime=1768377640

[917:attribute0]
name=filename
type=string
value=/home/grawity/.local/share/remmina/group_rdp_shore_shore-sym.remmina

[917:attribute1]
name=key
type=string
value=password

[917:attribute2]
name=xdg:schema
type=string
value=org.remmina.Password
```

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in oo7::file::locked_keyring, where the log shows the keyring content is loaded and the FILE_HEADER check fails. Compare the expected binary format with the displayed GLib keyfile format and trace how loaded items are represented. Done means a non-encrypted login.keyring is discovered and its entries load without the shown error.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
security
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
65/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.