code: func (s *Action) RecipientsUpdate(ctx context.Context, c *cli.Context) error {
  	changed := 0
  
  	mps := s.Store.MountPoints()
  	sort.Sort(store.ByPathLen(mps))
  	for _, alias := range append(mps, "") {
  		subs, err := s.Store.GetSubStore(alias)
  		if err != nil || subs == nil {
  			continue
  		}
  		recp, err := subs.GetRecipients(ctx, "")
  		if err != nil {
  			if err != sub.ErrRecipientChecksumChanged {
  				return err
  			}
  		}
  		if err == nil && s.cfg.GetRecipientHash(alias, subs.Crypto().IDFile()) != "" {
  			continue
  		}
  		if alias == "" {
  			alias = "<root>"
  		}
  		out.Cyan(ctx, "Please confirm Recipients for %s:", alias)
  		for _, r := range recp {
  			out.Print(ctx, "- %s", subs.Crypto().FormatKey(ctx, r))
  		}
  		if !termio.AskForConfirmation(ctx, fmt.Sprintf("Do you trust these recipients for %s?", alias)) {
  			continue
  		}
  		if err := subs.SetRecipients(ctx, recp); err != nil {
  			return err
  		}
  		out.Print(ctx, "")
  		changed++
  	}
  
  	if changed > 0 {
  		out.Green(ctx, "Updated %d stores", changed)
  	} else {
  		out.Green(ctx, "Nothing to do")
  	}
  
  	return nil
  }
docs: // RecipientsUpdate will recompute and update any changed recipients list checksums