def sendmsg(node_id, msg, plugin, request, pay=None, **kwargs): timestamp = struct.pack("!Q", int(time.time() * 1000)) payload = TlvPayload() payload.add_field(TLV_NOISE_MESSAGE, msg.encode('UTF-8')) payload.add_field(TLV_NOISE_TIMESTAMP, timestamp) payment_key = os.urandom(32) payment_hash = hashlib.sha256(payment_key).digest() # If we don't want to tell the recipient how to claim the funds unset the # payment_key if pay is not None: payload.add_field(TLV_KEYSEND_PREIMAGE, payment_key) # Signature generation always has to be last, otherwise we won't agree on # the TLV payload and verification ends up with a bogus sender node_id. sigmsg = hexlify(payload.to_bytes()).decode('ASCII') sig = plugin.rpc.signmessage(sigmsg) sigcheck = plugin.rpc.checkmessage(sigmsg, sig['zbase']) sig = zbase32.decode(sig['zbase']) payload.add_field(TLV_NOISE_SIGNATURE, sig) res = deliver( node_id, payload.to_bytes(), amt=pay if pay is not None else 10, payment_hash=payment_hash ) request.set_result(res)
def test_zbase32(): zb32 = b'd75qtmgijm79rpooshmgzjwji9gj7dsdat8remuskyjp9oq1ugkaoj6orbxzhuo4njtyh96e3aq84p1tiuz77nchgxa1s4ka4carnbiy' b = zbase32.decode(zb32) enc = zbase32.encode(b) assert (enc == zb32)