This commit is contained in:
mdecker62
2026-04-02 10:32:51 -04:00
parent fae74250a9
commit 5844ff8383
2 changed files with 57 additions and 26 deletions

View File

@@ -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()