@unwanted/matrix-sdk-mini 34.12.0-2 → 34.12.0-4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (492) hide show
  1. package/git-revision.txt +1 -1
  2. package/lib/@types/global.d.js +0 -2
  3. package/lib/@types/global.d.js.map +1 -1
  4. package/lib/browser-index.d.ts.map +1 -1
  5. package/lib/browser-index.js +0 -11
  6. package/lib/browser-index.js.map +1 -1
  7. package/lib/client.d.ts +2 -1221
  8. package/lib/client.d.ts.map +1 -1
  9. package/lib/client.js +331 -2821
  10. package/lib/client.js.map +1 -1
  11. package/lib/embedded.d.ts +0 -22
  12. package/lib/embedded.d.ts.map +1 -1
  13. package/lib/embedded.js +24 -166
  14. package/lib/embedded.js.map +1 -1
  15. package/lib/event-mapper.d.ts.map +1 -1
  16. package/lib/event-mapper.js +0 -4
  17. package/lib/event-mapper.js.map +1 -1
  18. package/lib/matrix.d.ts +0 -19
  19. package/lib/matrix.d.ts.map +1 -1
  20. package/lib/matrix.js +1 -26
  21. package/lib/matrix.js.map +1 -1
  22. package/lib/models/MSC3089Branch.d.ts.map +1 -1
  23. package/lib/models/MSC3089Branch.js +0 -3
  24. package/lib/models/MSC3089Branch.js.map +1 -1
  25. package/lib/models/event.d.ts +0 -94
  26. package/lib/models/event.d.ts.map +1 -1
  27. package/lib/models/event.js +0 -274
  28. package/lib/models/event.js.map +1 -1
  29. package/lib/models/poll.d.ts.map +1 -1
  30. package/lib/models/poll.js +1 -5
  31. package/lib/models/poll.js.map +1 -1
  32. package/lib/models/relations-container.d.ts.map +1 -1
  33. package/lib/models/relations-container.js +1 -7
  34. package/lib/models/relations-container.js.map +1 -1
  35. package/lib/models/relations.d.ts +0 -1
  36. package/lib/models/relations.d.ts.map +1 -1
  37. package/lib/models/relations.js +0 -8
  38. package/lib/models/relations.js.map +1 -1
  39. package/lib/models/room-state.d.ts.map +1 -1
  40. package/lib/models/room-state.js +10 -26
  41. package/lib/models/room-state.js.map +1 -1
  42. package/lib/models/room.d.ts +0 -18
  43. package/lib/models/room.d.ts.map +1 -1
  44. package/lib/models/room.js +94 -148
  45. package/lib/models/room.js.map +1 -1
  46. package/lib/models/thread.d.ts.map +1 -1
  47. package/lib/models/thread.js +0 -1
  48. package/lib/models/thread.js.map +1 -1
  49. package/lib/sliding-sync-sdk.d.ts +2 -3
  50. package/lib/sliding-sync-sdk.d.ts.map +1 -1
  51. package/lib/sliding-sync-sdk.js +41 -90
  52. package/lib/sliding-sync-sdk.js.map +1 -1
  53. package/lib/sync.d.ts +0 -12
  54. package/lib/sync.d.ts.map +1 -1
  55. package/lib/sync.js +1 -73
  56. package/lib/sync.js.map +1 -1
  57. package/lib/testing.d.ts +0 -48
  58. package/lib/testing.d.ts.map +1 -1
  59. package/lib/testing.js +0 -105
  60. package/lib/testing.js.map +1 -1
  61. package/lib/types.d.ts +0 -1
  62. package/lib/types.d.ts.map +1 -1
  63. package/lib/types.js.map +1 -1
  64. package/package.json +1 -3
  65. package/src/@types/global.d.ts +0 -3
  66. package/src/browser-index.ts +0 -11
  67. package/src/client.ts +60 -2882
  68. package/src/embedded.ts +3 -130
  69. package/src/event-mapper.ts +0 -4
  70. package/src/matrix.ts +0 -28
  71. package/src/models/MSC3089Branch.ts +0 -3
  72. package/src/models/event.ts +0 -289
  73. package/src/models/poll.ts +0 -6
  74. package/src/models/relations-container.ts +1 -8
  75. package/src/models/relations.ts +0 -8
  76. package/src/models/room-state.ts +2 -8
  77. package/src/models/room.ts +0 -62
  78. package/src/models/thread.ts +0 -1
  79. package/src/sliding-sync-sdk.ts +2 -72
  80. package/src/sync.ts +1 -98
  81. package/src/testing.ts +0 -108
  82. package/src/types.ts +0 -1
  83. package/CHANGELOG.md +0 -5910
  84. package/lib/@types/AESEncryptedSecretStoragePayload.d.ts +0 -14
  85. package/lib/@types/AESEncryptedSecretStoragePayload.d.ts.map +0 -1
  86. package/lib/@types/AESEncryptedSecretStoragePayload.js +0 -1
  87. package/lib/@types/AESEncryptedSecretStoragePayload.js.map +0 -1
  88. package/lib/@types/crypto.d.ts +0 -47
  89. package/lib/@types/crypto.d.ts.map +0 -1
  90. package/lib/@types/crypto.js +0 -1
  91. package/lib/@types/crypto.js.map +0 -1
  92. package/lib/@types/matrix-sdk-crypto-wasm.d.js +0 -1
  93. package/lib/@types/matrix-sdk-crypto-wasm.d.js.map +0 -1
  94. package/lib/common-crypto/CryptoBackend.d.ts +0 -240
  95. package/lib/common-crypto/CryptoBackend.d.ts.map +0 -1
  96. package/lib/common-crypto/CryptoBackend.js +0 -73
  97. package/lib/common-crypto/CryptoBackend.js.map +0 -1
  98. package/lib/common-crypto/key-passphrase.d.ts +0 -14
  99. package/lib/common-crypto/key-passphrase.d.ts.map +0 -1
  100. package/lib/common-crypto/key-passphrase.js +0 -33
  101. package/lib/common-crypto/key-passphrase.js.map +0 -1
  102. package/lib/crypto/CrossSigning.d.ts +0 -184
  103. package/lib/crypto/CrossSigning.d.ts.map +0 -1
  104. package/lib/crypto/CrossSigning.js +0 -718
  105. package/lib/crypto/CrossSigning.js.map +0 -1
  106. package/lib/crypto/DeviceList.d.ts +0 -216
  107. package/lib/crypto/DeviceList.d.ts.map +0 -1
  108. package/lib/crypto/DeviceList.js +0 -892
  109. package/lib/crypto/DeviceList.js.map +0 -1
  110. package/lib/crypto/EncryptionSetup.d.ts +0 -152
  111. package/lib/crypto/EncryptionSetup.d.ts.map +0 -1
  112. package/lib/crypto/EncryptionSetup.js +0 -356
  113. package/lib/crypto/EncryptionSetup.js.map +0 -1
  114. package/lib/crypto/OlmDevice.d.ts +0 -457
  115. package/lib/crypto/OlmDevice.d.ts.map +0 -1
  116. package/lib/crypto/OlmDevice.js +0 -1241
  117. package/lib/crypto/OlmDevice.js.map +0 -1
  118. package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts +0 -109
  119. package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts.map +0 -1
  120. package/lib/crypto/OutgoingRoomKeyRequestManager.js +0 -415
  121. package/lib/crypto/OutgoingRoomKeyRequestManager.js.map +0 -1
  122. package/lib/crypto/RoomList.d.ts +0 -26
  123. package/lib/crypto/RoomList.d.ts.map +0 -1
  124. package/lib/crypto/RoomList.js +0 -71
  125. package/lib/crypto/RoomList.js.map +0 -1
  126. package/lib/crypto/SecretSharing.d.ts +0 -24
  127. package/lib/crypto/SecretSharing.d.ts.map +0 -1
  128. package/lib/crypto/SecretSharing.js +0 -194
  129. package/lib/crypto/SecretSharing.js.map +0 -1
  130. package/lib/crypto/SecretStorage.d.ts +0 -55
  131. package/lib/crypto/SecretStorage.d.ts.map +0 -1
  132. package/lib/crypto/SecretStorage.js +0 -118
  133. package/lib/crypto/SecretStorage.js.map +0 -1
  134. package/lib/crypto/aes.d.ts +0 -6
  135. package/lib/crypto/aes.d.ts.map +0 -1
  136. package/lib/crypto/aes.js +0 -24
  137. package/lib/crypto/aes.js.map +0 -1
  138. package/lib/crypto/algorithms/base.d.ts +0 -156
  139. package/lib/crypto/algorithms/base.d.ts.map +0 -1
  140. package/lib/crypto/algorithms/base.js +0 -187
  141. package/lib/crypto/algorithms/base.js.map +0 -1
  142. package/lib/crypto/algorithms/index.d.ts +0 -4
  143. package/lib/crypto/algorithms/index.d.ts.map +0 -1
  144. package/lib/crypto/algorithms/index.js +0 -20
  145. package/lib/crypto/algorithms/index.js.map +0 -1
  146. package/lib/crypto/algorithms/megolm.d.ts +0 -385
  147. package/lib/crypto/algorithms/megolm.d.ts.map +0 -1
  148. package/lib/crypto/algorithms/megolm.js +0 -1822
  149. package/lib/crypto/algorithms/megolm.js.map +0 -1
  150. package/lib/crypto/algorithms/olm.d.ts +0 -5
  151. package/lib/crypto/algorithms/olm.d.ts.map +0 -1
  152. package/lib/crypto/algorithms/olm.js +0 -299
  153. package/lib/crypto/algorithms/olm.js.map +0 -1
  154. package/lib/crypto/api.d.ts +0 -32
  155. package/lib/crypto/api.d.ts.map +0 -1
  156. package/lib/crypto/api.js +0 -22
  157. package/lib/crypto/api.js.map +0 -1
  158. package/lib/crypto/backup.d.ts +0 -227
  159. package/lib/crypto/backup.d.ts.map +0 -1
  160. package/lib/crypto/backup.js +0 -824
  161. package/lib/crypto/backup.js.map +0 -1
  162. package/lib/crypto/crypto.d.ts +0 -3
  163. package/lib/crypto/crypto.d.ts.map +0 -1
  164. package/lib/crypto/crypto.js +0 -19
  165. package/lib/crypto/crypto.js.map +0 -1
  166. package/lib/crypto/dehydration.d.ts +0 -34
  167. package/lib/crypto/dehydration.d.ts.map +0 -1
  168. package/lib/crypto/dehydration.js +0 -252
  169. package/lib/crypto/dehydration.js.map +0 -1
  170. package/lib/crypto/device-converter.d.ts +0 -9
  171. package/lib/crypto/device-converter.d.ts.map +0 -1
  172. package/lib/crypto/device-converter.js +0 -42
  173. package/lib/crypto/device-converter.js.map +0 -1
  174. package/lib/crypto/deviceinfo.d.ts +0 -99
  175. package/lib/crypto/deviceinfo.d.ts.map +0 -1
  176. package/lib/crypto/deviceinfo.js +0 -148
  177. package/lib/crypto/deviceinfo.js.map +0 -1
  178. package/lib/crypto/index.d.ts +0 -1209
  179. package/lib/crypto/index.d.ts.map +0 -1
  180. package/lib/crypto/index.js +0 -4097
  181. package/lib/crypto/index.js.map +0 -1
  182. package/lib/crypto/key_passphrase.d.ts +0 -14
  183. package/lib/crypto/key_passphrase.d.ts.map +0 -1
  184. package/lib/crypto/key_passphrase.js +0 -44
  185. package/lib/crypto/key_passphrase.js.map +0 -1
  186. package/lib/crypto/keybackup.d.ts +0 -18
  187. package/lib/crypto/keybackup.d.ts.map +0 -1
  188. package/lib/crypto/keybackup.js +0 -1
  189. package/lib/crypto/keybackup.js.map +0 -1
  190. package/lib/crypto/olmlib.d.ts +0 -129
  191. package/lib/crypto/olmlib.d.ts.map +0 -1
  192. package/lib/crypto/olmlib.js +0 -492
  193. package/lib/crypto/olmlib.js.map +0 -1
  194. package/lib/crypto/recoverykey.d.ts +0 -2
  195. package/lib/crypto/recoverykey.d.ts.map +0 -1
  196. package/lib/crypto/recoverykey.js +0 -19
  197. package/lib/crypto/recoverykey.js.map +0 -1
  198. package/lib/crypto/store/base.d.ts +0 -252
  199. package/lib/crypto/store/base.d.ts.map +0 -1
  200. package/lib/crypto/store/base.js +0 -64
  201. package/lib/crypto/store/base.js.map +0 -1
  202. package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts +0 -187
  203. package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts.map +0 -1
  204. package/lib/crypto/store/indexeddb-crypto-store-backend.js +0 -1145
  205. package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +0 -1
  206. package/lib/crypto/store/indexeddb-crypto-store.d.ts +0 -432
  207. package/lib/crypto/store/indexeddb-crypto-store.d.ts.map +0 -1
  208. package/lib/crypto/store/indexeddb-crypto-store.js +0 -728
  209. package/lib/crypto/store/indexeddb-crypto-store.js.map +0 -1
  210. package/lib/crypto/store/localStorage-crypto-store.d.ts +0 -119
  211. package/lib/crypto/store/localStorage-crypto-store.d.ts.map +0 -1
  212. package/lib/crypto/store/localStorage-crypto-store.js +0 -531
  213. package/lib/crypto/store/localStorage-crypto-store.js.map +0 -1
  214. package/lib/crypto/store/memory-crypto-store.d.ts +0 -215
  215. package/lib/crypto/store/memory-crypto-store.d.ts.map +0 -1
  216. package/lib/crypto/store/memory-crypto-store.js +0 -622
  217. package/lib/crypto/store/memory-crypto-store.js.map +0 -1
  218. package/lib/crypto/verification/Base.d.ts +0 -105
  219. package/lib/crypto/verification/Base.d.ts.map +0 -1
  220. package/lib/crypto/verification/Base.js +0 -372
  221. package/lib/crypto/verification/Base.js.map +0 -1
  222. package/lib/crypto/verification/Error.d.ts +0 -35
  223. package/lib/crypto/verification/Error.d.ts.map +0 -1
  224. package/lib/crypto/verification/Error.js +0 -86
  225. package/lib/crypto/verification/Error.js.map +0 -1
  226. package/lib/crypto/verification/IllegalMethod.d.ts +0 -15
  227. package/lib/crypto/verification/IllegalMethod.d.ts.map +0 -1
  228. package/lib/crypto/verification/IllegalMethod.js +0 -43
  229. package/lib/crypto/verification/IllegalMethod.js.map +0 -1
  230. package/lib/crypto/verification/QRCode.d.ts +0 -51
  231. package/lib/crypto/verification/QRCode.d.ts.map +0 -1
  232. package/lib/crypto/verification/QRCode.js +0 -277
  233. package/lib/crypto/verification/QRCode.js.map +0 -1
  234. package/lib/crypto/verification/SAS.d.ts +0 -27
  235. package/lib/crypto/verification/SAS.d.ts.map +0 -1
  236. package/lib/crypto/verification/SAS.js +0 -485
  237. package/lib/crypto/verification/SAS.js.map +0 -1
  238. package/lib/crypto/verification/SASDecimal.d.ts +0 -8
  239. package/lib/crypto/verification/SASDecimal.d.ts.map +0 -1
  240. package/lib/crypto/verification/SASDecimal.js +0 -34
  241. package/lib/crypto/verification/SASDecimal.js.map +0 -1
  242. package/lib/crypto/verification/request/Channel.d.ts +0 -18
  243. package/lib/crypto/verification/request/Channel.d.ts.map +0 -1
  244. package/lib/crypto/verification/request/Channel.js +0 -1
  245. package/lib/crypto/verification/request/Channel.js.map +0 -1
  246. package/lib/crypto/verification/request/InRoomChannel.d.ts +0 -113
  247. package/lib/crypto/verification/request/InRoomChannel.d.ts.map +0 -1
  248. package/lib/crypto/verification/request/InRoomChannel.js +0 -351
  249. package/lib/crypto/verification/request/InRoomChannel.js.map +0 -1
  250. package/lib/crypto/verification/request/ToDeviceChannel.d.ts +0 -105
  251. package/lib/crypto/verification/request/ToDeviceChannel.d.ts.map +0 -1
  252. package/lib/crypto/verification/request/ToDeviceChannel.js +0 -328
  253. package/lib/crypto/verification/request/ToDeviceChannel.js.map +0 -1
  254. package/lib/crypto/verification/request/VerificationRequest.d.ts +0 -227
  255. package/lib/crypto/verification/request/VerificationRequest.d.ts.map +0 -1
  256. package/lib/crypto/verification/request/VerificationRequest.js +0 -937
  257. package/lib/crypto/verification/request/VerificationRequest.js.map +0 -1
  258. package/lib/crypto-api/CryptoEvent.d.ts +0 -69
  259. package/lib/crypto-api/CryptoEvent.d.ts.map +0 -1
  260. package/lib/crypto-api/CryptoEvent.js +0 -33
  261. package/lib/crypto-api/CryptoEvent.js.map +0 -1
  262. package/lib/crypto-api/CryptoEventHandlerMap.d.ts +0 -16
  263. package/lib/crypto-api/CryptoEventHandlerMap.d.ts.map +0 -1
  264. package/lib/crypto-api/CryptoEventHandlerMap.js +0 -22
  265. package/lib/crypto-api/CryptoEventHandlerMap.js.map +0 -1
  266. package/lib/crypto-api/index.d.ts +0 -978
  267. package/lib/crypto-api/index.d.ts.map +0 -1
  268. package/lib/crypto-api/index.js +0 -304
  269. package/lib/crypto-api/index.js.map +0 -1
  270. package/lib/crypto-api/key-passphrase.d.ts +0 -11
  271. package/lib/crypto-api/key-passphrase.d.ts.map +0 -1
  272. package/lib/crypto-api/key-passphrase.js +0 -51
  273. package/lib/crypto-api/key-passphrase.js.map +0 -1
  274. package/lib/crypto-api/keybackup.d.ts +0 -88
  275. package/lib/crypto-api/keybackup.d.ts.map +0 -1
  276. package/lib/crypto-api/keybackup.js +0 -1
  277. package/lib/crypto-api/keybackup.js.map +0 -1
  278. package/lib/crypto-api/recovery-key.d.ts +0 -11
  279. package/lib/crypto-api/recovery-key.d.ts.map +0 -1
  280. package/lib/crypto-api/recovery-key.js +0 -65
  281. package/lib/crypto-api/recovery-key.js.map +0 -1
  282. package/lib/crypto-api/verification.d.ts +0 -344
  283. package/lib/crypto-api/verification.d.ts.map +0 -1
  284. package/lib/crypto-api/verification.js +0 -91
  285. package/lib/crypto-api/verification.js.map +0 -1
  286. package/lib/rendezvous/MSC4108SignInWithQR.d.ts +0 -112
  287. package/lib/rendezvous/MSC4108SignInWithQR.d.ts.map +0 -1
  288. package/lib/rendezvous/MSC4108SignInWithQR.js +0 -392
  289. package/lib/rendezvous/MSC4108SignInWithQR.js.map +0 -1
  290. package/lib/rendezvous/RendezvousChannel.d.ts +0 -27
  291. package/lib/rendezvous/RendezvousChannel.d.ts.map +0 -1
  292. package/lib/rendezvous/RendezvousChannel.js +0 -1
  293. package/lib/rendezvous/RendezvousChannel.js.map +0 -1
  294. package/lib/rendezvous/RendezvousCode.d.ts +0 -9
  295. package/lib/rendezvous/RendezvousCode.d.ts.map +0 -1
  296. package/lib/rendezvous/RendezvousCode.js +0 -1
  297. package/lib/rendezvous/RendezvousCode.js.map +0 -1
  298. package/lib/rendezvous/RendezvousError.d.ts +0 -6
  299. package/lib/rendezvous/RendezvousError.d.ts.map +0 -1
  300. package/lib/rendezvous/RendezvousError.js +0 -23
  301. package/lib/rendezvous/RendezvousError.js.map +0 -1
  302. package/lib/rendezvous/RendezvousFailureReason.d.ts +0 -31
  303. package/lib/rendezvous/RendezvousFailureReason.d.ts.map +0 -1
  304. package/lib/rendezvous/RendezvousFailureReason.js +0 -38
  305. package/lib/rendezvous/RendezvousFailureReason.js.map +0 -1
  306. package/lib/rendezvous/RendezvousIntent.d.ts +0 -5
  307. package/lib/rendezvous/RendezvousIntent.d.ts.map +0 -1
  308. package/lib/rendezvous/RendezvousIntent.js +0 -22
  309. package/lib/rendezvous/RendezvousIntent.js.map +0 -1
  310. package/lib/rendezvous/RendezvousTransport.d.ts +0 -36
  311. package/lib/rendezvous/RendezvousTransport.d.ts.map +0 -1
  312. package/lib/rendezvous/RendezvousTransport.js +0 -1
  313. package/lib/rendezvous/RendezvousTransport.js.map +0 -1
  314. package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts +0 -58
  315. package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts.map +0 -1
  316. package/lib/rendezvous/channels/MSC4108SecureChannel.js +0 -246
  317. package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +0 -1
  318. package/lib/rendezvous/channels/index.d.ts +0 -2
  319. package/lib/rendezvous/channels/index.d.ts.map +0 -1
  320. package/lib/rendezvous/channels/index.js +0 -18
  321. package/lib/rendezvous/channels/index.js.map +0 -1
  322. package/lib/rendezvous/index.d.ts +0 -10
  323. package/lib/rendezvous/index.d.ts.map +0 -1
  324. package/lib/rendezvous/index.js +0 -23
  325. package/lib/rendezvous/index.js.map +0 -1
  326. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +0 -61
  327. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts.map +0 -1
  328. package/lib/rendezvous/transports/MSC4108RendezvousSession.js +0 -253
  329. package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +0 -1
  330. package/lib/rendezvous/transports/index.d.ts +0 -2
  331. package/lib/rendezvous/transports/index.d.ts.map +0 -1
  332. package/lib/rendezvous/transports/index.js +0 -18
  333. package/lib/rendezvous/transports/index.js.map +0 -1
  334. package/lib/rust-crypto/CrossSigningIdentity.d.ts +0 -33
  335. package/lib/rust-crypto/CrossSigningIdentity.d.ts.map +0 -1
  336. package/lib/rust-crypto/CrossSigningIdentity.js +0 -157
  337. package/lib/rust-crypto/CrossSigningIdentity.js.map +0 -1
  338. package/lib/rust-crypto/DehydratedDeviceManager.d.ts +0 -98
  339. package/lib/rust-crypto/DehydratedDeviceManager.d.ts.map +0 -1
  340. package/lib/rust-crypto/DehydratedDeviceManager.js +0 -285
  341. package/lib/rust-crypto/DehydratedDeviceManager.js.map +0 -1
  342. package/lib/rust-crypto/KeyClaimManager.d.ts +0 -33
  343. package/lib/rust-crypto/KeyClaimManager.d.ts.map +0 -1
  344. package/lib/rust-crypto/KeyClaimManager.js +0 -82
  345. package/lib/rust-crypto/KeyClaimManager.js.map +0 -1
  346. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts +0 -43
  347. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts.map +0 -1
  348. package/lib/rust-crypto/OutgoingRequestProcessor.js +0 -195
  349. package/lib/rust-crypto/OutgoingRequestProcessor.js.map +0 -1
  350. package/lib/rust-crypto/OutgoingRequestsManager.d.ts +0 -47
  351. package/lib/rust-crypto/OutgoingRequestsManager.d.ts.map +0 -1
  352. package/lib/rust-crypto/OutgoingRequestsManager.js +0 -148
  353. package/lib/rust-crypto/OutgoingRequestsManager.js.map +0 -1
  354. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts +0 -120
  355. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts.map +0 -1
  356. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +0 -467
  357. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +0 -1
  358. package/lib/rust-crypto/RoomEncryptor.d.ts +0 -98
  359. package/lib/rust-crypto/RoomEncryptor.d.ts.map +0 -1
  360. package/lib/rust-crypto/RoomEncryptor.js +0 -299
  361. package/lib/rust-crypto/RoomEncryptor.js.map +0 -1
  362. package/lib/rust-crypto/backup.d.ts +0 -254
  363. package/lib/rust-crypto/backup.d.ts.map +0 -1
  364. package/lib/rust-crypto/backup.js +0 -837
  365. package/lib/rust-crypto/backup.js.map +0 -1
  366. package/lib/rust-crypto/constants.d.ts +0 -3
  367. package/lib/rust-crypto/constants.d.ts.map +0 -1
  368. package/lib/rust-crypto/constants.js +0 -19
  369. package/lib/rust-crypto/constants.js.map +0 -1
  370. package/lib/rust-crypto/device-converter.d.ts +0 -28
  371. package/lib/rust-crypto/device-converter.d.ts.map +0 -1
  372. package/lib/rust-crypto/device-converter.js +0 -123
  373. package/lib/rust-crypto/device-converter.js.map +0 -1
  374. package/lib/rust-crypto/index.d.ts +0 -61
  375. package/lib/rust-crypto/index.d.ts.map +0 -1
  376. package/lib/rust-crypto/index.js +0 -152
  377. package/lib/rust-crypto/index.js.map +0 -1
  378. package/lib/rust-crypto/libolm_migration.d.ts +0 -81
  379. package/lib/rust-crypto/libolm_migration.d.ts.map +0 -1
  380. package/lib/rust-crypto/libolm_migration.js +0 -459
  381. package/lib/rust-crypto/libolm_migration.js.map +0 -1
  382. package/lib/rust-crypto/rust-crypto.d.ts +0 -556
  383. package/lib/rust-crypto/rust-crypto.d.ts.map +0 -1
  384. package/lib/rust-crypto/rust-crypto.js +0 -2016
  385. package/lib/rust-crypto/rust-crypto.js.map +0 -1
  386. package/lib/rust-crypto/secret-storage.d.ts +0 -22
  387. package/lib/rust-crypto/secret-storage.d.ts.map +0 -1
  388. package/lib/rust-crypto/secret-storage.js +0 -63
  389. package/lib/rust-crypto/secret-storage.js.map +0 -1
  390. package/lib/rust-crypto/verification.d.ts +0 -319
  391. package/lib/rust-crypto/verification.d.ts.map +0 -1
  392. package/lib/rust-crypto/verification.js +0 -816
  393. package/lib/rust-crypto/verification.js.map +0 -1
  394. package/lib/secret-storage.d.ts +0 -370
  395. package/lib/secret-storage.d.ts.map +0 -1
  396. package/lib/secret-storage.js +0 -466
  397. package/lib/secret-storage.js.map +0 -1
  398. package/lib/utils/decryptAESSecretStorageItem.d.ts +0 -12
  399. package/lib/utils/decryptAESSecretStorageItem.d.ts.map +0 -1
  400. package/lib/utils/decryptAESSecretStorageItem.js +0 -50
  401. package/lib/utils/decryptAESSecretStorageItem.js.map +0 -1
  402. package/lib/utils/encryptAESSecretStorageItem.d.ts +0 -16
  403. package/lib/utils/encryptAESSecretStorageItem.d.ts.map +0 -1
  404. package/lib/utils/encryptAESSecretStorageItem.js +0 -68
  405. package/lib/utils/encryptAESSecretStorageItem.js.map +0 -1
  406. package/lib/utils/internal/deriveKeys.d.ts +0 -10
  407. package/lib/utils/internal/deriveKeys.d.ts.map +0 -1
  408. package/lib/utils/internal/deriveKeys.js +0 -60
  409. package/lib/utils/internal/deriveKeys.js.map +0 -1
  410. package/src/@types/AESEncryptedSecretStoragePayload.ts +0 -29
  411. package/src/@types/crypto.ts +0 -73
  412. package/src/@types/matrix-sdk-crypto-wasm.d.ts +0 -44
  413. package/src/common-crypto/CryptoBackend.ts +0 -302
  414. package/src/common-crypto/README.md +0 -4
  415. package/src/common-crypto/key-passphrase.ts +0 -43
  416. package/src/crypto/CrossSigning.ts +0 -773
  417. package/src/crypto/DeviceList.ts +0 -989
  418. package/src/crypto/EncryptionSetup.ts +0 -351
  419. package/src/crypto/OlmDevice.ts +0 -1500
  420. package/src/crypto/OutgoingRoomKeyRequestManager.ts +0 -485
  421. package/src/crypto/RoomList.ts +0 -70
  422. package/src/crypto/SecretSharing.ts +0 -240
  423. package/src/crypto/SecretStorage.ts +0 -136
  424. package/src/crypto/aes.ts +0 -23
  425. package/src/crypto/algorithms/base.ts +0 -236
  426. package/src/crypto/algorithms/index.ts +0 -20
  427. package/src/crypto/algorithms/megolm.ts +0 -2216
  428. package/src/crypto/algorithms/olm.ts +0 -381
  429. package/src/crypto/api.ts +0 -70
  430. package/src/crypto/backup.ts +0 -922
  431. package/src/crypto/crypto.ts +0 -18
  432. package/src/crypto/dehydration.ts +0 -272
  433. package/src/crypto/device-converter.ts +0 -45
  434. package/src/crypto/deviceinfo.ts +0 -158
  435. package/src/crypto/index.ts +0 -4414
  436. package/src/crypto/key_passphrase.ts +0 -42
  437. package/src/crypto/keybackup.ts +0 -47
  438. package/src/crypto/olmlib.ts +0 -539
  439. package/src/crypto/recoverykey.ts +0 -18
  440. package/src/crypto/store/base.ts +0 -348
  441. package/src/crypto/store/indexeddb-crypto-store-backend.ts +0 -1250
  442. package/src/crypto/store/indexeddb-crypto-store.ts +0 -845
  443. package/src/crypto/store/localStorage-crypto-store.ts +0 -579
  444. package/src/crypto/store/memory-crypto-store.ts +0 -680
  445. package/src/crypto/verification/Base.ts +0 -409
  446. package/src/crypto/verification/Error.ts +0 -76
  447. package/src/crypto/verification/IllegalMethod.ts +0 -50
  448. package/src/crypto/verification/QRCode.ts +0 -310
  449. package/src/crypto/verification/SAS.ts +0 -494
  450. package/src/crypto/verification/SASDecimal.ts +0 -37
  451. package/src/crypto/verification/request/Channel.ts +0 -34
  452. package/src/crypto/verification/request/InRoomChannel.ts +0 -371
  453. package/src/crypto/verification/request/ToDeviceChannel.ts +0 -354
  454. package/src/crypto/verification/request/VerificationRequest.ts +0 -976
  455. package/src/crypto-api/CryptoEvent.ts +0 -93
  456. package/src/crypto-api/CryptoEventHandlerMap.ts +0 -32
  457. package/src/crypto-api/index.ts +0 -1175
  458. package/src/crypto-api/key-passphrase.ts +0 -58
  459. package/src/crypto-api/keybackup.ts +0 -115
  460. package/src/crypto-api/recovery-key.ts +0 -69
  461. package/src/crypto-api/verification.ts +0 -408
  462. package/src/rendezvous/MSC4108SignInWithQR.ts +0 -444
  463. package/src/rendezvous/RendezvousChannel.ts +0 -48
  464. package/src/rendezvous/RendezvousCode.ts +0 -25
  465. package/src/rendezvous/RendezvousError.ts +0 -26
  466. package/src/rendezvous/RendezvousFailureReason.ts +0 -49
  467. package/src/rendezvous/RendezvousIntent.ts +0 -20
  468. package/src/rendezvous/RendezvousTransport.ts +0 -58
  469. package/src/rendezvous/channels/MSC4108SecureChannel.ts +0 -270
  470. package/src/rendezvous/channels/index.ts +0 -17
  471. package/src/rendezvous/index.ts +0 -25
  472. package/src/rendezvous/transports/MSC4108RendezvousSession.ts +0 -270
  473. package/src/rendezvous/transports/index.ts +0 -17
  474. package/src/rust-crypto/CrossSigningIdentity.ts +0 -183
  475. package/src/rust-crypto/DehydratedDeviceManager.ts +0 -306
  476. package/src/rust-crypto/KeyClaimManager.ts +0 -86
  477. package/src/rust-crypto/OutgoingRequestProcessor.ts +0 -236
  478. package/src/rust-crypto/OutgoingRequestsManager.ts +0 -143
  479. package/src/rust-crypto/PerSessionKeyBackupDownloader.ts +0 -501
  480. package/src/rust-crypto/RoomEncryptor.ts +0 -352
  481. package/src/rust-crypto/backup.ts +0 -881
  482. package/src/rust-crypto/constants.ts +0 -18
  483. package/src/rust-crypto/device-converter.ts +0 -128
  484. package/src/rust-crypto/index.ts +0 -237
  485. package/src/rust-crypto/libolm_migration.ts +0 -530
  486. package/src/rust-crypto/rust-crypto.ts +0 -2205
  487. package/src/rust-crypto/secret-storage.ts +0 -60
  488. package/src/rust-crypto/verification.ts +0 -830
  489. package/src/secret-storage.ts +0 -693
  490. package/src/utils/decryptAESSecretStorageItem.ts +0 -54
  491. package/src/utils/encryptAESSecretStorageItem.ts +0 -73
  492. package/src/utils/internal/deriveKeys.ts +0 -63
@@ -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