Table of Contents

Interface IPinUpdateSidecar

Namespace
FishMMO.Client.Security
Assembly
FishMMO.Client.dll

Scaffold interface for out-of-band TLS pin updates.

This is a forward-planning scaffold only. No production implementation is currently wired into the client. The NullPinUpdateSidecar default is always returned, meaning the static pin set from ClientSecurityBootstrap is never overridden at runtime.

Hard-coded compile-time pins (see ClientSecurityBootstrap) require shipping a new client build to rotate keys. That is unacceptable when a CA-incident or HSM rotation forces an emergency pin swap on a faster cadence than the client release pipeline.

The intended production implementation:

  • Fetches a signed manifest (Ed25519 / RSA-PSS) from a well-known URL,
  • Verifies the signature against a compile-time embedded public key (a separate trust anchor from the TLS PKI it is updating!),
  • Returns the new pin set with an effective-from / expires-at window so the bootstrap can reject stale manifests.

The bootstrap MUST treat sidecar failures as advisory only and never downgrade pinning below what was statically configured. A compromised sidecar host must not be able to remove pins — only narrow them.

public interface IPinUpdateSidecar

Methods

TryFetchUpdateAsync(CancellationToken)

Attempts to retrieve an updated pin manifest. Implementations must validate signature + freshness before returning. Returning null means "no update available" and is not an error.

Task<PinUpdateManifest> TryFetchUpdateAsync(CancellationToken cancellationToken)

Parameters

cancellationToken CancellationToken

Returns

Task<PinUpdateManifest>