Files
fullstack-starter/docs/UX-授权端接口说明.md

1.9 KiB
Raw Blame History

UX 授权端接口说明

本文档描述 UX 服务当前定位:仅提供底层密码学能力,不维护业务状态

1. 职责边界

  • UX 只提供加密、解密、签名、ZIP 打包能力
  • UX 不持有设备/任务等业务主数据,不读取业务数据库
  • 调用方(工具箱)负责提供业务上下文与密钥材料

2. 核心接口

2.0 config.get / config.setLicence

  • config.get:读取本地配置(licencefingerprint
  • config.setLicence:写入本地 licence
  • 说明:fingerprint 由 UX 本机计算并持久化,不由调用方传入

2.1 crypto.encryptDeviceInfo

  • 输入:platformPublicKey
  • 输出:encryptedBase64
  • 说明:读取本地 licence/fingerprint 组装 JSON 后执行 RSA-OAEP 加密

2.2 crypto.decryptTask

  • 输入:encryptedData
  • 输出:decrypted(明文字符串)
  • 说明:使用本地 licence/fingerprint 推导 SHA256(licence + fingerprint) 作为 AES-GCM 密钥

2.3 crypto.encryptSummary

  • 输入:saltplaintext
  • 输出:encryptedBase64
  • 说明:使用本地 licence/fingerprint 做 HKDF-SHA256 + AES-256-GCM 加密

2.4 crypto.signAndPackReport

  • 输入:
    • rawZipmultipart 文件)
    • pgpPrivateKey
    • signingContext
    • summaryJson
    • outputFileName(可选)
  • 输出:签名后 ZIP 文件(二进制,application/zip

summary.json 由 UX 生成,结构为:

{
  "deviceSignature": "Base64...",
  "signingContext": "...",
  "payload": { "...": "调用方 summaryJson" },
  "timestamp": 1734571234567
}

签名输出 ZIP 固定包含:

  • summary.json
  • META-INF/manifest.json
  • META-INF/signature.asc

3. ZIP 安全约束

  • 拒绝危险路径(防 Zip Slip
  • 原始 ZIP ≤ 50 MiB
  • 单个文件 ≤ 20 MiB
  • 总解压后大小 ≤ 60 MiB
  • ZIP 条目数量 ≤ 64

4. OpenAPI

  • 文档:/api/docs
  • 规范:/api/spec.json