签名与来源
插件目录安装必须能回答三个问题:下载了什么、是否被篡改、由哪个受信任 key 签名。
Artifact metadata
标题为“Artifact metadata”的章节每个版本都要记录:
| 字段 | 要求 |
|---|---|
fileName |
包含 pack id 和版本,后缀 .jarvispack |
mediaType |
application/vnd.jarvis.extension-pack+zip |
size |
字节数,不能依赖下载时猜测 |
sha256 |
对最终 artifact 计算 |
url |
指向不可变下载对象 |
本地计算:
shasum -a 256 dist/PACK_ID-VERSION.jarvispackwc -c dist/PACK_ID-VERSION.jarvispackSignature
标题为“Signature”的章节公开 Registry envelope 使用 Ed25519 签名。Jarvis 本机客户端只信任 JARVIS_EXTENSION_REGISTRY_TRUSTED_PUBLIC_KEYS_JSON 中列出的 key。
签名对象应覆盖:
- registry URL;
- pack id;
- version;
- artifact metadata;
- native dependency metadata;
- review state;
- yanked、deprecated、blocked 状态。
不要签名一个会被发布流程二次修改的临时 JSON。
Provenance
标题为“Provenance”的章节发布 PR 或审核记录应保留:
- artifact 的 commit SHA;
- 生成 artifact 的命令;
- hash 和大小;
- 审核人和审核时间;
- 变更的 catalog 条目;
- 本机 preview/install 验收结果。
Key 轮换
标题为“Key 轮换”的章节新增 key 时,先把公钥加入 Jarvis 受信任列表,再用新 key 签新版本。撤销 key 时,已发布版本需要重新签名或停止安装。