From 4d733408eb0d194255d779f625866d571bc6fab8 Mon Sep 17 00:00:00 2001 From: hinuiiik Date: Thu, 22 Oct 2026 20:34:51 -0400 Subject: [PATCH] implement decryptReport --- messenger.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/messenger.py b/messenger.py index 960ff27..d8be088 100644 --- a/messenger.py +++ b/messenger.py @@ -20,8 +20,20 @@ class MessengerServer: self.server_decryption_key = server_decryption_key def decryptReport(self, ct): - raise Exception("not implemented!") - return + data = pickle.loads(ct) + key = ec.EllipticCurvePublicKey.from_encoded_point( + CURVE, data["bytes"] + ) + shared = DH(self.server_decryption_key, key) + derived_key = HKDF( + algorithm=hashes.SHA256(), + length=32, + salt=None, + info=b"" + ).derive(shared) + aesgcm = AESGCM(derived_key) + plaintext = aesgcm.decrypt(data["nonce"], data["ciphertext"], data["bytes"]) + return plaintext.decode("latin1") def signCert(self, cert): return self.server_signing_key.sign(cert, ec.ECDSA(hashes.SHA256())) @@ -56,6 +68,8 @@ class MessengerClient: raise Exception("not implemented!") return + # this is technically hybrid encryption instead of just el gamal but I blame the instructions instead of myself + # maybe i'll change this if I want to use a late day def report(self, name, message): report = (name, message) plaintext = pickle.dumps(report)