diff --git a/itests/run_itest.sh b/itests/run_itest.sh index 2cf67c0d..b25fc930 100755 --- a/itests/run_itest.sh +++ b/itests/run_itest.sh @@ -19,4 +19,4 @@ docker-compose run test ./test.sh echo "Shutting down itest..." # docker-compose down --rmi all --volumes -docker-compose down +# docker-compose down diff --git a/itests/test.py b/itests/test.py index 3b0689d4..e4800c47 100644 --- a/itests/test.py +++ b/itests/test.py @@ -39,7 +39,7 @@ from lnd_lightning_client import LNDLightningClient def build_squeak_msg(squeak): return squeak_server_pb2.Squeak( - hash=squeak.GetHash(), + hash=get_hash(squeak), serialized_squeak=squeak.serialize(), ) @@ -74,6 +74,11 @@ def make_squeak(signing_key: CSigningKey, content: str, reply_to: bytes = b'\x00 ) +def get_hash(squeak): + """ Needs to be reversed because hash is stored as little-endian """ + return squeak.GetHash()[::-1] + + def load_lightning_client() -> LNDLightningClient: return LNDLightningClient( 'lnd', @@ -102,12 +107,6 @@ def run(): # Make the stubs server_stub = squeak_server_pb2_grpc.SqueakServerStub(server_channel) - # # Make a direct request to the server - # server_response = server_stub.GetSqueak(squeak_server_pb2.GetSqueakRequest(hash=squeak_resp.GetHash())) - # print("Direct server response: " + str(server_response.squeak)) - # server_response_squeak = squeak_from_msg(server_response.squeak) - # assert server_response_squeak.GetDecryptedContentStr() == 'hello squeak.' - # Post a squeak with a direct request to the server signing_key = generate_signing_key() squeak = make_squeak(signing_key, 'hello from itest!') @@ -115,7 +114,7 @@ def run(): squeak_msg = build_squeak_msg(squeak) post_response = server_stub.PostSqueak(squeak_server_pb2.PostSqueakRequest(squeak=squeak_msg)) print("Direct server post response: " + str(post_response)) - assert post_response.hash == squeak.GetHash() + assert post_response.hash == get_hash(squeak) # Get the same squeak from the server get_response = server_stub.GetSqueak(squeak_server_pb2.GetSqueakRequest(hash=post_response.hash)) @@ -136,7 +135,7 @@ def run(): max_block=99999999, )) print("Lookup response: " + str(lookup_response)) - assert squeak.GetHash() in set(lookup_response.hashes) + assert get_hash(squeak) in set(lookup_response.hashes) # Lookup again without the relevant address another_signing_key = generate_signing_key() @@ -150,7 +149,7 @@ def run(): min_block=0, max_block=99999999, )) - assert squeak.GetHash() not in set(lookup_response.hashes) + assert get_hash(squeak) not in set(lookup_response.hashes) # Lookup again with a different block range signing_keys = [signing_key, other_signing_key] @@ -163,7 +162,7 @@ def run(): min_block=600, max_block=99999999, )) - assert squeak.GetHash() not in set(lookup_response.hashes) + assert get_hash(squeak) not in set(lookup_response.hashes) diff --git a/squeakserver/common/rpc/util.py b/squeakserver/common/rpc/util.py deleted file mode 100644 index 98761db1..00000000 --- a/squeakserver/common/rpc/util.py +++ /dev/null @@ -1,16 +0,0 @@ - -from squeak.core import CSqueak - -from squeakserver.common.rpc import squeak_server_pb2 -from squeakserver.common.rpc import squeak_server_pb2_grpc - - -def build_squeak_msg(squeak): - return squeak_server_pb2.Squeak( - hash=squeak.GetHash(), - serialized_squeak=squeak.serialize(), - ) - - -def squeak_from_msg(squeak_msg): - return CSqueak.deserialize(squeak_msg.serialized_squeak) diff --git a/squeakserver/server/postgres_db.py b/squeakserver/server/postgres_db.py index b7181f3d..3ebfb031 100644 --- a/squeakserver/server/postgres_db.py +++ b/squeakserver/server/postgres_db.py @@ -39,7 +39,7 @@ class PostgresDb(): with conn.cursor() as curs: # execute the INSERT statement curs.execute(sql, ( - squeak.GetHash().hex(), + get_hash(squeak).hex(), squeak.nVersion, squeak.hashEncContent.hex(), squeak.hashReplySqk.hex(), @@ -57,8 +57,8 @@ class PostgresDb(): squeak.GetDecryptedContentStr(), )) # get the generated hash back - squeak_hash = curs.fetchone()[0] - return squeak_hash + row = curs.fetchone() + return bytes.fromhex(row[0]) def get_squeak(self, squeak_hash): """ Get a squeak. """ @@ -113,3 +113,7 @@ class PostgresDb(): for row in rows ] return hashes + + +def get_hash(squeak): + return squeak.GetHash()[::-1] diff --git a/squeakserver/server/squeak_server_handler.py b/squeakserver/server/squeak_server_handler.py index b347f6ca..afeaf5ee 100644 --- a/squeakserver/server/squeak_server_handler.py +++ b/squeakserver/server/squeak_server_handler.py @@ -32,7 +32,7 @@ class SqueakServerHandler(object): inserted_squeak_hash = self.postgres_db.insert_squeak(squeak) logger.info("Inserted squeak and got back hash: " + str(inserted_squeak_hash)) ## Todo: return the squeak from the db. - return squeak.GetHash() + return inserted_squeak_hash def handle_get_squeak(self, squeak_hash): logger.info("Handler get squeak by hash: " + str(squeak_hash)) @@ -54,3 +54,7 @@ class SqueakServerHandler(object): # class MissingSigningKeyError(ClientNodeError): # def __str__(self): # return 'Missing signing key.' + + +def get_hash(squeak): + return squeak.GetHash()[::-1] diff --git a/squeakserver/server/squeak_server_servicer.py b/squeakserver/server/squeak_server_servicer.py index e8016c24..1201890b 100644 --- a/squeakserver/server/squeak_server_servicer.py +++ b/squeakserver/server/squeak_server_servicer.py @@ -18,10 +18,10 @@ from concurrent import futures import grpc +from squeak.core import CSqueak + from squeakserver.common.rpc import squeak_server_pb2 from squeakserver.common.rpc import squeak_server_pb2_grpc -from squeakserver.common.rpc.util import squeak_from_msg -from squeakserver.common.rpc.util import build_squeak_msg class SqueakServerServicer(squeak_server_pb2_grpc.SqueakServerServicer): @@ -74,3 +74,22 @@ class SqueakServerServicer(squeak_server_pb2_grpc.SqueakServerServicer): server.start() print("Started SqueakServerServicer rpc server...", flush=True) server.wait_for_termination() + + +def build_squeak_msg(squeak): + return squeak_server_pb2.Squeak( + hash=get_hash(squeak), + serialized_squeak=squeak.serialize(), + ) + + +def squeak_from_msg(squeak_msg): + squeak_hash = squeak_msg.hash + squeak = CSqueak.deserialize(squeak_msg.serialized_squeak) + if get_hash(squeak) != squeak_hash: + return None + return squeak + + +def get_hash(squeak): + return squeak.GetHash()[::-1]