Release .NET SDK v18.0.0 - #1128
Draft
stas-schaller wants to merge 8 commits into
Draft
Conversation
On HTTP 403 {"error":"throttled"}, PostQuery now retries up to 5 times
with exponential backoff (11s, 22s, 44s, 88s, 176s) plus +/-25% jitter,
honoring retry_after from the response when present, and throws the new
KeeperThrottleException once retries are exhausted. KeeperHttpResponse now
carries the HTTP StatusCode (populated by PostFunction) so the retry is
gated on 403 and runs before the key-rotation handler, leaving it unchanged.
Adds an optional throttleSleep seam on SecretsManagerOptions for tests.
) Symmetric ±25% jitter could fire a retry before the backend's 10s memcached window expires (floor - 25% = 8.25s). Switch to 0 to +25% so the delay is always >= the floor. Also add MaxThrottleDelaySec = 176 constant and apply it as a cap in ThrottleDelayMs so a server-supplied retry_after above 176s is clamped rather than honored blindly.
…et and DeleteFolder
stas-schaller
marked this pull request as draft
August 31, 2026 19:11
…ds by key size (KSM-1060) Drive (NSF) folders require AES-GCM for the folder key wrap and folder data in CreateFolder/UpdateFolder; the previous CBC encryption caused "invalid sharedFolderKey" errors against NSF-enabled endpoints. FetchAndDecryptFolders now dispatches decrypt mode by subfolder key byte length (60 = GCM, 64 = CBC legacy) - mirrors the read-path fix already on the other KSM SDKs. KeeperFolder gains a UseGcm property so UpdateFolder encrypts with the same cipher the folder was created with. Also bumps AssemblyVersion/FileVersion/PackageVersion to 18.0.0 to match the release branch. Verified end-to-end on dev CA: all folders decrypt via GetFolders (previously GCM-created folders failed with padding errors); CreateFolder, read-back, UpdateFolder, and DeleteFolder all round-trip correctly for a fresh GCM subfolder.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Release branch for v18.0.0 of the .NET SDK. Bundles bug fixes for folder key handling, GetFolders crash safety, per-item delete error surfacing, and throttle retry behavior.
Changes
Bug Fixes
GetFolders()failed with "App key is missing from the storage" when called as the first method on a freshly bound application. It now processesencryptedAppKeyfrom the server binding response the same wayGetSecrets()does.GetFolders()threw when any folder in the response had a corrupted or missing key. The SDK now skips undecryptable folders and returns the rest normally.DeleteSecret()andDeleteFolder()silently reported success when the server rejected some UIDs. The SDK now surfaces per-item error messages from the server.retry_afterat 176s.New Features
{"error":"throttled"},PostQuerynow retries up to 5 times with exponentially increasing delays (11s, 22s, 44s, 88s, 176s) plus one-sided jitter, honoringretry_afterfrom the response. A typedKeeperThrottleExceptionis thrown once retries are exhausted.dbConnectionMethodtoPamSettingsConnection.Breaking Changes
None.
Security Impact
KSM-1044 touches the initial key derivation path:
FetchAndDecryptFoldersnow decryptsencryptedAppKeyusing the client key and stores the result as the app master key, matching the behavior already inFetchAndDecryptSecrets. No new cryptographic operations introduced.Related Issues