diff options
author | Alexey Rusakov <Kitsune-Ral@users.sf.net> | 2022-09-12 18:56:54 +0200 |
---|---|---|
committer | Alexey Rusakov <Kitsune-Ral@users.sf.net> | 2022-09-12 18:56:54 +0200 |
commit | f4009215b500dbae4a10d1a86bb059272e47d0cb (patch) | |
tree | 3b0b2e9559133082f1658efd0ded5b6d54562c51 /lib/keyverificationsession.cpp | |
parent | e003251fa57589fcdaa28b99157a845415a25370 (diff) | |
download | libquotient-f4009215b500dbae4a10d1a86bb059272e47d0cb.tar.gz libquotient-f4009215b500dbae4a10d1a86bb059272e47d0cb.zip |
Only trust verification keys if the user verified the SAS
Diffstat (limited to 'lib/keyverificationsession.cpp')
-rw-r--r-- | lib/keyverificationsession.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/keyverificationsession.cpp b/lib/keyverificationsession.cpp index c6b62a83..541ca49b 100644 --- a/lib/keyverificationsession.cpp +++ b/lib/keyverificationsession.cpp @@ -249,6 +249,10 @@ void KeyVerificationSession::sendMac() mac), m_encrypted); setState (macReceived ? DONE : WAITINGFORMAC); + m_verified = true; + if (!m_pendingEdKeyId.isEmpty()) { + trustKeys(); + } } void KeyVerificationSession::sendDone() @@ -387,7 +391,16 @@ void KeyVerificationSession::handleMac(const KeyVerificationMacEvent& event) return; } - m_connection->database()->setSessionVerified(edKeyId); + m_pendingEdKeyId = edKeyId; + + if (m_verified) { + trustKeys(); + } +} + +void KeyVerificationSession::trustKeys() +{ + m_connection->database()->setSessionVerified(m_pendingEdKeyId); emit m_connection->sessionVerified(m_remoteUserId, m_remoteDeviceId); macReceived = true; |