@unwanted/matrix-sdk-mini 34.12.0 → 34.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/git-revision.txt +1 -1
- package/lib/@types/event.d.ts +0 -19
- package/lib/@types/event.d.ts.map +1 -1
- package/lib/@types/event.js.map +1 -1
- package/lib/@types/global.d.js +0 -2
- package/lib/@types/global.d.js.map +1 -1
- package/lib/autodiscovery.d.ts +1 -1
- package/lib/autodiscovery.d.ts.map +1 -1
- package/lib/autodiscovery.js.map +1 -1
- package/lib/base64.d.ts +3 -6
- package/lib/base64.d.ts.map +1 -1
- package/lib/base64.js +43 -36
- package/lib/base64.js.map +1 -1
- package/lib/browser-index.d.ts.map +1 -1
- package/lib/browser-index.js +0 -11
- package/lib/browser-index.js.map +1 -1
- package/lib/client.d.ts +2 -1298
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +348 -2967
- package/lib/client.js.map +1 -1
- package/lib/digest.d.ts +2 -2
- package/lib/digest.d.ts.map +1 -1
- package/lib/digest.js +2 -2
- package/lib/digest.js.map +1 -1
- package/lib/embedded.d.ts +0 -22
- package/lib/embedded.d.ts.map +1 -1
- package/lib/embedded.js +58 -168
- package/lib/embedded.js.map +1 -1
- package/lib/event-mapper.d.ts.map +1 -1
- package/lib/event-mapper.js +0 -4
- package/lib/event-mapper.js.map +1 -1
- package/lib/matrix.d.ts +0 -25
- package/lib/matrix.d.ts.map +1 -1
- package/lib/matrix.js +1 -30
- package/lib/matrix.js.map +1 -1
- package/lib/models/MSC3089Branch.d.ts.map +1 -1
- package/lib/models/MSC3089Branch.js +0 -3
- package/lib/models/MSC3089Branch.js.map +1 -1
- package/lib/models/event-timeline-set.d.ts +6 -10
- package/lib/models/event-timeline-set.d.ts.map +1 -1
- package/lib/models/event-timeline-set.js +28 -36
- package/lib/models/event-timeline-set.js.map +1 -1
- package/lib/models/event-timeline.d.ts +7 -2
- package/lib/models/event-timeline.d.ts.map +1 -1
- package/lib/models/event-timeline.js +8 -9
- package/lib/models/event-timeline.js.map +1 -1
- package/lib/models/event.d.ts +1 -95
- package/lib/models/event.d.ts.map +1 -1
- package/lib/models/event.js +11 -281
- package/lib/models/event.js.map +1 -1
- package/lib/models/poll.d.ts.map +1 -1
- package/lib/models/poll.js +1 -5
- package/lib/models/poll.js.map +1 -1
- package/lib/models/relations-container.d.ts.map +1 -1
- package/lib/models/relations-container.js +1 -7
- package/lib/models/relations-container.js.map +1 -1
- package/lib/models/relations.d.ts +0 -1
- package/lib/models/relations.d.ts.map +1 -1
- package/lib/models/relations.js +0 -8
- package/lib/models/relations.js.map +1 -1
- package/lib/models/room-state.d.ts +2 -13
- package/lib/models/room-state.d.ts.map +1 -1
- package/lib/models/room-state.js +12 -56
- package/lib/models/room-state.js.map +1 -1
- package/lib/models/room.d.ts +2 -20
- package/lib/models/room.d.ts.map +1 -1
- package/lib/models/room.js +121 -162
- package/lib/models/room.js.map +1 -1
- package/lib/models/thread.d.ts.map +1 -1
- package/lib/models/thread.js +5 -4
- package/lib/models/thread.js.map +1 -1
- package/lib/sliding-sync-sdk.d.ts +3 -4
- package/lib/sliding-sync-sdk.d.ts.map +1 -1
- package/lib/sliding-sync-sdk.js +55 -102
- package/lib/sliding-sync-sdk.js.map +1 -1
- package/lib/sliding-sync.js +9 -6
- package/lib/sliding-sync.js.map +1 -1
- package/lib/store/indexeddb.d.ts +1 -1
- package/lib/store/indexeddb.d.ts.map +1 -1
- package/lib/store/indexeddb.js.map +1 -1
- package/lib/sync-accumulator.d.ts +6 -4
- package/lib/sync-accumulator.d.ts.map +1 -1
- package/lib/sync-accumulator.js +23 -12
- package/lib/sync-accumulator.js.map +1 -1
- package/lib/sync.d.ts +10 -13
- package/lib/sync.d.ts.map +1 -1
- package/lib/sync.js +94 -115
- package/lib/sync.js.map +1 -1
- package/lib/testing.d.ts +0 -48
- package/lib/testing.d.ts.map +1 -1
- package/lib/testing.js +0 -105
- package/lib/testing.js.map +1 -1
- package/lib/types.d.ts +0 -1
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/package.json +10 -11
- package/src/@types/event.ts +2 -36
- package/src/@types/global.d.ts +21 -4
- package/src/autodiscovery.ts +1 -1
- package/src/base64.ts +38 -40
- package/src/browser-index.ts +0 -11
- package/src/client.ts +68 -3087
- package/src/digest.ts +3 -3
- package/src/embedded.ts +38 -134
- package/src/event-mapper.ts +0 -4
- package/src/matrix.ts +0 -41
- package/src/models/MSC3089Branch.ts +0 -3
- package/src/models/event-timeline-set.ts +17 -38
- package/src/models/event-timeline.ts +10 -5
- package/src/models/event.ts +8 -295
- package/src/models/poll.ts +0 -6
- package/src/models/relations-container.ts +1 -8
- package/src/models/relations.ts +0 -8
- package/src/models/room-state.ts +4 -37
- package/src/models/room.ts +18 -68
- package/src/models/thread.ts +4 -3
- package/src/sliding-sync-sdk.ts +10 -83
- package/src/sliding-sync.ts +6 -6
- package/src/store/indexeddb.ts +1 -1
- package/src/sync-accumulator.ts +33 -16
- package/src/sync.ts +112 -143
- package/src/testing.ts +0 -108
- package/src/types.ts +0 -1
- package/CHANGELOG.md +0 -5910
- package/lib/@types/AESEncryptedSecretStoragePayload.d.ts +0 -14
- package/lib/@types/AESEncryptedSecretStoragePayload.d.ts.map +0 -1
- package/lib/@types/AESEncryptedSecretStoragePayload.js +0 -1
- package/lib/@types/AESEncryptedSecretStoragePayload.js.map +0 -1
- package/lib/@types/crypto.d.ts +0 -47
- package/lib/@types/crypto.d.ts.map +0 -1
- package/lib/@types/crypto.js +0 -1
- package/lib/@types/crypto.js.map +0 -1
- package/lib/@types/matrix-sdk-crypto-wasm.d.js +0 -1
- package/lib/@types/matrix-sdk-crypto-wasm.d.js.map +0 -1
- package/lib/common-crypto/CryptoBackend.d.ts +0 -240
- package/lib/common-crypto/CryptoBackend.d.ts.map +0 -1
- package/lib/common-crypto/CryptoBackend.js +0 -73
- package/lib/common-crypto/CryptoBackend.js.map +0 -1
- package/lib/common-crypto/key-passphrase.d.ts +0 -14
- package/lib/common-crypto/key-passphrase.d.ts.map +0 -1
- package/lib/common-crypto/key-passphrase.js +0 -33
- package/lib/common-crypto/key-passphrase.js.map +0 -1
- package/lib/crypto/CrossSigning.d.ts +0 -184
- package/lib/crypto/CrossSigning.d.ts.map +0 -1
- package/lib/crypto/CrossSigning.js +0 -718
- package/lib/crypto/CrossSigning.js.map +0 -1
- package/lib/crypto/DeviceList.d.ts +0 -216
- package/lib/crypto/DeviceList.d.ts.map +0 -1
- package/lib/crypto/DeviceList.js +0 -892
- package/lib/crypto/DeviceList.js.map +0 -1
- package/lib/crypto/EncryptionSetup.d.ts +0 -152
- package/lib/crypto/EncryptionSetup.d.ts.map +0 -1
- package/lib/crypto/EncryptionSetup.js +0 -356
- package/lib/crypto/EncryptionSetup.js.map +0 -1
- package/lib/crypto/OlmDevice.d.ts +0 -457
- package/lib/crypto/OlmDevice.d.ts.map +0 -1
- package/lib/crypto/OlmDevice.js +0 -1241
- package/lib/crypto/OlmDevice.js.map +0 -1
- package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts +0 -109
- package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts.map +0 -1
- package/lib/crypto/OutgoingRoomKeyRequestManager.js +0 -415
- package/lib/crypto/OutgoingRoomKeyRequestManager.js.map +0 -1
- package/lib/crypto/RoomList.d.ts +0 -26
- package/lib/crypto/RoomList.d.ts.map +0 -1
- package/lib/crypto/RoomList.js +0 -71
- package/lib/crypto/RoomList.js.map +0 -1
- package/lib/crypto/SecretSharing.d.ts +0 -24
- package/lib/crypto/SecretSharing.d.ts.map +0 -1
- package/lib/crypto/SecretSharing.js +0 -194
- package/lib/crypto/SecretSharing.js.map +0 -1
- package/lib/crypto/SecretStorage.d.ts +0 -55
- package/lib/crypto/SecretStorage.d.ts.map +0 -1
- package/lib/crypto/SecretStorage.js +0 -118
- package/lib/crypto/SecretStorage.js.map +0 -1
- package/lib/crypto/aes.d.ts +0 -6
- package/lib/crypto/aes.d.ts.map +0 -1
- package/lib/crypto/aes.js +0 -24
- package/lib/crypto/aes.js.map +0 -1
- package/lib/crypto/algorithms/base.d.ts +0 -156
- package/lib/crypto/algorithms/base.d.ts.map +0 -1
- package/lib/crypto/algorithms/base.js +0 -187
- package/lib/crypto/algorithms/base.js.map +0 -1
- package/lib/crypto/algorithms/index.d.ts +0 -4
- package/lib/crypto/algorithms/index.d.ts.map +0 -1
- package/lib/crypto/algorithms/index.js +0 -20
- package/lib/crypto/algorithms/index.js.map +0 -1
- package/lib/crypto/algorithms/megolm.d.ts +0 -385
- package/lib/crypto/algorithms/megolm.d.ts.map +0 -1
- package/lib/crypto/algorithms/megolm.js +0 -1822
- package/lib/crypto/algorithms/megolm.js.map +0 -1
- package/lib/crypto/algorithms/olm.d.ts +0 -5
- package/lib/crypto/algorithms/olm.d.ts.map +0 -1
- package/lib/crypto/algorithms/olm.js +0 -299
- package/lib/crypto/algorithms/olm.js.map +0 -1
- package/lib/crypto/api.d.ts +0 -32
- package/lib/crypto/api.d.ts.map +0 -1
- package/lib/crypto/api.js +0 -22
- package/lib/crypto/api.js.map +0 -1
- package/lib/crypto/backup.d.ts +0 -227
- package/lib/crypto/backup.d.ts.map +0 -1
- package/lib/crypto/backup.js +0 -824
- package/lib/crypto/backup.js.map +0 -1
- package/lib/crypto/crypto.d.ts +0 -3
- package/lib/crypto/crypto.d.ts.map +0 -1
- package/lib/crypto/crypto.js +0 -19
- package/lib/crypto/crypto.js.map +0 -1
- package/lib/crypto/dehydration.d.ts +0 -34
- package/lib/crypto/dehydration.d.ts.map +0 -1
- package/lib/crypto/dehydration.js +0 -252
- package/lib/crypto/dehydration.js.map +0 -1
- package/lib/crypto/device-converter.d.ts +0 -9
- package/lib/crypto/device-converter.d.ts.map +0 -1
- package/lib/crypto/device-converter.js +0 -42
- package/lib/crypto/device-converter.js.map +0 -1
- package/lib/crypto/deviceinfo.d.ts +0 -99
- package/lib/crypto/deviceinfo.d.ts.map +0 -1
- package/lib/crypto/deviceinfo.js +0 -148
- package/lib/crypto/deviceinfo.js.map +0 -1
- package/lib/crypto/index.d.ts +0 -1210
- package/lib/crypto/index.d.ts.map +0 -1
- package/lib/crypto/index.js +0 -4101
- package/lib/crypto/index.js.map +0 -1
- package/lib/crypto/key_passphrase.d.ts +0 -14
- package/lib/crypto/key_passphrase.d.ts.map +0 -1
- package/lib/crypto/key_passphrase.js +0 -44
- package/lib/crypto/key_passphrase.js.map +0 -1
- package/lib/crypto/keybackup.d.ts +0 -18
- package/lib/crypto/keybackup.d.ts.map +0 -1
- package/lib/crypto/keybackup.js +0 -1
- package/lib/crypto/keybackup.js.map +0 -1
- package/lib/crypto/olmlib.d.ts +0 -129
- package/lib/crypto/olmlib.d.ts.map +0 -1
- package/lib/crypto/olmlib.js +0 -492
- package/lib/crypto/olmlib.js.map +0 -1
- package/lib/crypto/recoverykey.d.ts +0 -2
- package/lib/crypto/recoverykey.d.ts.map +0 -1
- package/lib/crypto/recoverykey.js +0 -19
- package/lib/crypto/recoverykey.js.map +0 -1
- package/lib/crypto/store/base.d.ts +0 -252
- package/lib/crypto/store/base.d.ts.map +0 -1
- package/lib/crypto/store/base.js +0 -64
- package/lib/crypto/store/base.js.map +0 -1
- package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts +0 -187
- package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts.map +0 -1
- package/lib/crypto/store/indexeddb-crypto-store-backend.js +0 -1145
- package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +0 -1
- package/lib/crypto/store/indexeddb-crypto-store.d.ts +0 -432
- package/lib/crypto/store/indexeddb-crypto-store.d.ts.map +0 -1
- package/lib/crypto/store/indexeddb-crypto-store.js +0 -728
- package/lib/crypto/store/indexeddb-crypto-store.js.map +0 -1
- package/lib/crypto/store/localStorage-crypto-store.d.ts +0 -119
- package/lib/crypto/store/localStorage-crypto-store.d.ts.map +0 -1
- package/lib/crypto/store/localStorage-crypto-store.js +0 -531
- package/lib/crypto/store/localStorage-crypto-store.js.map +0 -1
- package/lib/crypto/store/memory-crypto-store.d.ts +0 -215
- package/lib/crypto/store/memory-crypto-store.d.ts.map +0 -1
- package/lib/crypto/store/memory-crypto-store.js +0 -622
- package/lib/crypto/store/memory-crypto-store.js.map +0 -1
- package/lib/crypto/verification/Base.d.ts +0 -105
- package/lib/crypto/verification/Base.d.ts.map +0 -1
- package/lib/crypto/verification/Base.js +0 -372
- package/lib/crypto/verification/Base.js.map +0 -1
- package/lib/crypto/verification/Error.d.ts +0 -35
- package/lib/crypto/verification/Error.d.ts.map +0 -1
- package/lib/crypto/verification/Error.js +0 -86
- package/lib/crypto/verification/Error.js.map +0 -1
- package/lib/crypto/verification/IllegalMethod.d.ts +0 -15
- package/lib/crypto/verification/IllegalMethod.d.ts.map +0 -1
- package/lib/crypto/verification/IllegalMethod.js +0 -43
- package/lib/crypto/verification/IllegalMethod.js.map +0 -1
- package/lib/crypto/verification/QRCode.d.ts +0 -51
- package/lib/crypto/verification/QRCode.d.ts.map +0 -1
- package/lib/crypto/verification/QRCode.js +0 -277
- package/lib/crypto/verification/QRCode.js.map +0 -1
- package/lib/crypto/verification/SAS.d.ts +0 -27
- package/lib/crypto/verification/SAS.d.ts.map +0 -1
- package/lib/crypto/verification/SAS.js +0 -485
- package/lib/crypto/verification/SAS.js.map +0 -1
- package/lib/crypto/verification/SASDecimal.d.ts +0 -8
- package/lib/crypto/verification/SASDecimal.d.ts.map +0 -1
- package/lib/crypto/verification/SASDecimal.js +0 -34
- package/lib/crypto/verification/SASDecimal.js.map +0 -1
- package/lib/crypto/verification/request/Channel.d.ts +0 -18
- package/lib/crypto/verification/request/Channel.d.ts.map +0 -1
- package/lib/crypto/verification/request/Channel.js +0 -1
- package/lib/crypto/verification/request/Channel.js.map +0 -1
- package/lib/crypto/verification/request/InRoomChannel.d.ts +0 -113
- package/lib/crypto/verification/request/InRoomChannel.d.ts.map +0 -1
- package/lib/crypto/verification/request/InRoomChannel.js +0 -351
- package/lib/crypto/verification/request/InRoomChannel.js.map +0 -1
- package/lib/crypto/verification/request/ToDeviceChannel.d.ts +0 -105
- package/lib/crypto/verification/request/ToDeviceChannel.d.ts.map +0 -1
- package/lib/crypto/verification/request/ToDeviceChannel.js +0 -328
- package/lib/crypto/verification/request/ToDeviceChannel.js.map +0 -1
- package/lib/crypto/verification/request/VerificationRequest.d.ts +0 -227
- package/lib/crypto/verification/request/VerificationRequest.d.ts.map +0 -1
- package/lib/crypto/verification/request/VerificationRequest.js +0 -937
- package/lib/crypto/verification/request/VerificationRequest.js.map +0 -1
- package/lib/crypto-api/CryptoEvent.d.ts +0 -69
- package/lib/crypto-api/CryptoEvent.d.ts.map +0 -1
- package/lib/crypto-api/CryptoEvent.js +0 -33
- package/lib/crypto-api/CryptoEvent.js.map +0 -1
- package/lib/crypto-api/CryptoEventHandlerMap.d.ts +0 -16
- package/lib/crypto-api/CryptoEventHandlerMap.d.ts.map +0 -1
- package/lib/crypto-api/CryptoEventHandlerMap.js +0 -22
- package/lib/crypto-api/CryptoEventHandlerMap.js.map +0 -1
- package/lib/crypto-api/index.d.ts +0 -978
- package/lib/crypto-api/index.d.ts.map +0 -1
- package/lib/crypto-api/index.js +0 -304
- package/lib/crypto-api/index.js.map +0 -1
- package/lib/crypto-api/key-passphrase.d.ts +0 -11
- package/lib/crypto-api/key-passphrase.d.ts.map +0 -1
- package/lib/crypto-api/key-passphrase.js +0 -51
- package/lib/crypto-api/key-passphrase.js.map +0 -1
- package/lib/crypto-api/keybackup.d.ts +0 -88
- package/lib/crypto-api/keybackup.d.ts.map +0 -1
- package/lib/crypto-api/keybackup.js +0 -1
- package/lib/crypto-api/keybackup.js.map +0 -1
- package/lib/crypto-api/recovery-key.d.ts +0 -11
- package/lib/crypto-api/recovery-key.d.ts.map +0 -1
- package/lib/crypto-api/recovery-key.js +0 -65
- package/lib/crypto-api/recovery-key.js.map +0 -1
- package/lib/crypto-api/verification.d.ts +0 -344
- package/lib/crypto-api/verification.d.ts.map +0 -1
- package/lib/crypto-api/verification.js +0 -91
- package/lib/crypto-api/verification.js.map +0 -1
- package/lib/matrixrtc/CallMembership.d.ts +0 -66
- package/lib/matrixrtc/CallMembership.d.ts.map +0 -1
- package/lib/matrixrtc/CallMembership.js +0 -197
- package/lib/matrixrtc/CallMembership.js.map +0 -1
- package/lib/matrixrtc/LivekitFocus.d.ts +0 -16
- package/lib/matrixrtc/LivekitFocus.d.ts.map +0 -1
- package/lib/matrixrtc/LivekitFocus.js +0 -20
- package/lib/matrixrtc/LivekitFocus.js.map +0 -1
- package/lib/matrixrtc/MatrixRTCSession.d.ts +0 -295
- package/lib/matrixrtc/MatrixRTCSession.d.ts.map +0 -1
- package/lib/matrixrtc/MatrixRTCSession.js +0 -1043
- package/lib/matrixrtc/MatrixRTCSession.js.map +0 -1
- package/lib/matrixrtc/MatrixRTCSessionManager.d.ts +0 -40
- package/lib/matrixrtc/MatrixRTCSessionManager.d.ts.map +0 -1
- package/lib/matrixrtc/MatrixRTCSessionManager.js +0 -146
- package/lib/matrixrtc/MatrixRTCSessionManager.js.map +0 -1
- package/lib/matrixrtc/focus.d.ts +0 -10
- package/lib/matrixrtc/focus.d.ts.map +0 -1
- package/lib/matrixrtc/focus.js +0 -1
- package/lib/matrixrtc/focus.js.map +0 -1
- package/lib/matrixrtc/index.d.ts +0 -7
- package/lib/matrixrtc/index.d.ts.map +0 -1
- package/lib/matrixrtc/index.js +0 -21
- package/lib/matrixrtc/index.js.map +0 -1
- package/lib/matrixrtc/types.d.ts +0 -19
- package/lib/matrixrtc/types.d.ts.map +0 -1
- package/lib/matrixrtc/types.js +0 -1
- package/lib/matrixrtc/types.js.map +0 -1
- package/lib/rendezvous/MSC4108SignInWithQR.d.ts +0 -112
- package/lib/rendezvous/MSC4108SignInWithQR.d.ts.map +0 -1
- package/lib/rendezvous/MSC4108SignInWithQR.js +0 -392
- package/lib/rendezvous/MSC4108SignInWithQR.js.map +0 -1
- package/lib/rendezvous/RendezvousChannel.d.ts +0 -27
- package/lib/rendezvous/RendezvousChannel.d.ts.map +0 -1
- package/lib/rendezvous/RendezvousChannel.js +0 -1
- package/lib/rendezvous/RendezvousChannel.js.map +0 -1
- package/lib/rendezvous/RendezvousCode.d.ts +0 -9
- package/lib/rendezvous/RendezvousCode.d.ts.map +0 -1
- package/lib/rendezvous/RendezvousCode.js +0 -1
- package/lib/rendezvous/RendezvousCode.js.map +0 -1
- package/lib/rendezvous/RendezvousError.d.ts +0 -6
- package/lib/rendezvous/RendezvousError.d.ts.map +0 -1
- package/lib/rendezvous/RendezvousError.js +0 -23
- package/lib/rendezvous/RendezvousError.js.map +0 -1
- package/lib/rendezvous/RendezvousFailureReason.d.ts +0 -31
- package/lib/rendezvous/RendezvousFailureReason.d.ts.map +0 -1
- package/lib/rendezvous/RendezvousFailureReason.js +0 -38
- package/lib/rendezvous/RendezvousFailureReason.js.map +0 -1
- package/lib/rendezvous/RendezvousIntent.d.ts +0 -5
- package/lib/rendezvous/RendezvousIntent.d.ts.map +0 -1
- package/lib/rendezvous/RendezvousIntent.js +0 -22
- package/lib/rendezvous/RendezvousIntent.js.map +0 -1
- package/lib/rendezvous/RendezvousTransport.d.ts +0 -36
- package/lib/rendezvous/RendezvousTransport.d.ts.map +0 -1
- package/lib/rendezvous/RendezvousTransport.js +0 -1
- package/lib/rendezvous/RendezvousTransport.js.map +0 -1
- package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts +0 -58
- package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts.map +0 -1
- package/lib/rendezvous/channels/MSC4108SecureChannel.js +0 -246
- package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +0 -1
- package/lib/rendezvous/channels/index.d.ts +0 -2
- package/lib/rendezvous/channels/index.d.ts.map +0 -1
- package/lib/rendezvous/channels/index.js +0 -18
- package/lib/rendezvous/channels/index.js.map +0 -1
- package/lib/rendezvous/index.d.ts +0 -10
- package/lib/rendezvous/index.d.ts.map +0 -1
- package/lib/rendezvous/index.js +0 -23
- package/lib/rendezvous/index.js.map +0 -1
- package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +0 -61
- package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts.map +0 -1
- package/lib/rendezvous/transports/MSC4108RendezvousSession.js +0 -253
- package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +0 -1
- package/lib/rendezvous/transports/index.d.ts +0 -2
- package/lib/rendezvous/transports/index.d.ts.map +0 -1
- package/lib/rendezvous/transports/index.js +0 -18
- package/lib/rendezvous/transports/index.js.map +0 -1
- package/lib/rust-crypto/CrossSigningIdentity.d.ts +0 -33
- package/lib/rust-crypto/CrossSigningIdentity.d.ts.map +0 -1
- package/lib/rust-crypto/CrossSigningIdentity.js +0 -157
- package/lib/rust-crypto/CrossSigningIdentity.js.map +0 -1
- package/lib/rust-crypto/DehydratedDeviceManager.d.ts +0 -98
- package/lib/rust-crypto/DehydratedDeviceManager.d.ts.map +0 -1
- package/lib/rust-crypto/DehydratedDeviceManager.js +0 -285
- package/lib/rust-crypto/DehydratedDeviceManager.js.map +0 -1
- package/lib/rust-crypto/KeyClaimManager.d.ts +0 -33
- package/lib/rust-crypto/KeyClaimManager.d.ts.map +0 -1
- package/lib/rust-crypto/KeyClaimManager.js +0 -82
- package/lib/rust-crypto/KeyClaimManager.js.map +0 -1
- package/lib/rust-crypto/OutgoingRequestProcessor.d.ts +0 -43
- package/lib/rust-crypto/OutgoingRequestProcessor.d.ts.map +0 -1
- package/lib/rust-crypto/OutgoingRequestProcessor.js +0 -195
- package/lib/rust-crypto/OutgoingRequestProcessor.js.map +0 -1
- package/lib/rust-crypto/OutgoingRequestsManager.d.ts +0 -47
- package/lib/rust-crypto/OutgoingRequestsManager.d.ts.map +0 -1
- package/lib/rust-crypto/OutgoingRequestsManager.js +0 -148
- package/lib/rust-crypto/OutgoingRequestsManager.js.map +0 -1
- package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts +0 -120
- package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts.map +0 -1
- package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +0 -467
- package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +0 -1
- package/lib/rust-crypto/RoomEncryptor.d.ts +0 -98
- package/lib/rust-crypto/RoomEncryptor.d.ts.map +0 -1
- package/lib/rust-crypto/RoomEncryptor.js +0 -299
- package/lib/rust-crypto/RoomEncryptor.js.map +0 -1
- package/lib/rust-crypto/backup.d.ts +0 -254
- package/lib/rust-crypto/backup.d.ts.map +0 -1
- package/lib/rust-crypto/backup.js +0 -837
- package/lib/rust-crypto/backup.js.map +0 -1
- package/lib/rust-crypto/constants.d.ts +0 -3
- package/lib/rust-crypto/constants.d.ts.map +0 -1
- package/lib/rust-crypto/constants.js +0 -19
- package/lib/rust-crypto/constants.js.map +0 -1
- package/lib/rust-crypto/device-converter.d.ts +0 -28
- package/lib/rust-crypto/device-converter.d.ts.map +0 -1
- package/lib/rust-crypto/device-converter.js +0 -123
- package/lib/rust-crypto/device-converter.js.map +0 -1
- package/lib/rust-crypto/index.d.ts +0 -61
- package/lib/rust-crypto/index.d.ts.map +0 -1
- package/lib/rust-crypto/index.js +0 -152
- package/lib/rust-crypto/index.js.map +0 -1
- package/lib/rust-crypto/libolm_migration.d.ts +0 -81
- package/lib/rust-crypto/libolm_migration.d.ts.map +0 -1
- package/lib/rust-crypto/libolm_migration.js +0 -459
- package/lib/rust-crypto/libolm_migration.js.map +0 -1
- package/lib/rust-crypto/rust-crypto.d.ts +0 -556
- package/lib/rust-crypto/rust-crypto.d.ts.map +0 -1
- package/lib/rust-crypto/rust-crypto.js +0 -2016
- package/lib/rust-crypto/rust-crypto.js.map +0 -1
- package/lib/rust-crypto/secret-storage.d.ts +0 -22
- package/lib/rust-crypto/secret-storage.d.ts.map +0 -1
- package/lib/rust-crypto/secret-storage.js +0 -63
- package/lib/rust-crypto/secret-storage.js.map +0 -1
- package/lib/rust-crypto/verification.d.ts +0 -319
- package/lib/rust-crypto/verification.d.ts.map +0 -1
- package/lib/rust-crypto/verification.js +0 -816
- package/lib/rust-crypto/verification.js.map +0 -1
- package/lib/secret-storage.d.ts +0 -370
- package/lib/secret-storage.d.ts.map +0 -1
- package/lib/secret-storage.js +0 -466
- package/lib/secret-storage.js.map +0 -1
- package/lib/utils/decryptAESSecretStorageItem.d.ts +0 -12
- package/lib/utils/decryptAESSecretStorageItem.d.ts.map +0 -1
- package/lib/utils/decryptAESSecretStorageItem.js +0 -50
- package/lib/utils/decryptAESSecretStorageItem.js.map +0 -1
- package/lib/utils/encryptAESSecretStorageItem.d.ts +0 -16
- package/lib/utils/encryptAESSecretStorageItem.d.ts.map +0 -1
- package/lib/utils/encryptAESSecretStorageItem.js +0 -68
- package/lib/utils/encryptAESSecretStorageItem.js.map +0 -1
- package/lib/utils/internal/deriveKeys.d.ts +0 -10
- package/lib/utils/internal/deriveKeys.d.ts.map +0 -1
- package/lib/utils/internal/deriveKeys.js +0 -60
- package/lib/utils/internal/deriveKeys.js.map +0 -1
- package/lib/webrtc/audioContext.d.ts +0 -15
- package/lib/webrtc/audioContext.d.ts.map +0 -1
- package/lib/webrtc/audioContext.js +0 -46
- package/lib/webrtc/audioContext.js.map +0 -1
- package/lib/webrtc/call.d.ts +0 -560
- package/lib/webrtc/call.d.ts.map +0 -1
- package/lib/webrtc/call.js +0 -2541
- package/lib/webrtc/call.js.map +0 -1
- package/lib/webrtc/callEventHandler.d.ts +0 -37
- package/lib/webrtc/callEventHandler.d.ts.map +0 -1
- package/lib/webrtc/callEventHandler.js +0 -344
- package/lib/webrtc/callEventHandler.js.map +0 -1
- package/lib/webrtc/callEventTypes.d.ts +0 -73
- package/lib/webrtc/callEventTypes.d.ts.map +0 -1
- package/lib/webrtc/callEventTypes.js +0 -13
- package/lib/webrtc/callEventTypes.js.map +0 -1
- package/lib/webrtc/callFeed.d.ts +0 -128
- package/lib/webrtc/callFeed.d.ts.map +0 -1
- package/lib/webrtc/callFeed.js +0 -289
- package/lib/webrtc/callFeed.js.map +0 -1
- package/lib/webrtc/groupCall.d.ts +0 -323
- package/lib/webrtc/groupCall.d.ts.map +0 -1
- package/lib/webrtc/groupCall.js +0 -1337
- package/lib/webrtc/groupCall.js.map +0 -1
- package/lib/webrtc/groupCallEventHandler.d.ts +0 -31
- package/lib/webrtc/groupCallEventHandler.d.ts.map +0 -1
- package/lib/webrtc/groupCallEventHandler.js +0 -178
- package/lib/webrtc/groupCallEventHandler.js.map +0 -1
- package/lib/webrtc/mediaHandler.d.ts +0 -89
- package/lib/webrtc/mediaHandler.d.ts.map +0 -1
- package/lib/webrtc/mediaHandler.js +0 -437
- package/lib/webrtc/mediaHandler.js.map +0 -1
- package/lib/webrtc/stats/callFeedStatsReporter.d.ts +0 -8
- package/lib/webrtc/stats/callFeedStatsReporter.d.ts.map +0 -1
- package/lib/webrtc/stats/callFeedStatsReporter.js +0 -82
- package/lib/webrtc/stats/callFeedStatsReporter.js.map +0 -1
- package/lib/webrtc/stats/callStatsReportGatherer.d.ts +0 -25
- package/lib/webrtc/stats/callStatsReportGatherer.d.ts.map +0 -1
- package/lib/webrtc/stats/callStatsReportGatherer.js +0 -199
- package/lib/webrtc/stats/callStatsReportGatherer.js.map +0 -1
- package/lib/webrtc/stats/callStatsReportSummary.d.ts +0 -17
- package/lib/webrtc/stats/callStatsReportSummary.d.ts.map +0 -1
- package/lib/webrtc/stats/callStatsReportSummary.js +0 -1
- package/lib/webrtc/stats/callStatsReportSummary.js.map +0 -1
- package/lib/webrtc/stats/connectionStats.d.ts +0 -28
- package/lib/webrtc/stats/connectionStats.d.ts.map +0 -1
- package/lib/webrtc/stats/connectionStats.js +0 -26
- package/lib/webrtc/stats/connectionStats.js.map +0 -1
- package/lib/webrtc/stats/connectionStatsBuilder.d.ts +0 -5
- package/lib/webrtc/stats/connectionStatsBuilder.d.ts.map +0 -1
- package/lib/webrtc/stats/connectionStatsBuilder.js +0 -27
- package/lib/webrtc/stats/connectionStatsBuilder.js.map +0 -1
- package/lib/webrtc/stats/connectionStatsReportBuilder.d.ts +0 -7
- package/lib/webrtc/stats/connectionStatsReportBuilder.d.ts.map +0 -1
- package/lib/webrtc/stats/connectionStatsReportBuilder.js +0 -121
- package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +0 -1
- package/lib/webrtc/stats/groupCallStats.d.ts +0 -22
- package/lib/webrtc/stats/groupCallStats.d.ts.map +0 -1
- package/lib/webrtc/stats/groupCallStats.js +0 -78
- package/lib/webrtc/stats/groupCallStats.js.map +0 -1
- package/lib/webrtc/stats/media/mediaSsrcHandler.d.ts +0 -10
- package/lib/webrtc/stats/media/mediaSsrcHandler.d.ts.map +0 -1
- package/lib/webrtc/stats/media/mediaSsrcHandler.js +0 -57
- package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +0 -1
- package/lib/webrtc/stats/media/mediaTrackHandler.d.ts +0 -12
- package/lib/webrtc/stats/media/mediaTrackHandler.d.ts.map +0 -1
- package/lib/webrtc/stats/media/mediaTrackHandler.js +0 -62
- package/lib/webrtc/stats/media/mediaTrackHandler.js.map +0 -1
- package/lib/webrtc/stats/media/mediaTrackStats.d.ts +0 -86
- package/lib/webrtc/stats/media/mediaTrackStats.d.ts.map +0 -1
- package/lib/webrtc/stats/media/mediaTrackStats.js +0 -142
- package/lib/webrtc/stats/media/mediaTrackStats.js.map +0 -1
- package/lib/webrtc/stats/media/mediaTrackStatsHandler.d.ts +0 -22
- package/lib/webrtc/stats/media/mediaTrackStatsHandler.d.ts.map +0 -1
- package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +0 -76
- package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +0 -1
- package/lib/webrtc/stats/statsReport.d.ts +0 -99
- package/lib/webrtc/stats/statsReport.d.ts.map +0 -1
- package/lib/webrtc/stats/statsReport.js +0 -32
- package/lib/webrtc/stats/statsReport.js.map +0 -1
- package/lib/webrtc/stats/statsReportEmitter.d.ts +0 -15
- package/lib/webrtc/stats/statsReportEmitter.d.ts.map +0 -1
- package/lib/webrtc/stats/statsReportEmitter.js +0 -33
- package/lib/webrtc/stats/statsReportEmitter.js.map +0 -1
- package/lib/webrtc/stats/summaryStatsReportGatherer.d.ts +0 -16
- package/lib/webrtc/stats/summaryStatsReportGatherer.d.ts.map +0 -1
- package/lib/webrtc/stats/summaryStatsReportGatherer.js +0 -116
- package/lib/webrtc/stats/summaryStatsReportGatherer.js.map +0 -1
- package/lib/webrtc/stats/trackStatsBuilder.d.ts +0 -19
- package/lib/webrtc/stats/trackStatsBuilder.d.ts.map +0 -1
- package/lib/webrtc/stats/trackStatsBuilder.js +0 -168
- package/lib/webrtc/stats/trackStatsBuilder.js.map +0 -1
- package/lib/webrtc/stats/transportStats.d.ts +0 -11
- package/lib/webrtc/stats/transportStats.d.ts.map +0 -1
- package/lib/webrtc/stats/transportStats.js +0 -1
- package/lib/webrtc/stats/transportStats.js.map +0 -1
- package/lib/webrtc/stats/transportStatsBuilder.d.ts +0 -5
- package/lib/webrtc/stats/transportStatsBuilder.d.ts.map +0 -1
- package/lib/webrtc/stats/transportStatsBuilder.js +0 -34
- package/lib/webrtc/stats/transportStatsBuilder.js.map +0 -1
- package/lib/webrtc/stats/valueFormatter.d.ts +0 -4
- package/lib/webrtc/stats/valueFormatter.d.ts.map +0 -1
- package/lib/webrtc/stats/valueFormatter.js +0 -25
- package/lib/webrtc/stats/valueFormatter.js.map +0 -1
- package/src/@types/AESEncryptedSecretStoragePayload.ts +0 -29
- package/src/@types/crypto.ts +0 -73
- package/src/@types/matrix-sdk-crypto-wasm.d.ts +0 -44
- package/src/common-crypto/CryptoBackend.ts +0 -302
- package/src/common-crypto/README.md +0 -4
- package/src/common-crypto/key-passphrase.ts +0 -43
- package/src/crypto/CrossSigning.ts +0 -773
- package/src/crypto/DeviceList.ts +0 -989
- package/src/crypto/EncryptionSetup.ts +0 -351
- package/src/crypto/OlmDevice.ts +0 -1500
- package/src/crypto/OutgoingRoomKeyRequestManager.ts +0 -485
- package/src/crypto/RoomList.ts +0 -70
- package/src/crypto/SecretSharing.ts +0 -240
- package/src/crypto/SecretStorage.ts +0 -136
- package/src/crypto/aes.ts +0 -23
- package/src/crypto/algorithms/base.ts +0 -236
- package/src/crypto/algorithms/index.ts +0 -20
- package/src/crypto/algorithms/megolm.ts +0 -2216
- package/src/crypto/algorithms/olm.ts +0 -381
- package/src/crypto/api.ts +0 -70
- package/src/crypto/backup.ts +0 -922
- package/src/crypto/crypto.ts +0 -18
- package/src/crypto/dehydration.ts +0 -272
- package/src/crypto/device-converter.ts +0 -45
- package/src/crypto/deviceinfo.ts +0 -158
- package/src/crypto/index.ts +0 -4418
- package/src/crypto/key_passphrase.ts +0 -42
- package/src/crypto/keybackup.ts +0 -47
- package/src/crypto/olmlib.ts +0 -539
- package/src/crypto/recoverykey.ts +0 -18
- package/src/crypto/store/base.ts +0 -348
- package/src/crypto/store/indexeddb-crypto-store-backend.ts +0 -1250
- package/src/crypto/store/indexeddb-crypto-store.ts +0 -845
- package/src/crypto/store/localStorage-crypto-store.ts +0 -579
- package/src/crypto/store/memory-crypto-store.ts +0 -680
- package/src/crypto/verification/Base.ts +0 -409
- package/src/crypto/verification/Error.ts +0 -76
- package/src/crypto/verification/IllegalMethod.ts +0 -50
- package/src/crypto/verification/QRCode.ts +0 -310
- package/src/crypto/verification/SAS.ts +0 -494
- package/src/crypto/verification/SASDecimal.ts +0 -37
- package/src/crypto/verification/request/Channel.ts +0 -34
- package/src/crypto/verification/request/InRoomChannel.ts +0 -371
- package/src/crypto/verification/request/ToDeviceChannel.ts +0 -354
- package/src/crypto/verification/request/VerificationRequest.ts +0 -976
- package/src/crypto-api/CryptoEvent.ts +0 -93
- package/src/crypto-api/CryptoEventHandlerMap.ts +0 -32
- package/src/crypto-api/index.ts +0 -1175
- package/src/crypto-api/key-passphrase.ts +0 -58
- package/src/crypto-api/keybackup.ts +0 -115
- package/src/crypto-api/recovery-key.ts +0 -69
- package/src/crypto-api/verification.ts +0 -408
- package/src/matrixrtc/CallMembership.ts +0 -247
- package/src/matrixrtc/LivekitFocus.ts +0 -39
- package/src/matrixrtc/MatrixRTCSession.ts +0 -1319
- package/src/matrixrtc/MatrixRTCSessionManager.ts +0 -166
- package/src/matrixrtc/focus.ts +0 -25
- package/src/matrixrtc/index.ts +0 -22
- package/src/matrixrtc/types.ts +0 -36
- package/src/rendezvous/MSC4108SignInWithQR.ts +0 -444
- package/src/rendezvous/RendezvousChannel.ts +0 -48
- package/src/rendezvous/RendezvousCode.ts +0 -25
- package/src/rendezvous/RendezvousError.ts +0 -26
- package/src/rendezvous/RendezvousFailureReason.ts +0 -49
- package/src/rendezvous/RendezvousIntent.ts +0 -20
- package/src/rendezvous/RendezvousTransport.ts +0 -58
- package/src/rendezvous/channels/MSC4108SecureChannel.ts +0 -270
- package/src/rendezvous/channels/index.ts +0 -17
- package/src/rendezvous/index.ts +0 -25
- package/src/rendezvous/transports/MSC4108RendezvousSession.ts +0 -270
- package/src/rendezvous/transports/index.ts +0 -17
- package/src/rust-crypto/CrossSigningIdentity.ts +0 -183
- package/src/rust-crypto/DehydratedDeviceManager.ts +0 -306
- package/src/rust-crypto/KeyClaimManager.ts +0 -86
- package/src/rust-crypto/OutgoingRequestProcessor.ts +0 -236
- package/src/rust-crypto/OutgoingRequestsManager.ts +0 -143
- package/src/rust-crypto/PerSessionKeyBackupDownloader.ts +0 -501
- package/src/rust-crypto/RoomEncryptor.ts +0 -352
- package/src/rust-crypto/backup.ts +0 -881
- package/src/rust-crypto/constants.ts +0 -18
- package/src/rust-crypto/device-converter.ts +0 -128
- package/src/rust-crypto/index.ts +0 -237
- package/src/rust-crypto/libolm_migration.ts +0 -530
- package/src/rust-crypto/rust-crypto.ts +0 -2205
- package/src/rust-crypto/secret-storage.ts +0 -60
- package/src/rust-crypto/verification.ts +0 -830
- package/src/secret-storage.ts +0 -693
- package/src/utils/decryptAESSecretStorageItem.ts +0 -54
- package/src/utils/encryptAESSecretStorageItem.ts +0 -73
- package/src/utils/internal/deriveKeys.ts +0 -63
- package/src/webrtc/audioContext.ts +0 -44
- package/src/webrtc/call.ts +0 -3074
- package/src/webrtc/callEventHandler.ts +0 -425
- package/src/webrtc/callEventTypes.ts +0 -93
- package/src/webrtc/callFeed.ts +0 -364
- package/src/webrtc/groupCall.ts +0 -1735
- package/src/webrtc/groupCallEventHandler.ts +0 -234
- package/src/webrtc/mediaHandler.ts +0 -484
- package/src/webrtc/stats/callFeedStatsReporter.ts +0 -94
- package/src/webrtc/stats/callStatsReportGatherer.ts +0 -219
- package/src/webrtc/stats/callStatsReportSummary.ts +0 -30
- package/src/webrtc/stats/connectionStats.ts +0 -47
- package/src/webrtc/stats/connectionStatsBuilder.ts +0 -28
- package/src/webrtc/stats/connectionStatsReportBuilder.ts +0 -140
- package/src/webrtc/stats/groupCallStats.ts +0 -93
- package/src/webrtc/stats/media/mediaSsrcHandler.ts +0 -57
- package/src/webrtc/stats/media/mediaTrackHandler.ts +0 -76
- package/src/webrtc/stats/media/mediaTrackStats.ts +0 -176
- package/src/webrtc/stats/media/mediaTrackStatsHandler.ts +0 -90
- package/src/webrtc/stats/statsReport.ts +0 -133
- package/src/webrtc/stats/statsReportEmitter.ts +0 -49
- package/src/webrtc/stats/summaryStatsReportGatherer.ts +0 -148
- package/src/webrtc/stats/trackStatsBuilder.ts +0 -207
- package/src/webrtc/stats/transportStats.ts +0 -26
- package/src/webrtc/stats/transportStatsBuilder.ts +0 -48
- package/src/webrtc/stats/valueFormatter.ts +0 -27
@@ -1,837 +0,0 @@
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
2
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
3
|
-
/*
|
4
|
-
Copyright 2023 - 2024 The Matrix.org Foundation C.I.C.
|
5
|
-
|
6
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
you may not use this file except in compliance with the License.
|
8
|
-
You may obtain a copy of the License at
|
9
|
-
|
10
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
|
12
|
-
Unless required by applicable law or agreed to in writing, software
|
13
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
See the License for the specific language governing permissions and
|
16
|
-
limitations under the License.
|
17
|
-
*/
|
18
|
-
|
19
|
-
import * as RustSdkCryptoJs from "@matrix-org/matrix-sdk-crypto-wasm";
|
20
|
-
import { logger } from "../logger.js";
|
21
|
-
import { ClientPrefix, MatrixError, Method } from "../http-api/index.js";
|
22
|
-
import { TypedEventEmitter } from "../models/typed-event-emitter.js";
|
23
|
-
import { encodeUri, logDuration } from "../utils.js";
|
24
|
-
import { sleep } from "../utils.js";
|
25
|
-
import { CryptoEvent } from "../crypto-api/index.js";
|
26
|
-
|
27
|
-
/** Authentification of the backup info, depends on algorithm */
|
28
|
-
|
29
|
-
/**
|
30
|
-
* Holds information of a created keybackup.
|
31
|
-
* Useful to get the generated private key material and save it securely somewhere.
|
32
|
-
*/
|
33
|
-
|
34
|
-
/**
|
35
|
-
* @internal
|
36
|
-
*/
|
37
|
-
export class RustBackupManager extends TypedEventEmitter {
|
38
|
-
constructor(olmMachine, http, outgoingRequestProcessor) {
|
39
|
-
super();
|
40
|
-
this.olmMachine = olmMachine;
|
41
|
-
this.http = http;
|
42
|
-
this.outgoingRequestProcessor = outgoingRequestProcessor;
|
43
|
-
/** Have we checked if there is a backup on the server which we can use */
|
44
|
-
_defineProperty(this, "checkedForBackup", false);
|
45
|
-
/**
|
46
|
-
* The latest backup version on the server, when we last checked.
|
47
|
-
*
|
48
|
-
* If there was no backup on the server, `null`. If our attempt to check resulted in an error, `undefined`.
|
49
|
-
*
|
50
|
-
* Note that the backup was not necessarily verified.
|
51
|
-
*/
|
52
|
-
_defineProperty(this, "serverBackupInfo", undefined);
|
53
|
-
_defineProperty(this, "activeBackupVersion", null);
|
54
|
-
_defineProperty(this, "stopped", false);
|
55
|
-
/** whether {@link backupKeysLoop} is currently running */
|
56
|
-
_defineProperty(this, "backupKeysLoopRunning", false);
|
57
|
-
_defineProperty(this, "keyBackupCheckInProgress", null);
|
58
|
-
}
|
59
|
-
|
60
|
-
/**
|
61
|
-
* Tells the RustBackupManager to stop.
|
62
|
-
* The RustBackupManager is scheduling background uploads of keys to the backup, this
|
63
|
-
* call allows to cancel the process when the client is stoppped.
|
64
|
-
*/
|
65
|
-
stop() {
|
66
|
-
this.stopped = true;
|
67
|
-
}
|
68
|
-
|
69
|
-
/**
|
70
|
-
* Get the backup version we are currently backing up to, if any
|
71
|
-
*/
|
72
|
-
getActiveBackupVersion() {
|
73
|
-
var _this = this;
|
74
|
-
return _asyncToGenerator(function* () {
|
75
|
-
if (!(yield _this.olmMachine.isBackupEnabled())) return null;
|
76
|
-
return _this.activeBackupVersion;
|
77
|
-
})();
|
78
|
-
}
|
79
|
-
|
80
|
-
/**
|
81
|
-
* Return the details of the latest backup on the server, when we last checked.
|
82
|
-
*
|
83
|
-
* This normally returns a cached value, but if we haven't yet made a request to the server, it will fire one off.
|
84
|
-
* It will always return the details of the active backup if key backup is enabled.
|
85
|
-
*
|
86
|
-
* If there was no backup on the server, `null`. If our attempt to check resulted in an error, `undefined`.
|
87
|
-
*/
|
88
|
-
getServerBackupInfo() {
|
89
|
-
var _this2 = this;
|
90
|
-
return _asyncToGenerator(function* () {
|
91
|
-
// Do a validity check if we haven't already done one. The check is likely to fail if we don't yet have the
|
92
|
-
// backup keys -- but as a side-effect, it will populate `serverBackupInfo`.
|
93
|
-
yield _this2.checkKeyBackupAndEnable(false);
|
94
|
-
return _this2.serverBackupInfo;
|
95
|
-
})();
|
96
|
-
}
|
97
|
-
|
98
|
-
/**
|
99
|
-
* Determine if a key backup can be trusted.
|
100
|
-
*
|
101
|
-
* @param info - key backup info dict from {@link MatrixClient#getKeyBackupVersion}.
|
102
|
-
*/
|
103
|
-
isKeyBackupTrusted(info) {
|
104
|
-
var _this3 = this;
|
105
|
-
return _asyncToGenerator(function* () {
|
106
|
-
var signatureVerification = yield _this3.olmMachine.verifyBackup(info);
|
107
|
-
var backupKeys = yield _this3.olmMachine.getBackupKeys();
|
108
|
-
var decryptionKey = backupKeys === null || backupKeys === void 0 ? void 0 : backupKeys.decryptionKey;
|
109
|
-
var backupMatchesSavedPrivateKey = !!decryptionKey && backupInfoMatchesBackupDecryptionKey(info, decryptionKey);
|
110
|
-
return {
|
111
|
-
matchesDecryptionKey: backupMatchesSavedPrivateKey,
|
112
|
-
trusted: signatureVerification.trusted()
|
113
|
-
};
|
114
|
-
})();
|
115
|
-
}
|
116
|
-
|
117
|
-
/**
|
118
|
-
* Re-check the key backup and enable/disable it as appropriate.
|
119
|
-
*
|
120
|
-
* @param force - whether we should force a re-check even if one has already happened.
|
121
|
-
*/
|
122
|
-
checkKeyBackupAndEnable(force) {
|
123
|
-
if (!force && this.checkedForBackup) {
|
124
|
-
return Promise.resolve(null);
|
125
|
-
}
|
126
|
-
|
127
|
-
// make sure there is only one check going on at a time
|
128
|
-
if (!this.keyBackupCheckInProgress) {
|
129
|
-
this.keyBackupCheckInProgress = this.doCheckKeyBackup().finally(() => {
|
130
|
-
this.keyBackupCheckInProgress = null;
|
131
|
-
});
|
132
|
-
}
|
133
|
-
return this.keyBackupCheckInProgress;
|
134
|
-
}
|
135
|
-
|
136
|
-
/**
|
137
|
-
* Handles a backup secret received event and store it if it matches the current backup version.
|
138
|
-
*
|
139
|
-
* @param secret - The secret as received from a `m.secret.send` event for secret `m.megolm_backup.v1`.
|
140
|
-
* @returns true if the secret is valid and has been stored, false otherwise.
|
141
|
-
*/
|
142
|
-
handleBackupSecretReceived(secret) {
|
143
|
-
var _this4 = this;
|
144
|
-
return _asyncToGenerator(function* () {
|
145
|
-
var _backupCheck$backupIn;
|
146
|
-
// Currently we only receive the decryption key without any key backup version. It is important to
|
147
|
-
// check that the secret is valid for the current version before storing it.
|
148
|
-
// We force a check to ensure to have the latest version. We also want to check that the backup is trusted
|
149
|
-
// as we don't want to store the secret if the backup is not trusted, and eventually import megolm keys later from an untrusted backup.
|
150
|
-
var backupCheck = yield _this4.checkKeyBackupAndEnable(true);
|
151
|
-
if (!(backupCheck !== null && backupCheck !== void 0 && (_backupCheck$backupIn = backupCheck.backupInfo) !== null && _backupCheck$backupIn !== void 0 && _backupCheck$backupIn.version) || !backupCheck.trustInfo.trusted) {
|
152
|
-
// There is no server-side key backup, or the backup is not signed by a trusted cross-signing key or trusted own device.
|
153
|
-
// This decryption key is useless to us.
|
154
|
-
logger.warn("handleBackupSecretReceived: Received a backup decryption key, but there is no trusted server-side key backup");
|
155
|
-
return false;
|
156
|
-
}
|
157
|
-
try {
|
158
|
-
var backupDecryptionKey = RustSdkCryptoJs.BackupDecryptionKey.fromBase64(secret);
|
159
|
-
var privateKeyMatches = backupInfoMatchesBackupDecryptionKey(backupCheck.backupInfo, backupDecryptionKey);
|
160
|
-
if (!privateKeyMatches) {
|
161
|
-
logger.warn("handleBackupSecretReceived: Private decryption key does not match the public key of the current remote backup.");
|
162
|
-
// just ignore the secret
|
163
|
-
return false;
|
164
|
-
}
|
165
|
-
logger.info("handleBackupSecretReceived: A valid backup decryption key has been received and stored in cache.");
|
166
|
-
yield _this4.saveBackupDecryptionKey(backupDecryptionKey, backupCheck.backupInfo.version);
|
167
|
-
return true;
|
168
|
-
} catch (e) {
|
169
|
-
logger.warn("handleBackupSecretReceived: Invalid backup decryption key", e);
|
170
|
-
}
|
171
|
-
return false;
|
172
|
-
})();
|
173
|
-
}
|
174
|
-
saveBackupDecryptionKey(backupDecryptionKey, version) {
|
175
|
-
var _this5 = this;
|
176
|
-
return _asyncToGenerator(function* () {
|
177
|
-
yield _this5.olmMachine.saveBackupDecryptionKey(backupDecryptionKey, version);
|
178
|
-
// Emit an event that we have a new backup decryption key, so that the sdk can start
|
179
|
-
// importing keys from backup if needed.
|
180
|
-
_this5.emit(CryptoEvent.KeyBackupDecryptionKeyCached, version);
|
181
|
-
})();
|
182
|
-
}
|
183
|
-
|
184
|
-
/**
|
185
|
-
* Import a list of room keys previously exported by exportRoomKeys
|
186
|
-
*
|
187
|
-
* @param keys - a list of session export objects
|
188
|
-
* @param opts - options object
|
189
|
-
* @returns a promise which resolves once the keys have been imported
|
190
|
-
*/
|
191
|
-
importRoomKeys(keys, opts) {
|
192
|
-
var _this6 = this;
|
193
|
-
return _asyncToGenerator(function* () {
|
194
|
-
yield _this6.importRoomKeysAsJson(JSON.stringify(keys), opts);
|
195
|
-
})();
|
196
|
-
}
|
197
|
-
|
198
|
-
/**
|
199
|
-
* Import a list of room keys previously exported by exportRoomKeysAsJson
|
200
|
-
*
|
201
|
-
* @param jsonKeys - a JSON string encoding a list of session export objects,
|
202
|
-
* each of which is an IMegolmSessionData
|
203
|
-
* @param opts - options object
|
204
|
-
* @returns a promise which resolves once the keys have been imported
|
205
|
-
*/
|
206
|
-
importRoomKeysAsJson(jsonKeys, opts) {
|
207
|
-
var _this7 = this;
|
208
|
-
return _asyncToGenerator(function* () {
|
209
|
-
yield _this7.olmMachine.importExportedRoomKeys(jsonKeys, (progress, total) => {
|
210
|
-
var _opts$progressCallbac;
|
211
|
-
var importOpt = {
|
212
|
-
total: Number(total),
|
213
|
-
successes: Number(progress),
|
214
|
-
stage: "load_keys",
|
215
|
-
failures: 0
|
216
|
-
};
|
217
|
-
opts === null || opts === void 0 || (_opts$progressCallbac = opts.progressCallback) === null || _opts$progressCallbac === void 0 || _opts$progressCallbac.call(opts, importOpt);
|
218
|
-
});
|
219
|
-
})();
|
220
|
-
}
|
221
|
-
|
222
|
-
/**
|
223
|
-
* Implementation of {@link CryptoBackend#importBackedUpRoomKeys}.
|
224
|
-
*/
|
225
|
-
importBackedUpRoomKeys(keys, backupVersion, opts) {
|
226
|
-
var _this8 = this;
|
227
|
-
return _asyncToGenerator(function* () {
|
228
|
-
var keysByRoom = new Map();
|
229
|
-
for (var key of keys) {
|
230
|
-
var roomId = new RustSdkCryptoJs.RoomId(key.room_id);
|
231
|
-
if (!keysByRoom.has(roomId)) {
|
232
|
-
keysByRoom.set(roomId, new Map());
|
233
|
-
}
|
234
|
-
keysByRoom.get(roomId).set(key.session_id, key);
|
235
|
-
}
|
236
|
-
yield _this8.olmMachine.importBackedUpRoomKeys(keysByRoom, (progress, total, failures) => {
|
237
|
-
var _opts$progressCallbac2;
|
238
|
-
var importOpt = {
|
239
|
-
total: Number(total),
|
240
|
-
successes: Number(progress),
|
241
|
-
stage: "load_keys",
|
242
|
-
failures: Number(failures)
|
243
|
-
};
|
244
|
-
opts === null || opts === void 0 || (_opts$progressCallbac2 = opts.progressCallback) === null || _opts$progressCallbac2 === void 0 || _opts$progressCallbac2.call(opts, importOpt);
|
245
|
-
}, backupVersion);
|
246
|
-
})();
|
247
|
-
}
|
248
|
-
/** Helper for `checkKeyBackup` */
|
249
|
-
doCheckKeyBackup() {
|
250
|
-
var _this9 = this;
|
251
|
-
return _asyncToGenerator(function* () {
|
252
|
-
logger.log("Checking key backup status...");
|
253
|
-
var backupInfo;
|
254
|
-
try {
|
255
|
-
backupInfo = yield _this9.requestKeyBackupVersion();
|
256
|
-
} catch (e) {
|
257
|
-
logger.warn("Error checking for active key backup", e);
|
258
|
-
_this9.serverBackupInfo = undefined;
|
259
|
-
return null;
|
260
|
-
}
|
261
|
-
_this9.checkedForBackup = true;
|
262
|
-
if (backupInfo && !backupInfo.version) {
|
263
|
-
logger.warn("active backup lacks a useful 'version'; ignoring it");
|
264
|
-
backupInfo = undefined;
|
265
|
-
}
|
266
|
-
_this9.serverBackupInfo = backupInfo;
|
267
|
-
var activeVersion = yield _this9.getActiveBackupVersion();
|
268
|
-
if (!backupInfo) {
|
269
|
-
if (activeVersion !== null) {
|
270
|
-
logger.log("No key backup present on server: disabling key backup");
|
271
|
-
yield _this9.disableKeyBackup();
|
272
|
-
} else {
|
273
|
-
logger.log("No key backup present on server: not enabling key backup");
|
274
|
-
}
|
275
|
-
return null;
|
276
|
-
}
|
277
|
-
var trustInfo = yield _this9.isKeyBackupTrusted(backupInfo);
|
278
|
-
if (!trustInfo.trusted) {
|
279
|
-
if (activeVersion !== null) {
|
280
|
-
logger.log("Key backup present on server but not trusted: disabling key backup");
|
281
|
-
yield _this9.disableKeyBackup();
|
282
|
-
} else {
|
283
|
-
logger.log("Key backup present on server but not trusted: not enabling key backup");
|
284
|
-
}
|
285
|
-
} else {
|
286
|
-
if (activeVersion === null) {
|
287
|
-
logger.log("Found usable key backup v".concat(backupInfo.version, ": enabling key backups"));
|
288
|
-
yield _this9.enableKeyBackup(backupInfo);
|
289
|
-
} else if (activeVersion !== backupInfo.version) {
|
290
|
-
logger.log("On backup version ".concat(activeVersion, " but found version ").concat(backupInfo.version, ": switching."));
|
291
|
-
// This will remove any pending backup request, remove the backup key and reset the backup state of each room key we have.
|
292
|
-
yield _this9.disableKeyBackup();
|
293
|
-
// Enabling will now trigger re-upload of all the keys
|
294
|
-
yield _this9.enableKeyBackup(backupInfo);
|
295
|
-
} else {
|
296
|
-
logger.log("Backup version ".concat(backupInfo.version, " still current"));
|
297
|
-
}
|
298
|
-
}
|
299
|
-
return {
|
300
|
-
backupInfo,
|
301
|
-
trustInfo
|
302
|
-
};
|
303
|
-
})();
|
304
|
-
}
|
305
|
-
enableKeyBackup(backupInfo) {
|
306
|
-
var _this10 = this;
|
307
|
-
return _asyncToGenerator(function* () {
|
308
|
-
// we know for certain it must be a Curve25519 key, because we have verified it and only Curve25519
|
309
|
-
// keys can be verified.
|
310
|
-
//
|
311
|
-
// we also checked it has a valid `version`.
|
312
|
-
yield _this10.olmMachine.enableBackupV1(backupInfo.auth_data.public_key, backupInfo.version);
|
313
|
-
_this10.activeBackupVersion = backupInfo.version;
|
314
|
-
_this10.emit(CryptoEvent.KeyBackupStatus, true);
|
315
|
-
_this10.backupKeysLoop();
|
316
|
-
})();
|
317
|
-
}
|
318
|
-
|
319
|
-
/**
|
320
|
-
* Restart the backup key loop if there is an active trusted backup.
|
321
|
-
* Doesn't try to check the backup server side. To be called when a new
|
322
|
-
* megolm key is known locally.
|
323
|
-
*/
|
324
|
-
maybeUploadKey() {
|
325
|
-
var _this11 = this;
|
326
|
-
return _asyncToGenerator(function* () {
|
327
|
-
if (_this11.activeBackupVersion != null) {
|
328
|
-
_this11.backupKeysLoop();
|
329
|
-
}
|
330
|
-
})();
|
331
|
-
}
|
332
|
-
disableKeyBackup() {
|
333
|
-
var _this12 = this;
|
334
|
-
return _asyncToGenerator(function* () {
|
335
|
-
yield _this12.olmMachine.disableBackup();
|
336
|
-
_this12.activeBackupVersion = null;
|
337
|
-
_this12.emit(CryptoEvent.KeyBackupStatus, false);
|
338
|
-
})();
|
339
|
-
}
|
340
|
-
backupKeysLoop() {
|
341
|
-
var _arguments = arguments,
|
342
|
-
_this13 = this;
|
343
|
-
return _asyncToGenerator(function* () {
|
344
|
-
var maxDelay = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : 10000;
|
345
|
-
if (_this13.backupKeysLoopRunning) {
|
346
|
-
logger.log("Backup loop already running");
|
347
|
-
return;
|
348
|
-
}
|
349
|
-
_this13.backupKeysLoopRunning = true;
|
350
|
-
logger.log("Backup: Starting keys upload loop for backup version:".concat(_this13.activeBackupVersion, "."));
|
351
|
-
|
352
|
-
// wait between 0 and `maxDelay` seconds, to avoid backup
|
353
|
-
// requests from different clients hitting the server all at
|
354
|
-
// the same time when a new key is sent
|
355
|
-
var delay = Math.random() * maxDelay;
|
356
|
-
yield sleep(delay);
|
357
|
-
try {
|
358
|
-
// number of consecutive network failures for exponential backoff
|
359
|
-
var numFailures = 0;
|
360
|
-
// The number of keys left to back up. (Populated lazily: see more comments below.)
|
361
|
-
var remainingToUploadCount = null;
|
362
|
-
// To avoid computing the key when only a few keys were added (after a sync for example),
|
363
|
-
// we compute the count only when at least two iterations are needed.
|
364
|
-
var isFirstIteration = true;
|
365
|
-
while (!_this13.stopped) {
|
366
|
-
// Get a batch of room keys to upload
|
367
|
-
var request = null;
|
368
|
-
try {
|
369
|
-
request = yield logDuration(logger, "BackupRoomKeys: Get keys to backup from rust crypto-sdk", /*#__PURE__*/_asyncToGenerator(function* () {
|
370
|
-
return yield _this13.olmMachine.backupRoomKeys();
|
371
|
-
}));
|
372
|
-
} catch (err) {
|
373
|
-
logger.error("Backup: Failed to get keys to backup from rust crypto-sdk", err);
|
374
|
-
}
|
375
|
-
if (!request || _this13.stopped || !_this13.activeBackupVersion) {
|
376
|
-
logger.log("Backup: Ending loop for version ".concat(_this13.activeBackupVersion, "."));
|
377
|
-
if (!request) {
|
378
|
-
// nothing more to upload
|
379
|
-
_this13.emit(CryptoEvent.KeyBackupSessionsRemaining, 0);
|
380
|
-
}
|
381
|
-
return;
|
382
|
-
}
|
383
|
-
try {
|
384
|
-
yield _this13.outgoingRequestProcessor.makeOutgoingRequest(request);
|
385
|
-
numFailures = 0;
|
386
|
-
if (_this13.stopped) break;
|
387
|
-
|
388
|
-
// Key count performance (`olmMachine.roomKeyCounts()`) can be pretty bad on some configurations.
|
389
|
-
// In particular, we detected on some M1 macs that when the object store reaches a threshold, the count
|
390
|
-
// performance stops growing in O(n) and suddenly becomes very slow (40s, 60s or more).
|
391
|
-
// For reference, the performance drop occurs around 300-400k keys on the platforms where this issue is observed.
|
392
|
-
// Even on other configurations, the count can take several seconds.
|
393
|
-
// This will block other operations on the database, like sending messages.
|
394
|
-
//
|
395
|
-
// This is a workaround to avoid calling `olmMachine.roomKeyCounts()` too often, and only when necessary.
|
396
|
-
// We don't call it on the first loop because there could be only a few keys to upload, and we don't want to wait for the count.
|
397
|
-
if (!isFirstIteration && remainingToUploadCount === null) {
|
398
|
-
try {
|
399
|
-
var keyCount = yield _this13.olmMachine.roomKeyCounts();
|
400
|
-
remainingToUploadCount = keyCount.total - keyCount.backedUp;
|
401
|
-
} catch (err) {
|
402
|
-
logger.error("Backup: Failed to get key counts from rust crypto-sdk", err);
|
403
|
-
}
|
404
|
-
}
|
405
|
-
if (remainingToUploadCount !== null) {
|
406
|
-
_this13.emit(CryptoEvent.KeyBackupSessionsRemaining, remainingToUploadCount);
|
407
|
-
var keysCountInBatch = _this13.keysCountInBatch(request);
|
408
|
-
// `OlmMachine.roomKeyCounts` is called only once for the current backupKeysLoop. But new
|
409
|
-
// keys could be added during the current loop (after a sync for example).
|
410
|
-
// So the count can get out of sync with the real number of remaining keys to upload.
|
411
|
-
// Depending on the number of new keys imported and the time to complete the loop,
|
412
|
-
// this could result in multiple events being emitted with a remaining key count of 0.
|
413
|
-
remainingToUploadCount = Math.max(remainingToUploadCount - keysCountInBatch, 0);
|
414
|
-
}
|
415
|
-
} catch (err) {
|
416
|
-
numFailures++;
|
417
|
-
logger.error("Backup: Error processing backup request for rust crypto-sdk", err);
|
418
|
-
if (err instanceof MatrixError) {
|
419
|
-
var errCode = err.data.errcode;
|
420
|
-
if (errCode == "M_NOT_FOUND" || errCode == "M_WRONG_ROOM_KEYS_VERSION") {
|
421
|
-
logger.log("Backup: Failed to upload keys to current vesion: ".concat(errCode, "."));
|
422
|
-
try {
|
423
|
-
yield _this13.disableKeyBackup();
|
424
|
-
} catch (error) {
|
425
|
-
logger.error("Backup: An error occurred while disabling key backup:", error);
|
426
|
-
}
|
427
|
-
_this13.emit(CryptoEvent.KeyBackupFailed, err.data.errcode);
|
428
|
-
// There was an active backup and we are out of sync with the server
|
429
|
-
// force a check server side
|
430
|
-
_this13.backupKeysLoopRunning = false;
|
431
|
-
_this13.checkKeyBackupAndEnable(true);
|
432
|
-
return;
|
433
|
-
} else if (err.isRateLimitError()) {
|
434
|
-
// wait for that and then continue?
|
435
|
-
try {
|
436
|
-
var waitTime = err.getRetryAfterMs();
|
437
|
-
if (waitTime && waitTime > 0) {
|
438
|
-
yield sleep(waitTime);
|
439
|
-
continue;
|
440
|
-
}
|
441
|
-
} catch (error) {
|
442
|
-
logger.warn("Backup: An error occurred while retrieving a rate-limit retry delay", error);
|
443
|
-
} // else go to the normal backoff
|
444
|
-
}
|
445
|
-
}
|
446
|
-
|
447
|
-
// Some other errors (mx, network, or CORS or invalid urls?) anyhow backoff
|
448
|
-
// exponential backoff if we have failures
|
449
|
-
yield sleep(1000 * Math.pow(2, Math.min(numFailures - 1, 4)));
|
450
|
-
}
|
451
|
-
isFirstIteration = false;
|
452
|
-
}
|
453
|
-
} finally {
|
454
|
-
_this13.backupKeysLoopRunning = false;
|
455
|
-
}
|
456
|
-
})();
|
457
|
-
}
|
458
|
-
|
459
|
-
/**
|
460
|
-
* Utility method to count the number of keys in a backup request, in order to update the remaining keys count.
|
461
|
-
* This should be the chunk size of the backup request for all requests but the last, but we don't have access to it
|
462
|
-
* (it's static in the Rust SDK).
|
463
|
-
* @param batch - The backup request to count the keys from.
|
464
|
-
*
|
465
|
-
* @returns The number of keys in the backup request.
|
466
|
-
*/
|
467
|
-
keysCountInBatch(batch) {
|
468
|
-
var parsedBody = JSON.parse(batch.body);
|
469
|
-
return countKeysInBackup(parsedBody);
|
470
|
-
}
|
471
|
-
|
472
|
-
/**
|
473
|
-
* Get information about a key backup from the server
|
474
|
-
* - If version is provided, get information about that backup version.
|
475
|
-
* - If no version is provided, get information about the latest backup.
|
476
|
-
*
|
477
|
-
* @param version - The version of the backup to get information about.
|
478
|
-
* @returns Information object from API or null if there is no active backup.
|
479
|
-
*/
|
480
|
-
requestKeyBackupVersion(version) {
|
481
|
-
var _this14 = this;
|
482
|
-
return _asyncToGenerator(function* () {
|
483
|
-
return yield requestKeyBackupVersion(_this14.http, version);
|
484
|
-
})();
|
485
|
-
}
|
486
|
-
|
487
|
-
/**
|
488
|
-
* Creates a new key backup by generating a new random private key.
|
489
|
-
*
|
490
|
-
* If there is an existing backup server side it will be deleted and replaced
|
491
|
-
* by the new one.
|
492
|
-
*
|
493
|
-
* @param signObject - Method that should sign the backup with existing device and
|
494
|
-
* existing identity.
|
495
|
-
* @returns a KeyBackupCreationInfo - All information related to the backup.
|
496
|
-
*/
|
497
|
-
setupKeyBackup(signObject) {
|
498
|
-
var _this15 = this;
|
499
|
-
return _asyncToGenerator(function* () {
|
500
|
-
// Clean up any existing backup
|
501
|
-
yield _this15.deleteAllKeyBackupVersions();
|
502
|
-
var randomKey = RustSdkCryptoJs.BackupDecryptionKey.createRandomKey();
|
503
|
-
var pubKey = randomKey.megolmV1PublicKey;
|
504
|
-
var authData = {
|
505
|
-
public_key: pubKey.publicKeyBase64
|
506
|
-
};
|
507
|
-
yield signObject(authData);
|
508
|
-
var res = yield _this15.http.authedRequest(Method.Post, "/room_keys/version", undefined, {
|
509
|
-
algorithm: pubKey.algorithm,
|
510
|
-
auth_data: authData
|
511
|
-
}, {
|
512
|
-
prefix: ClientPrefix.V3
|
513
|
-
});
|
514
|
-
yield _this15.saveBackupDecryptionKey(randomKey, res.version);
|
515
|
-
return {
|
516
|
-
version: res.version,
|
517
|
-
algorithm: pubKey.algorithm,
|
518
|
-
authData: authData,
|
519
|
-
decryptionKey: randomKey
|
520
|
-
};
|
521
|
-
})();
|
522
|
-
}
|
523
|
-
|
524
|
-
/**
|
525
|
-
* Deletes all key backups.
|
526
|
-
*
|
527
|
-
* Will call the API to delete active backup until there is no more present.
|
528
|
-
*/
|
529
|
-
deleteAllKeyBackupVersions() {
|
530
|
-
var _this16 = this;
|
531
|
-
return _asyncToGenerator(function* () {
|
532
|
-
var _yield$_this16$reques, _yield$_this16$reques2;
|
533
|
-
// there could be several backup versions. Delete all to be safe.
|
534
|
-
var current = (_yield$_this16$reques = (_yield$_this16$reques2 = yield _this16.requestKeyBackupVersion()) === null || _yield$_this16$reques2 === void 0 ? void 0 : _yield$_this16$reques2.version) !== null && _yield$_this16$reques !== void 0 ? _yield$_this16$reques : null;
|
535
|
-
while (current != null) {
|
536
|
-
var _yield$_this16$reques3, _yield$_this16$reques4;
|
537
|
-
yield _this16.deleteKeyBackupVersion(current);
|
538
|
-
current = (_yield$_this16$reques3 = (_yield$_this16$reques4 = yield _this16.requestKeyBackupVersion()) === null || _yield$_this16$reques4 === void 0 ? void 0 : _yield$_this16$reques4.version) !== null && _yield$_this16$reques3 !== void 0 ? _yield$_this16$reques3 : null;
|
539
|
-
}
|
540
|
-
|
541
|
-
// XXX: Should this also update Secret Storage and delete any existing keys?
|
542
|
-
})();
|
543
|
-
}
|
544
|
-
|
545
|
-
/**
|
546
|
-
* Deletes the given key backup.
|
547
|
-
*
|
548
|
-
* @param version - The backup version to delete.
|
549
|
-
*/
|
550
|
-
deleteKeyBackupVersion(version) {
|
551
|
-
var _this17 = this;
|
552
|
-
return _asyncToGenerator(function* () {
|
553
|
-
logger.debug("deleteKeyBackupVersion v:".concat(version));
|
554
|
-
var path = encodeUri("/room_keys/version/$version", {
|
555
|
-
$version: version
|
556
|
-
});
|
557
|
-
yield _this17.http.authedRequest(Method.Delete, path, undefined, undefined, {
|
558
|
-
prefix: ClientPrefix.V3
|
559
|
-
});
|
560
|
-
})();
|
561
|
-
}
|
562
|
-
|
563
|
-
/**
|
564
|
-
* Creates a new backup decryptor for the given private key.
|
565
|
-
* @param decryptionKey - The private key to use for decryption.
|
566
|
-
*/
|
567
|
-
createBackupDecryptor(decryptionKey) {
|
568
|
-
return new RustBackupDecryptor(decryptionKey);
|
569
|
-
}
|
570
|
-
|
571
|
-
/**
|
572
|
-
* Restore a key backup.
|
573
|
-
*
|
574
|
-
* @param backupVersion - The version of the backup to restore.
|
575
|
-
* @param backupDecryptor - The backup decryptor to use to decrypt the keys.
|
576
|
-
* @param opts - Options for the restore.
|
577
|
-
* @returns The total number of keys and the total imported.
|
578
|
-
*/
|
579
|
-
restoreKeyBackup(backupVersion, backupDecryptor, opts) {
|
580
|
-
var _this18 = this;
|
581
|
-
return _asyncToGenerator(function* () {
|
582
|
-
var _opts$progressCallbac3;
|
583
|
-
var keyBackup = yield _this18.downloadKeyBackup(backupVersion);
|
584
|
-
opts === null || opts === void 0 || (_opts$progressCallbac3 = opts.progressCallback) === null || _opts$progressCallbac3 === void 0 || _opts$progressCallbac3.call(opts, {
|
585
|
-
stage: "load_keys"
|
586
|
-
});
|
587
|
-
return _this18.importKeyBackup(keyBackup, backupVersion, backupDecryptor, opts);
|
588
|
-
})();
|
589
|
-
}
|
590
|
-
|
591
|
-
/**
|
592
|
-
* Call `/room_keys/keys` to download the key backup (room keys) for the given backup version.
|
593
|
-
* https://spec.matrix.org/v1.12/client-server-api/#get_matrixclientv3room_keyskeys
|
594
|
-
*
|
595
|
-
* @param backupVersion
|
596
|
-
* @returns The key backup response.
|
597
|
-
*/
|
598
|
-
downloadKeyBackup(backupVersion) {
|
599
|
-
return this.http.authedRequest(Method.Get, "/room_keys/keys", {
|
600
|
-
version: backupVersion
|
601
|
-
}, undefined, {
|
602
|
-
prefix: ClientPrefix.V3
|
603
|
-
});
|
604
|
-
}
|
605
|
-
|
606
|
-
/**
|
607
|
-
* Import the room keys from a `/room_keys/keys` call.
|
608
|
-
* Calls `opts.progressCallback` with the progress of the import.
|
609
|
-
*
|
610
|
-
* @param keyBackup - The response from the server containing the keys to import.
|
611
|
-
* @param backupVersion - The version of the backup info.
|
612
|
-
* @param backupDecryptor - The backup decryptor to use to decrypt the keys.
|
613
|
-
* @param opts - Options for the import.
|
614
|
-
*
|
615
|
-
* @returns The total number of keys and the total imported.
|
616
|
-
*
|
617
|
-
* @private
|
618
|
-
*/
|
619
|
-
importKeyBackup(keyBackup, backupVersion, backupDecryptor, opts) {
|
620
|
-
var _this19 = this;
|
621
|
-
return _asyncToGenerator(function* () {
|
622
|
-
// We have a full backup here, it can get quite big, so we need to decrypt and import it in chunks.
|
623
|
-
|
624
|
-
var CHUNK_SIZE = 200;
|
625
|
-
// Get the total count as a first pass
|
626
|
-
var totalKeyCount = countKeysInBackup(keyBackup);
|
627
|
-
var totalImported = 0;
|
628
|
-
var totalFailures = 0;
|
629
|
-
|
630
|
-
/**
|
631
|
-
* This method is called when we have enough chunks to decrypt.
|
632
|
-
* It will decrypt the chunks and try to import the room keys.
|
633
|
-
* @param roomChunks
|
634
|
-
*/
|
635
|
-
var handleChunkCallback = /*#__PURE__*/function () {
|
636
|
-
var _ref2 = _asyncToGenerator(function* (roomChunks) {
|
637
|
-
var _opts$progressCallbac4;
|
638
|
-
var currentChunk = [];
|
639
|
-
var _loop = function* _loop(roomId) {
|
640
|
-
// Decrypt the sessions for the given room
|
641
|
-
var decryptedSessions = yield backupDecryptor.decryptSessions(roomChunks.get(roomId));
|
642
|
-
// Add the decrypted sessions to the current chunk
|
643
|
-
decryptedSessions.forEach(session => {
|
644
|
-
// We set the room_id for each session
|
645
|
-
session.room_id = roomId;
|
646
|
-
currentChunk.push(session);
|
647
|
-
});
|
648
|
-
};
|
649
|
-
for (var roomId of roomChunks.keys()) {
|
650
|
-
yield* _loop(roomId);
|
651
|
-
}
|
652
|
-
|
653
|
-
// We have a chunk of decrypted keys: import them
|
654
|
-
try {
|
655
|
-
yield _this19.importBackedUpRoomKeys(currentChunk, backupVersion);
|
656
|
-
totalImported += currentChunk.length;
|
657
|
-
} catch (e) {
|
658
|
-
totalFailures += currentChunk.length;
|
659
|
-
// We failed to import some keys, but we should still try to import the rest?
|
660
|
-
// Log the error and continue
|
661
|
-
logger.error("Error importing keys from backup", e);
|
662
|
-
}
|
663
|
-
opts === null || opts === void 0 || (_opts$progressCallbac4 = opts.progressCallback) === null || _opts$progressCallbac4 === void 0 || _opts$progressCallbac4.call(opts, {
|
664
|
-
total: totalKeyCount,
|
665
|
-
successes: totalImported,
|
666
|
-
stage: "load_keys",
|
667
|
-
failures: totalFailures
|
668
|
-
});
|
669
|
-
});
|
670
|
-
return function handleChunkCallback(_x) {
|
671
|
-
return _ref2.apply(this, arguments);
|
672
|
-
};
|
673
|
-
}();
|
674
|
-
var groupChunkCount = 0;
|
675
|
-
var chunkGroupByRoom = new Map();
|
676
|
-
|
677
|
-
// Iterate over the rooms and sessions to group them in chunks
|
678
|
-
// And we call the handleChunkCallback when we have enough chunks to decrypt
|
679
|
-
for (var [roomId, roomData] of Object.entries(keyBackup.rooms)) {
|
680
|
-
// If there are no sessions for the room, skip it
|
681
|
-
if (!roomData.sessions) continue;
|
682
|
-
|
683
|
-
// Initialize a new chunk group for the current room
|
684
|
-
chunkGroupByRoom.set(roomId, {});
|
685
|
-
for (var [sessionId, session] of Object.entries(roomData.sessions)) {
|
686
|
-
// We set previously the chunk group for the current room, so we can safely get it
|
687
|
-
var sessionsForRoom = chunkGroupByRoom.get(roomId);
|
688
|
-
sessionsForRoom[sessionId] = session;
|
689
|
-
groupChunkCount += 1;
|
690
|
-
// If we have enough chunks to decrypt, call the block callback
|
691
|
-
if (groupChunkCount >= CHUNK_SIZE) {
|
692
|
-
// We have enough chunks to decrypt
|
693
|
-
yield handleChunkCallback(chunkGroupByRoom);
|
694
|
-
// Reset the chunk group
|
695
|
-
chunkGroupByRoom = new Map();
|
696
|
-
// There might be remaining keys for that room, so add back an entry for the current room.
|
697
|
-
chunkGroupByRoom.set(roomId, {});
|
698
|
-
groupChunkCount = 0;
|
699
|
-
}
|
700
|
-
}
|
701
|
-
}
|
702
|
-
|
703
|
-
// Handle remaining chunk if needed
|
704
|
-
if (groupChunkCount > 0) {
|
705
|
-
yield handleChunkCallback(chunkGroupByRoom);
|
706
|
-
}
|
707
|
-
return {
|
708
|
-
total: totalKeyCount,
|
709
|
-
imported: totalImported
|
710
|
-
};
|
711
|
-
})();
|
712
|
-
}
|
713
|
-
}
|
714
|
-
|
715
|
-
/**
|
716
|
-
* Checks if the provided backup info matches the given private key.
|
717
|
-
*
|
718
|
-
* @param info - The backup info to check.
|
719
|
-
* @param backupDecryptionKey - The `BackupDecryptionKey` private key to check against.
|
720
|
-
* @returns `true` if the private key can decrypt the backup, `false` otherwise.
|
721
|
-
*/
|
722
|
-
function backupInfoMatchesBackupDecryptionKey(info, backupDecryptionKey) {
|
723
|
-
var _info$auth_data;
|
724
|
-
if (info.algorithm !== "m.megolm_backup.v1.curve25519-aes-sha2") {
|
725
|
-
logger.warn("backupMatchesPrivateKey: Unsupported backup algorithm", info.algorithm);
|
726
|
-
return false;
|
727
|
-
}
|
728
|
-
return ((_info$auth_data = info.auth_data) === null || _info$auth_data === void 0 ? void 0 : _info$auth_data.public_key) === backupDecryptionKey.megolmV1PublicKey.publicKeyBase64;
|
729
|
-
}
|
730
|
-
|
731
|
-
/**
|
732
|
-
* Implementation of {@link BackupDecryptor} for the rust crypto backend.
|
733
|
-
*/
|
734
|
-
export class RustBackupDecryptor {
|
735
|
-
constructor(decryptionKey) {
|
736
|
-
_defineProperty(this, "decryptionKey", void 0);
|
737
|
-
_defineProperty(this, "sourceTrusted", void 0);
|
738
|
-
this.decryptionKey = decryptionKey;
|
739
|
-
this.sourceTrusted = false;
|
740
|
-
}
|
741
|
-
|
742
|
-
/**
|
743
|
-
* Implements {@link BackupDecryptor#decryptSessions}
|
744
|
-
*/
|
745
|
-
decryptSessions(ciphertexts) {
|
746
|
-
var _this20 = this;
|
747
|
-
return _asyncToGenerator(function* () {
|
748
|
-
var keys = [];
|
749
|
-
for (var [sessionId, sessionData] of Object.entries(ciphertexts)) {
|
750
|
-
try {
|
751
|
-
var decrypted = JSON.parse(_this20.decryptionKey.decryptV1(sessionData.session_data.ephemeral, sessionData.session_data.mac, sessionData.session_data.ciphertext));
|
752
|
-
decrypted.session_id = sessionId;
|
753
|
-
keys.push(decrypted);
|
754
|
-
} catch (e) {
|
755
|
-
logger.log("Failed to decrypt megolm session from backup", e, sessionData);
|
756
|
-
}
|
757
|
-
}
|
758
|
-
return keys;
|
759
|
-
})();
|
760
|
-
}
|
761
|
-
|
762
|
-
/**
|
763
|
-
* Implements {@link BackupDecryptor#free}
|
764
|
-
*/
|
765
|
-
free() {
|
766
|
-
this.decryptionKey.free();
|
767
|
-
}
|
768
|
-
}
|
769
|
-
|
770
|
-
/**
|
771
|
-
* Fetch a key backup info from the server.
|
772
|
-
*
|
773
|
-
* If `version` is provided, calls `GET /room_keys/version/$version` and gets the backup info for that version.
|
774
|
-
* See https://spec.matrix.org/v1.12/client-server-api/#get_matrixclientv3room_keysversionversion.
|
775
|
-
*
|
776
|
-
* If not, calls `GET /room_keys/version` and gets the latest backup info.
|
777
|
-
* See https://spec.matrix.org/v1.12/client-server-api/#get_matrixclientv3room_keysversion
|
778
|
-
*
|
779
|
-
* @param http
|
780
|
-
* @param version - the specific version of the backup info to fetch
|
781
|
-
* @returns The key backup info or null if there is no backup.
|
782
|
-
*/
|
783
|
-
export function requestKeyBackupVersion(_x2, _x3) {
|
784
|
-
return _requestKeyBackupVersion.apply(this, arguments);
|
785
|
-
}
|
786
|
-
|
787
|
-
/**
|
788
|
-
* Checks if the provided decryption key matches the public key of the key backup info.
|
789
|
-
*
|
790
|
-
* @param decryptionKey - The decryption key to check.
|
791
|
-
* @param keyBackupInfo - The key backup info to check against.
|
792
|
-
* @returns `true` if the decryption key matches the key backup info, `false` otherwise.
|
793
|
-
*/
|
794
|
-
function _requestKeyBackupVersion() {
|
795
|
-
_requestKeyBackupVersion = _asyncToGenerator(function* (http, version) {
|
796
|
-
try {
|
797
|
-
var path = version ? encodeUri("/room_keys/version/$version", {
|
798
|
-
$version: version
|
799
|
-
}) : "/room_keys/version";
|
800
|
-
return yield http.authedRequest(Method.Get, path, undefined, undefined, {
|
801
|
-
prefix: ClientPrefix.V3
|
802
|
-
});
|
803
|
-
} catch (e) {
|
804
|
-
if (e.errcode === "M_NOT_FOUND") {
|
805
|
-
return null;
|
806
|
-
} else {
|
807
|
-
throw e;
|
808
|
-
}
|
809
|
-
}
|
810
|
-
});
|
811
|
-
return _requestKeyBackupVersion.apply(this, arguments);
|
812
|
-
}
|
813
|
-
export function decryptionKeyMatchesKeyBackupInfo(decryptionKey, keyBackupInfo) {
|
814
|
-
var authData = keyBackupInfo.auth_data;
|
815
|
-
return authData.public_key === decryptionKey.megolmV1PublicKey.publicKeyBase64;
|
816
|
-
}
|
817
|
-
|
818
|
-
/**
|
819
|
-
* Counts the total number of keys present in a key backup.
|
820
|
-
* @param keyBackup - The key backup to count the keys from.
|
821
|
-
* @returns The total number of keys in the backup.
|
822
|
-
*/
|
823
|
-
function countKeysInBackup(keyBackup) {
|
824
|
-
var count = 0;
|
825
|
-
for (var {
|
826
|
-
sessions
|
827
|
-
} of Object.values(keyBackup.rooms)) {
|
828
|
-
count += Object.keys(sessions).length;
|
829
|
-
}
|
830
|
-
return count;
|
831
|
-
}
|
832
|
-
|
833
|
-
/**
|
834
|
-
* Response from GET `/room_keys/keys` endpoint.
|
835
|
-
* See https://spec.matrix.org/latest/client-server-api/#get_matrixclientv3room_keyskeys
|
836
|
-
*/
|
837
|
-
//# sourceMappingURL=backup.js.map
|