docs: add .gitattributes to recognize MoonBit language Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
docs: add .gitattributes to recognize MoonBit language
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
MoonBit 供应链安全工具链。
MoonGuard 是一个纯 MoonBit 实现的供应链安全工具链,提供:
verify_package
SecurityReport
moon_guard
keygen
sign
verify
trust
typosquat
manifest
hash
audit
version
moon_guard/ ├── lib/ # 核心库 │ ├── manifest/ # 清单 + SHA-256 │ ├── crypto/ # Ed25519 + SHA-512 │ ├── trust/ # 可信密钥库(PEM/JSON 持久化) │ ├── verify/ # 审计流水线 + typosquat │ └── report/ # 安全报告(含风险评分) ├── cmd/main/ # CLI 入口 ├── examples/ # 可运行示例(examples/basic_audit) ├── moon.mod.json # 模块清单 └── LICENSE # Apache-2.0
FileEntry
{ path, content }
FileHash
{ path, hash, size }
Manifest
sha256()
hash_string()
generate_manifest()
verify_manifest()
manifest_to_json()
manifest_summary()
take_chars_()
slice_chars_()
KeyPair
{ public_key, secret_key }
Signature
{ r, s }
generate_keypair(seed)
sign(message, keypair)
verify(message, signature, public_key)
signature_to_hex()
r||s
TrustLevel
Full
Partial
Untrusted
TrustedKey
TrustStore
add_key()
remove_key()
get_key()
is_trusted()
find_by_owner()
key_count()
list_all()
replace_all()
validate_public_key_format()
normalize_public_key()
public_key_to_pem()
public_key_from_pem()
trust_store_to_json()
trust_store_from_json()
VerifyResult
{ package_name, is_valid, signature_ok, trust_status, errors, warnings }
verify_package()
audit_package()
detect_typosquat()
detect_typosquat_strict()
1odash
Iodash
batch_typosquat_check()
typosquat_summary()
RiskLevel
Critical
High
Medium
Low
Info
ReportStatus
Pass
Warning
Fail
Finding
TyposquatSummaryEntry
add_finding()
recompute_score()
[0, 10]
summary()
report_to_json()
make_finding()
cmd/main 编译为 moon_guard 可执行文件。用 moon run 调用:
cmd/main
moon run
moon run cmd/main -- <command> [args]
子命令一览:
keygen [seed]
sign <msg> <seed>
verify <msg> <sig_hex> <pubkey>
trust add <key_id> <pubkey> <owner> [level]
trust list
trust remove <key_id>
typosquat <name> <known...>
manifest gen <pkg> <ver> [f:c...]
path:content
manifest verify <pkg> <ver> [f:c]
hash <content>
audit <pkg> <ver> [f:c...]
help
# 1. 生成 Ed25519 密钥对。 moon run cmd/main -- keygen # 2. 计算任意内容的 SHA-256。 moon run cmd/main -- hash "Hello, MoonBit" # 3. 用确定性种子签名 UTF-8 消息。 moon run cmd/main -- sign "Hello, MoonBit" 9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60 # 4. 对一个由两个文件组成的合成包做完整审计。 moon run cmd/main -- audit demo-pkg 1.0.0 \ "src/main.mbt:fn main { println(\"hello\") }" \ "src/lib.mbt:pub fn add(a: Int, b: Int) -> Int { a + b }" # 5. 检测 typosquat(数字 1 假冒字母 l)。 moon run cmd/main -- typosquat 1odash lodash react express
moon add chenzehaoo/moon_guard
examples/basic_audit 是官方端到端示例:
examples/basic_audit
moon run examples/basic_audit
它会调用每个 lib 模块的公开 API,同时输出 JSON 格式的安全报告。可作为下游包复制粘贴的起点。
moon test
moon test --target wasm
moon check
moon check --deny-warn
moon fmt --check
moon fmt
moon info
.mbti
moon coverage analyze
CI 在 ubuntu-latest / macos-latest / windows-latest × wasm / native 五种组合上跑 moon fmt --check / moon info / moon check --deny-warn / moon test。
ubuntu-latest
macos-latest
windows-latest
wasm
native
moon login # 一次性:粘贴你的 mooncakes.io token moon publish # 把模块以 chenzehaoo/moon_guard 名义上传
moon.mod.json 携带模块名、仓库地址、摘要、描述、关键字、支持平台(native / wasm / wasm-gc),所有字段都会展示在 mooncakes.io 包页上。
moon.mod.json
wasm-gc
.github/workflows/ci.yml 在每个 push / PR 上跑:
.github/workflows/ci.yml
每个 cell 跑四个步骤:moon fmt --check → moon info → moon check --deny-warn → moon test。
无。MoonGuard 全部用纯 MoonBit 实现,只用到标准 core 库(最关键的是 @bigint,用于 Ed25519 field 算术)。
core
@bigint
Apache-2.0
MoonBit 供应链安全工具链
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
MoonGuard(中文)
MoonBit 供应链安全工具链。
项目简介
MoonGuard 是一个纯 MoonBit 实现的供应链安全工具链,提供:
verify_package把完整性、签名、可信度三件事合并到一次调用SecurityReport含风险等级、0–10 CVSS 风格风险评分、JSON 导出moon_guard可执行文件,含keygen/sign/verify/trust/typosquat/manifest/hash/audit/version九个子命令仓库结构
库 API(lib/)
lib/manifest — 清单与 SHA-256
FileEntry—{ path, content }输入结构FileHash—{ path, hash, size }单文件记录Manifest— 完整包清单sha256()/hash_string()— 纯 MoonBit SHA-256generate_manifest()— 从 entries 生成清单verify_manifest()— 校验 entries,返回不匹配路径列表manifest_to_json()/manifest_summary()— 序列化 / 摘要take_chars_()/slice_chars_()— 内部 string 切片 helperlib/crypto — Ed25519
KeyPair—{ public_key, secret_key }Signature—{ r, s }generate_keypair(seed)— 从 64 字符十六进制种子生成确定性密钥对sign(message, keypair)— 签名 UTF-8 消息verify(message, signature, public_key)— 验证签名signature_to_hex()— 把r||s拼成 128 字符 hexlib/trust — 可信密钥库
TrustLevel—Full/Partial/UntrustedTrustedKey— 单条密钥记录TrustStore— 内存密钥库add_key()/remove_key()/get_key()/is_trusted()/find_by_owner()/key_count()list_all()— 防御性快照replace_all()— 整体替换(用于恢复)validate_public_key_format()— 64 字符 hex 校验normalize_public_key()— 把混合大小写 hex 折叠成小写public_key_to_pem()/public_key_from_pem()— RFC 7468 风格 PEM 信封trust_store_to_json()/trust_store_from_json()— 带版本号的 JSON 序列化lib/verify — 审计 + typosquat
VerifyResult—{ package_name, is_valid, signature_ok, trust_status, errors, warnings }verify_package()— 单签名验签audit_package()— 完整审计(integrity + signature + trust)detect_typosquat()— Levenshtein ≤ 2 + 分隔符归一化detect_typosquat_strict()— 加入同形检测(1odash、Iodash等)batch_typosquat_check()— 批量检测typosquat_summary()— 按 suspect 聚合lib/report — 安全报告
RiskLevel—Critical/High/Medium/Low/InfoReportStatus—Pass/Warning/FailFinding— 单条发现TyposquatSummaryEntry— per-suspect 汇总SecurityReportadd_finding()— 自动推导状态recompute_score()— 把累计风险评分 clamp 到[0, 10]summary()— 人类可读文本report_to_json()— JSON 序列化make_finding()— Finding 构造器CLI 使用
cmd/main编译为moon_guard可执行文件。用moon run调用:子命令一览:
keygen [seed]sign <msg> <seed>verify <msg> <sig_hex> <pubkey>trust add <key_id> <pubkey> <owner> [level]trust listtrust remove <key_id>typosquat <name> <known...>manifest gen <pkg> <ver> [f:c...]path:content对生成清单manifest verify <pkg> <ver> [f:c]hash <content>audit <pkg> <ver> [f:c...]versionhelp快速上手
作为库使用(
moon add chenzehaoo/moon_guard之后)examples/basic_audit是官方端到端示例:它会调用每个 lib 模块的公开 API,同时输出 JSON 格式的安全报告。可作为下游包复制粘贴的起点。
开发流程
moon testmoon test --target wasmmoon checkmoon check --deny-warnmoon fmt --checkmoon fmtmoon info.mbti接口文件moon coverage analyzeCI 在
ubuntu-latest/macos-latest/windows-latest×wasm/native五种组合上跑moon fmt --check/moon info/moon check --deny-warn/moon test。发布到 mooncakes.io
moon.mod.json携带模块名、仓库地址、摘要、描述、关键字、支持平台(native/wasm/wasm-gc),所有字段都会展示在 mooncakes.io 包页上。CI
.github/workflows/ci.yml在每个 push / PR 上跑:每个 cell 跑四个步骤:
moon fmt --check→moon info→moon check --deny-warn→moon test。运行时依赖
无。MoonGuard 全部用纯 MoonBit 实现,只用到标准
core库(最关键的是@bigint,用于 Ed25519 field 算术)。许可证
Apache-2.0