code: func (ra *RegistrationAuthorityImpl) validateContacts(ctx context.Context, contacts *[]string) error {
  	if contacts == nil || len(*contacts) == 0 {
  		return nil // Nothing to validate
  	}
  	if ra.maxContactsPerReg > 0 && len(*contacts) > ra.maxContactsPerReg {
  		return berrors.MalformedError(
  			"too many contacts provided: %d > %d",
  			len(*contacts),
  			ra.maxContactsPerReg,
  		)
  	}
  
  	for _, contact := range *contacts {
  		if contact == "" {
  			return berrors.MalformedError("empty contact")
  		}
  		parsed, err := url.Parse(contact)
  		if err != nil {
  			return berrors.MalformedError("invalid contact")
  		}
  		if parsed.Scheme != "mailto" {
  			return berrors.MalformedError("contact method %s is not supported", parsed.Scheme)
  		}
  		if !core.IsASCII(contact) {
  			return berrors.MalformedError(
  				"contact email [%s] contains non-ASCII characters",
  				contact,
  			)
  		}
  		if err := validateEmail(parsed.Opaque); err != nil {
  			return err
  		}
  	}
  
  	return nil
  }
docs: // validateContacts checks the provided list of contacts, returning an error if
  // any are not acceptable. Unacceptable contacts lists include:
  // * An empty list
  // * A list has more than maxContactsPerReg contacts
  // * A list containing an empty contact
  // * A list containing a contact that does not parse as a URL
  // * A list containing a contact that has a URL scheme other than mailto
  // * A list containing a contact that has non-ascii characters
  // * A list containing a contact that doesn't pass `validateEmail`