| 项目 | 内容 |
|---|---|
| 定位 | 给现场实施人员用的图形界面工具,跨平台(Windows/Linux/macOS),Rust + egui + probe-rs |
| 使用地点 | 出发前准备区(不是客户现场),批量准备设备 |
| 依据 | 全流程:开发出原始固件 → 运营上传管理后台(后端签名+加密出共用包)→ 现场人员下载 → 现场人员写入;设备钥匙后台分发;写入必须联网,离线补录取消 |
| 实现状态 | 骨架 v0.1.0;界面、串口对话、烧写接线待接(固件侧 provisioning 协议已定,见 gateway 仓 docs/provisioning.md) |
相关仓库:firmware-tool https://github.com/ffffxxxjjj/firmware-tool ;sign https://github.com/ffffxxxjjj/sign ;gateway https://github.com/ffffxxxjjj/gateway 。固件分发全流程见 sign 仓 docs/固件分发全流程.md;服务端端点见 sign 仓 docs/sign-server-api.md。
POST /operator/login,操作员会话 Cookie,HttpOnly,12 小时)。POST /devices/issue,只走操作员会话;公钥私钥都存后台,记操作时间、操作人等审计);重发须 reissue=true,返回存量密钥不轮换。PROV BEGIN → PROV SERIAL <序列号> → PROV KEY <64 位十六进制私钥> → PROV COMMIT → OK PROVISIONED;固件回复永不输出私钥)。注:第 4 步(取密钥)与第 7 步(写私钥与序列号)顺序固定:先取到密钥,再写进设备;没有分发成功的台不写。
POST /devices/allocate(管理员会话;数量 1–1000,否则 400;序列号 GW{YYYYMMDD}{序号:04},按天计数、不重复,标记已领出防重领)。POST /operator/login(用户名密码;失败一律 401 通用文案);建操作员 POST /operators(管理员会话);禁用 POST /operators/{用户名}/disable(管理员会话,幂等,禁用后会话失效;本版无恢复接口)。POST /devices/issue(只走操作员会话;序列号须在已领出批次里,否则 400;已分发不带 reissue=true 拒绝;没分发过带 reissue=true 拒绝;已用写入工具上报登记过的序列号(无后台存钥)再分发拒绝;返回序列号、型号、公钥、私钥、分发时间、分发人)。POST /devices(只走机器凭证签名,不走会话;序列号、公钥、型号、固件版本;序列号须在已领出批次里且未登记,否则 400)。这是另一条登记路径(工具上报已备好密钥的设备),不是分发流程的必经步:分发流程的台由分发即登记,不重复调本接口;已用本接口登记过的序列号不能再分发(无后台存钥可交付)。GET /devices、GET /devices/{序列号}(管理员会话;列表含当前版本与最新版本)。PROV BEGIN/PROV SERIAL/PROV KEY/PROV COMMIT/PROV ABORT/PROV STATUS;协议、状态机、提交检查顺序、字段规则、错误码见 gateway 仓 docs/provisioning.md(固件只接收后台分发的私钥与序列号,不再自产密钥)。\n 结尾(\r\n 也行);单行最长 128 字节;回复一行,含结尾 \n。