requestSecretsFromNamespace method

Future<int> requestSecretsFromNamespace(
  1. String namespace, {
  2. List<String>? names,
  3. String? namePrefix,
  4. Set<String> excludeEnrollmentIds = const {},
})

Broadcasts a pull request for held secrets to every key package registered for namespace (minus this client). Holders that pass the answer policy reply by sharing the matching secrets; the caller typically then waitForSecrets. Filter the request by exact names and/or a namePrefix (e.g. __rk. for epoch keys). excludeEnrollmentIds drops revoked enrollments. Returns the number of key packages the request was sent to.

Implementation

Future<int> requestSecretsFromNamespace(
  String namespace, {
  List<String>? names,
  String? namePrefix,
  Set<String> excludeEnrollmentIds = const {},
}) async {
  final members = await directory.listForNamespace(namespace,
      excludeEnrollmentIds: excludeEnrollmentIds);
  int sent = 0;
  for (final member in members) {
    final to = member.keyPackage;
    if (to != null && to.kpid != null && to.kpid != kpid) {
      await sendEnvelope(to, namespace, {
        'kind': secretRequestKind,
        if (names != null) 'want': names,
        if (namePrefix != null) 'namePrefix': namePrefix,
      });
      sent++;
    }
  }
  return sent;
}