code: func getUser(storage Storage, email string) (User, error) {
  	var user User
  
  	// open user reg
  	userData, err := storage.LoadUser(email)
  	if err != nil {
  		if _, ok := err.(ErrNotExist); ok {
  			// create a new user
  			return newUser(email)
  		}
  		return user, err
  	}
  
  	// load user information
  	err = json.Unmarshal(userData.Reg, &user)
  	if err != nil {
  		return user, err
  	}
  
  	// load their private key
  	user.key, err = loadPrivateKey(userData.Key)
  	return user, err
  }
docs: // getUser loads the user with the given email from disk
  // using the provided storage. If the user does not exist,
  // it will create a new one, but it does NOT save new
  // users to the disk or register them via ACME. It does
  // NOT prompt the user.