main
This commit is contained in:
@@ -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")
|
||||||
@@ -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
|
||||||
Reference in New Issue
Block a user