Files

24 lines
880 B
Bash
Raw Permalink Normal View History

#!/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 包。"