mirror of
https://github.com/matrix-org/pantalaimon.git
synced 2025-03-12 01:06:41 -04:00
client: Don't accept a SAS automatically.
This commit is contained in:
parent
cb04e962f1
commit
840e568eac
@ -122,8 +122,17 @@ class PanClient(AsyncClient):
|
||||
loop = asyncio.get_event_loop()
|
||||
|
||||
if isinstance(event, KeyVerificationStart):
|
||||
logger.info(f"{event.sender} via {event.from_device} has started "
|
||||
f"a key verification process.")
|
||||
|
||||
message = DeviceStartSasMessage(
|
||||
self.user_id,
|
||||
event.sender,
|
||||
event.from_device
|
||||
)
|
||||
|
||||
task = loop.create_task(
|
||||
self.accept_key_verification(event.transaction_id)
|
||||
self.queue.put(message)
|
||||
)
|
||||
self.key_verificatins_tasks.append(task)
|
||||
|
||||
@ -183,6 +192,21 @@ class PanClient(AsyncClient):
|
||||
self.task = task
|
||||
return task
|
||||
|
||||
async def accept_sas(self, message):
|
||||
user_id = message.user_id
|
||||
device_id = message.device_id
|
||||
|
||||
sas = self.get_active_sas(user_id, device_id)
|
||||
|
||||
if not sas:
|
||||
await self.send_info("No such verification process found.")
|
||||
return
|
||||
|
||||
try:
|
||||
await self.accept_key_verification(sas.transaction_id)
|
||||
except (LocalProtocolError, ClientConnectionError) as e:
|
||||
await self.send_info(f"Error accepting key verification: {e}")
|
||||
|
||||
async def confirm_sas(self, message):
|
||||
user_id = message.user_id
|
||||
device_id = message.device_id
|
||||
|
@ -24,6 +24,7 @@ from pantalaimon.thread_messages import (
|
||||
ExportKeysMessage,
|
||||
ImportKeysMessage,
|
||||
DeviceConfirmSasMessage,
|
||||
DeviceAcceptSasMessage,
|
||||
InfoMessage
|
||||
)
|
||||
|
||||
@ -125,7 +126,7 @@ class ProxyDaemon:
|
||||
if isinstance(
|
||||
message,
|
||||
(DeviceVerifyMessage, DeviceUnverifyMessage,
|
||||
DeviceConfirmSasMessage)
|
||||
DeviceConfirmSasMessage, DeviceAcceptSasMessage)
|
||||
):
|
||||
|
||||
device = client.device_store[message.user_id].get(
|
||||
@ -144,6 +145,8 @@ class ProxyDaemon:
|
||||
await self._verify_device(client, device)
|
||||
elif isinstance(message, DeviceUnverifyMessage):
|
||||
await self._unverify_device(client, device)
|
||||
elif isinstance(message, DeviceAcceptSasMessage):
|
||||
await client.accept_sas(message)
|
||||
elif isinstance(message, DeviceConfirmSasMessage):
|
||||
await client.confirm_sas(message)
|
||||
|
||||
|
@ -384,6 +384,14 @@ class PanCtl:
|
||||
dbus_interface="org.pantalaimon.devices"
|
||||
)
|
||||
|
||||
def accept_sas(self, args):
|
||||
self.devices.accept_sas(
|
||||
args.pan_user,
|
||||
args.user_id,
|
||||
args.device_id,
|
||||
dbus_interface="org.pantalaimon.devices"
|
||||
)
|
||||
|
||||
def list_devices(self, args):
|
||||
devices = self.devices.list_user_devices(
|
||||
args.pan_user,
|
||||
@ -439,7 +447,7 @@ class PanCtl:
|
||||
self.import_keys(parsed_args)
|
||||
|
||||
elif command == "accept-verification":
|
||||
pass
|
||||
self.accept_sas(parsed_args)
|
||||
|
||||
elif command == "list-devices":
|
||||
self.list_devices(parsed_args)
|
||||
|
@ -51,6 +51,16 @@ class DeviceUnverifyMessage(_VerificationMessage):
|
||||
pass
|
||||
|
||||
|
||||
@attr.s
|
||||
class DeviceStartSasMessage(_VerificationMessage):
|
||||
pass
|
||||
|
||||
|
||||
@attr.s
|
||||
class DeviceAcceptSasMessage(_VerificationMessage):
|
||||
pass
|
||||
|
||||
|
||||
@attr.s
|
||||
class DeviceConfirmSasMessage(_VerificationMessage):
|
||||
pass
|
||||
|
@ -16,6 +16,7 @@ from pantalaimon.thread_messages import (
|
||||
DeviceUnverifyMessage,
|
||||
DevicesMessage,
|
||||
InfoMessage,
|
||||
DeviceAcceptSasMessage,
|
||||
DeviceConfirmSasMessage,
|
||||
DeviceAuthStringMessage,
|
||||
ImportKeysMessage,
|
||||
@ -113,6 +114,13 @@ class Devices(dbus.service.Object):
|
||||
self.queue.put(message)
|
||||
return
|
||||
|
||||
@dbus.service.method("org.pantalaimon.devices",
|
||||
in_signature="sss")
|
||||
def accept_sas(self, pan_user, user_id, device_id):
|
||||
message = DeviceAcceptSasMessage(pan_user, user_id, device_id)
|
||||
self.queue.put(message)
|
||||
return
|
||||
|
||||
def update_devices(self, message):
|
||||
device_store = self.device_list[message.user_id]
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user