feat(sec): 二期签名鉴权 2A 最小闭环 (agent-185) — meow_verify(Ed25519验签CLI,公钥固化,TweetNaCl+SHA256单文件) + meow_sign(宿主keygen/sign,尾部180B footer签名块,私钥仅.keys/不入库) + nyai/meow_pkg_install 验签分级(有签必验/os.meow.*无签拒装/第三方直装告警/三重绑定/原签存.mpk.src导出保留) + svc_power IPC鉴权(SO_PEERCRED→/proc/pid/exe→包名/系统身份allowlist,系统动作仅os.meow.*或系统身份) + cmd_upgrade同步签名分级防绕过

meow_verify 37e50606; nyai f2938d28; svc_power e0494eb7; launcher 24c9ee5d(含热重载)
宿主验证12项全过(正例/篡负载/篡包名/无签系统包拒/第三方直装/降级拒/导出round-trip byte-identical/verify缺失宁缺勿装/footer容忍/E2E PERM/鉴权分类)
出入: TweetNaCl替orlp/ed25519(任务允许同等实现); 读级暂仍uid==0(用户随后定案放宽到任意调用者,待改); 系统身份allowlist为启发式
This commit is contained in:
MeowOS committed 2026-08-31 04:33:46 +08:00
1 parent f50abae02a
commit 3f57d7fd4f
22 files changed
+1978 -15

No files matched your search

+43
View File
@@ -0,0 +1,43 @@
#!/bin/bash
# build_verify.sh — meow_verify 交叉编译(mipsel 静态,固件 /usr/bin/meow_verify)+ 宿主编译可选。
#
# 目标:R3 Pro II / MeowOS(mipsel-linux-muslsf,静态)。纯 POSIX+Linux(无外部依赖,除 vendor
# tweetnacl.c/sha256.c 全内编)。公钥编译期固化:meow_signing_pub.h(由 meow_sign keygen 生成)。
#
# 警告策略(诚实标注):本项目自有代码为 0 warning;
# - meow_verify.c / sha256.c / meow_sig.h → -Wall -Wextra(0 warning)
# - tweetnacl.c(第三方 public-domain vendor 单文件)→ 单独对象 + -Wno-sign-compare
# -Wno-unterminated-string-initialization -Wno-unused-function(作者原写法:u64/u32 与 int 混比、
# "expand 32-byte k" 16B char 数组塞 17 字节。非本项目代码,局部放宽)。
# - 不启用 gc-sections:meow_verify.c 的 randombytes() stub 满足 crypto_sign_keypair 的引用,整链静态。
#
# 用法:
# ./build_verify.sh # 交叉编译 → patch_v2/meow_verify/meow_verify(mipsel 静态)
# ./build_verify.sh host # 宿主编译 → patch_v2/meow_verify/meow_verify_host
set -e
cd "$(dirname "$0")"
ROOT="$HOME/Project/R3ProII"
CC="$ROOT/.tools/zig-mipsel-cc"
TNFLAGS="-Os -Wno-sign-compare -Wno-unterminated-string-initialization -Wno-unused-function -static"
if [ "$1" = "host" ]; then
HOST_CC="${CC_HOST:-cc}"
"$HOST_CC" -Os -Wno-sign-compare -Wno-unterminated-string-initialization -Wno-unused-function -c tweetnacl.c -o tweetnacl_v.o
"$HOST_CC" -Os -Wall -Wextra -c sha256.c -o sha256_v.o
"$HOST_CC" -Os -Wall -Wextra -c meow_verify.c -o meow_verify_v.o
"$HOST_CC" meow_verify_v.o sha256_v.o tweetnacl_v.o -o meow_verify_host
rm -f tweetnacl_v.o sha256_v.o meow_verify_v.o
echo "== meow_verify (host) =="
ls -la meow_verify_host; md5sum meow_verify_host; file meow_verify_host
exit 0
fi
"$CC" $TNFLAGS -c tweetnacl.c -o tweetnacl_v.o
"$CC" -Os -Wall -Wextra -static -c sha256.c -o sha256_v.o
"$CC" -Os -Wall -Wextra -static -c meow_verify.c -o meow_verify_v.o
"$CC" -Os -static meow_verify_v.o sha256_v.o tweetnacl_v.o -o meow_verify
rm -f tweetnacl_v.o sha256_v.o meow_verify_v.o
echo "== meow_verify (mipsel static) =="
ls -la meow_verify
md5sum meow_verify
file meow_verify