#!/usr/bin/env bash set -euo pipefail # Allow CI to fall back to a deterministic test key when MIRROR_SIGN_KEY_B64 is unset, # but forbid this on release/tag builds when REQUIRE_PROD_SIGNING=1. # Throwaway dev key (Ed25519) generated 2025-11-23; matches the value documented in # docs/modules/mirror/signing-runbook.md. Safe for non-production smoke only. DEFAULT_TEST_KEY_B64="LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1DNENBUUF3QlFZREsyVndCQ0lFSURqb3pDRVdKVVFUdW1xZ2gyRmZXcVBaemlQbkdaSzRvOFZRTThGYkZCSEcKLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo=" if [[ -z "${MIRROR_SIGN_KEY_B64:-}" ]]; then if [[ "${REQUIRE_PROD_SIGNING:-0}" == "1" ]]; then echo "[error] MIRROR_SIGN_KEY_B64 is required for production signing; refusing to use test key." >&2 exit 1 fi echo "[warn] MIRROR_SIGN_KEY_B64 not set; using embedded test key (non-production) for CI signing" >&2 MIRROR_SIGN_KEY_B64="$DEFAULT_TEST_KEY_B64" fi ROOT=$(cd "$(dirname "$0")/../.." && pwd) KEYDIR="$ROOT/out/mirror/thin/tuf/keys" mkdir -p "$KEYDIR" KEYFILE="$KEYDIR/ci-ed25519.pem" printf "%s" "$MIRROR_SIGN_KEY_B64" | base64 -d > "$KEYFILE" chmod 600 "$KEYFILE" # Export public key for TUF keyid calculation openssl pkey -in "$KEYFILE" -pubout -out "$KEYDIR/ci-ed25519.pub" >/dev/null 2>&1 STAGE=${STAGE:-$ROOT/out/mirror/thin/stage-v1} CREATED=${CREATED:-$(date -u +%Y-%m-%dT%H:%M:%SZ)} SIGN_KEY="$KEYFILE" STAGE="$STAGE" CREATED="$CREATED" "$ROOT/src/Mirror/StellaOps.Mirror.Creator/make-thin-v1.sh"