def test_pubkey_to_address(self): addr = address_from_public_key(unhexlify('ed9434799226374926eda3b54b1b461b4abf7237962eae18528fea67595397fa32')) self.assertEqual(addr, 'rDTXLQ7ZKZVKz33zJbHjgVShjsBnqMBhmN') addr = address_from_public_key(unhexlify('03e2b079e9b09ae8916da8f5ee40cbda9578dbe7c820553fe4d5f872eec7b1fdd4')) self.assertEqual(addr, 'rhq549rEtUrJowuxQC2WsHNGLjAjBQdAe8') addr = address_from_public_key(unhexlify('0282ee731039929e97db6aec242002e9aa62cd62b989136df231f4bb9b8b7c7eb2')) self.assertEqual(addr, 'rKzE5DTyF9G6z7k7j27T2xEas2eMo85kmw')
async def sign_tx(ctx, msg: RippleSignTx, keychain): validate(msg) await paths.validate_path(ctx, helpers.validate_full_path, keychain, msg.address_n, CURVE) node = keychain.derive(msg.address_n) source_address = helpers.address_from_public_key(node.public_key()) set_canonical_flag(msg) tx = serialize(msg, source_address, pubkey=node.public_key()) to_sign = get_network_prefix() + tx check_fee(msg.fee) if msg.payment.destination_tag is not None: await layout.require_confirm_destination_tag( ctx, msg.payment.destination_tag) await layout.require_confirm_fee(ctx, msg.fee) await layout.require_confirm_tx(ctx, msg.payment.destination, msg.payment.amount) signature = ecdsa_sign(node.private_key(), first_half_of_sha512(to_sign)) tx = serialize(msg, source_address, pubkey=node.public_key(), signature=signature) return RippleSignedTx(signature, tx)
async def get_address(ctx, msg: RippleGetAddress, keychain): await paths.validate_path(ctx, helpers.validate_full_path, keychain, msg.address_n, CURVE) node = keychain.derive(msg.address_n) pubkey = node.public_key() address = helpers.address_from_public_key(pubkey) if msg.show_display: desc = address_n_to_str(msg.address_n) while True: if await show_address(ctx, address, desc=desc): break if await show_qr(ctx, address, desc=desc): break return RippleAddress(address=address)