[任务] Mono GPG commit 签名管理与校验功能
[任务分值] 25 分
[背景描述]
Mono 项目目前在代码提交过程中,允许开发者通过 GPG(GNU Privacy Guard)对 Git commit 进行签名,以确保提交的来源可信、内容未被篡改。
在 PR 合并、Release 构建等关键环节,对 commit 签名进行自动化校验,可以提升代码安全性与可追溯性。
[需求描述]
在 Mono 代码托管与 CI 流水线中,引入 GPG commit 签名校验功能,主要目标如下:
- 提交签名验证
- 在 PR 合并前,系统自动检索所有相关 commit。
- 验证每个 commit 是否存在 GPG 签名(gpgsig 字段)。
- 校验签名是否有效,是否由受信任的公钥签发。
- 信任公钥管理
- 支持在系统中维护一份受信任的 GPG 公钥列表(存储在数据库中)。
- 仅允许列表中已登记的 Key ID(或 Fingerprint)通过验证。
- 反馈与审计
- 校验失败时,提供明确的错误信息(如“缺少签名”“签名无效”“公钥未登记”)。
- 保留签名验证日志,便于事后审计与追踪。
- 性能与可扩展性
- 支持批量校验多个 commit,保证在大型 PR 或分支合并时不影响整体性能。
- 后续可扩展至 X.509 代码签名或其他签名机制。
[代码标准]
- 所有 PR 提交必须签署
Signed-off-by 和 使用 GPG 签名,即提交代码时(使用 git commit 命令时)至少使用 -s -S 两个参数,参考 Contributing Guide;
- 所有 PR 提交必须通过
GitHub Actions 自动化测试,提交 PR 后请关注 GitHub Actions 结果;
- 代码注释均需要使用英文;
[PR 提交地址] 提交到 mega 仓库的 main 分支 mono 目录;
[开发指导]
- 认领任务参考 r2cn 开源实习计划 - 任务认领与确认;
[导师及邮箱] 请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在 #p-meta 频道和导师交流。
- Quanyi Ma genedna@gmail.com
- Tianxing Ye yetianxing2014@gmail.com
[备注]
- 认领实习任务的同学,必须完成测试任务和注册流程,请参考: r2cn 开源实习计划 - 测试任务 和 r2cn 开源实习计划 - 学生注册与审核
[任务] Mono GPG commit 签名管理与校验功能
[任务分值] 25 分
[背景描述]
Mono 项目目前在代码提交过程中,允许开发者通过 GPG(GNU Privacy Guard)对 Git commit 进行签名,以确保提交的来源可信、内容未被篡改。
在 PR 合并、Release 构建等关键环节,对 commit 签名进行自动化校验,可以提升代码安全性与可追溯性。
[需求描述]
在 Mono 代码托管与 CI 流水线中,引入 GPG commit 签名校验功能,主要目标如下:
[代码标准]
Signed-off-by和 使用GPG签名,即提交代码时(使用git commit命令时)至少使用-s -S两个参数,参考 Contributing Guide;GitHub Actions自动化测试,提交 PR 后请关注GitHub Actions结果;[PR 提交地址] 提交到 mega 仓库的
main分支mono目录;[开发指导]
[导师及邮箱] 请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在
#p-meta频道和导师交流。[备注]