/**
  * Returns all parameters as a querystring.
  *
  * @return string
  */
 protected function stringifyParameters()
 {
     if (isset($this->parameters['PBX_HMAC'])) {
         unset($this->parameters['PBX_HMAC']);
     }
     ksort($this->parameters);
     return Tools::stringify($this->parameters);
 }
 /**
  * Verifies the validity of the signature.
  *
  * @return bool
  */
 public function verifySignature()
 {
     $this->logger->info('New IPN call.');
     $this->initData();
     $this->initSignature();
     $file = fopen($this->parameters['public_key'], 'r');
     $cert = fread($file, 1024);
     fclose($file);
     $publicKey = openssl_pkey_get_public($cert);
     $result = openssl_verify(Tools::stringify($this->data), $this->signature, $publicKey, 'sha1WithRSAEncryption');
     $this->logger->info(Tools::stringify($this->data));
     $this->logger->info(base64_encode($this->signature));
     if ($result == 1) {
         $this->logger->info('Signature is valid.');
     } elseif ($result == 0) {
         $this->logger->error('Signature is invalid.');
     } else {
         $this->logger->error('Error while verifying Signature.');
     }
     $result = 1 == $result;
     openssl_free_key($publicKey);
     $event = new PayboxResponseEvent($this->data, $result);
     $this->dispatcher->dispatch(PayboxEvents::PAYBOX_IPN_RESPONSE, $event);
     return $result;
 }