Add managed server profiles and account login
.NET port / test (macos-latest) (push) Canceled after 0s
.NET port / test (ubuntu-24.04) (push) Canceled after 0s
.NET port / test (windows-latest) (push) Canceled after 0s
.NET port / apple-client (push) Canceled after 0s
.NET port / cpp-conformance (push) Canceled after 0s

This commit is contained in:
2026-09-16 22:13:34 +02:00
parent edd7783a5c
commit 52f7f51e59
7 changed files with 267 additions and 26 deletions
+12
View File
@@ -96,6 +96,18 @@ Only explicit `Pin` or `Remove` changes the file. Pin replacement requires an
explicit caller decision; malformed files fail closed. Changes replace the file
atomically before updating memory. Use one owner per store/file.
`ServerProfile` is the app-facing saved-server model shared by platform clients. Construct
profiles with `ServerProfile.Create`, which trims values and requires a host, nonzero port,
and username for account authentication. A profile contains only its stable ID, endpoint,
authentication mode, username or guest nickname. It deliberately has no password field.
Platform clients own any secret storage, such as macOS Keychain integration.
`ServerProfileStore` serializes profiles as camel-case JSON with string authentication
values. Missing, malformed and unreadable files load as an empty list; invalid individual
profiles are discarded. Saving filters invalid entries and replaces the file through a
same-directory temporary file. Use one owner per store/file and do not treat it as a
credential store.
`ServerIdentity` reads and writes the native 96-byte Ed25519 format:
`public-key[32] || seed[32] || public-key[32]`. Loading verifies both public-key
copies against the seed. Disposal clears the owned seed.