OutWit.Shared.Secrets.Provider.MacOS
1.0.0
dotnet add package OutWit.Shared.Secrets.Provider.MacOS --version 1.0.0
NuGet\Install-Package OutWit.Shared.Secrets.Provider.MacOS -Version 1.0.0
<PackageReference Include="OutWit.Shared.Secrets.Provider.MacOS" Version="1.0.0" />
<PackageVersion Include="OutWit.Shared.Secrets.Provider.MacOS" Version="1.0.0" />
<PackageReference Include="OutWit.Shared.Secrets.Provider.MacOS" />
paket add OutWit.Shared.Secrets.Provider.MacOS --version 1.0.0
#r "nuget: OutWit.Shared.Secrets.Provider.MacOS, 1.0.0"
#:package OutWit.Shared.Secrets.Provider.MacOS@1.0.0
#addin nuget:?package=OutWit.Shared.Secrets.Provider.MacOS&version=1.0.0
#tool nuget:?package=OutWit.Shared.Secrets.Provider.MacOS&version=1.0.0
OutWit.Shared.Secrets.Provider.MacOS
macOS Keychain provider for
OutWit.Shared.Secrets.Providers:
generic passwords in the login keychain, service com.outwit.secrets,
account = the key. Payloads are binary-safe; an existing item is replaced in
place (SecKeychainItemModifyAttributesAndData) — there is no delete-then-add
window in which a crash leaves nothing.
A support engineer finds entries in Keychain Access → login, searching for
com.outwit.secrets.
The ACL, stated prominently
The keychain names the binary that created an item. An item added by one binary and read by another prompts the user — and a prompt in a service is a hang. Keep the storing and the reading binary the same (the normal case: the application stores its own credential), or expect the prompt after an update that changes the binary's identity — sign the app so the identity survives updates.
This provider is for user-facing applications and uses the login keychain. A daemon belongs in the System keychain with an ACL story of its own; that is a separate provider when somebody needs it, not a mode of this one.
Use
services.AddSingleton<ISecretStore>(new SecretStoreKeychain());
// or, for a cross-platform desktop app: OutWit.Shared.Secrets.Desktop
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- OutWit.Shared.Secrets.Providers (>= 1.0.0)
-
net8.0
- OutWit.Shared.Secrets.Providers (>= 1.0.0)
-
net9.0
- OutWit.Shared.Secrets.Providers (>= 1.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on OutWit.Shared.Secrets.Provider.MacOS:
| Package | Downloads |
|---|---|
|
OutWit.Shared.Secrets.Desktop
The composite desktop package for OutWit.Shared.Secrets: references the Windows, macOS and Linux providers and exposes SecretStoreDesktop.ForCurrentPlatform(), so a cross-platform desktop application takes one reference and writes one line. Selecting among the operating-system providers by runtime platform is not silent degradation — on each desktop platform exactly one OS store is right, and all three protect the same way. Falling back to the File provider stays a deliberate, configured choice. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 131 | 8/31/2026 |