Skip to content

feat: keyring 加密文件回退 + --insecure-storage 明文逃生口 (#45+#46)#76

Merged
bigmanBass666 merged 2 commits into
mainfrom
feature/keyring-fallback-and-insecure
Jul 17, 2026
Merged

feat: keyring 加密文件回退 + --insecure-storage 明文逃生口 (#45+#46)#76
bigmanBass666 merged 2 commits into
mainfrom
feature/keyring-fallback-and-insecure

Conversation

@bigmanBass666

Copy link
Copy Markdown
Contributor

变更内容

实现 ADR-003 的两层降级路径:

#45: 加密文件回退

  • 当 OS keyring 不可用时(headless Linux、CI、WSL 无桌面环境),自动降级到 99designs/keyring 的 FileBackend
  • 加密密钥自动生成并存放在 <XDG config dir>/keyring-fallback/password
  • 用户完全无感,akswitch key add/list 接口不变

#46: --insecure-storage 标志

  • akswitch key add 新增 --insecure-storage 标志
  • 使用时打印警告到 stderr
  • 明文 JSON 存储在 <XDG config dir>/keys/<provider>.json
  • LoadKeys 自动回退到明文文件(list 命令无需额外标志)

文件变更

文件 变更
internal/keypool/keyring.go initKeyring 两层降级(OS keyring → 加密文件)
internal/keypool/store.go SaveKeysInsecure + LoadKeys 明文回退
internal/cmd/key.go --insecure-storage 标志 + 警告输出
internal/keypool/keyring_test.go 4 个新测试覆盖明文存储/回退
key_cmd_test.go 集成测试验证 --insecure-storage 标志
internal/cmd/provider_cmd_test.go 标志注册测试

验收

  • 单元测试全部通过
  • 集成测试全部通过
  • make test-all 待 CI 验证

依赖

@bigmanBass666
bigmanBass666 marked this pull request as ready for review July 17, 2026 20:19
@bigmanBass666
bigmanBass666 enabled auto-merge (squash) July 17, 2026 20:19
@bigmanBass666
bigmanBass666 merged commit 1d640cd into main Jul 17, 2026
4 checks passed
@bigmanBass666
bigmanBass666 deleted the feature/keyring-fallback-and-insecure branch July 17, 2026 20:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant