analyzeEncryptedSecrets method

Map<String, Set<String>> analyzeEncryptedSecrets()

Returns secret event types mapped to valid SSSS key ids.

Only account data entries with a valid encrypted map shape are included.

Implementation

Map<String, Set<String>> analyzeEncryptedSecrets() {
  final secrets = <String, Set<String>>{};
  for (final entry in client.accountData.entries) {
    final type = entry.key;
    final event = entry.value;
    final encryptedContent = event.content.tryGetMap<String, Object?>(
      'encrypted',
    );
    if (encryptedContent == null) continue;

    final validKeys = <String>{};
    for (final keyEntry in encryptedContent.entries) {
      final key = keyEntry.key;
      final value = keyEntry.value;
      if (!_isUsableEncryptedKeyEntry(key, value)) continue;
      validKeys.add(key);
    }
    if (validKeys.isNotEmpty) {
      secrets[type] = validKeys;
    }
  }
  return secrets;
}