From 5572ee07d06ecb44b19bf72bda1ddba87a26381a Mon Sep 17 00:00:00 2001 From: Jonathan Zernik Date: Tue, 12 Jan 2021 19:13:40 -0800 Subject: [PATCH] Use bytes for server proto (#626) * Use bytes for squeak_hash in getsqueak method * Use bytes for squeak hash in get offer rpc * Use bytes for hash field in squeak message in proto * Use bytes for hashes in lookup response * Remove old commented code * Use bytes for squeak hash in peer client post * Remove old comments --- itests/tests/test_squeak_node.py | 30 ++++++++++++--------- itests/tests/util.py | 2 +- proto/squeak_server.proto | 8 +++--- squeaknode/network/peer_client.py | 10 +++---- squeaknode/server/squeak_server_handler.py | 4 +-- squeaknode/server/squeak_server_servicer.py | 11 +++----- 6 files changed, 32 insertions(+), 33 deletions(-) diff --git a/itests/tests/test_squeak_node.py b/itests/tests/test_squeak_node.py index a6e09d93..8acaf187 100644 --- a/itests/tests/test_squeak_node.py +++ b/itests/tests/test_squeak_node.py @@ -80,7 +80,7 @@ def test_post_squeak(server_stub, admin_stub, lightning_client, following_signin # Get the same squeak from the server get_response = server_stub.GetSqueak( - squeak_server_pb2.GetSqueakRequest(hash=squeak_hash) + squeak_server_pb2.GetSqueakRequest(hash=bytes.fromhex(squeak_hash)) ) get_response_squeak = squeak_from_msg(get_response.squeak) CheckSqueak(get_response_squeak, skipDecryptionCheck=True) @@ -122,7 +122,7 @@ def test_lookup_squeaks(server_stub, admin_stub, signing_profile_id, saved_squea ) ) assert len(lookup_response.hashes) == 1 - assert saved_squeak_hash in set(lookup_response.hashes) + assert bytes.fromhex(saved_squeak_hash) in set(lookup_response.hashes) def test_lookup_squeaks_empty_result_addresses(server_stub, admin_stub): @@ -172,7 +172,8 @@ def test_sell_squeak(server_stub, admin_stub, lightning_client, saved_squeak_has # Get the squeak from the server get_response = server_stub.GetSqueak( - squeak_server_pb2.GetSqueakRequest(hash=saved_squeak_hash) + squeak_server_pb2.GetSqueakRequest( + hash=bytes.fromhex(saved_squeak_hash)) ) get_response_squeak = squeak_from_msg(get_response.squeak) CheckSqueak(get_response_squeak, skipDecryptionCheck=True) @@ -180,7 +181,7 @@ def test_sell_squeak(server_stub, admin_stub, lightning_client, saved_squeak_has # Buy the squeak data key buy_response = server_stub.GetOffer( squeak_server_pb2.GetOfferRequest( - hash=saved_squeak_hash, + hash=bytes.fromhex(saved_squeak_hash), ) ) assert buy_response.offer.payment_request.startswith("ln") @@ -238,7 +239,8 @@ def test_make_squeak(server_stub, admin_stub, signing_profile_id): # Get the new squeak from the server get_squeak_response = server_stub.GetSqueak( - squeak_server_pb2.GetSqueakRequest(hash=make_squeak_hash) + squeak_server_pb2.GetSqueakRequest( + hash=bytes.fromhex(make_squeak_hash)) ) get_squeak_response_squeak = squeak_from_msg(get_squeak_response.squeak) CheckSqueak(get_squeak_response_squeak, skipDecryptionCheck=True) @@ -511,7 +513,8 @@ def test_delete_squeak(server_stub, admin_stub, saved_squeak_hash): # Try to get the squeak and fail with pytest.raises(Exception) as excinfo: server_stub.GetSqueak( - squeak_server_pb2.GetSqueakRequest(hash=saved_squeak_hash) + squeak_server_pb2.GetSqueakRequest( + hash=bytes.fromhex(saved_squeak_hash)) ) assert "Squeak not found." in str(excinfo.value) @@ -616,7 +619,8 @@ def test_delete_peer(server_stub, admin_stub, peer_id): def test_list_channels(server_stub, admin_stub, lightning_client, saved_squeak_hash): # Get the squeak from the server get_response = server_stub.GetSqueak( - squeak_server_pb2.GetSqueakRequest(hash=saved_squeak_hash) + squeak_server_pb2.GetSqueakRequest( + hash=bytes.fromhex(saved_squeak_hash)) ) get_response_squeak = squeak_from_msg(get_response.squeak) CheckSqueak(get_response_squeak, skipDecryptionCheck=True) @@ -624,7 +628,7 @@ def test_list_channels(server_stub, admin_stub, lightning_client, saved_squeak_h # Buy the squeak data key buy_response = server_stub.GetOffer( squeak_server_pb2.GetOfferRequest( - hash=saved_squeak_hash, + hash=bytes.fromhex(saved_squeak_hash), ) ) assert buy_response.offer.payment_request.startswith("ln") @@ -677,7 +681,8 @@ def test_send_coins(server_stub, admin_stub, lightning_client): def test_list_peers(server_stub, admin_stub, lightning_client, saved_squeak_hash): # Get the squeak from the server get_response = server_stub.GetSqueak( - squeak_server_pb2.GetSqueakRequest(hash=saved_squeak_hash) + squeak_server_pb2.GetSqueakRequest( + hash=bytes.fromhex(saved_squeak_hash)) ) get_response_squeak = squeak_from_msg(get_response.squeak) CheckSqueak(get_response_squeak, skipDecryptionCheck=True) @@ -685,7 +690,7 @@ def test_list_peers(server_stub, admin_stub, lightning_client, saved_squeak_hash # Buy the squeak data key buy_response = server_stub.GetOffer( squeak_server_pb2.GetOfferRequest( - hash=saved_squeak_hash, + hash=bytes.fromhex(saved_squeak_hash), ) ) assert buy_response.offer.payment_request.startswith("ln") @@ -728,7 +733,8 @@ def test_list_peers(server_stub, admin_stub, lightning_client, saved_squeak_hash def test_open_channel(server_stub, admin_stub, lightning_client, saved_squeak_hash): # Get the squeak from the server get_response = server_stub.GetSqueak( - squeak_server_pb2.GetSqueakRequest(hash=saved_squeak_hash) + squeak_server_pb2.GetSqueakRequest( + hash=bytes.fromhex(saved_squeak_hash)) ) get_response_squeak = squeak_from_msg(get_response.squeak) CheckSqueak(get_response_squeak, skipDecryptionCheck=True) @@ -736,7 +742,7 @@ def test_open_channel(server_stub, admin_stub, lightning_client, saved_squeak_ha # Buy the squeak data key buy_response = server_stub.GetOffer( squeak_server_pb2.GetOfferRequest( - hash=saved_squeak_hash, + hash=bytes.fromhex(saved_squeak_hash), ) ) assert buy_response.offer.payment_request.startswith("ln") diff --git a/itests/tests/util.py b/itests/tests/util.py index 9997079c..2576dc33 100644 --- a/itests/tests/util.py +++ b/itests/tests/util.py @@ -18,7 +18,7 @@ from proto import squeak_server_pb2 def build_squeak_msg(squeak): return squeak_server_pb2.Squeak( - hash=get_hash(squeak), + hash=bytes.fromhex(get_hash(squeak)), serialized_squeak=squeak.serialize(), ) diff --git a/proto/squeak_server.proto b/proto/squeak_server.proto index 321e6cfb..2fead599 100644 --- a/proto/squeak_server.proto +++ b/proto/squeak_server.proto @@ -35,7 +35,7 @@ message PostSqueakRequest { message GetSqueakRequest { /// Hash of the squeak to get. - string hash = 1; + bytes hash = 1; } message LookupSqueaksRequest { @@ -49,7 +49,7 @@ message LookupSqueaksRequest { message GetOfferRequest { /// Hash of the squeak to buy. - string hash = 1; + bytes hash = 1; } message PostSqueakReply { @@ -62,7 +62,7 @@ message GetSqueakReply { message LookupSqueaksReply { /// Hash of the squeak to get. - repeated string hashes = 1; + repeated bytes hashes = 1; /// Hash of the squeak to get. repeated string allowed_addresses = 2; @@ -75,7 +75,7 @@ message GetOfferReply { message Squeak { /// Hash of the squeak. - string hash = 1; + bytes hash = 1; /// Serialized squeak. bytes serialized_squeak = 2; diff --git a/squeaknode/network/peer_client.py b/squeaknode/network/peer_client.py index 8931554c..2f1a34e5 100644 --- a/squeaknode/network/peer_client.py +++ b/squeaknode/network/peer_client.py @@ -35,9 +35,7 @@ class PeerClient: ) ) return LookupResponse( - hashes=[ - bytes.fromhex(hash) - for hash in lookup_response.hashes], + hashes=lookup_response.hashes, allowed_addresses=lookup_response.allowed_addresses, ) @@ -54,7 +52,7 @@ class PeerClient: with self.get_stub() as stub: get_response = stub.GetSqueak( squeak_server_pb2.GetSqueakRequest( - hash=squeak_hash.hex(), + hash=squeak_hash, ) ) get_response_squeak = self._squeak_from_msg(get_response.squeak) @@ -65,7 +63,7 @@ class PeerClient: with self.get_stub() as stub: buy_response = stub.GetOffer( squeak_server_pb2.GetOfferRequest( - hash=squeak_hash.hex(), + hash=squeak_hash, ) ) offer_msg = buy_response.offer @@ -73,7 +71,7 @@ class PeerClient: def _build_squeak_msg(self, squeak: CSqueak): return squeak_server_pb2.Squeak( - hash=get_hash(squeak).hex(), + hash=get_hash(squeak), serialized_squeak=squeak.serialize(), ) diff --git a/squeaknode/server/squeak_server_handler.py b/squeaknode/server/squeak_server_handler.py index 3148b4de..f6d60086 100644 --- a/squeaknode/server/squeak_server_handler.py +++ b/squeaknode/server/squeak_server_handler.py @@ -44,9 +44,7 @@ class SqueakServerHandler(object): len(allowed_addresses)) ) return squeak_server_pb2.LookupSqueaksReply( - hashes=[ - hash.hex() - for hash in hashes], + hashes=hashes, allowed_addresses=allowed_addresses, ) diff --git a/squeaknode/server/squeak_server_servicer.py b/squeaknode/server/squeak_server_servicer.py index 39b66848..2229db77 100644 --- a/squeaknode/server/squeak_server_servicer.py +++ b/squeaknode/server/squeak_server_servicer.py @@ -31,7 +31,7 @@ class SqueakServerServicer(squeak_server_pb2_grpc.SqueakServerServicer): return squeak_server_pb2.PostSqueakReply() # Check if squeak hash is correct - if get_hash(squeak).hex() != squeak_hash: + if get_hash(squeak) != squeak_hash: context.set_code(grpc.StatusCode.INVALID_ARGUMENT) return squeak_server_pb2.PostSqueakReply() @@ -45,9 +45,7 @@ class SqueakServerServicer(squeak_server_pb2_grpc.SqueakServerServicer): return squeak_server_pb2.PostSqueakReply() def GetSqueak(self, request: squeak_server_pb2.GetSqueakRequest, context): - # squeak_hash = request.hash - squeak_hash_str = request.hash - squeak_hash = bytes.fromhex(squeak_hash_str) + squeak_hash = request.hash # TODO: check if hash is valid squeak = self.handler.handle_get_squeak(squeak_hash) @@ -60,7 +58,7 @@ class SqueakServerServicer(squeak_server_pb2_grpc.SqueakServerServicer): return squeak_server_pb2.GetSqueakReply( squeak=squeak_server_pb2.Squeak( - hash=get_hash(squeak).hex(), + hash=get_hash(squeak), serialized_squeak=squeak.serialize(), ) ) @@ -69,8 +67,7 @@ class SqueakServerServicer(squeak_server_pb2_grpc.SqueakServerServicer): return self.handler.handle_lookup_squeaks(request) def GetOffer(self, request, context): - squeak_hash_str = request.hash - squeak_hash = bytes.fromhex(squeak_hash_str) + squeak_hash = request.hash # TODO: check if hash is valid client_addr = context.peer() ip_addr = parse_ip_address(client_addr)