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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (467) 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 -1176
  8. package/lib/client.d.ts.map +1 -1
  9. package/lib/client.js +346 -2717
  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/package.json +1 -3
  62. package/src/@types/global.d.ts +0 -3
  63. package/src/browser-index.ts +0 -11
  64. package/src/client.ts +57 -2732
  65. package/src/embedded.ts +3 -130
  66. package/src/event-mapper.ts +0 -4
  67. package/src/matrix.ts +0 -28
  68. package/src/models/MSC3089Branch.ts +0 -3
  69. package/src/models/event.ts +0 -289
  70. package/src/models/poll.ts +0 -6
  71. package/src/models/relations-container.ts +1 -8
  72. package/src/models/relations.ts +0 -8
  73. package/src/models/room-state.ts +2 -8
  74. package/src/models/room.ts +0 -62
  75. package/src/models/thread.ts +0 -1
  76. package/src/sliding-sync-sdk.ts +2 -72
  77. package/src/sync.ts +1 -98
  78. package/src/testing.ts +0 -108
  79. package/lib/@types/crypto.d.ts +0 -47
  80. package/lib/@types/crypto.d.ts.map +0 -1
  81. package/lib/@types/crypto.js +0 -1
  82. package/lib/@types/crypto.js.map +0 -1
  83. package/lib/@types/matrix-sdk-crypto-wasm.d.js +0 -1
  84. package/lib/@types/matrix-sdk-crypto-wasm.d.js.map +0 -1
  85. package/lib/common-crypto/CryptoBackend.d.ts +0 -240
  86. package/lib/common-crypto/CryptoBackend.d.ts.map +0 -1
  87. package/lib/common-crypto/CryptoBackend.js +0 -73
  88. package/lib/common-crypto/CryptoBackend.js.map +0 -1
  89. package/lib/common-crypto/key-passphrase.d.ts +0 -14
  90. package/lib/common-crypto/key-passphrase.d.ts.map +0 -1
  91. package/lib/common-crypto/key-passphrase.js +0 -33
  92. package/lib/common-crypto/key-passphrase.js.map +0 -1
  93. package/lib/crypto/CrossSigning.d.ts +0 -184
  94. package/lib/crypto/CrossSigning.d.ts.map +0 -1
  95. package/lib/crypto/CrossSigning.js +0 -718
  96. package/lib/crypto/CrossSigning.js.map +0 -1
  97. package/lib/crypto/DeviceList.d.ts +0 -216
  98. package/lib/crypto/DeviceList.d.ts.map +0 -1
  99. package/lib/crypto/DeviceList.js +0 -892
  100. package/lib/crypto/DeviceList.js.map +0 -1
  101. package/lib/crypto/EncryptionSetup.d.ts +0 -152
  102. package/lib/crypto/EncryptionSetup.d.ts.map +0 -1
  103. package/lib/crypto/EncryptionSetup.js +0 -356
  104. package/lib/crypto/EncryptionSetup.js.map +0 -1
  105. package/lib/crypto/OlmDevice.d.ts +0 -457
  106. package/lib/crypto/OlmDevice.d.ts.map +0 -1
  107. package/lib/crypto/OlmDevice.js +0 -1241
  108. package/lib/crypto/OlmDevice.js.map +0 -1
  109. package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts +0 -109
  110. package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts.map +0 -1
  111. package/lib/crypto/OutgoingRoomKeyRequestManager.js +0 -415
  112. package/lib/crypto/OutgoingRoomKeyRequestManager.js.map +0 -1
  113. package/lib/crypto/RoomList.d.ts +0 -26
  114. package/lib/crypto/RoomList.d.ts.map +0 -1
  115. package/lib/crypto/RoomList.js +0 -71
  116. package/lib/crypto/RoomList.js.map +0 -1
  117. package/lib/crypto/SecretSharing.d.ts +0 -24
  118. package/lib/crypto/SecretSharing.d.ts.map +0 -1
  119. package/lib/crypto/SecretSharing.js +0 -194
  120. package/lib/crypto/SecretSharing.js.map +0 -1
  121. package/lib/crypto/SecretStorage.d.ts +0 -55
  122. package/lib/crypto/SecretStorage.d.ts.map +0 -1
  123. package/lib/crypto/SecretStorage.js +0 -118
  124. package/lib/crypto/SecretStorage.js.map +0 -1
  125. package/lib/crypto/aes.d.ts +0 -6
  126. package/lib/crypto/aes.d.ts.map +0 -1
  127. package/lib/crypto/aes.js +0 -24
  128. package/lib/crypto/aes.js.map +0 -1
  129. package/lib/crypto/algorithms/base.d.ts +0 -156
  130. package/lib/crypto/algorithms/base.d.ts.map +0 -1
  131. package/lib/crypto/algorithms/base.js +0 -187
  132. package/lib/crypto/algorithms/base.js.map +0 -1
  133. package/lib/crypto/algorithms/index.d.ts +0 -4
  134. package/lib/crypto/algorithms/index.d.ts.map +0 -1
  135. package/lib/crypto/algorithms/index.js +0 -20
  136. package/lib/crypto/algorithms/index.js.map +0 -1
  137. package/lib/crypto/algorithms/megolm.d.ts +0 -385
  138. package/lib/crypto/algorithms/megolm.d.ts.map +0 -1
  139. package/lib/crypto/algorithms/megolm.js +0 -1822
  140. package/lib/crypto/algorithms/megolm.js.map +0 -1
  141. package/lib/crypto/algorithms/olm.d.ts +0 -5
  142. package/lib/crypto/algorithms/olm.d.ts.map +0 -1
  143. package/lib/crypto/algorithms/olm.js +0 -299
  144. package/lib/crypto/algorithms/olm.js.map +0 -1
  145. package/lib/crypto/api.d.ts +0 -32
  146. package/lib/crypto/api.d.ts.map +0 -1
  147. package/lib/crypto/api.js +0 -22
  148. package/lib/crypto/api.js.map +0 -1
  149. package/lib/crypto/backup.d.ts +0 -227
  150. package/lib/crypto/backup.d.ts.map +0 -1
  151. package/lib/crypto/backup.js +0 -824
  152. package/lib/crypto/backup.js.map +0 -1
  153. package/lib/crypto/crypto.d.ts +0 -3
  154. package/lib/crypto/crypto.d.ts.map +0 -1
  155. package/lib/crypto/crypto.js +0 -19
  156. package/lib/crypto/crypto.js.map +0 -1
  157. package/lib/crypto/dehydration.d.ts +0 -34
  158. package/lib/crypto/dehydration.d.ts.map +0 -1
  159. package/lib/crypto/dehydration.js +0 -252
  160. package/lib/crypto/dehydration.js.map +0 -1
  161. package/lib/crypto/device-converter.d.ts +0 -9
  162. package/lib/crypto/device-converter.d.ts.map +0 -1
  163. package/lib/crypto/device-converter.js +0 -42
  164. package/lib/crypto/device-converter.js.map +0 -1
  165. package/lib/crypto/deviceinfo.d.ts +0 -99
  166. package/lib/crypto/deviceinfo.d.ts.map +0 -1
  167. package/lib/crypto/deviceinfo.js +0 -148
  168. package/lib/crypto/deviceinfo.js.map +0 -1
  169. package/lib/crypto/index.d.ts +0 -1209
  170. package/lib/crypto/index.d.ts.map +0 -1
  171. package/lib/crypto/index.js +0 -4097
  172. package/lib/crypto/index.js.map +0 -1
  173. package/lib/crypto/key_passphrase.d.ts +0 -14
  174. package/lib/crypto/key_passphrase.d.ts.map +0 -1
  175. package/lib/crypto/key_passphrase.js +0 -44
  176. package/lib/crypto/key_passphrase.js.map +0 -1
  177. package/lib/crypto/keybackup.d.ts +0 -18
  178. package/lib/crypto/keybackup.d.ts.map +0 -1
  179. package/lib/crypto/keybackup.js +0 -1
  180. package/lib/crypto/keybackup.js.map +0 -1
  181. package/lib/crypto/olmlib.d.ts +0 -129
  182. package/lib/crypto/olmlib.d.ts.map +0 -1
  183. package/lib/crypto/olmlib.js +0 -492
  184. package/lib/crypto/olmlib.js.map +0 -1
  185. package/lib/crypto/recoverykey.d.ts +0 -2
  186. package/lib/crypto/recoverykey.d.ts.map +0 -1
  187. package/lib/crypto/recoverykey.js +0 -19
  188. package/lib/crypto/recoverykey.js.map +0 -1
  189. package/lib/crypto/store/base.d.ts +0 -252
  190. package/lib/crypto/store/base.d.ts.map +0 -1
  191. package/lib/crypto/store/base.js +0 -64
  192. package/lib/crypto/store/base.js.map +0 -1
  193. package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts +0 -187
  194. package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts.map +0 -1
  195. package/lib/crypto/store/indexeddb-crypto-store-backend.js +0 -1145
  196. package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +0 -1
  197. package/lib/crypto/store/indexeddb-crypto-store.d.ts +0 -432
  198. package/lib/crypto/store/indexeddb-crypto-store.d.ts.map +0 -1
  199. package/lib/crypto/store/indexeddb-crypto-store.js +0 -728
  200. package/lib/crypto/store/indexeddb-crypto-store.js.map +0 -1
  201. package/lib/crypto/store/localStorage-crypto-store.d.ts +0 -119
  202. package/lib/crypto/store/localStorage-crypto-store.d.ts.map +0 -1
  203. package/lib/crypto/store/localStorage-crypto-store.js +0 -531
  204. package/lib/crypto/store/localStorage-crypto-store.js.map +0 -1
  205. package/lib/crypto/store/memory-crypto-store.d.ts +0 -215
  206. package/lib/crypto/store/memory-crypto-store.d.ts.map +0 -1
  207. package/lib/crypto/store/memory-crypto-store.js +0 -622
  208. package/lib/crypto/store/memory-crypto-store.js.map +0 -1
  209. package/lib/crypto/verification/Base.d.ts +0 -105
  210. package/lib/crypto/verification/Base.d.ts.map +0 -1
  211. package/lib/crypto/verification/Base.js +0 -372
  212. package/lib/crypto/verification/Base.js.map +0 -1
  213. package/lib/crypto/verification/Error.d.ts +0 -35
  214. package/lib/crypto/verification/Error.d.ts.map +0 -1
  215. package/lib/crypto/verification/Error.js +0 -86
  216. package/lib/crypto/verification/Error.js.map +0 -1
  217. package/lib/crypto/verification/IllegalMethod.d.ts +0 -15
  218. package/lib/crypto/verification/IllegalMethod.d.ts.map +0 -1
  219. package/lib/crypto/verification/IllegalMethod.js +0 -43
  220. package/lib/crypto/verification/IllegalMethod.js.map +0 -1
  221. package/lib/crypto/verification/QRCode.d.ts +0 -51
  222. package/lib/crypto/verification/QRCode.d.ts.map +0 -1
  223. package/lib/crypto/verification/QRCode.js +0 -277
  224. package/lib/crypto/verification/QRCode.js.map +0 -1
  225. package/lib/crypto/verification/SAS.d.ts +0 -27
  226. package/lib/crypto/verification/SAS.d.ts.map +0 -1
  227. package/lib/crypto/verification/SAS.js +0 -485
  228. package/lib/crypto/verification/SAS.js.map +0 -1
  229. package/lib/crypto/verification/SASDecimal.d.ts +0 -8
  230. package/lib/crypto/verification/SASDecimal.d.ts.map +0 -1
  231. package/lib/crypto/verification/SASDecimal.js +0 -34
  232. package/lib/crypto/verification/SASDecimal.js.map +0 -1
  233. package/lib/crypto/verification/request/Channel.d.ts +0 -18
  234. package/lib/crypto/verification/request/Channel.d.ts.map +0 -1
  235. package/lib/crypto/verification/request/Channel.js +0 -1
  236. package/lib/crypto/verification/request/Channel.js.map +0 -1
  237. package/lib/crypto/verification/request/InRoomChannel.d.ts +0 -113
  238. package/lib/crypto/verification/request/InRoomChannel.d.ts.map +0 -1
  239. package/lib/crypto/verification/request/InRoomChannel.js +0 -351
  240. package/lib/crypto/verification/request/InRoomChannel.js.map +0 -1
  241. package/lib/crypto/verification/request/ToDeviceChannel.d.ts +0 -105
  242. package/lib/crypto/verification/request/ToDeviceChannel.d.ts.map +0 -1
  243. package/lib/crypto/verification/request/ToDeviceChannel.js +0 -328
  244. package/lib/crypto/verification/request/ToDeviceChannel.js.map +0 -1
  245. package/lib/crypto/verification/request/VerificationRequest.d.ts +0 -227
  246. package/lib/crypto/verification/request/VerificationRequest.d.ts.map +0 -1
  247. package/lib/crypto/verification/request/VerificationRequest.js +0 -937
  248. package/lib/crypto/verification/request/VerificationRequest.js.map +0 -1
  249. package/lib/crypto-api/CryptoEvent.d.ts +0 -69
  250. package/lib/crypto-api/CryptoEvent.d.ts.map +0 -1
  251. package/lib/crypto-api/CryptoEvent.js +0 -33
  252. package/lib/crypto-api/CryptoEvent.js.map +0 -1
  253. package/lib/crypto-api/CryptoEventHandlerMap.d.ts +0 -16
  254. package/lib/crypto-api/CryptoEventHandlerMap.d.ts.map +0 -1
  255. package/lib/crypto-api/CryptoEventHandlerMap.js +0 -22
  256. package/lib/crypto-api/CryptoEventHandlerMap.js.map +0 -1
  257. package/lib/crypto-api/index.d.ts +0 -978
  258. package/lib/crypto-api/index.d.ts.map +0 -1
  259. package/lib/crypto-api/index.js +0 -304
  260. package/lib/crypto-api/index.js.map +0 -1
  261. package/lib/crypto-api/key-passphrase.d.ts +0 -11
  262. package/lib/crypto-api/key-passphrase.d.ts.map +0 -1
  263. package/lib/crypto-api/key-passphrase.js +0 -51
  264. package/lib/crypto-api/key-passphrase.js.map +0 -1
  265. package/lib/crypto-api/keybackup.d.ts +0 -88
  266. package/lib/crypto-api/keybackup.d.ts.map +0 -1
  267. package/lib/crypto-api/keybackup.js +0 -1
  268. package/lib/crypto-api/keybackup.js.map +0 -1
  269. package/lib/crypto-api/recovery-key.d.ts +0 -11
  270. package/lib/crypto-api/recovery-key.d.ts.map +0 -1
  271. package/lib/crypto-api/recovery-key.js +0 -65
  272. package/lib/crypto-api/recovery-key.js.map +0 -1
  273. package/lib/crypto-api/verification.d.ts +0 -344
  274. package/lib/crypto-api/verification.d.ts.map +0 -1
  275. package/lib/crypto-api/verification.js +0 -91
  276. package/lib/crypto-api/verification.js.map +0 -1
  277. package/lib/rendezvous/MSC4108SignInWithQR.d.ts +0 -112
  278. package/lib/rendezvous/MSC4108SignInWithQR.d.ts.map +0 -1
  279. package/lib/rendezvous/MSC4108SignInWithQR.js +0 -392
  280. package/lib/rendezvous/MSC4108SignInWithQR.js.map +0 -1
  281. package/lib/rendezvous/RendezvousChannel.d.ts +0 -27
  282. package/lib/rendezvous/RendezvousChannel.d.ts.map +0 -1
  283. package/lib/rendezvous/RendezvousChannel.js +0 -1
  284. package/lib/rendezvous/RendezvousChannel.js.map +0 -1
  285. package/lib/rendezvous/RendezvousCode.d.ts +0 -9
  286. package/lib/rendezvous/RendezvousCode.d.ts.map +0 -1
  287. package/lib/rendezvous/RendezvousCode.js +0 -1
  288. package/lib/rendezvous/RendezvousCode.js.map +0 -1
  289. package/lib/rendezvous/RendezvousError.d.ts +0 -6
  290. package/lib/rendezvous/RendezvousError.d.ts.map +0 -1
  291. package/lib/rendezvous/RendezvousError.js +0 -23
  292. package/lib/rendezvous/RendezvousError.js.map +0 -1
  293. package/lib/rendezvous/RendezvousFailureReason.d.ts +0 -31
  294. package/lib/rendezvous/RendezvousFailureReason.d.ts.map +0 -1
  295. package/lib/rendezvous/RendezvousFailureReason.js +0 -38
  296. package/lib/rendezvous/RendezvousFailureReason.js.map +0 -1
  297. package/lib/rendezvous/RendezvousIntent.d.ts +0 -5
  298. package/lib/rendezvous/RendezvousIntent.d.ts.map +0 -1
  299. package/lib/rendezvous/RendezvousIntent.js +0 -22
  300. package/lib/rendezvous/RendezvousIntent.js.map +0 -1
  301. package/lib/rendezvous/RendezvousTransport.d.ts +0 -36
  302. package/lib/rendezvous/RendezvousTransport.d.ts.map +0 -1
  303. package/lib/rendezvous/RendezvousTransport.js +0 -1
  304. package/lib/rendezvous/RendezvousTransport.js.map +0 -1
  305. package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts +0 -58
  306. package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts.map +0 -1
  307. package/lib/rendezvous/channels/MSC4108SecureChannel.js +0 -246
  308. package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +0 -1
  309. package/lib/rendezvous/channels/index.d.ts +0 -2
  310. package/lib/rendezvous/channels/index.d.ts.map +0 -1
  311. package/lib/rendezvous/channels/index.js +0 -18
  312. package/lib/rendezvous/channels/index.js.map +0 -1
  313. package/lib/rendezvous/index.d.ts +0 -10
  314. package/lib/rendezvous/index.d.ts.map +0 -1
  315. package/lib/rendezvous/index.js +0 -23
  316. package/lib/rendezvous/index.js.map +0 -1
  317. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +0 -61
  318. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts.map +0 -1
  319. package/lib/rendezvous/transports/MSC4108RendezvousSession.js +0 -253
  320. package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +0 -1
  321. package/lib/rendezvous/transports/index.d.ts +0 -2
  322. package/lib/rendezvous/transports/index.d.ts.map +0 -1
  323. package/lib/rendezvous/transports/index.js +0 -18
  324. package/lib/rendezvous/transports/index.js.map +0 -1
  325. package/lib/rust-crypto/CrossSigningIdentity.d.ts +0 -33
  326. package/lib/rust-crypto/CrossSigningIdentity.d.ts.map +0 -1
  327. package/lib/rust-crypto/CrossSigningIdentity.js +0 -157
  328. package/lib/rust-crypto/CrossSigningIdentity.js.map +0 -1
  329. package/lib/rust-crypto/DehydratedDeviceManager.d.ts +0 -98
  330. package/lib/rust-crypto/DehydratedDeviceManager.d.ts.map +0 -1
  331. package/lib/rust-crypto/DehydratedDeviceManager.js +0 -285
  332. package/lib/rust-crypto/DehydratedDeviceManager.js.map +0 -1
  333. package/lib/rust-crypto/KeyClaimManager.d.ts +0 -33
  334. package/lib/rust-crypto/KeyClaimManager.d.ts.map +0 -1
  335. package/lib/rust-crypto/KeyClaimManager.js +0 -82
  336. package/lib/rust-crypto/KeyClaimManager.js.map +0 -1
  337. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts +0 -43
  338. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts.map +0 -1
  339. package/lib/rust-crypto/OutgoingRequestProcessor.js +0 -195
  340. package/lib/rust-crypto/OutgoingRequestProcessor.js.map +0 -1
  341. package/lib/rust-crypto/OutgoingRequestsManager.d.ts +0 -47
  342. package/lib/rust-crypto/OutgoingRequestsManager.d.ts.map +0 -1
  343. package/lib/rust-crypto/OutgoingRequestsManager.js +0 -148
  344. package/lib/rust-crypto/OutgoingRequestsManager.js.map +0 -1
  345. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts +0 -120
  346. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts.map +0 -1
  347. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +0 -467
  348. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +0 -1
  349. package/lib/rust-crypto/RoomEncryptor.d.ts +0 -98
  350. package/lib/rust-crypto/RoomEncryptor.d.ts.map +0 -1
  351. package/lib/rust-crypto/RoomEncryptor.js +0 -299
  352. package/lib/rust-crypto/RoomEncryptor.js.map +0 -1
  353. package/lib/rust-crypto/backup.d.ts +0 -254
  354. package/lib/rust-crypto/backup.d.ts.map +0 -1
  355. package/lib/rust-crypto/backup.js +0 -837
  356. package/lib/rust-crypto/backup.js.map +0 -1
  357. package/lib/rust-crypto/constants.d.ts +0 -3
  358. package/lib/rust-crypto/constants.d.ts.map +0 -1
  359. package/lib/rust-crypto/constants.js +0 -19
  360. package/lib/rust-crypto/constants.js.map +0 -1
  361. package/lib/rust-crypto/device-converter.d.ts +0 -28
  362. package/lib/rust-crypto/device-converter.d.ts.map +0 -1
  363. package/lib/rust-crypto/device-converter.js +0 -123
  364. package/lib/rust-crypto/device-converter.js.map +0 -1
  365. package/lib/rust-crypto/index.d.ts +0 -61
  366. package/lib/rust-crypto/index.d.ts.map +0 -1
  367. package/lib/rust-crypto/index.js +0 -152
  368. package/lib/rust-crypto/index.js.map +0 -1
  369. package/lib/rust-crypto/libolm_migration.d.ts +0 -81
  370. package/lib/rust-crypto/libolm_migration.d.ts.map +0 -1
  371. package/lib/rust-crypto/libolm_migration.js +0 -459
  372. package/lib/rust-crypto/libolm_migration.js.map +0 -1
  373. package/lib/rust-crypto/rust-crypto.d.ts +0 -556
  374. package/lib/rust-crypto/rust-crypto.d.ts.map +0 -1
  375. package/lib/rust-crypto/rust-crypto.js +0 -2016
  376. package/lib/rust-crypto/rust-crypto.js.map +0 -1
  377. package/lib/rust-crypto/secret-storage.d.ts +0 -22
  378. package/lib/rust-crypto/secret-storage.d.ts.map +0 -1
  379. package/lib/rust-crypto/secret-storage.js +0 -63
  380. package/lib/rust-crypto/secret-storage.js.map +0 -1
  381. package/lib/rust-crypto/verification.d.ts +0 -319
  382. package/lib/rust-crypto/verification.d.ts.map +0 -1
  383. package/lib/rust-crypto/verification.js +0 -816
  384. package/lib/rust-crypto/verification.js.map +0 -1
  385. package/lib/secret-storage.d.ts +0 -370
  386. package/lib/secret-storage.d.ts.map +0 -1
  387. package/lib/secret-storage.js +0 -466
  388. package/lib/secret-storage.js.map +0 -1
  389. package/src/@types/crypto.ts +0 -73
  390. package/src/@types/matrix-sdk-crypto-wasm.d.ts +0 -44
  391. package/src/common-crypto/CryptoBackend.ts +0 -302
  392. package/src/common-crypto/README.md +0 -4
  393. package/src/common-crypto/key-passphrase.ts +0 -43
  394. package/src/crypto/CrossSigning.ts +0 -773
  395. package/src/crypto/DeviceList.ts +0 -989
  396. package/src/crypto/EncryptionSetup.ts +0 -351
  397. package/src/crypto/OlmDevice.ts +0 -1500
  398. package/src/crypto/OutgoingRoomKeyRequestManager.ts +0 -485
  399. package/src/crypto/RoomList.ts +0 -70
  400. package/src/crypto/SecretSharing.ts +0 -240
  401. package/src/crypto/SecretStorage.ts +0 -136
  402. package/src/crypto/aes.ts +0 -23
  403. package/src/crypto/algorithms/base.ts +0 -236
  404. package/src/crypto/algorithms/index.ts +0 -20
  405. package/src/crypto/algorithms/megolm.ts +0 -2216
  406. package/src/crypto/algorithms/olm.ts +0 -381
  407. package/src/crypto/api.ts +0 -70
  408. package/src/crypto/backup.ts +0 -922
  409. package/src/crypto/crypto.ts +0 -18
  410. package/src/crypto/dehydration.ts +0 -272
  411. package/src/crypto/device-converter.ts +0 -45
  412. package/src/crypto/deviceinfo.ts +0 -158
  413. package/src/crypto/index.ts +0 -4414
  414. package/src/crypto/key_passphrase.ts +0 -42
  415. package/src/crypto/keybackup.ts +0 -47
  416. package/src/crypto/olmlib.ts +0 -539
  417. package/src/crypto/recoverykey.ts +0 -18
  418. package/src/crypto/store/base.ts +0 -348
  419. package/src/crypto/store/indexeddb-crypto-store-backend.ts +0 -1250
  420. package/src/crypto/store/indexeddb-crypto-store.ts +0 -845
  421. package/src/crypto/store/localStorage-crypto-store.ts +0 -579
  422. package/src/crypto/store/memory-crypto-store.ts +0 -680
  423. package/src/crypto/verification/Base.ts +0 -409
  424. package/src/crypto/verification/Error.ts +0 -76
  425. package/src/crypto/verification/IllegalMethod.ts +0 -50
  426. package/src/crypto/verification/QRCode.ts +0 -310
  427. package/src/crypto/verification/SAS.ts +0 -494
  428. package/src/crypto/verification/SASDecimal.ts +0 -37
  429. package/src/crypto/verification/request/Channel.ts +0 -34
  430. package/src/crypto/verification/request/InRoomChannel.ts +0 -371
  431. package/src/crypto/verification/request/ToDeviceChannel.ts +0 -354
  432. package/src/crypto/verification/request/VerificationRequest.ts +0 -976
  433. package/src/crypto-api/CryptoEvent.ts +0 -93
  434. package/src/crypto-api/CryptoEventHandlerMap.ts +0 -32
  435. package/src/crypto-api/index.ts +0 -1175
  436. package/src/crypto-api/key-passphrase.ts +0 -58
  437. package/src/crypto-api/keybackup.ts +0 -115
  438. package/src/crypto-api/recovery-key.ts +0 -69
  439. package/src/crypto-api/verification.ts +0 -408
  440. package/src/rendezvous/MSC4108SignInWithQR.ts +0 -444
  441. package/src/rendezvous/RendezvousChannel.ts +0 -48
  442. package/src/rendezvous/RendezvousCode.ts +0 -25
  443. package/src/rendezvous/RendezvousError.ts +0 -26
  444. package/src/rendezvous/RendezvousFailureReason.ts +0 -49
  445. package/src/rendezvous/RendezvousIntent.ts +0 -20
  446. package/src/rendezvous/RendezvousTransport.ts +0 -58
  447. package/src/rendezvous/channels/MSC4108SecureChannel.ts +0 -270
  448. package/src/rendezvous/channels/index.ts +0 -17
  449. package/src/rendezvous/index.ts +0 -25
  450. package/src/rendezvous/transports/MSC4108RendezvousSession.ts +0 -270
  451. package/src/rendezvous/transports/index.ts +0 -17
  452. package/src/rust-crypto/CrossSigningIdentity.ts +0 -183
  453. package/src/rust-crypto/DehydratedDeviceManager.ts +0 -306
  454. package/src/rust-crypto/KeyClaimManager.ts +0 -86
  455. package/src/rust-crypto/OutgoingRequestProcessor.ts +0 -236
  456. package/src/rust-crypto/OutgoingRequestsManager.ts +0 -143
  457. package/src/rust-crypto/PerSessionKeyBackupDownloader.ts +0 -501
  458. package/src/rust-crypto/RoomEncryptor.ts +0 -352
  459. package/src/rust-crypto/backup.ts +0 -881
  460. package/src/rust-crypto/constants.ts +0 -18
  461. package/src/rust-crypto/device-converter.ts +0 -128
  462. package/src/rust-crypto/index.ts +0 -237
  463. package/src/rust-crypto/libolm_migration.ts +0 -530
  464. package/src/rust-crypto/rust-crypto.ts +0 -2205
  465. package/src/rust-crypto/secret-storage.ts +0 -60
  466. package/src/rust-crypto/verification.ts +0 -830
  467. package/src/secret-storage.ts +0 -693
@@ -1,824 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
- /*
4
- Copyright 2021 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
- /**
20
- * Classes for dealing with key backup.
21
- */
22
-
23
- import { MatrixClient } from "../client.js";
24
- import { logger } from "../logger.js";
25
- import { MEGOLM_ALGORITHM, verifySignature } from "./olmlib.js";
26
- import { keyFromPassphrase } from "./key_passphrase.js";
27
- import { encodeUri, safeSet, sleep } from "../utils.js";
28
- import { IndexedDBCryptoStore } from "./store/indexeddb-crypto-store.js";
29
- import { UnstableValue } from "../NamespacedValue.js";
30
- import { CryptoEvent } from "./index.js";
31
- import { ClientPrefix, MatrixError, Method } from "../http-api/index.js";
32
- import { encodeRecoveryKey } from "../crypto-api/index.js";
33
- import decryptAESSecretStorageItem from "../utils/decryptAESSecretStorageItem.js";
34
- import encryptAESSecretStorageItem from "../utils/encryptAESSecretStorageItem.js";
35
- import { calculateKeyCheck } from "../secret-storage.js";
36
- var KEY_BACKUP_KEYS_PER_REQUEST = 200;
37
- var KEY_BACKUP_CHECK_RATE_LIMIT = 5000; // ms
38
-
39
- /** @deprecated Prefer {@link BackupTrustInfo} */
40
-
41
- /* eslint-disable camelcase */
42
-
43
- /* eslint-enable camelcase */
44
-
45
- /** A function used to get the secret key for a backup.
46
- */
47
-
48
- /**
49
- * Manages the key backup.
50
- */
51
- export class BackupManager {
52
- constructor(baseApis, getKey) {
53
- this.baseApis = baseApis;
54
- this.getKey = getKey;
55
- _defineProperty(this, "algorithm", void 0);
56
- _defineProperty(this, "backupInfo", void 0);
57
- // The info dict from /room_keys/version
58
- _defineProperty(this, "checkedForBackup", void 0);
59
- // Have we checked the server for a backup we can use?
60
- _defineProperty(this, "sendingBackups", void 0);
61
- // Are we currently sending backups?
62
- _defineProperty(this, "sessionLastCheckAttemptedTime", {});
63
- // When did we last try to check the server for a given session id?
64
- // The backup manager will schedule backup of keys when active (`scheduleKeyBackupSend`), this allows cancel when client is stopped
65
- _defineProperty(this, "clientRunning", true);
66
- this.checkedForBackup = false;
67
- this.sendingBackups = false;
68
- }
69
-
70
- /**
71
- * Stop the backup manager from backing up keys and allow a clean shutdown.
72
- */
73
- stop() {
74
- this.clientRunning = false;
75
- }
76
- get version() {
77
- return this.backupInfo && this.backupInfo.version;
78
- }
79
-
80
- /**
81
- * Performs a quick check to ensure that the backup info looks sane.
82
- *
83
- * Throws an error if a problem is detected.
84
- *
85
- * @param info - the key backup info
86
- */
87
- static checkBackupVersion(info) {
88
- var Algorithm = algorithmsByName[info.algorithm];
89
- if (!Algorithm) {
90
- throw new Error("Unknown backup algorithm: " + info.algorithm);
91
- }
92
- if (typeof info.auth_data !== "object") {
93
- throw new Error("Invalid backup data returned");
94
- }
95
- return Algorithm.checkBackupVersion(info);
96
- }
97
- static makeAlgorithm(info, getKey) {
98
- var Algorithm = algorithmsByName[info.algorithm];
99
- if (!Algorithm) {
100
- throw new Error("Unknown backup algorithm");
101
- }
102
- return Algorithm.init(info.auth_data, getKey);
103
- }
104
- enableKeyBackup(info) {
105
- var _this = this;
106
- return _asyncToGenerator(function* () {
107
- _this.backupInfo = info;
108
- if (_this.algorithm) {
109
- _this.algorithm.free();
110
- }
111
- _this.algorithm = yield BackupManager.makeAlgorithm(info, _this.getKey);
112
- _this.baseApis.emit(CryptoEvent.KeyBackupStatus, true);
113
-
114
- // There may be keys left over from a partially completed backup, so
115
- // schedule a send to check.
116
- _this.scheduleKeyBackupSend();
117
- })();
118
- }
119
-
120
- /**
121
- * Disable backing up of keys.
122
- */
123
- disableKeyBackup() {
124
- if (this.algorithm) {
125
- this.algorithm.free();
126
- }
127
- this.algorithm = undefined;
128
- this.backupInfo = undefined;
129
- this.baseApis.emit(CryptoEvent.KeyBackupStatus, false);
130
- }
131
- getKeyBackupEnabled() {
132
- if (!this.checkedForBackup) {
133
- return null;
134
- }
135
- return Boolean(this.algorithm);
136
- }
137
- prepareKeyBackupVersion(key, algorithm) {
138
- return _asyncToGenerator(function* () {
139
- var Algorithm = algorithm ? algorithmsByName[algorithm] : DefaultAlgorithm;
140
- if (!Algorithm) {
141
- throw new Error("Unknown backup algorithm");
142
- }
143
- var [privateKey, authData] = yield Algorithm.prepare(key);
144
- var recoveryKey = encodeRecoveryKey(privateKey);
145
- return {
146
- algorithm: Algorithm.algorithmName,
147
- auth_data: authData,
148
- recovery_key: recoveryKey,
149
- privateKey
150
- };
151
- })();
152
- }
153
- createKeyBackupVersion(info) {
154
- var _this2 = this;
155
- return _asyncToGenerator(function* () {
156
- _this2.algorithm = yield BackupManager.makeAlgorithm(info, _this2.getKey);
157
- })();
158
- }
159
-
160
- /**
161
- * Deletes all key backups.
162
- *
163
- * Will call the API to delete active backup until there is no more present.
164
- */
165
- deleteAllKeyBackupVersions() {
166
- var _this3 = this;
167
- return _asyncToGenerator(function* () {
168
- var _yield$_this3$baseApi, _yield$_this3$baseApi2;
169
- // there could be several backup versions, delete all to be safe.
170
- var current = (_yield$_this3$baseApi = (_yield$_this3$baseApi2 = yield _this3.baseApis.getKeyBackupVersion()) === null || _yield$_this3$baseApi2 === void 0 ? void 0 : _yield$_this3$baseApi2.version) !== null && _yield$_this3$baseApi !== void 0 ? _yield$_this3$baseApi : null;
171
- while (current != null) {
172
- var _yield$_this3$baseApi3, _yield$_this3$baseApi4;
173
- yield _this3.deleteKeyBackupVersion(current);
174
- _this3.disableKeyBackup();
175
- current = (_yield$_this3$baseApi3 = (_yield$_this3$baseApi4 = yield _this3.baseApis.getKeyBackupVersion()) === null || _yield$_this3$baseApi4 === void 0 ? void 0 : _yield$_this3$baseApi4.version) !== null && _yield$_this3$baseApi3 !== void 0 ? _yield$_this3$baseApi3 : null;
176
- }
177
- })();
178
- }
179
-
180
- /**
181
- * Deletes the given key backup.
182
- *
183
- * @param version - The backup version to delete.
184
- */
185
- deleteKeyBackupVersion(version) {
186
- var _this4 = this;
187
- return _asyncToGenerator(function* () {
188
- var path = encodeUri("/room_keys/version/$version", {
189
- $version: version
190
- });
191
- yield _this4.baseApis.http.authedRequest(Method.Delete, path, undefined, undefined, {
192
- prefix: ClientPrefix.V3
193
- });
194
- })();
195
- }
196
-
197
- /**
198
- * Check the server for an active key backup and
199
- * if one is present and has a valid signature from
200
- * one of the user's verified devices, start backing up
201
- * to it.
202
- */
203
- checkAndStart() {
204
- var _this5 = this;
205
- return _asyncToGenerator(function* () {
206
- logger.log("Checking key backup status...");
207
- if (_this5.baseApis.isGuest()) {
208
- logger.log("Skipping key backup check since user is guest");
209
- _this5.checkedForBackup = true;
210
- return null;
211
- }
212
- var backupInfo;
213
- try {
214
- var _yield$_this5$baseApi;
215
- backupInfo = (_yield$_this5$baseApi = yield _this5.baseApis.getKeyBackupVersion()) !== null && _yield$_this5$baseApi !== void 0 ? _yield$_this5$baseApi : undefined;
216
- } catch (e) {
217
- logger.log("Error checking for active key backup", e);
218
- if (e.httpStatus === 404) {
219
- // 404 is returned when the key backup does not exist, so that
220
- // counts as successfully checking.
221
- _this5.checkedForBackup = true;
222
- }
223
- return null;
224
- }
225
- _this5.checkedForBackup = true;
226
- var trustInfo = yield _this5.isKeyBackupTrusted(backupInfo);
227
- if (trustInfo.usable && !_this5.backupInfo) {
228
- logger.log("Found usable key backup v".concat(backupInfo.version, ": enabling key backups"));
229
- yield _this5.enableKeyBackup(backupInfo);
230
- } else if (!trustInfo.usable && _this5.backupInfo) {
231
- logger.log("No usable key backup: disabling key backup");
232
- _this5.disableKeyBackup();
233
- } else if (!trustInfo.usable && !_this5.backupInfo) {
234
- logger.log("No usable key backup: not enabling key backup");
235
- } else if (trustInfo.usable && _this5.backupInfo) {
236
- // may not be the same version: if not, we should switch
237
- if (backupInfo.version !== _this5.backupInfo.version) {
238
- logger.log("On backup version ".concat(_this5.backupInfo.version, " but ") + "found version ".concat(backupInfo.version, ": switching."));
239
- _this5.disableKeyBackup();
240
- yield _this5.enableKeyBackup(backupInfo);
241
- // We're now using a new backup, so schedule all the keys we have to be
242
- // uploaded to the new backup. This is a bit of a workaround to upload
243
- // keys to a new backup in *most* cases, but it won't cover all cases
244
- // because we don't remember what backup version we uploaded keys to:
245
- // see https://github.com/vector-im/element-web/issues/14833
246
- yield _this5.scheduleAllGroupSessionsForBackup();
247
- } else {
248
- logger.log("Backup version ".concat(backupInfo.version, " still current"));
249
- }
250
- }
251
- return {
252
- backupInfo,
253
- trustInfo
254
- };
255
- })();
256
- }
257
-
258
- /**
259
- * Forces a re-check of the key backup and enables/disables it
260
- * as appropriate.
261
- *
262
- * @returns Object with backup info (as returned by
263
- * getKeyBackupVersion) in backupInfo and
264
- * trust information (as returned by isKeyBackupTrusted)
265
- * in trustInfo.
266
- */
267
- checkKeyBackup() {
268
- var _this6 = this;
269
- return _asyncToGenerator(function* () {
270
- _this6.checkedForBackup = false;
271
- return _this6.checkAndStart();
272
- })();
273
- }
274
-
275
- /**
276
- * Attempts to retrieve a session from a key backup, if enough time
277
- * has elapsed since the last check for this session id.
278
- */
279
- queryKeyBackupRateLimited(targetRoomId, targetSessionId) {
280
- var _this7 = this;
281
- return _asyncToGenerator(function* () {
282
- if (!_this7.backupInfo) {
283
- return;
284
- }
285
- var now = new Date().getTime();
286
- if (!_this7.sessionLastCheckAttemptedTime[targetSessionId] || now - _this7.sessionLastCheckAttemptedTime[targetSessionId] > KEY_BACKUP_CHECK_RATE_LIMIT) {
287
- _this7.sessionLastCheckAttemptedTime[targetSessionId] = now;
288
- yield _this7.baseApis.restoreKeyBackupWithCache(targetRoomId, targetSessionId, _this7.backupInfo, {});
289
- }
290
- })();
291
- }
292
-
293
- /**
294
- * Check if the given backup info is trusted.
295
- *
296
- * @param backupInfo - key backup info dict from /room_keys/version
297
- */
298
- isKeyBackupTrusted(backupInfo) {
299
- var _this8 = this;
300
- return _asyncToGenerator(function* () {
301
- var ret = {
302
- usable: false,
303
- trusted_locally: false,
304
- sigs: []
305
- };
306
- if (!backupInfo || !backupInfo.algorithm || !backupInfo.auth_data || !backupInfo.auth_data.signatures) {
307
- logger.info("Key backup is absent or missing required data: ".concat(JSON.stringify(backupInfo)));
308
- return ret;
309
- }
310
- var userId = _this8.baseApis.getUserId();
311
- var privKey = yield _this8.baseApis.crypto.getSessionBackupPrivateKey();
312
- if (privKey) {
313
- var algorithm = null;
314
- try {
315
- algorithm = yield BackupManager.makeAlgorithm(backupInfo, /*#__PURE__*/_asyncToGenerator(function* () {
316
- return privKey;
317
- }));
318
- if (yield algorithm.keyMatches(privKey)) {
319
- logger.info("Backup is trusted locally");
320
- ret.trusted_locally = true;
321
- }
322
- } catch (_unused) {
323
- // do nothing -- if we have an error, then we don't mark it as
324
- // locally trusted
325
- } finally {
326
- var _algorithm;
327
- (_algorithm = algorithm) === null || _algorithm === void 0 || _algorithm.free();
328
- }
329
- }
330
- var mySigs = backupInfo.auth_data.signatures[userId] || {};
331
- for (var keyId of Object.keys(mySigs)) {
332
- var keyIdParts = keyId.split(":");
333
- if (keyIdParts[0] !== "ed25519") {
334
- logger.log("Ignoring unknown signature type: " + keyIdParts[0]);
335
- continue;
336
- }
337
- // Could be a cross-signing master key, but just say this is the device
338
- // ID for backwards compat
339
- var sigInfo = {
340
- deviceId: keyIdParts[1]
341
- };
342
-
343
- // first check to see if it's from our cross-signing key
344
- var crossSigningId = _this8.baseApis.crypto.crossSigningInfo.getId();
345
- if (crossSigningId === sigInfo.deviceId) {
346
- sigInfo.crossSigningId = true;
347
- try {
348
- yield verifySignature(_this8.baseApis.crypto.olmDevice, backupInfo.auth_data, userId, sigInfo.deviceId, crossSigningId);
349
- sigInfo.valid = true;
350
- } catch (e) {
351
- logger.warn("Bad signature from cross signing key " + crossSigningId, e);
352
- sigInfo.valid = false;
353
- }
354
- ret.sigs.push(sigInfo);
355
- continue;
356
- }
357
-
358
- // Now look for a sig from a device
359
- // At some point this can probably go away and we'll just support
360
- // it being signed by the cross-signing master key
361
- var device = _this8.baseApis.crypto.deviceList.getStoredDevice(userId, sigInfo.deviceId);
362
- if (device) {
363
- sigInfo.device = device;
364
- sigInfo.deviceTrust = _this8.baseApis.checkDeviceTrust(userId, sigInfo.deviceId);
365
- try {
366
- yield verifySignature(_this8.baseApis.crypto.olmDevice, backupInfo.auth_data, userId, device.deviceId, device.getFingerprint());
367
- sigInfo.valid = true;
368
- } catch (e) {
369
- logger.info("Bad signature from key ID " + keyId + " userID " + _this8.baseApis.getUserId() + " device ID " + device.deviceId + " fingerprint: " + device.getFingerprint(), backupInfo.auth_data, e);
370
- sigInfo.valid = false;
371
- }
372
- } else {
373
- sigInfo.valid = null; // Can't determine validity because we don't have the signing device
374
- logger.info("Ignoring signature from unknown key " + keyId);
375
- }
376
- ret.sigs.push(sigInfo);
377
- }
378
- ret.usable = ret.sigs.some(s => {
379
- var _s$deviceTrust;
380
- return s.valid && (s.device && ((_s$deviceTrust = s.deviceTrust) === null || _s$deviceTrust === void 0 ? void 0 : _s$deviceTrust.isVerified()) || s.crossSigningId);
381
- });
382
- return ret;
383
- })();
384
- }
385
-
386
- /**
387
- * Schedules sending all keys waiting to be sent to the backup, if not already
388
- * scheduled. Retries if necessary.
389
- *
390
- * @param maxDelay - Maximum delay to wait in ms. 0 means no delay.
391
- */
392
- scheduleKeyBackupSend() {
393
- var _arguments = arguments,
394
- _this9 = this;
395
- return _asyncToGenerator(function* () {
396
- var maxDelay = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : 10000;
397
- logger.debug("Key backup: scheduleKeyBackupSend currentSending:".concat(_this9.sendingBackups, " delay:").concat(maxDelay));
398
- if (_this9.sendingBackups) return;
399
- _this9.sendingBackups = true;
400
- try {
401
- // wait between 0 and `maxDelay` seconds, to avoid backup
402
- // requests from different clients hitting the server all at
403
- // the same time when a new key is sent
404
- var delay = Math.random() * maxDelay;
405
- yield sleep(delay);
406
- if (!_this9.clientRunning) {
407
- _this9.sendingBackups = false;
408
- return;
409
- }
410
- var numFailures = 0; // number of consecutive failures
411
- for (;;) {
412
- if (!_this9.algorithm) {
413
- return;
414
- }
415
- try {
416
- var numBackedUp = yield _this9.backupPendingKeys(KEY_BACKUP_KEYS_PER_REQUEST);
417
- if (numBackedUp === 0) {
418
- // no sessions left needing backup: we're done
419
- _this9.sendingBackups = false;
420
- return;
421
- }
422
- numFailures = 0;
423
- } catch (err) {
424
- numFailures++;
425
- logger.log("Key backup request failed", err);
426
- if (err instanceof MatrixError) {
427
- var errCode = err.data.errcode;
428
- if (errCode == "M_NOT_FOUND" || errCode == "M_WRONG_ROOM_KEYS_VERSION") {
429
- // Set to false now as `checkKeyBackup` might schedule a backupsend before this one ends.
430
- _this9.sendingBackups = false;
431
- // Backup version has changed or this backup version
432
- // has been deleted
433
- _this9.baseApis.crypto.emit(CryptoEvent.KeyBackupFailed, errCode);
434
- // Re-check key backup status on error, so we can be
435
- // sure to present the current situation when asked.
436
- // This call might restart the backup loop if new backup version is trusted
437
- yield _this9.checkKeyBackup();
438
- return;
439
- }
440
- }
441
- }
442
- if (numFailures) {
443
- // exponential backoff if we have failures
444
- yield sleep(1000 * Math.pow(2, Math.min(numFailures - 1, 4)));
445
- }
446
- if (!_this9.clientRunning) {
447
- logger.debug("Key backup send loop aborted, client stopped");
448
- _this9.sendingBackups = false;
449
- return;
450
- }
451
- }
452
- } catch (err) {
453
- // No one actually checks errors on this promise, it's spawned internally.
454
- // Just log, apps/client should use events to check status
455
- logger.log("Backup loop failed ".concat(err));
456
- _this9.sendingBackups = false;
457
- }
458
- })();
459
- }
460
-
461
- /**
462
- * Take some e2e keys waiting to be backed up and send them
463
- * to the backup.
464
- *
465
- * @param limit - Maximum number of keys to back up
466
- * @returns Number of sessions backed up
467
- */
468
- backupPendingKeys(limit) {
469
- var _this10 = this;
470
- return _asyncToGenerator(function* () {
471
- var sessions = yield _this10.baseApis.crypto.cryptoStore.getSessionsNeedingBackup(limit);
472
- if (!sessions.length) {
473
- return 0;
474
- }
475
- var remaining = yield _this10.baseApis.crypto.cryptoStore.countSessionsNeedingBackup();
476
- _this10.baseApis.crypto.emit(CryptoEvent.KeyBackupSessionsRemaining, remaining);
477
- var rooms = {};
478
- for (var session of sessions) {
479
- var _deviceList$getDevice;
480
- var roomId = session.sessionData.room_id;
481
- safeSet(rooms, roomId, rooms[roomId] || {
482
- sessions: {}
483
- });
484
- var sessionData = _this10.baseApis.crypto.olmDevice.exportInboundGroupSession(session.senderKey, session.sessionId, session.sessionData);
485
- sessionData.algorithm = MEGOLM_ALGORITHM;
486
- var forwardedCount = (sessionData.forwarding_curve25519_key_chain || []).length;
487
- var userId = _this10.baseApis.crypto.deviceList.getUserByIdentityKey(MEGOLM_ALGORITHM, session.senderKey);
488
- var device = (_deviceList$getDevice = _this10.baseApis.crypto.deviceList.getDeviceByIdentityKey(MEGOLM_ALGORITHM, session.senderKey)) !== null && _deviceList$getDevice !== void 0 ? _deviceList$getDevice : undefined;
489
- var verified = _this10.baseApis.crypto.checkDeviceInfoTrust(userId, device).isVerified();
490
- safeSet(rooms[roomId]["sessions"], session.sessionId, {
491
- first_message_index: sessionData.first_known_index,
492
- forwarded_count: forwardedCount,
493
- is_verified: verified,
494
- session_data: yield _this10.algorithm.encryptSession(sessionData)
495
- });
496
- }
497
- yield _this10.baseApis.sendKeyBackup(undefined, undefined, _this10.backupInfo.version, {
498
- rooms
499
- });
500
- yield _this10.baseApis.crypto.cryptoStore.unmarkSessionsNeedingBackup(sessions);
501
- remaining = yield _this10.baseApis.crypto.cryptoStore.countSessionsNeedingBackup();
502
- _this10.baseApis.crypto.emit(CryptoEvent.KeyBackupSessionsRemaining, remaining);
503
- return sessions.length;
504
- })();
505
- }
506
- backupGroupSession(senderKey, sessionId) {
507
- var _this11 = this;
508
- return _asyncToGenerator(function* () {
509
- yield _this11.baseApis.crypto.cryptoStore.markSessionsNeedingBackup([{
510
- senderKey: senderKey,
511
- sessionId: sessionId
512
- }]);
513
- if (_this11.backupInfo) {
514
- // don't wait for this to complete: it will delay so
515
- // happens in the background
516
- _this11.scheduleKeyBackupSend();
517
- }
518
- // if this.backupInfo is not set, then the keys will be backed up when
519
- // this.enableKeyBackup is called
520
- })();
521
- }
522
-
523
- /**
524
- * Marks all group sessions as needing to be backed up and schedules them to
525
- * upload in the background as soon as possible.
526
- */
527
- scheduleAllGroupSessionsForBackup() {
528
- var _this12 = this;
529
- return _asyncToGenerator(function* () {
530
- yield _this12.flagAllGroupSessionsForBackup();
531
-
532
- // Schedule keys to upload in the background as soon as possible.
533
- _this12.scheduleKeyBackupSend(0 /* maxDelay */);
534
- })();
535
- }
536
-
537
- /**
538
- * Marks all group sessions as needing to be backed up without scheduling
539
- * them to upload in the background.
540
- * @returns Promise which resolves to the number of sessions now requiring a backup
541
- * (which will be equal to the number of sessions in the store).
542
- */
543
- flagAllGroupSessionsForBackup() {
544
- var _this13 = this;
545
- return _asyncToGenerator(function* () {
546
- yield _this13.baseApis.crypto.cryptoStore.doTxn("readwrite", [IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS, IndexedDBCryptoStore.STORE_BACKUP], txn => {
547
- _this13.baseApis.crypto.cryptoStore.getAllEndToEndInboundGroupSessions(txn, session => {
548
- if (session !== null) {
549
- _this13.baseApis.crypto.cryptoStore.markSessionsNeedingBackup([session], txn);
550
- }
551
- });
552
- });
553
- var remaining = yield _this13.baseApis.crypto.cryptoStore.countSessionsNeedingBackup();
554
- _this13.baseApis.emit(CryptoEvent.KeyBackupSessionsRemaining, remaining);
555
- return remaining;
556
- })();
557
- }
558
-
559
- /**
560
- * Counts the number of end to end session keys that are waiting to be backed up
561
- * @returns Promise which resolves to the number of sessions requiring backup
562
- */
563
- countSessionsNeedingBackup() {
564
- return this.baseApis.crypto.cryptoStore.countSessionsNeedingBackup();
565
- }
566
- }
567
- export class Curve25519 {
568
- constructor(authData, publicKey,
569
- // FIXME: PkEncryption
570
- getKey) {
571
- this.authData = authData;
572
- this.publicKey = publicKey;
573
- this.getKey = getKey;
574
- }
575
- static init(authData, getKey) {
576
- return _asyncToGenerator(function* () {
577
- if (!authData || !("public_key" in authData)) {
578
- throw new Error("auth_data missing required information");
579
- }
580
- var publicKey = new globalThis.Olm.PkEncryption();
581
- publicKey.set_recipient_key(authData.public_key);
582
- return new Curve25519(authData, publicKey, getKey);
583
- })();
584
- }
585
- static prepare(key) {
586
- return _asyncToGenerator(function* () {
587
- var decryption = new globalThis.Olm.PkDecryption();
588
- try {
589
- var _authData = {};
590
- if (!key) {
591
- _authData.public_key = decryption.generate_key();
592
- } else if (key instanceof Uint8Array) {
593
- _authData.public_key = decryption.init_with_private_key(key);
594
- } else {
595
- var derivation = yield keyFromPassphrase(key);
596
- _authData.private_key_salt = derivation.salt;
597
- _authData.private_key_iterations = derivation.iterations;
598
- _authData.public_key = decryption.init_with_private_key(derivation.key);
599
- }
600
- var _publicKey = new globalThis.Olm.PkEncryption();
601
- _publicKey.set_recipient_key(_authData.public_key);
602
- return [decryption.get_private_key(), _authData];
603
- } finally {
604
- decryption.free();
605
- }
606
- })();
607
- }
608
- static checkBackupVersion(info) {
609
- if (!("public_key" in info.auth_data)) {
610
- throw new Error("Invalid backup data returned");
611
- }
612
- }
613
- get untrusted() {
614
- return true;
615
- }
616
- encryptSession(data) {
617
- var _this14 = this;
618
- return _asyncToGenerator(function* () {
619
- var plainText = Object.assign({}, data);
620
- delete plainText.session_id;
621
- delete plainText.room_id;
622
- delete plainText.first_known_index;
623
- return _this14.publicKey.encrypt(JSON.stringify(plainText));
624
- })();
625
- }
626
- decryptSessions(sessions) {
627
- var _this15 = this;
628
- return _asyncToGenerator(function* () {
629
- var privKey = yield _this15.getKey();
630
- var decryption = new globalThis.Olm.PkDecryption();
631
- try {
632
- var backupPubKey = decryption.init_with_private_key(privKey);
633
- if (backupPubKey !== _this15.authData.public_key) {
634
- throw new MatrixError({
635
- errcode: MatrixClient.RESTORE_BACKUP_ERROR_BAD_KEY
636
- });
637
- }
638
- var keys = [];
639
- for (var [sessionId, sessionData] of Object.entries(sessions)) {
640
- try {
641
- var decrypted = JSON.parse(decryption.decrypt(sessionData.session_data.ephemeral, sessionData.session_data.mac, sessionData.session_data.ciphertext));
642
- decrypted.session_id = sessionId;
643
- keys.push(decrypted);
644
- } catch (e) {
645
- logger.log("Failed to decrypt megolm session from backup", e, sessionData);
646
- }
647
- }
648
- return keys;
649
- } finally {
650
- decryption.free();
651
- }
652
- })();
653
- }
654
- keyMatches(key) {
655
- var _this16 = this;
656
- return _asyncToGenerator(function* () {
657
- var decryption = new globalThis.Olm.PkDecryption();
658
- var pubKey;
659
- try {
660
- pubKey = decryption.init_with_private_key(key);
661
- } finally {
662
- decryption.free();
663
- }
664
- return pubKey === _this16.authData.public_key;
665
- })();
666
- }
667
- free() {
668
- this.publicKey.free();
669
- }
670
- }
671
- _defineProperty(Curve25519, "algorithmName", "m.megolm_backup.v1.curve25519-aes-sha2");
672
- function randomBytes(size) {
673
- var buf = new Uint8Array(size);
674
- globalThis.crypto.getRandomValues(buf);
675
- return buf;
676
- }
677
- var UNSTABLE_MSC3270_NAME = new UnstableValue("m.megolm_backup.v1.aes-hmac-sha2", "org.matrix.msc3270.v1.aes-hmac-sha2");
678
- export class Aes256 {
679
- constructor(authData, key) {
680
- this.authData = authData;
681
- this.key = key;
682
- }
683
- static init(authData, getKey) {
684
- return _asyncToGenerator(function* () {
685
- if (!authData) {
686
- throw new Error("auth_data missing");
687
- }
688
- var key = yield getKey();
689
- if (authData.mac) {
690
- var {
691
- mac
692
- } = yield calculateKeyCheck(key, authData.iv);
693
- if (authData.mac.replace(/=+$/g, "") !== mac.replace(/=+/g, "")) {
694
- throw new Error("Key does not match");
695
- }
696
- }
697
- return new Aes256(authData, key);
698
- })();
699
- }
700
- static prepare(key) {
701
- return _asyncToGenerator(function* () {
702
- var outKey;
703
- var authData = {};
704
- if (!key) {
705
- outKey = randomBytes(32);
706
- } else if (key instanceof Uint8Array) {
707
- outKey = new Uint8Array(key);
708
- } else {
709
- var derivation = yield keyFromPassphrase(key);
710
- authData.private_key_salt = derivation.salt;
711
- authData.private_key_iterations = derivation.iterations;
712
- outKey = derivation.key;
713
- }
714
- var {
715
- iv,
716
- mac
717
- } = yield calculateKeyCheck(outKey);
718
- authData.iv = iv;
719
- authData.mac = mac;
720
- return [outKey, authData];
721
- })();
722
- }
723
- static checkBackupVersion(info) {
724
- if (!("iv" in info.auth_data && "mac" in info.auth_data)) {
725
- throw new Error("Invalid backup data returned");
726
- }
727
- }
728
- get untrusted() {
729
- return false;
730
- }
731
- encryptSession(data) {
732
- var plainText = Object.assign({}, data);
733
- delete plainText.session_id;
734
- delete plainText.room_id;
735
- delete plainText.first_known_index;
736
- return encryptAESSecretStorageItem(JSON.stringify(plainText), this.key, data.session_id);
737
- }
738
- decryptSessions(sessions) {
739
- var _this17 = this;
740
- return _asyncToGenerator(function* () {
741
- var keys = [];
742
- for (var [sessionId, sessionData] of Object.entries(sessions)) {
743
- try {
744
- var decrypted = JSON.parse(yield decryptAESSecretStorageItem(sessionData.session_data, _this17.key, sessionId));
745
- decrypted.session_id = sessionId;
746
- keys.push(decrypted);
747
- } catch (e) {
748
- logger.log("Failed to decrypt megolm session from backup", e, sessionData);
749
- }
750
- }
751
- return keys;
752
- })();
753
- }
754
- keyMatches(key) {
755
- var _this18 = this;
756
- return _asyncToGenerator(function* () {
757
- if (_this18.authData.mac) {
758
- var {
759
- mac
760
- } = yield calculateKeyCheck(key, _this18.authData.iv);
761
- return _this18.authData.mac.replace(/=+$/g, "") === mac.replace(/=+/g, "");
762
- } else {
763
- // if we have no information, we have to assume the key is right
764
- return true;
765
- }
766
- })();
767
- }
768
- free() {
769
- this.key.fill(0);
770
- }
771
- }
772
- _defineProperty(Aes256, "algorithmName", UNSTABLE_MSC3270_NAME.name);
773
- export var algorithmsByName = {
774
- [Curve25519.algorithmName]: Curve25519,
775
- [Aes256.algorithmName]: Aes256
776
- };
777
-
778
- // the linter doesn't like this but knip does
779
- // eslint-disable-next-line tsdoc/syntax
780
- /** @alias */
781
- export var DefaultAlgorithm = Curve25519;
782
-
783
- /**
784
- * Map a legacy {@link TrustInfo} into a new-style {@link BackupTrustInfo}.
785
- *
786
- * @param trustInfo - trustInfo to convert
787
- */
788
- export function backupTrustInfoFromLegacyTrustInfo(trustInfo) {
789
- var _trustInfo$trusted_lo;
790
- return {
791
- trusted: trustInfo.usable,
792
- matchesDecryptionKey: (_trustInfo$trusted_lo = trustInfo.trusted_locally) !== null && _trustInfo$trusted_lo !== void 0 ? _trustInfo$trusted_lo : false
793
- };
794
- }
795
-
796
- /**
797
- * Implementation of {@link BackupDecryptor} for the libolm crypto backend.
798
- */
799
- export class LibOlmBackupDecryptor {
800
- constructor(algorithm) {
801
- _defineProperty(this, "algorithm", void 0);
802
- _defineProperty(this, "sourceTrusted", void 0);
803
- this.algorithm = algorithm;
804
- this.sourceTrusted = !algorithm.untrusted;
805
- }
806
-
807
- /**
808
- * Implements {@link BackupDecryptor#free}
809
- */
810
- free() {
811
- this.algorithm.free();
812
- }
813
-
814
- /**
815
- * Implements {@link BackupDecryptor#decryptSessions}
816
- */
817
- decryptSessions(sessions) {
818
- var _this19 = this;
819
- return _asyncToGenerator(function* () {
820
- return yield _this19.algorithm.decryptSessions(sessions);
821
- })();
822
- }
823
- }
824
- //# sourceMappingURL=backup.js.map