Fix endianness of hash in db

This commit is contained in:
yzernik 2020-06-06 18:40:43 -07:00
parent 4c80d01e42
commit 964920bbbb
6 changed files with 44 additions and 34 deletions

View file

@ -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

View file

@ -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)

View file

@ -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)

View file

@ -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]

View file

@ -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]

View file

@ -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]