Files
youlai-boot/sql/sn_device_key.sql
TongTongStudio adb9b96cb7 feat(device): 设备签名升级为 ECDSA 并新增壁纸/图片/闹钟与策略扩展
签名与安全
- 设备验签由 HMAC 重构为 ECDSA P-256(SHA256withECDSA),抽出
  DeviceSignatureVerifier,canonical 串为 METHOD|path|bodyHash|ts|nonce
- 新增 CachedBodyRequestWrapper 支持请求体读取,multipart 不参与 bodyHash
- Redis 一次性 nonce 防重放,验签前校验设备存在且 status != 0(封禁即吊销)
- bind_phone 接口豁免过滤器,改由 Controller 用请求内公钥做 PoP 验签并自动注册
- 新增封禁/解封设备接口(sys:device:update),SQL 增加 sys_sn.public_key

家属端(client)
- 壁纸:上传单个 / 轮换(最多 7 张)/ 调整顺序,静态资源映射 /static/wallpaper/**
- 图片:发送到设备(contentType=24)、发送记录列表、收藏状态标记
- 闹钟:查询 / 新增 / 修改 / 删除,变更后推送设备同步(contentType=25)
- 新增请求绑定设备(contentType=20)、绑定成功通知(21)、反向拨号(22)

设备端(mobile)
- 新增 get_alarms / sync_alarms,按设备本地 id 整表覆盖重建
- 策略接口同步新增 20 项管控开关(安全模式、ADB、APN、飞行模式、定位等)

其他
- MQTT 首次连接失败不再阻塞启动,新增每分钟定时兜底重连
- 文件服务补充 md5/sha1/sha256 校验值,AppIcon 增加 iconSha1/iconSha256
- 新增 SQL:sn_device_key / sn_device_alarm / sn_device_picture / sn_device_wallpaper
2026-10-19 10:41:17 +08:00

22 lines
1.0 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================================
-- 设备 ECDSA P-256 签名公钥字段(sys_sn 表扩展)
-- 说明:
-- · 设备首次注册时上传 ECDSA P-256 公钥(X.509 SubjectPublicKeyInfo, Base64),
-- 服务端绑定 SN ↔ 公钥,后续 /api/v1/sn/** 请求用该公钥做 SHA256withECDSA 验签。
-- · 封禁/吊销通过 sys_sn.status 字段:1=启用,0=封禁(验签前校验)。
-- =============================================================================
-- 1. 为 sys_sn 表新增设备签名公钥字段(幂等:已存在则跳过)
SET @column_exists := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'sys_sn'
AND COLUMN_NAME = 'public_key'
);
SET @ddl := IF(@column_exists = 0,
'ALTER TABLE sys_sn ADD COLUMN public_key TEXT NULL COMMENT ''设备ECDSA P-256公钥(X.509 Base64)'' AFTER sn_mobile',
'SELECT 1');
PREPARE stmt FROM @ddl;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;