Repository navigation
Updates
The project supports signed online and offline updates.
Each signed release should provide:
multipack-parser-arm64.tar.gzmultipack-parser-arm64-manifest.jsonmultipack-parser-arm64-manifest.sig
- App queries GitHub latest release API.
- Finds package + manifest + signature assets.
- Verifies manifest signature.
- Verifies package SHA-256.
- Downloads/copies and installs update.
flowchart TD
Check["Check Latest Release"] --> Assets["Find Package Manifest Signature"]
Assets --> VerifySig{"Manifest Signature Valid"}
VerifySig -- "No" --> FailSig["Stop with Verification Error"]
VerifySig -- "Yes" --> VerifyHash{"Package SHA256 Matches"}
VerifyHash -- "No" --> FailHash["Stop with Integrity Error"]
VerifyHash -- "Yes" --> Install["Install Update"]
Put the same three files in:
- USB root, or
-
updates/under USB path
The manifest package.file value must match the package filename.
flowchart TD
Usb["USB Directory"] --> Read["Read Manifest and Signature"]
Read --> VerifyUsbSig{"Signature Valid"}
VerifyUsbSig -- "No" --> UsbFail["Reject USB Update"]
VerifyUsbSig -- "Yes" --> VerifyUsbHash{"SHA256 Valid"}
VerifyUsbHash -- "No" --> UsbFailHash["Reject Package"]
VerifyUsbHash -- "Yes" --> Copy["Copy to Cache and Install"]
The current app embeds the default Ed25519 public key used to verify signed
update manifests. Normal ARM64 release bundles and portable .run launchers do
not require a separately deployed public key.
Runtime lookup order is:
MULTIPACK_UPDATE_PUBLIC_KEY_PEMMULTIPACK_UPDATE_PUBLIC_KEY_FILE-
update-public-key.pemnext tomultipack-parser -
update-public-key.pemin the current working directory - Embedded public key compiled into
src/system/AutoUpdater.cpp
Use file/env overrides only for development, testing, or key rotation.
Generate Ed25519 key pair:
openssl genpkey -algorithm Ed25519 -out update-signing-private.pem
openssl pkey -in update-signing-private.pem -pubout -out update-public-key.pemSet GitHub secret:
-
UPDATE_SIGNING_PRIVATE_KEY_B64= base64(private key PEM)
The secret is a repository Actions secret. Do not commit or deploy the private key or the base64 secret value.
When rotating keys, update the embedded public key in AutoUpdater.cpp and then
rebuild the ARM64 release bundle so future updates can verify the new signatures.
See repository doc docs/UPDATE_SIGNING.md for full release setup.