diff --git a/docs/IMPLEMENTATION_HANDOFF.md b/docs/IMPLEMENTATION_HANDOFF.md index deda3b5..be6e6b5 100644 --- a/docs/IMPLEMENTATION_HANDOFF.md +++ b/docs/IMPLEMENTATION_HANDOFF.md @@ -62,7 +62,9 @@ - 初始化文件唯一位置为 `assets/config/config.xuqmconfig`。运行时只接受 `XUQM-CONFIG-V2`:Ed25519 签名覆盖前五段 ASCII,先验签、后 AES 解密, 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` 必须同时满足平台启用、隐私已同意、上传地址有效。关闭时恢复宿主原 UncaughtExceptionHandler 并删除队列;服务端 `BUGCOLLECT_DISABLED` 会形成持久停用锁, 仅新的成功平台配置可解除。 diff --git a/sdk-common-plugin/src/main/kotlin/com/xuqm/sdk/common/gradle/XuqmConfigContract.kt b/sdk-common-plugin/src/main/kotlin/com/xuqm/sdk/common/gradle/XuqmConfigContract.kt index 3f42c2f..ddf49d7 100644 --- a/sdk-common-plugin/src/main/kotlin/com/xuqm/sdk/common/gradle/XuqmConfigContract.kt +++ b/sdk-common-plugin/src/main/kotlin/com/xuqm/sdk/common/gradle/XuqmConfigContract.kt @@ -24,6 +24,8 @@ object XuqmConfigContract { private val publicKeys = mapOf( "xuqm-config-dev-2026-07" to "MCowBQYDK2VwAyEAFt9MBN8jNwCfalex4wg7kuy2DRAbXkGxZyA/Jaz+6YA=", + "xuqm-config-prod-2026-07" to + "MCowBQYDK2VwAyEATicvc1Knc+AB1N/aI36yr2oRS52rk1A3qIuL3m/AAWM=", ) data class Metadata( diff --git a/sdk-core/src/main/java/com/xuqm/sdk/internal/ConfigFileCrypto.kt b/sdk-core/src/main/java/com/xuqm/sdk/internal/ConfigFileCrypto.kt index ca616b0..8cb8c7f 100644 --- a/sdk-core/src/main/java/com/xuqm/sdk/internal/ConfigFileCrypto.kt +++ b/sdk-core/src/main/java/com/xuqm/sdk/internal/ConfigFileCrypto.kt @@ -97,6 +97,8 @@ internal object ConfigSigningKeys { private val encodedKeys: Map = mapOf( "xuqm-config-dev-2026-07" to "MCowBQYDK2VwAyEAFt9MBN8jNwCfalex4wg7kuy2DRAbXkGxZyA/Jaz+6YA=", + "xuqm-config-prod-2026-07" to + "MCowBQYDK2VwAyEATicvc1Knc+AB1N/aI36yr2oRS52rk1A3qIuL3m/AAWM=", ) val all: Map by lazy {