#!/bin/bash # sign-payload: build a tarball, sign it with Ed25519 privkey set -e TAR=$1 shift OUT=${2:-payload.tar.gz} SIGN_KEY=${SIGN_KEY:-ed25519-priv.hex} PAYLOAD_SIG=payload.sig # Files to tar FILES=("$@") tar czf "$OUT" "${FILES[@]}" # Hash tarball PAYLOAD_HASH=$(sha256sum "$OUT" | cut -d' ' -f1) echo "Signing $OUT..." >&2 # Use common payload signing tool (assumes Rust build, demo only) if [ ! -f "$SIGN_KEY" ]; then echo "must provide SIGN_KEY=ed25519-priv.hex" >&2 exit 1 fi cat "$OUT" | xxd -p -c 256 | tr -d '\n' > payload.hex # The following assumes sign_payload is available: `cargo run --bin sign_payload < payload.hex > payload.sig` # Or use dalek CLI e.g. minisign, see README echo "$PAYLOAD_HASH" > payload.hash # For demo, just leave signature as TODO