implement decryptReport
This commit is contained in:
+16
-2
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user