readCredentials method
Implementation
Future<Map<String, dynamic>?> readCredentials() async {
final stored = await _storage.readCredentials();
if (stored == null) return null;
if (!_encryptCredentials) return stored;
try {
if (stored['fmt'] == credentialsFmt) {
final secret = _resolveWrappingSecret(stored['src'] as String?);
if (secret == null) return null; // wrapping key unavailable
final plain = cred.decryptTextWithKey(stored['ct'] as String, secret);
return json.decode(plain) as Map<String, dynamic>;
}
// Legacy plaintext-JSON credentials → migrate to the encrypted envelope.
try {
await saveCredentials(stored);
} catch (_) {/* keep legacy on failure */}
return stored;
} catch (_) {
return null;
}
}