generated from mwc/lab_subrosa
im done
This commit is contained in:
@@ -57,31 +57,53 @@ class SubRosaUI:
|
||||
elif choice == '2':
|
||||
return 'SEND'
|
||||
|
||||
def show_messages(self):
|
||||
"""Fetches all messages and displays them.
|
||||
Note: The messages arrive from the server encrypted.
|
||||
"""
|
||||
messages = self.api.get_messages(self.username)['messages']
|
||||
if messages:
|
||||
for i, message in enumerate(messages):
|
||||
print('-' * 80)
|
||||
print(f"{i}. From {message['sender']}:")
|
||||
print(message['ciphertext'])
|
||||
else:
|
||||
print(f"No messages for {self.username}.")
|
||||
def show_messages(self):
|
||||
messages = self.api.get_messages(self.username)
|
||||
|
||||
for i, message in enumerate(messages):
|
||||
ciphertext = message["ciphertext"]
|
||||
sender = message["sender"]
|
||||
|
||||
def send_message(self):
|
||||
"""Sends a message.
|
||||
"""
|
||||
try:
|
||||
recipient_name = input("Username of recipient: ").strip()
|
||||
recipient = self.api.get_user(recipient_name)
|
||||
except APIError:
|
||||
print(f"No user named {recipient_name}.")
|
||||
return
|
||||
plaintext = input("Message: ")
|
||||
print('-' * 80)
|
||||
print(f"Sorry, couldn't send a message to {recipient_name}; this method isn't implemented yet.")
|
||||
plaintext = self.private_key.decrypt(ciphertext)
|
||||
except Exception:
|
||||
plaintext = "[Could not decrypt]"
|
||||
|
||||
print("-" * 80)
|
||||
print(f"{i}. From {sender}:")
|
||||
print(plaintext)
|
||||
|
||||
print("=" * 80)
|
||||
|
||||
def send_message(self):
|
||||
recipient = input("Username of recipient: ")
|
||||
message = input("Message: ")
|
||||
|
||||
# get recipient public key
|
||||
recipient_public_key = self.api.get_public_key(recipient)
|
||||
|
||||
# encrypt message
|
||||
ciphertext = recipient_public_key.encrypt(message)
|
||||
|
||||
# get current time
|
||||
time_sent = get_current_time()
|
||||
|
||||
# sign the time
|
||||
time_sent_signature = self.private_key.sign(time_sent)
|
||||
|
||||
# send message
|
||||
self.api.send_message(
|
||||
self.username,
|
||||
recipient,
|
||||
ciphertext,
|
||||
time_sent,
|
||||
time_sent_signature
|
||||
)
|
||||
|
||||
print("-" * 80)
|
||||
print("Message sent!")
|
||||
print("=" * 80)
|
||||
|
||||
|
||||
def get_current_time(self):
|
||||
return datetime.utcnow().isoformat()
|
||||
|
||||
Reference in New Issue
Block a user