Skip to content

deps: keyring 3 -> keyring-core 1 + apple-native stores#141

Merged
johncarmack1984 merged 1 commit into
mainfrom
deps/keyring-4
Jul 7, 2026
Merged

deps: keyring 3 -> keyring-core 1 + apple-native stores#141
johncarmack1984 merged 1 commit into
mainfrom
deps/keyring-4

Conversation

@johncarmack1984

Copy link
Copy Markdown
Member

The held major from #139, done as its own pass with the upgrade proof it needed.

Architecture -- the v4-recommended direct path: keyring-core + explicit store install (core ships no default). Test/debug builds keep the hermetic no-Keychain-prompt mock contract via keyring_core::mock; release installs the macOS legacy-keychain store or the iOS protected-data store once behind the existing Once. Other targets (Linux CI) compile with no store and surface as signed-out.

Upgrade-in-place proven, not assumed -- a dual-major probe binary against the real macOS keychain: keyring 3 wrote a session, v4's store read it back byte-for-byte (same generic-password class + service/account attributes), and a v4 delete is visible to v3. Existing installs keep their sessions. iOS is source-verified equivalent (both versions drive security-framework generic passwords with the same attribute mapping; v4 adds protection options on write only).

Full just check green locally incl. the desktop keychain-restore test on the mock path.

The v4 architecture, taken the recommended way: link keyring-core
directly and install the store explicitly (core ships no default) --
the in-memory mock in test/debug builds (the hermetic, prompt-free dev
contract, unchanged), the macOS legacy-keychain store or the iOS
protected-data store in release, chosen once behind the existing Once.
Other targets install nothing and surface as signed-out, which is what
Linux CI compiles.

Upgrade-in-place is proven, not assumed: a dual-major probe binary
wrote a session with keyring 3 against the real macOS keychain and
keyring 4's store read it back byte-for-byte (same generic-password
class, same service/account attributes), and a v4 delete is visible to
v3. iOS is source-verified equivalent: both versions drive
security-framework generic passwords with the same attribute mapping.
@johncarmack1984 johncarmack1984 merged commit 2977a6f into main Jul 7, 2026
8 checks passed
@johncarmack1984 johncarmack1984 deleted the deps/keyring-4 branch July 7, 2026 06:00
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.

1 participant