/**
  *
  * @return SecurityModule
  * @throws \Exception
  */
 private function validateRequestDataSignature()
 {
     $result = $this;
     if (!$this->getIsEnabled()) {
         return $result;
     }
     $rpc = $this->getRpc();
     $request = $rpc->getRequest();
     $requestData = $request->getData();
     if (!is_array($requestData)) {
         $requestData = array();
     }
     $signatureGiven = $request->getDataKey('signature');
     $signSecret = $this->getSignatureRequestSecret();
     $signAlgorithm = $this->getSignatureAlgorithm();
     $signData = array();
     $signKeys = $this->getSignatureSignRequestKeys();
     foreach ($signKeys as $key) {
         $value = null;
         if (array_key_exists($requestData, $key)) {
             $value = $requestData[$key];
         }
         $signData[$key] = $value;
     }
     $signatureIsValid = RpcUtil::validateSignedRequest($signatureGiven, $signData, $signKeys, $signSecret, $signAlgorithm);
     if (!$signatureIsValid) {
         $e = $this->newModuleException();
         $e->setMessage($e::ERROR_RPC_SIGNATURE_INVALID);
         $e->setMethodInfo($this, __METHOD__, __LINE__);
         throw $e;
     }
     return $result;
 }