code: func (c *ClientContext) Update(challenge []byte) ([]byte, error) {
  	authenticate := make([]byte, PackageInfo.MaxToken)
  	authCompleted, n, err := updateContext(c.sctxt, authenticate, challenge)
  	if err != nil {
  		return nil, err
  	}
  	if !authCompleted {
  		return nil, errors.New("ntlm authentication should be completed now")
  	}
  	if n == 0 {
  		return nil, errors.New("ntlm token should not be empty")
  	}
  	authenticate = authenticate[:n]
  	return authenticate, nil
  }
docs: // Update completes client part of NTLM negotiation c. It uses
  // challenge message received from the server, and generates
  // authenticate message to be returned to the server.