feat(host): 在 Vault 与会话事件发生时撤销扩展租约

This commit is contained in:
2026-09-08 23:55:18 +08:00
parent 73e50909ff
commit 2469650089
4 changed files with 234 additions and 72 deletions
@@ -429,3 +429,12 @@ Core 的独立数据目录目前不等于已授权 Vault。Python 旧笔记写
- 真实 AppContainer 双进程探针验证:本轮许可作废后约 56.90 ms、保险库锁定后约 47.80 ms、签发器释放后约 55.45 ms 观察到进程树清空;之后新工具调用均被拒绝。两秒测试租约自然到期也主动清空进程树。创建前撤销和创建后恢复前撤销均拒绝继续,无普通子进程降级。
- 原生参数/环境探针已使用 prepare → create_suspended → 带租约恢复路径。52 项扩展回归通过,4 项 ignored 为三个父测试实际驱动的 Job 辅助入口及单独执行的 60 秒验收;全目标 Clippy -D warnings 通过。日志 `.build/extension-revocation-tests.log``.build/extension-revocation-clippy.log`
- 本轮锁定由真实 CredentialBroker.lock 触发,尚不是操作系统锁屏事件的桌面端到端测试。监视器提供有界撤销,并非对核验与 ResumeThread 之间竞态作“零指令执行”证明。Host 仍需把实际 Vault 切换、权限撤回、在线签名撤销等事件接入签发器/实例注册表,并完成 broker 与全部资源策略,整体生产化尚未完成。
## 增量:Host Vault 与会话锁定事件接入撤销代次
- Host 增加持久于应用生命周期的 execution Authority;选择或打开不同 Vault、关闭/撤销 Vault 时推进其撤销代次,再替换工作区。重复打开当前 Vault 的既有早返回路径保持不变,打开新 Vault 失败也不会替换现有工作区;撤销请求在持久记录失败时仍先让旧执行许可失效。
- 手动 credentials_lock 先原子撤销 Host 执行许可和凭据会话,再等待 CredentialBroker 互斥锁进行数据清理。凭据原子信号在初始化时缓存于 OnceLock,撤销不再被正在执行的解锁/KDF 互斥锁阻塞。
- Windows SessionMonitor 支持有界多域信号组,锁屏、注销、控制台/远程断开同时撤销凭据与 Host execution Authority;解锁消息不会恢复原代次。线程创建失败返回稳定不可用错误,拒绝重复信号或超过 8 个域的配置。
- 8 项 Host 二进制测试、2 项原生会话消息测试、3 项许可测试通过,全目标 Clippy -D warnings 通过。验证在持有凭据互斥锁时手动锁定信号已发出、工作区替换/关闭推进代次,以及不轮换 HMAC 密钥只推进事件代次也能拒绝旧许可/租约。日志 `.build/extension-host-lifecycle-tests.log``.build/extension-host-session-tests.log``.build/extension-host-permit-tests.log``.build/extension-host-events-clippy.log`
- 会话测试仅向本测试的隐藏窗口注入原生消息,未锁定用户桌面;尚未完成实际 OS 锁屏与已打包 Host/扩展实例的组合验收。第三方执行仍未开放,后续实例签发必须使用 Host 持有的 Authority,实际在线信任撤销、实例注册/派发、broker 与完整资源策略继续实施。