code: func (s *CA) GetCertAuthorities(caType services.CertAuthType, loadSigningKeys bool, opts ...services.MarshalOption) ([]services.CertAuthority, error) {
  	if err := caType.Check(); err != nil {
  		return nil, trace.Wrap(err)
  	}
  
  	// Get all items in the bucket.
  	startKey := backend.Key(authoritiesPrefix, string(caType))
  	result, err := s.GetRange(context.TODO(), startKey, backend.RangeEnd(startKey), backend.NoLimit)
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  
  	// Marshal values into a []services.CertAuthority slice.
  	cas := make([]services.CertAuthority, len(result.Items))
  	for i, item := range result.Items {
  		ca, err := services.GetCertAuthorityMarshaler().UnmarshalCertAuthority(
  			item.Value, services.AddOptions(opts,
  				services.WithResourceID(item.ID),
  				services.WithExpires(item.Expires))...)
  		if err != nil {
  			return nil, trace.Wrap(err)
  		}
  		if err := ca.Check(); err != nil {
  			return nil, trace.Wrap(err)
  		}
  		setSigningKeys(ca, loadSigningKeys)
  		cas[i] = ca
  	}
  
  	return cas, nil
  }
docs: // GetCertAuthorities returns a list of authorities of a given type
  // loadSigningKeys controls whether signing keys should be loaded or not