From f9d8115ba67cc6a63381bb74f78ae9e88b0103f9 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 2 Nov 2020 15:19:58 -0800 Subject: [PATCH] Stop double-encoding broadcasts Fixes #234 --- bookwyrm/broadcast.py | 3 +-- bookwyrm/signatures.py | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bookwyrm/broadcast.py b/bookwyrm/broadcast.py index 9b071b393..a1eebaee3 100644 --- a/bookwyrm/broadcast.py +++ b/bookwyrm/broadcast.py @@ -61,7 +61,7 @@ def broadcast_task(sender_id, activity, recipients): return errors -def sign_and_send(sender, activity, destination): +def sign_and_send(sender, data, destination): ''' crpyto whatever and http junk ''' now = http_date() @@ -69,7 +69,6 @@ def sign_and_send(sender, activity, destination): # this shouldn't happen. it would be bad if it happened. raise ValueError('No private key found for sender') - data = json.dumps(activity).encode('utf-8') digest = make_digest(data) response = requests.post( diff --git a/bookwyrm/signatures.py b/bookwyrm/signatures.py index 7e3c637ff..57c181dfb 100644 --- a/bookwyrm/signatures.py +++ b/bookwyrm/signatures.py @@ -44,7 +44,8 @@ def make_signature(sender, destination, date, digest): def make_digest(data): ''' creates a message digest for signing ''' - return 'SHA-256=' + b64encode(hashlib.sha256(data).digest()).decode('utf-8') + return 'SHA-256=' + b64encode(hashlib.sha256(data.encode('utf-8'))\ + .digest()).decode('utf-8') def verify_digest(request):