fix: safeStorage 解密失败时回退到 base64 解码

密码可能在 safeStorage 不可用时以纯 base64 存储,或因 keyring 环境
变化导致无法解密。添加 try-catch 回退,避免连接时崩溃。
This commit is contained in:
2026-07-11 00:03:48 +08:00
parent 31201634c4
commit bcf31e7d3a
+9 -1
View File
@@ -11,5 +11,13 @@ export function decrypt(encoded: string): string {
if (!safeStorage.isEncryptionAvailable()) { if (!safeStorage.isEncryptionAvailable()) {
return Buffer.from(encoded, 'base64').toString('utf-8') return Buffer.from(encoded, 'base64').toString('utf-8')
} }
return safeStorage.decryptString(Buffer.from(encoded, 'base64')) try {
return safeStorage.decryptString(Buffer.from(encoded, 'base64'))
} catch {
// Fallback: the ciphertext may have been encoded with plain base64
// (e.g. when safeStorage was unavailable at encryption time, or the
// OS keyring changed). Decode as plain base64 so the connection
// attempt can proceed instead of crashing.
return Buffer.from(encoded, 'base64').toString('utf-8')
}
} }