protected function ValidateRequestBySignature($signature, $timestamp, $serverid)
 {
     ksort($this->Request);
     $string_to_sign = "";
     foreach ($this->Request as $k => $v) {
         $string_to_sign .= "{$k}{$v}";
     }
     try {
         $DBServer = DBServer::LoadByID($serverid);
     } catch (Exception $e) {
         if (stristr($e->getMessage(), 'not found in database')) {
             throw new ForbiddenException($e->getMessage());
         }
         throw $e;
     }
     $valid_sign = \Scalr\Util\CryptoTool::keySign($string_to_sign, $DBServer->GetKey(true), $timestamp, static::HASH_ALGO);
     if ($valid_sign != $signature) {
         throw new ForbiddenException("Signature doesn't match");
     }
     return $DBServer;
 }