diff --git a/messenger.py b/messenger.py index 1be8cf5..0c6a6a7 100644 --- a/messenger.py +++ b/messenger.py @@ -1,6 +1,15 @@ import os import pickle import string +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.hazmat.primitives.asymmetric import ec +from cryptography.hazmat.primitives.ciphers.aead import AESGCM +from cryptography.hazmat.primitives.kdf.hkdf import HKDF + +CURVE = ec.SECP256R1() + +def GENERATE_DH(): + return ec.generate_private_key(CURVE) class MessengerServer: def __init__(self, server_signing_key, server_decryption_key): @@ -23,10 +32,13 @@ class MessengerClient: self.server_encryption_pk = server_encryption_pk self.conns = {} self.certs = {} + self.dh = GENERATE_DH() + self.certificate = None def generateCertificate(self): - raise Exception("not implemented!") - return + self.certificate = pickle.dumps((self.name, self.dh.public_key().public_bytes(serialization.Encoding.X962, + serialization.PublicFormat.UncompressedPoint))) + return self.certificate def receiveCertificate(self, certificate, signature): raise Exception("not implemented!")