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; }