# File lib/omniauth/strategies/windows_live/windowslivelogin.rb, line 807
  def decodeAndValidateToken(token, cryptkey=@cryptkey, signkey=@signkey,
                             internal_allow_recursion=true)
    haveoldsecret = false
    if (oldsecretexpiry and (Time.now.to_i < oldsecretexpiry.to_i))
      haveoldsecret = true if (@oldcryptkey and @oldsignkey)
    end
    haveoldsecret = (haveoldsecret and internal_allow_recursion)

    stoken = decodeToken(token, cryptkey)
    stoken = validateToken(stoken, signkey) if stoken
    if (stoken.nil? and haveoldsecret)
      debug("Warning: Failed to validate token with current secret, attempting old secret.")
      stoken = decodeAndValidateToken(token, @oldcryptkey, @oldsignkey, false)
    end
    stoken
  end