Repository navigation
chore(deps): bump rustls from 0.23.45 to 0.23.46 in /apps/desktop/loopx-control-plane/src-tauri - #7565
Conversation
Bumps [rustls](https://github.com/rustls/rustls) from 0.23.45 to 0.23.46. - [Release notes](https://github.com/rustls/rustls/releases) - [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md) - [Commits](rustls/rustls@v/0.23.45...v/0.23.46) --- updated-dependencies: - dependency-name: rustls dependency-version: 0.23.46 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; OpenAI gpt-6.1-sol; runtime_reported; reasoning_effort=max
本次精确 head 未发现阻塞性问题,建议 APPROVE。批准范围为原生依赖更新及本地兼容性验证。
动机 / Motivation
通过 LoopX 桌面 App 检查和下载更新的用户,以及维护原生依赖的贡献者。
原生更新器持续使用锁定的 rustls 0.23.45;上游 0.23.46 修正 TLS 边界与容量为一的 session cache。当前提案只更新该锁定包和校验和,现有 HTTPS 检查、验签、错误恢复与安装选择继续由原 updater 负责。
新包能够编译并经原生 updater 完成 TLS 1.2/1.3 检查;不可信 CA 和错误主机名仍拒绝,容量一缓存保留刚写入的唯一条目。
不改变更新频道、公钥、代理、超时、安装权限或产品 UI;不在正式 App 安装更新,不声称跨平台全部兼容或上游密码学完整正确性。
改动思路 / Approach
沿原 updater 的单一 TLS provider 更新精确依赖,根信任、验签和安装继续归现有原生 owner;无需新增客户端或配置。
本 PR 仅交付锁定依赖及本地原生兼容资格,正式安装和其他平台采用仍需各自验证。
cargo tree -i rustls -e features 核实实际链为 tauri-plugin-updater 2.11.0 → reqwest 0.13.4 → hyper-rustls → rustls,由原 updater 选择 ring/std/tls12。没有出现并行 TLS stack 或新增 App 直接配置。仅凭 patch 版本号不能认证安全性;我对照上游两个 tag 的完整 commit/file inventory,并阅读 cache、stream 和 TLS13 关键改动,再运行真实消费边界。
不改现有 Cargo.toml、不另造下载器是最小维护边界;继续旧版本会保留已知上游缺陷,直接给 App 新增 Rustls 策略则会把原 updater 责任分散到第二处。当前选择不增加用户准备、选项或确认轮次。
具体改动 / Changes
规格依据为改动前 apps/desktop/loopx-control-plane/README.md#validation,完整 revision 55f74c1af2aa6a726fc2f4e76c1ebd7a1654be39,另核其原生更新所有权说明。按未编号原合同映射:native-updater-transport 保留官方 HTTPS、证书/hostname 与签名 owner;failure-and-recovery 保留可见失败、重试及服务启动;native-validation 运行实际 native tests,区分明确 opt-in 的安装/长时演练。三项在本次维护切片内核验,不把产品路线图的全部正式安装当依赖更新前置。
关键代码讲解
- Cargo.lock rustls entry:唯一 diff 为
0.23.45 → 0.23.46与 checksum,+2/-2。crate source、依赖列表及其余 lock package 完整保持;实际下载 archive 的 SHA256 与新 checksum 相同,.cargo_vcs_info.json指向上游f04804fa13341a9b1dc02b5d1dd8a746f2c4b7fb;MSRV 仍为 1.71。 - find_update:原生检查继续使用现有 updater builder、既定 feed timeout、archive-only client 配置与原 check_error。Rustls provider 由该插件初始化,不绕过证书或主机名验证,也不由新依赖触发安装。
- download_update:既有下载总期限、连接/读停滞策略和 native signature verification 未改。原 signed cache 后续验证与恢复继续复用相同 owner;TLS 成功不代替验签或安装授权。
一手依据是 Rustls 两个 tag 的比较,上游包含缓存容量、TLS13 key update、受保护 CCS、ECH 与短写/flush 等修正。这里确认的是已读源码和适用本地消费行为,不宣称完整安全审计或可量化性能收益。
对主干的风险 / Risks
最强反例是已有 HTTP 验签测试全部通过,TLS 层却接受坏证书或拒绝正常服务。因此独立 probe 使用同一真实 tauri-plugin-updater builder/check、同版本 reqwest 和锁定依赖;Tauri 仅以 MockRuntime 提供无窗口 App 容器,服务端为隔离本地 TLS,没有模拟 HTTP/TLS client。
TLS1.2、TLS1.3 各测试可信 CA 成功、默认信任拒绝自建 CA、可信 CA 但 hostname 不匹配拒绝,共六例。旧0.23.45与新0.23.46均 6/6 PASS;两份 probe lock 除本地 probe package 和目标 Rustls 版本外,所有选中包版本均与原 native lock 相同。自建根仅加到该 probe client,没有修改系统信任、生产配置或安装 App。
另以公开 ClientSessionStore API 构造容量一缓存、写入一个 X25519 hint 并立即读取:旧版 assertion 失败(None),新版 PASS(Some)。这是直接验证有意义的边界修复,不是仅比较版本文本或让两套新实现互相证明。
真实 native library 185 PASS / 12 IGNORED;12项为明确 opt-in 的慢请求、正式包/安装及平台演练,本次未启用。默认 suite 包含实际本地 HTTP、签名、篡改、截断、404、prepared-cache、检查超时与服务恢复。cargo fmt --all -- --check、cargo clippy --locked --all-targets -- -D warnings PASS;standard premerge 4 direct +4 selected PASS,无 manual hold。原生测试和 TLS probe 互补,HTTP 成功没有被当作 TLS 资格。
首次 native build 缺少文档要求的本地 runtime resource;通过原 desktop_runtime_bundle.py 准备准确 source 资源后,同一 library 命令通过,未改生产代码或降低检查。首次私有 TLS probe 因对不实现 Debug 的 Update 使用调试格式而未编译,两版都在同处失败;仅纠正错误输出后重跑,原失败保留。没有查询、轮询或等待远端 CI。
语义与 CI 对齐
没有新的领域状态、prose 分类、调度或工作义务。原 updater 的 TLS trust、hostname、signature 和 deadline 是机器校验;依赖可用不授予安装权限。无新 default-off 声称:这是原 native build 的 provider 更新,普通 Goal、模型输入与配置模式均不改变。上游协议拒绝边界有意修正,不能将“同 major/minor”写成全部语义恒等;本地验证范围之外继续保留未知。
我的整体评价 / Verdict
problem_context=goal_achieved,仅指依赖维护切片。long_horizon/user_experience=preserved:原生检查、失败恢复、签名缓存和安装选择仍沿既有路径,零新增用户准备或确认轮次。repository_reuse=reused、code_volume=necessary、change_proportionality=proportionate、default_off_isolation=not_applicable、authority_semantics/semantic_alignment=aligned。无需为一个已存在的 transitive provider 新建控制面、配置或 UI。
检查唯一 Cargo.lock diff 及原 maintenance 调用方,没有页面、布局或交互控件变化。
未验证正式 App 安装、Windows/Linux 执行、真实企业代理或长时故障组合。
本结论仅绑定 a7d805df0fa49125eac4d58c387a00ebb8c89d9e,不认证上游所有 TLS 分支、正式发布采用或独立性能收益。批准后仍须分别核对旧 review/thread、native readiness 与维护者合并权限。
English verdict: APPROVE a7d805d; native checks and matched real-updater TLS cases pass, and the public cache boundary reproduces the old defect and passes on 0.23.46.
Bumps rustls from 0.23.45 to 0.23.46.
Commits
f04804fDelay saving KX hint until handshake confirmation049d39bBump version to 0.23.466d0ba08Eliminate secret from impl Debug forServerSessionValue2b82b81unbuffered: update TLS 1.3 traffic keys before exhausting them74343e7conn: update TLS 1.3 traffic keys within fragmented writes795eea7Advance the HPKE sequence only after seal succeedsd67cb71stream: provide backpressure while buffering received plaintext7a69adeutil: fuse flushes from connections with errors493d089conn: fuse writes for connections with errorsdb00e01util: keep flushing after short writesDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)You can disable automated security fix PRs for this repo from the Security Alerts page.