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")
|
||||
Reference in New Issue
Block a user