From 6ffb34d02274fc783766d4ab414ad3551641e2e9 Mon Sep 17 00:00:00 2001 From: hinuiiik Date: Mon, 19 Oct 2026 18:34:58 -0400 Subject: [PATCH] main --- main.py | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++ messenger.py | 45 ++++++++++++++++++++ 2 files changed, 158 insertions(+) create mode 100644 main.py create mode 100644 messenger.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..3377cfc --- /dev/null +++ b/main.py @@ -0,0 +1,113 @@ +from cryptography.hazmat.primitives.asymmetric import ec + +from messenger import MessengerServer +from messenger import MessengerClient + +def error(s): + print("=== ERROR: " + s) + +print("Initializing Server") +server_sign_sk = ec.generate_private_key(ec.SECP256R1()) +server_enc_sk = ec.generate_private_key(ec.SECP256R1()) +server = MessengerServer(server_sign_sk, server_enc_sk) + +server_sign_pk = server_sign_sk.public_key() +server_enc_pk = server_enc_sk.public_key() + +print("Initializing Users") +alice = MessengerClient("alice", server_sign_pk, server_enc_pk) +bob = MessengerClient("bob", server_sign_pk, server_enc_pk) +carol = MessengerClient("carol", server_sign_pk, server_enc_pk) + +print("Generating Certs") +certA = alice.generateCertificate() +certB = bob.generateCertificate() +certC = carol.generateCertificate() + +print("Signing Certs") +sigA = server.signCert(certA) +sigB = server.signCert(certB) +sigC = server.signCert(certC) + +print("Distributing Certs") +try: + alice.receiveCertificate(certB, sigB) + alice.receiveCertificate(certC, sigC) + bob.receiveCertificate(certA, sigA) + bob.receiveCertificate(certC, sigC) + carol.receiveCertificate(certA, sigA) + carol.receiveCertificate(certB, sigB) +except: + error("certificate verification issue") + +print("Testing incorrect cert issuance") +mallory = MessengerClient("mallory", server_sign_pk, server_enc_pk) +certM = mallory.generateCertificate() +try: + alice.receiveCertificate(certM, sigC) +except: + print("successfully detected bad signature!") +else: + error("accepted certificate with incorrect signature") + +print("Testing Reporting") +content = "inappropriate message contents" +reportPT, reportCT = alice.report("Bob", content) +decryptedReport = server.decryptReport(reportCT) +if decryptedReport != reportPT: + error("report did not decrypt properly") + print(reportPT) + print(decryptedReport) +else: + print("Reporting test successful!") + +print("Testing a conversation") +header, ct = alice.sendMessage("bob", "Hi Bob!") +msg = bob.receiveMessage("alice", header, ct) +if msg != "Hi Bob!": + error("message 1 was not decrypted correctly") + +header, ct = alice.sendMessage("bob", "Hi again Bob!") +msg = bob.receiveMessage("alice", header, ct) +if msg != "Hi again Bob!": + error("message 2 was not decrypted correctly") + +header, ct = bob.sendMessage("alice", "Hey Alice!") +msg = alice.receiveMessage("bob", header, ct) +if msg != "Hey Alice!": + error("message 3 was not decrypted correctly") + +header, ct = bob.sendMessage("alice", "Can't talk now") +msg = alice.receiveMessage("bob", header, ct) +if msg != "Can't talk now": + error("message 4 was not decrypted correctly") + +header, ct = bob.sendMessage("alice", "Started the homework too late :(") +msg = alice.receiveMessage("bob", header, ct) +if msg != "Started the homework too late :(": + error("message 5 was not decrypted correctly") + +header, ct = alice.sendMessage("bob", "Ok, bye Bob!") +msg = bob.receiveMessage("alice", header, ct) +if msg != "Ok, bye Bob!": + error("message 6 was not decrypted correctly") + +header, ct = bob.sendMessage("alice", "I'll remember to start early next time!") +msg = alice.receiveMessage("bob", header, ct) +if msg != "I'll remember to start early next time!": + error("message 7 was not decrypted correctly") + +print("conversation completed!") + + +print("Testing handling an incorrect message") + +h, c = alice.sendMessage("bob", "malformed message test") +m = bob.receiveMessage("alice", h, ct) +if m != None: + error("didn't reject incorrect message") +else: + print("success!") + + +print("Testing complete") diff --git a/messenger.py b/messenger.py new file mode 100644 index 0000000..1be8cf5 --- /dev/null +++ b/messenger.py @@ -0,0 +1,45 @@ +import os +import pickle +import string + +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 = {} + + def generateCertificate(self): + raise Exception("not implemented!") + return + + 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