private static function validateRequestFromQueue($queue, $includeTargetUrl = null, $sslEnabled = null, $domainAlias = null, $language = null, $layoutName = null)
 {
     global $resultProviderFactory;
     $sessionObject = $resultProviderFactory()->getValidationResult($queue);
     if ($sessionObject != null) {
         if ($sessionObject instanceof AcceptedConfirmedResult) {
             return new AcceptedConfirmedResult($queue, $sessionObject->getKnownUser(), false);
         }
         return $sessionObject;
     }
     try {
         $knownUser = KnownUserFactory::verifyMd5Hash();
         if ($knownUser == null) {
             $landingPage = $queue->getLandingPageUrl($includeTargetUrl);
             if ($landingPage != null) {
                 return new EnqueueResult($queue, $landingPage);
             }
             return new EnqueueResult($queue, $queue->GetQueueUrl($includeTargetUrl, $sslEnabled, $domainAlias, $language, $layoutName));
         }
         if ($knownUser->getTimeStamp()->getTimestamp() < time() - 180) {
             throw new ExpiredValidationException($queue, $knownUser);
         }
         $result = new AcceptedConfirmedResult($queue, $knownUser, true);
         $resultProviderFactory()->setValidationResult($queue, $result);
         return $result;
     } catch (InvalidKnownUserUrlException $ex) {
         throw new KnownUserValidationException($ex, $queue);
     } catch (InvalidKnownUserHashException $ex) {
         throw new KnownUserValidationException($ex, $queue);
     }
 }
 private function generateHash($queueId, $originalUrl, $placeInQueue, $redirectType, $timestamp, $expirationTime)
 {
     if ($placeInQueue == null) {
         $placeInQueue = 0;
     }
     return hash("sha256", $queueId . $originalUrl . $placeInQueue . $redirectType . $timestamp . $expirationTime . KnownUserFactory::getSecretKey());
 }