readCredentials method

Future<Map<String, dynamic>?> readCredentials()

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;
  }
}