code: func (api *SignerAPI) New(ctx context.Context) (common.Address, error) {
  	be := api.am.Backends(keystore.KeyStoreType)
  	if len(be) == 0 {
  		return common.Address{}, errors.New("password based accounts not supported")
  	}
  	if resp, err := api.UI.ApproveNewAccount(&NewAccountRequest{MetadataFromContext(ctx)}); err != nil {
  		return common.Address{}, err
  	} else if !resp.Approved {
  		return common.Address{}, ErrRequestDenied
  	}
  
  	// Three retries to get a valid password
  	for i := 0; i < 3; i++ {
  		resp, err := api.UI.OnInputRequired(UserInputRequest{
  			"New account password",
  			fmt.Sprintf("Please enter a password for the new account to be created (attempt %d of 3)", i),
  			true})
  		if err != nil {
  			log.Warn("error obtaining password", "attempt", i, "error", err)
  			continue
  		}
  		if pwErr := ValidatePasswordFormat(resp.Text); pwErr != nil {
  			api.UI.ShowError(fmt.Sprintf("Account creation attempt #%d failed due to password requirements: %v", (i + 1), pwErr))
  		} else {
  			// No error
  			acc, err := be[0].(*keystore.KeyStore).NewAccount(resp.Text)
  			return acc.Address, err
  		}
  	}
  	// Otherwise fail, with generic error message
  	return common.Address{}, errors.New("account creation failed")
  }
docs: // New creates a new password protected Account. The private key is protected with
  // the given password. Users are responsible to backup the private key that is stored
  // in the keystore location thas was specified when this API was created.