用途:决定 TOTP 种子及其备用码存放在哪里、放进去,并证明它们没有被提交进 git。解决已跟踪文件不受 .gitignore 约束导致种子被提交、密钥作为命令行参数被 ps 与历史记录捕获、备用码被重复使用、以及把“删了文件”当作泄露补救等问题。
主要能力:按优先级选择存放位置:1) OS 钥匙串(macOS Keychain、libsecret、PowerShell SecretStore)为默认,静态加密并随登录会话解锁;2) 仓库外 mode 600 文件、700 目录(~/.config/totp/);3) 仓库内 gitignored 的 .local/ 目录(700);4) 环境变量(CI,由加密密钥库注入);永不使用命令行参数。提供 secret_store.py 的 backends、set、describe、get、--pop 等操作,以及 scan_leaks.py 泄露扫描。
必要用法:密钥经 stdin 传入:printf '%s' 'otpauth://totp/...' | python3 "$STORE" set github。验证用 describe 查看 issuer、位数、周期、算法与长度而不暴露密钥;get 只能放在管道左侧,接 totp-generate 生成验证码。备用码存于独立命名空间并使用 --pop 逐张发放,输出即从库中移除。若必须放仓库内,mkdir -m 700 -p .local/2fa 并加入 .gitignore,用 git check-ignore 与 git ls-files --error-unmatch 检查;发布前运行 scan_leaks.py --protect .local --all。退出码:2 用法错误、3 未找到、4 后端失败;脚本自带 selftest。
限制:不用于从密钥生成验证码、不用于种子托管于 1Password/Bitwarden/Vault/2FAuth 的场景、不用于向 MCP 客户端供码、不用于驱动登录、也不处理通用密钥。种子与密码同机存储会把双因素降为单因素,仅适用于用户拥有或获授权自动化的账号,建议使用专用服务账号并分库存放。.gitignore 对已跟踪文件无效;--pop 会消耗状态,不可接入会多次调用的自动化。其他具体收费标准暂未提供。