code: func (c *ServerContext) Update(token []byte) (authCompleted bool, outputToken []byte, err error) {
  	otoken := make([]byte, PackageInfo.MaxToken)
  	authDone, n, err2 := updateContext(c.sctxt, otoken, token, nil)
  	if err2 != nil {
  		return false, nil, err2
  	}
  	if n == 0 && !authDone {
  		return false, nil, errors.New("negotiate token should not be empty")
  	}
  	otoken = otoken[:n]
  	return authDone, otoken, nil
  }
docs: // Update advances server part of Negotiate negotiation c. It uses
  // token received from the client and returns true if server part
  // of authentication is complete. It also returns new token to be
  // sent to the client.