release: runtime-key.json has no pipeline integration #10
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The m2pack-secure client loader refuses to load
.m2parchives unless the launcher delivers a runtime master key out-of-band (shared mem / env var / CLI flag — seem2pack-secure/docs/launcher-contract.md).Today we wired the launcher to read
runtime-key.jsonfrom the install dir and forwardmaster_key_hex/sign_public_key_hex/key_idvia theM2PACK_MASTER_KEY_HEXenv var family, but the file itself is currently manually produced on the VPS:then copied into the release tree next to
Metin2.exebeforemake-manifest.pyruns.What needs to happen
make-release.shshould take--runtime-key(master.key + signing.pub + key-id) and callm2pack export-runtime-keyto generateruntime-key.jsoninto the staging tree.runtime-key.json(today it does, since it lives in the tree when make-manifest walks — but this should be documented, not accidental).key_idshould be a single flag; the launcher already re-fetchesruntime-key.jsonon every update via content-addressed blob.formatism2packbut the tree has noruntime-key.json(fail fast).Security note
The current design parks the master key in a public webroot — not a secret in the strict sense, more like DRM. The launcher contract lists three delivery mechanisms (shared memory, env, CLI); on Linux/Wine shared mem is painful across the Wine boundary, env is what the patched launcher uses. Worth documenting the threat model in
docs/release-workflow.md.Related: jann/metin-launcher PR #1 (runtime key delivery in GameProcess).