pushSecretToNamespaceMembers method

Future<int> pushSecretToNamespaceMembers(
  1. Secret secret, {
  2. Set<String> excludeEnrollmentIds = const {},
})

Pushes one secret to every key package registered for its namespace (minus this client). This is the mint/rotation push: it enumerates the namespace's members via the directory, seals once per key package, and puts the kpid-addressed envelope. excludeEnrollmentIds drops revoked enrollments. Returns the number of key packages it was pushed to.

Implementation

Future<int> pushSecretToNamespaceMembers(
  Secret secret, {
  Set<String> excludeEnrollmentIds = const {},
}) async {
  final members = await directory.listForNamespace(secret.namespace,
      excludeEnrollmentIds: excludeEnrollmentIds);
  int pushed = 0;
  for (final member in members) {
    final to = member.keyPackage;
    if (to != null && to.kpid != null && to.kpid != kpid) {
      await shareSecretWith(to, secret);
      pushed++;
    }
  }
  return pushed;
}