Files
comp537-messenger/messenger.py
T

58 lines
1.7 KiB
Python

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):
self.server_signing_key = server_signing_key
self.server_decryption_key = server_decryption_key
def decryptReport(self, ct):
raise Exception("not implemented!")
return
def signCert(self, cert):
raise Exception("not implemented!")
return
class MessengerClient:
def __init__(self, name, server_signing_pk, server_encryption_pk):
self.name = name
self.server_signing_pk = server_signing_pk
self.server_encryption_pk = server_encryption_pk
self.conns = {}
self.certs = {}
self.dh = GENERATE_DH()
self.certificate = None
def generateCertificate(self):
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!")
return
def sendMessage(self, name, message):
raise Exception("not implemented!")
return
def receiveMessage(self, name, header, ciphertext):
raise Exception("not implemented!")
return
def report(self, name, message):
raise Exception("not implemented!")
return