def test_base58encode(self): self.assertEqual(['5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ', '5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss', '5KfazyjBBtR2YeHjNqX5D6MXvqTUd2iZmWusrdDSUqoykTyWQZB'], [base58encode('800c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d507a5b8d'), base58encode('80e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8555c5bbb26'), base58encode('80f3a375e00cc5147f30bee97bb5d54b31a12eee148a1ac31ac9edc4ecd13bc1f80cc8148e')])
def encode_memo(priv, pub, nonce, message, **kwargs): """ Encode a message with a shared secret between Alice and Bob :param PrivateKey priv: Private Key (of Alice) :param PublicKey pub: Public Key (of Bob) :param int nonce: Random nonce :param str message: Memo message :return: Encrypted message :rtype: hex """ from golosbase import transactions shared_secret = get_shared_secret(priv, pub) aes, check = init_aes(shared_secret, nonce) raw = bytes(message, 'utf8') " Padding " BS = 16 if len(raw) % BS: raw = _pad(raw, BS) " Encryption " cipher = hexlify(aes.encrypt(raw)).decode('ascii') prefix = kwargs.pop("prefix", default_prefix) s = { "from": format(priv.pubkey, prefix), "to": format(pub, prefix), "nonce": nonce, "check": check, "encrypted": cipher, "from_priv": repr(priv), "to_pub": repr(pub), "shared_secret": shared_secret, } tx = Memo(**s) return "#" + base58encode(hexlify(bytes(tx)).decode("ascii"))
def encode_memo(priv, pub, nonce, message, **kwargs): """ Encode a message with a shared secret between Alice and Bob. :param PrivateKey priv: Private Key (of Alice) :param PublicKey pub: Public Key (of Bob) :param int nonce: Random nonce :param str message: Memo message :return: Encrypted message :rtype: hex """ shared_secret = get_shared_secret(priv, pub) aes, check = init_aes(shared_secret, nonce) raw = bytes(message, "utf8") " Padding " BS = 16 if len(raw) % BS: raw = _pad(raw, BS) " Encryption " cipher = hexlify(aes.encrypt(raw)).decode("ascii") prefix = kwargs.pop("prefix", default_prefix) s = OrderedDict([ ("from", format(priv.pubkey, prefix)), ("to", format(pub, prefix)), ("nonce", nonce), ("check", check), ("encrypted", cipher), ("from_priv", repr(priv)), ("to_pub", repr(pub)), ("shared_secret", shared_secret), ]) tx = Memo(**s) return "#" + base58encode(hexlify(bytes(tx)).decode("ascii"))