feat(security): trust production config signer

这个提交包含在:
XuqmGroup 2026-07-27 10:42:55 +08:00
父节点 f32e281081
当前提交 0b681dbbb2
共有 3 个文件被更改,包括 7 次插入1 次删除

查看文件

@ -62,7 +62,9 @@
- 初始化文件唯一位置为 `assets/config/config.xuqmconfig`。运行时只接受 - 初始化文件唯一位置为 `assets/config/config.xuqmconfig`。运行时只接受
`XUQM-CONFIG-V2`Ed25519 签名覆盖前五段 ASCII,先验签、后 AES 解密, `XUQM-CONFIG-V2`Ed25519 签名覆盖前五段 ASCII,先验签、后 AES 解密,
canonical JSON、schema、UUID、revision 和 RFC3339 时间均强校验;V1 与未知 keyId 拒绝。 canonical JSON、schema、UUID、revision 和 RFC3339 时间均强校验;V1 与未知 keyId 拒绝。
- 已内置开发签发公钥 `xuqm-config-dev-2026-07`;私钥不属于 SDK 仓库。 - 已同时内置开发签发公钥 `xuqm-config-dev-2026-07` 与生产签发公钥
`xuqm-config-prod-2026-07`;私钥只保存在 Jenkins 凭据库和服务端运行环境,
不属于 SDK 仓库或发布制品。
- `BugCollect` 必须同时满足平台启用、隐私已同意、上传地址有效。关闭时恢复宿主原 - `BugCollect` 必须同时满足平台启用、隐私已同意、上传地址有效。关闭时恢复宿主原
UncaughtExceptionHandler 并删除队列;服务端 `BUGCOLLECT_DISABLED` 会形成持久停用锁, UncaughtExceptionHandler 并删除队列;服务端 `BUGCOLLECT_DISABLED` 会形成持久停用锁,
仅新的成功平台配置可解除。 仅新的成功平台配置可解除。

查看文件

@ -24,6 +24,8 @@ object XuqmConfigContract {
private val publicKeys = mapOf( private val publicKeys = mapOf(
"xuqm-config-dev-2026-07" to "xuqm-config-dev-2026-07" to
"MCowBQYDK2VwAyEAFt9MBN8jNwCfalex4wg7kuy2DRAbXkGxZyA/Jaz+6YA=", "MCowBQYDK2VwAyEAFt9MBN8jNwCfalex4wg7kuy2DRAbXkGxZyA/Jaz+6YA=",
"xuqm-config-prod-2026-07" to
"MCowBQYDK2VwAyEATicvc1Knc+AB1N/aI36yr2oRS52rk1A3qIuL3m/AAWM=",
) )
data class Metadata( data class Metadata(

查看文件

@ -97,6 +97,8 @@ internal object ConfigSigningKeys {
private val encodedKeys: Map<String, String> = mapOf( private val encodedKeys: Map<String, String> = mapOf(
"xuqm-config-dev-2026-07" to "xuqm-config-dev-2026-07" to
"MCowBQYDK2VwAyEAFt9MBN8jNwCfalex4wg7kuy2DRAbXkGxZyA/Jaz+6YA=", "MCowBQYDK2VwAyEAFt9MBN8jNwCfalex4wg7kuy2DRAbXkGxZyA/Jaz+6YA=",
"xuqm-config-prod-2026-07" to
"MCowBQYDK2VwAyEATicvc1Knc+AB1N/aI36yr2oRS52rk1A3qIuL3m/AAWM=",
) )
val all: Map<String, PublicKey> by lazy { val all: Map<String, PublicKey> by lazy {