implement decryptReport

This commit is contained in:
hinuiiik
2026-10-22 20:34:51 -04:00
parent 00f1ccc6f6
commit 4d733408eb
+16 -2
View File
@@ -20,8 +20,20 @@ class MessengerServer:
self.server_decryption_key = server_decryption_key self.server_decryption_key = server_decryption_key
def decryptReport(self, ct): def decryptReport(self, ct):
raise Exception("not implemented!") data = pickle.loads(ct)
return 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): def signCert(self, cert):
return self.server_signing_key.sign(cert, ec.ECDSA(hashes.SHA256())) return self.server_signing_key.sign(cert, ec.ECDSA(hashes.SHA256()))
@@ -56,6 +68,8 @@ class MessengerClient:
raise Exception("not implemented!") raise Exception("not implemented!")
return 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): def report(self, name, message):
report = (name, message) report = (name, message)
plaintext = pickle.dumps(report) plaintext = pickle.dumps(report)