Rust SDK 17.3.0
KSM-904: Added custom server public key support for isolated deployments. Supply the key in any of three ways: an extended one-time token in the 4-segment format
<region>:clientKey:keyId:serverPublicKeyBase64, theserverPublicKeyconfig field, or programmatically viaClientOptions::set_server_public_key()/set_server_public_key_id()(programmatic values take precedence). While a custom key is active, server-pushed key-rotation hints are suppressed so the custom key is preserved across calls.KSM-882: Added automatic throttle retry with exponential backoff. HTTP 403 throttle responses are retried up to 5 times (11s, 22s, 44s, 88s, 176s ±25% jitter);
retry_afterin the response is honored. RaisesKSMRError::Throttledonce retries are exhausted. No caller changes required.KSM-997 / KSM-1009: Added typed linked-credential accessors via
Record::get_links(), returningKeeperRecordLinkvalues with permission and credential flag booleans, structured settings accessors, and AES-256-GCM decryption of AI/JIT settings payloads. The rawlinksfield is unchanged.KSM-999: Added
KeeperFile::save_to_file(path). Downloads (if needed) and writes a decrypted file to disk in one call. Accepts&str,String,&Path, orPathBuf.KSM-999: Read-only string parameters now accept
impl AsRef<str>(get_notation,get_notation_result,create_secret,update_folder) andKeeperFile::save_fileacceptsimpl AsRef<Path>; constructors acceptimpl Into<String>(ClientOptions::new,RecordCreate::new,KeeperField::new,complete_transaction). ExistingStringcallers compile unchanged.KSM-891 / KSM-892 / KSM-893: Log initialization is now the
tracing-initfeature and blocking HTTP is theblockingfeature; both remain indefault. Building withdefault-features = falseno longer pulls in either dependency.KSM-1000: The
totpfeature can now be disabled. A core dependency on it has been removed, makingdefault-features = falsefully functional without TOTP.KSM-998: Fixed: connecting to an environment whose active server key is not the SDK default could hang in an infinite 401 retry loop. The rotated key is now applied on the first retry, so the connection succeeds.
KSM-973:
SecretsManager::new()now correctly documents the deferred bind contract. The one-time token is redeemed on the first network call, not in the constructor. Callers persisting config to external storage should callget_secrets(vec![])immediately afternew()to force the bind before exporting.Security: Bumped
quinn-prototo 0.11.15 (RUSTSEC-2026-0185).
Links:
Last updated
Was this helpful?

