linux-credentials / linux-credentials/oo7
Fails to migrate a non-encrypted keyring
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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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