Skip to content

Commit 161829b

Browse files
committed
Fix first message being undecryptable after 9cfd907
1 parent 5798099 commit 161829b

File tree

2 files changed

+13
-12
lines changed

2 files changed

+13
-12
lines changed

src/e2ee/CryptoClient.ts

+12-11
Original file line numberDiff line numberDiff line change
@@ -478,16 +478,6 @@ export class CryptoClient {
478478
try {
479479
session.unpickle(this.pickleKey, currentSession.pickled);
480480

481-
const encrypted = session.encrypt(JSON.stringify({
482-
type: eventType,
483-
content: content,
484-
room_id: roomId,
485-
}));
486-
487-
currentSession.pickled = session.pickle(this.pickleKey);
488-
currentSession.usesLeft--;
489-
await this.client.cryptoStore.storeOutboundGroupSession(currentSession);
490-
491481
const neededSessions: Record<string, string[]> = {};
492482
for (const userId of Object.keys(devices)) {
493483
neededSessions[userId] = devices[userId].map(d => d.device_id);
@@ -502,7 +492,7 @@ export class CryptoClient {
502492
continue;
503493
}
504494
const lastSession = await this.client.cryptoStore.getLastSentOutboundGroupSession(userId, device.device_id, roomId);
505-
if (lastSession?.sessionId !== session.session_id() || session.message_index() <= (lastSession?.index ?? Number.MAX_SAFE_INTEGER)) {
495+
if (lastSession?.sessionId !== session.session_id() || session.message_index() < (lastSession?.index ?? Number.MAX_SAFE_INTEGER)) {
506496
await this.encryptAndSendOlmMessage(device, olmSession, "m.room_key", <IMRoomKey>{
507497
algorithm: EncryptionAlgorithm.MegolmV1AesSha2,
508498
room_id: roomId,
@@ -514,6 +504,17 @@ export class CryptoClient {
514504
}
515505
}
516506

507+
// Encrypt after to avoid UNKNOWN_MESSAGE_INDEX errors on remote end
508+
const encrypted = session.encrypt(JSON.stringify({
509+
type: eventType,
510+
content: content,
511+
room_id: roomId,
512+
}));
513+
514+
currentSession.pickled = session.pickle(this.pickleKey);
515+
currentSession.usesLeft--;
516+
await this.client.cryptoStore.storeOutboundGroupSession(currentSession);
517+
517518
const body = {
518519
sender_key: this.deviceCurve25519,
519520
ciphertext: encrypted,

test/encryption/CryptoClientTest.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1479,7 +1479,7 @@ describe('CryptoClient', () => {
14791479
ciphertext: {
14801480
"30KcbZc4ZmLxnLu3MraQ9vIrAjwtjR8uYmwCU/sViDE": {
14811481
type: 0,
1482-
body: "Awog+jA+wNz5Wnpw5isETy9LFDw0hoao06f7ewAhY0+yRGsSIJS/3l725T7pqoV3FKZY/cPH/2dV8W8yZeIWl1DKpaQlGiAFnYCGBRA+tqaR3SpDqbqtwgz1wzA0TV+Mjvzixbd1IyLgBQMKIAIldXBMsoIngiQkuLAvUYrz6QCFAwPeFb6hKlRKcBlTEAAisAWgrDGnYPaJv4asMwVsbNSXQOxRCE/sB0VZrYKH9OKwbZuP+jqHUPa6mtVBu3Sll2ROWJ94YtPycZXX45B4pT8XMvLL/jE6fH4gXZuheb6Q5iYV0XrHMNuIzyODjzbOzpvi7GXTFvb7YMFRskb2k965vfd9NRTpuUT9eb7vkLoIgCb9gK5WApEuS5/4lOIWHKdhqB1m4ViZ4W+eEo9TzniRvAMCfeX0G+OpCv5X9h1UomZl87Kh/q5ZSluuocWFOgG8sGvyLttl3AR3Vc500+9xc0u7GT6lNvJo9Z1kH1xPcCce4oHWByFgGvdIMHYrB7SFZ/AtbiQDt/BUTgxsLd8gysHqjiiOKblz3iN3kx//f2MCTrjKgWDtmCeTRnb1Z8Rn9hdPbkpX2+yvkrmdMYYXKfQXB6PAY+6gRFqGREFXaKq8n0NPN7mN//sp7CJGmMU+DIyq7cPWcmW7zLTBdyoak0/EBQdCIXabvl9B3kfK32xEvn6BH7kFt1ayXUAGl6W/e8uzdKnkRvmnAT7yG147iKOT4DgW6a+msibvSZ2bOzzUxoMbYrdrX7OCBjS92e6IKDJ9mD8yi5apvcMnwS4AGw2U64hkG83U7lpp55tN2kPxLHpAmauQ51cNOZAt5bVPKOgUHCQD02Z1XgptdBjPOCCLaKDyoUawLDLKb8mWojiPZ+2/c6+ODeybYzCrDA2b681wo0WpvcROL0DuOb+1r1Po7AKy/tKUz2VJXTFGGergopp1XJwf7hMeur95J4hBdaCaMTSqWHvkNaIWrj/AZVFeVEZREKgl5x5DycMP6tzv5dX9M3gAcJcfvcU+ws4kqMyM+RsqI7ztB7tKu1CmQYNemHXH53ExuRz1FhBpgS6T/j2RQswLYLxVRGAgGrvi0FWTI8aBrAjUd6FyzDcanHUP2utinWs",
1482+
body: "Awog+jA+wNz5Wnpw5isETy9LFDw0hoao06f7ewAhY0+yRGsSIJS/3l725T7pqoV3FKZY/cPH/2dV8W8yZeIWl1DKpaQlGiAFnYCGBRA+tqaR3SpDqbqtwgz1wzA0TV+Mjvzixbd1IyLgBQMKIAIldXBMsoIngiQkuLAvUYrz6QCFAwPeFb6hKlRKcBlTEAAisAWgrDGnYPaJv4asMwVsbNSXQOxRCE/sB0VZrYKH9OKwbZuP+jqHUPa6mtVBu3Sll2ROWJ94YtPycZXX45B4pT8XMvLL/jE6fH4gXZuheb6Q5iYV0XrHMNuIzyODjzbOzpvi7GXTFvb7YMFRskb2k965vfd9NRTpuUT9eb7vkLoIgCb9gK5WApEuS5/4lOIWHKdhqB1m4ViZ4W+eEo9TzniRvAMCfeX0G+OpCv5X9h1UomZl87Kh/q5ZSluuocWFOgG8sGvyLttl3AR3Vc500+9xc0u7GT6lNvJo9Z1kH1xPcCce4oHWByFgGvdIMHYrB7SFZ/AtbiQDt/BUTgxsLd8gysHqjiiOKblz3iN3kx//f2MCTrjKgWDtmCeTRnb1Z8Rn9hdPbkpX2+yvkrmdMYYXKfQXB6PAY+6gRFqGREFXaKq8n0NPN7mN//sp7CJGmMU+DIyq7cPWcmW7zLTBdyoafn8YkJRqjIVbA271imw77cFvDdU1uWFT14275u7Z0qtOrXZiuDLPQyaARbitv8Cc4VfFB1XwWG0V8+fR3oJvIcCba4Q7ALO6TJqpurETU6eT4BAZBmugWObL2kDxdmuJYWpKvKbPdGhLTfbFFn0Sl1lgNaMrGjDoF+LVx/1Oiq9s0DnKPf9gamGIYr2voiSQvibC5m4UgMKLkiZVbAVs20fSV3TD5XMJYman6Rk8mNHBd+6fXW+C2buXd8WStiZ2/hVNalvV/MJPqdzJDHRz3avjwJryunbO48syLMud0y+6K2e8RJV/974lyfQ6BvJ/C7pN/rY3Rh5F4NtG0pSL9ghBzKuQQvKuVGf7U8L9w52iRQrPso+UhUkn8kpLD6AWklU7o9NenWO7eQLhz33i/A0DnM3ILw0c5XyQrX7/UgIRHkLAeVMHLmYC4IBaY1Y24ToFuVKXdb0",
14831483
},
14841484
},
14851485
sender_key: "BZ2AhgUQPramkd0qQ6m6rcIM9cMwNE1fjI784sW3dSM",

0 commit comments

Comments
 (0)