-- 008_steam_credentials.sql — operator's cached Steam login for SteamCMD. -- -- Some games (DayZ app 223350, Arma, a handful of others) require a Steam -- account that owns the game — anonymous SteamCMD login returns -- "No subscription". The panel stores one Steam credential per operator -- (for v1 we only support single-user mode, so a single row is enough). -- -- password_ciphertext is AES-GCM encrypted using a key derived from the -- controller's CA private key via HKDF-SHA256; see auth.go's -- steamCredentialKey(). The plaintext password never touches disk or logs. -- -- sentry_file is the SSFN-style device-auth blob SteamCMD writes after a -- successful Steam Guard challenge. Storing it lets subsequent logins skip -- the 2FA prompt. NULL until first successful login. CREATE TABLE IF NOT EXISTS steam_credentials ( id SERIAL PRIMARY KEY, username TEXT NOT NULL UNIQUE, password_ciphertext BYTEA NOT NULL, password_nonce BYTEA NOT NULL, sentry_file BYTEA, -- SSFN device-auth blob, filled after successful login last_used_at TIMESTAMPTZ, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() );