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)
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
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}')
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