Esempio n. 1
0
def sign(authenticator, message):
    """
    Sign the message using the specified validator.
    signed document:
      {
        message: <message>,
        signature: <signature>
      }
    :param authenticator: A message authenticator.
    :type authenticator: Authenticator
    :param message: A (signed) json encoded AMQP message.
    :rtype message: str
    """
    if not authenticator:
        return message
    try:
        h = sha256()
        h.update(message)
        digest = h.hexdigest()
        signature = authenticator.sign(digest)
        signed = Document(message=message, signature=encode(signature))
        message = signed.dump()
    except Exception, e:
        log.info(utf8(e))
        log.debug(message, exc_info=True)
Esempio n. 2
0
def sign(authenticator, message):
    """
    Sign the message using the specified validator.
    signed document:
      {
        message: <message>,
        signature: <signature>
      }
    :param authenticator: A message authenticator.
    :type authenticator: Authenticator
    :param message: A (signed) json encoded AMQP message.
    :rtype message: str
    """
    if not authenticator:
        return message
    try:
        h = sha256()
        h.update(message.encode(ENCODING))
        digest = h.hexdigest()
        signature = authenticator.sign(digest)
        signed = Document(message=message, signature=encode(signature))
        message = signed.dump()
    except Exception as e:
        log.info(str(e))
        log.debug(message, exc_info=True)
    return message
Esempio n. 3
0
 def test_dump(self):
     document = Document(
         A=1,
         B=2,
         C=Document(a=1, b=2),
         D=dict(x=10, y=20),
         E=[1, Document(), dict()],
         F=10,
         G='howdy',
         H=True,
     )
     s = document.dump()
     self.assertEqual(
         s,
         '{"A": 1, "B": 2, "C": {"a": 1, "b": 2}, "D": {"x": 10, "y": 20}, '
         '"E": [1, {}, {}], "F": 10, "G": "howdy", "H": true}')
Esempio n. 4
0
 def test_dump(self):
     document = Document(
         A=1,
         B=2,
         C=Document(a=1, b=2),
         D=dict(x=10, y=20),
         E=[1, Document(), dict()],
         F=10,
         G='howdy',
         H=True,
     )
     s = document.dump()
     self.assertEqual(
         s,
         '{"A": 1, "B": 2, "C": {"a": 1, "b": 2}, "D": {"x": 10, "y": 20}, '
         '"E": [1, {}, {}], "F": 10, "G": "howdy", "H": true}')
Esempio n. 5
0
 def send(self, address, ttl=None, **body):
     """
     Send a message.
     :param address: An AMQP address.
     :type address: str
     :param ttl: Time to Live (seconds)
     :type ttl: float
     :keyword body: document body.
     :return: The message serial number.
     :rtype: str
     :raise: ModelError
     """
     sn = utf8(uuid4())
     routing = (None, address)
     document = Document(sn=sn, version=VERSION, routing=routing)
     document += body
     unsigned = document.dump()
     signed = auth.sign(self.authenticator, unsigned)
     self._impl.send(address, signed, ttl)
     return sn