code: func (idp *IDP) GetChallenge(r *http.Request) (*Challenge, error) {
  	session, err := idp.config.ChallengeStore.Get(r, SessionCookieName)
  	if err != nil {
  		return nil, err
  	}
  
  	challenge, ok := session.Values[SessionCookieName].(*Challenge)
  	if !ok {
  		return nil, ErrorBadChallengeCookie
  	}
  
  	if challenge.Expires.Before(time.Now()) {
  		return nil, ErrorChallengeExpired
  	}
  
  	challenge.idp = idp
  
  	return challenge, nil
  }
docs: // Get the Challenge from a cookie, using Gorilla sessions