24 lines
880 B
Bash
24 lines
880 B
Bash
#!/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 包。"
|