#!/usr/bin/env bash # init_keys.sh —— 生成 KB 主密钥(K_master, AES-256, base64, 权限 600)。 # 与 phase_b 的区别:不生成供应商 Ed25519 密钥对(无授权体系)。 set -euo pipefail umask 077 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" VERSION="${VERSION:-2.0.0}" OUT_DIR="${OUT_DIR:-$SCRIPT_DIR/../build/$VERSION}" KEY_FILE="${KEY_FILE:-$OUT_DIR/kb.key}" [[ "$VERSION" =~ ^[A-Za-z0-9._-]+$ ]] || { echo "非法 VERSION: $VERSION" >&2; exit 1; } mkdir -p "$OUT_DIR" chmod 700 "$OUT_DIR" if [ -f "$KEY_FILE" ]; then echo "复用现有 KB 主密钥: $KEY_FILE" exit 0 fi python3 -c "import base64,os; print(base64.b64encode(os.urandom(32)).decode())" > "$KEY_FILE" chmod 600 "$KEY_FILE" echo "已生成 KB 主密钥: $KEY_FILE ($(wc -c < "$KEY_FILE") bytes base64)" echo "请立即离线备份;丢失将无法解密已交付的 KB 包。"