/**
  * Validate message signature
  *
  * @param ListenerMessage $msg Message object to operate on
  *
  * @throws ListenerSecurityException on security violation
  */
 protected function doMessageSecurity(ListenerMessage $msg)
 {
     $login = $this->c->val('login');
     $secret = $this->c->val('secret');
     $signed = $login . $msg->getSignedString();
     $control = strtoupper(hash_hmac('sha256', pack('A*', $signed), pack('A*', $secret)));
     if ($control != $msg->getSignature()) {
         throw new ListenerSecurityException();
     }
     return true;
 }
 public function execute(ListenerMessage $msg)
 {
     $destinationQueue = $msg->getDestinationQueue();
     if ($destinationQueue) {
         $queue = Context::get()->getConfiguration()->object("data-store/{$destinationQueue}");
         $queueMsg = $msg->normalizeForQueue();
         SourceFields::addToMessage($queueMsg);
         $queue->push($queueMsg);
     } else {
         $class = get_class($msg);
         Logger::warning("Ignoring message of type {$class}", $msg);
     }
     return true;
 }