@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,299 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
- /*
4
- Copyright 2016 - 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
- * Defines m.olm encryption/decryption
21
- */
22
-
23
- import { logger } from "../../logger.js";
24
- import * as olmlib from "../olmlib.js";
25
- import { DeviceInfo } from "../deviceinfo.js";
26
- import { DecryptionAlgorithm, EncryptionAlgorithm, registerAlgorithm } from "./base.js";
27
- import { DecryptionFailureCode } from "../../crypto-api/index.js";
28
- import { DecryptionError } from "../../common-crypto/CryptoBackend.js";
29
- var DeviceVerification = DeviceInfo.DeviceVerification;
30
- /**
31
- * Olm encryption implementation
32
- *
33
- * @param params - parameters, as per {@link EncryptionAlgorithm}
34
- */
35
- class OlmEncryption extends EncryptionAlgorithm {
36
- constructor() {
37
- super(...arguments);
38
- _defineProperty(this, "sessionPrepared", false);
39
- _defineProperty(this, "prepPromise", null);
40
- }
41
- /**
42
- * @internal
43
- * @param roomMembers - list of currently-joined users in the room
44
- * @returns Promise which resolves when setup is complete
45
- */
46
- ensureSession(roomMembers) {
47
- if (this.prepPromise) {
48
- // prep already in progress
49
- return this.prepPromise;
50
- }
51
- if (this.sessionPrepared) {
52
- // prep already done
53
- return Promise.resolve();
54
- }
55
- this.prepPromise = this.crypto.downloadKeys(roomMembers).then(() => {
56
- return this.crypto.ensureOlmSessionsForUsers(roomMembers);
57
- }).then(() => {
58
- this.sessionPrepared = true;
59
- }).finally(() => {
60
- this.prepPromise = null;
61
- });
62
- return this.prepPromise;
63
- }
64
-
65
- /**
66
- * @param content - plaintext event content
67
- *
68
- * @returns Promise which resolves to the new event body
69
- */
70
- encryptMessage(room, eventType, content) {
71
- var _this = this;
72
- return _asyncToGenerator(function* () {
73
- // pick the list of recipients based on the membership list.
74
- //
75
- // TODO: there is a race condition here! What if a new user turns up
76
- // just as you are sending a secret message?
77
-
78
- var members = yield room.getEncryptionTargetMembers();
79
- var users = members.map(function (u) {
80
- return u.userId;
81
- });
82
- yield _this.ensureSession(users);
83
- var payloadFields = {
84
- room_id: room.roomId,
85
- type: eventType,
86
- content: content
87
- };
88
- var encryptedContent = {
89
- algorithm: olmlib.OLM_ALGORITHM,
90
- sender_key: _this.olmDevice.deviceCurve25519Key,
91
- ciphertext: {}
92
- };
93
- var promises = [];
94
- for (var userId of users) {
95
- var devices = _this.crypto.getStoredDevicesForUser(userId) || [];
96
- for (var deviceInfo of devices) {
97
- var key = deviceInfo.getIdentityKey();
98
- if (key == _this.olmDevice.deviceCurve25519Key) {
99
- // don't bother sending to ourself
100
- continue;
101
- }
102
- if (deviceInfo.verified == DeviceVerification.BLOCKED) {
103
- // don't bother setting up sessions with blocked users
104
- continue;
105
- }
106
- promises.push(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, _this.userId, _this.deviceId, _this.olmDevice, userId, deviceInfo, payloadFields));
107
- }
108
- }
109
- return Promise.all(promises).then(() => encryptedContent);
110
- })();
111
- }
112
- }
113
-
114
- /**
115
- * Olm decryption implementation
116
- *
117
- * @param params - parameters, as per {@link DecryptionAlgorithm}
118
- */
119
- class OlmDecryption extends DecryptionAlgorithm {
120
- /**
121
- * returns a promise which resolves to a
122
- * {@link EventDecryptionResult} once we have finished
123
- * decrypting. Rejects with an `algorithms.DecryptionError` if there is a
124
- * problem decrypting the event.
125
- */
126
- decryptEvent(event) {
127
- var _this2 = this;
128
- return _asyncToGenerator(function* () {
129
- var content = event.getWireContent();
130
- var deviceKey = content.sender_key;
131
- var ciphertext = content.ciphertext;
132
- if (!ciphertext) {
133
- throw new DecryptionError(DecryptionFailureCode.OLM_MISSING_CIPHERTEXT, "Missing ciphertext");
134
- }
135
- if (!(_this2.olmDevice.deviceCurve25519Key in ciphertext)) {
136
- throw new DecryptionError(DecryptionFailureCode.OLM_NOT_INCLUDED_IN_RECIPIENTS, "Not included in recipients");
137
- }
138
- var message = ciphertext[_this2.olmDevice.deviceCurve25519Key];
139
- var payloadString;
140
- try {
141
- payloadString = yield _this2.decryptMessage(deviceKey, message);
142
- } catch (e) {
143
- throw new DecryptionError(DecryptionFailureCode.OLM_BAD_ENCRYPTED_MESSAGE, "Bad Encrypted Message", {
144
- sender: deviceKey,
145
- err: e
146
- });
147
- }
148
- var payload = JSON.parse(payloadString);
149
-
150
- // check that we were the intended recipient, to avoid unknown-key attack
151
- // https://github.com/vector-im/vector-web/issues/2483
152
- if (payload.recipient != _this2.userId) {
153
- throw new DecryptionError(DecryptionFailureCode.OLM_BAD_RECIPIENT, "Message was intended for " + payload.recipient);
154
- }
155
- if (payload.recipient_keys.ed25519 != _this2.olmDevice.deviceEd25519Key) {
156
- throw new DecryptionError(DecryptionFailureCode.OLM_BAD_RECIPIENT_KEY, "Message not intended for this device", {
157
- intended: payload.recipient_keys.ed25519,
158
- our_key: _this2.olmDevice.deviceEd25519Key
159
- });
160
- }
161
-
162
- // check that the device that encrypted the event belongs to the user that the event claims it's from.
163
- //
164
- // If the device is unknown then we check that we don't have any pending key-query requests for the sender. If
165
- // after that the device is still unknown, then we can only assume that the device logged out and accept it
166
- // anyway. Some event handlers, such as secret sharing, may be more strict and reject events that come from
167
- // unknown devices.
168
- //
169
- // This is a defence against the following scenario:
170
- //
171
- // * Alice has verified Bob and Mallory.
172
- // * Mallory gets control of Alice's server, and sends a megolm session to Alice using her (Mallory's)
173
- // senderkey, but claiming to be from Bob.
174
- // * Mallory sends more events using that session, claiming to be from Bob.
175
- // * Alice sees that the senderkey is verified (since she verified Mallory) so marks events those events as
176
- // verified even though the sender is forged.
177
- //
178
- // In practice, it's not clear that the js-sdk would behave that way, so this may be only a defence in depth.
179
-
180
- var senderKeyUser = _this2.crypto.deviceList.getUserByIdentityKey(olmlib.OLM_ALGORITHM, deviceKey);
181
- if (senderKeyUser === undefined || senderKeyUser === null) {
182
- // Wait for any pending key query fetches for the user to complete before trying the lookup again.
183
- try {
184
- yield _this2.crypto.deviceList.downloadKeys([event.getSender()], false);
185
- } catch (e) {
186
- throw new DecryptionError(DecryptionFailureCode.OLM_BAD_SENDER_CHECK_FAILED, "Could not verify sender identity", {
187
- sender: deviceKey,
188
- err: e
189
- });
190
- }
191
- senderKeyUser = _this2.crypto.deviceList.getUserByIdentityKey(olmlib.OLM_ALGORITHM, deviceKey);
192
- }
193
- if (senderKeyUser !== event.getSender() && senderKeyUser !== undefined && senderKeyUser !== null) {
194
- throw new DecryptionError(DecryptionFailureCode.OLM_BAD_SENDER, "Message claimed to be from " + event.getSender(), {
195
- real_sender: senderKeyUser
196
- });
197
- }
198
-
199
- // check that the original sender matches what the homeserver told us, to
200
- // avoid people masquerading as others.
201
- // (this check is also provided via the sender's embedded ed25519 key,
202
- // which is checked elsewhere).
203
- if (payload.sender != event.getSender()) {
204
- throw new DecryptionError(DecryptionFailureCode.OLM_FORWARDED_MESSAGE, "Message forwarded from " + payload.sender, {
205
- reported_sender: event.getSender()
206
- });
207
- }
208
-
209
- // Olm events intended for a room have a room_id.
210
- if (payload.room_id !== event.getRoomId()) {
211
- throw new DecryptionError(DecryptionFailureCode.OLM_BAD_ROOM, "Message intended for room " + payload.room_id, {
212
- reported_room: event.getRoomId() || "ROOM_ID_UNDEFINED"
213
- });
214
- }
215
- var claimedKeys = payload.keys || {};
216
- return {
217
- clearEvent: payload,
218
- senderCurve25519Key: deviceKey,
219
- claimedEd25519Key: claimedKeys.ed25519 || null
220
- };
221
- })();
222
- }
223
-
224
- /**
225
- * Attempt to decrypt an Olm message
226
- *
227
- * @param theirDeviceIdentityKey - Curve25519 identity key of the sender
228
- * @param message - message object, with 'type' and 'body' fields
229
- *
230
- * @returns payload, if decrypted successfully.
231
- */
232
- decryptMessage(theirDeviceIdentityKey, message) {
233
- // This is a wrapper that serialises decryptions of prekey messages, because
234
- // otherwise we race between deciding we have no active sessions for the message
235
- // and creating a new one, which we can only do once because it removes the OTK.
236
- if (message.type !== 0) {
237
- // not a prekey message: we can safely just try & decrypt it
238
- return this.reallyDecryptMessage(theirDeviceIdentityKey, message);
239
- } else {
240
- var myPromise = this.olmDevice.olmPrekeyPromise.then(() => {
241
- return this.reallyDecryptMessage(theirDeviceIdentityKey, message);
242
- });
243
- // we want the error, but don't propagate it to the next decryption
244
- this.olmDevice.olmPrekeyPromise = myPromise.catch(() => {});
245
- return myPromise;
246
- }
247
- }
248
- reallyDecryptMessage(theirDeviceIdentityKey, message) {
249
- var _this3 = this;
250
- return _asyncToGenerator(function* () {
251
- var sessionIds = yield _this3.olmDevice.getSessionIdsForDevice(theirDeviceIdentityKey);
252
-
253
- // try each session in turn.
254
- var decryptionErrors = {};
255
- for (var sessionId of sessionIds) {
256
- try {
257
- var payload = yield _this3.olmDevice.decryptMessage(theirDeviceIdentityKey, sessionId, message.type, message.body);
258
- logger.log("Decrypted Olm message from " + theirDeviceIdentityKey + " with session " + sessionId);
259
- return payload;
260
- } catch (e) {
261
- var foundSession = yield _this3.olmDevice.matchesSession(theirDeviceIdentityKey, sessionId, message.type, message.body);
262
- if (foundSession) {
263
- // decryption failed, but it was a prekey message matching this
264
- // session, so it should have worked.
265
- throw new Error("Error decrypting prekey message with existing session id " + sessionId + ": " + e.message);
266
- }
267
-
268
- // otherwise it's probably a message for another session; carry on, but
269
- // keep a record of the error
270
- decryptionErrors[sessionId] = e.message;
271
- }
272
- }
273
- if (message.type !== 0) {
274
- // not a prekey message, so it should have matched an existing session, but it
275
- // didn't work.
276
-
277
- if (sessionIds.length === 0) {
278
- throw new Error("No existing sessions");
279
- }
280
- throw new Error("Error decrypting non-prekey message with existing sessions: " + JSON.stringify(decryptionErrors));
281
- }
282
-
283
- // prekey message which doesn't match any existing sessions: make a new
284
- // session.
285
-
286
- var res;
287
- try {
288
- res = yield _this3.olmDevice.createInboundSession(theirDeviceIdentityKey, message.type, message.body);
289
- } catch (e) {
290
- decryptionErrors["(new)"] = e.message;
291
- throw new Error("Error decrypting prekey message: " + JSON.stringify(decryptionErrors));
292
- }
293
- logger.log("created new inbound Olm session ID " + res.session_id + " with " + theirDeviceIdentityKey);
294
- return res.payload;
295
- })();
296
- }
297
- }
298
- registerAlgorithm(olmlib.OLM_ALGORITHM, OlmEncryption, OlmDecryption);
299
- //# sourceMappingURL=olm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"olm.js","names":["logger","olmlib","DeviceInfo","DecryptionAlgorithm","EncryptionAlgorithm","registerAlgorithm","DecryptionFailureCode","DecryptionError","DeviceVerification","OlmEncryption","constructor","arguments","_defineProperty","ensureSession","roomMembers","prepPromise","sessionPrepared","Promise","resolve","crypto","downloadKeys","then","ensureOlmSessionsForUsers","finally","encryptMessage","room","eventType","content","_this","_asyncToGenerator","members","getEncryptionTargetMembers","users","map","u","userId","payloadFields","room_id","roomId","type","encryptedContent","algorithm","OLM_ALGORITHM","sender_key","olmDevice","deviceCurve25519Key","ciphertext","promises","devices","getStoredDevicesForUser","deviceInfo","key","getIdentityKey","verified","BLOCKED","push","encryptMessageForDevice","deviceId","all","OlmDecryption","decryptEvent","event","_this2","getWireContent","deviceKey","OLM_MISSING_CIPHERTEXT","OLM_NOT_INCLUDED_IN_RECIPIENTS","message","payloadString","decryptMessage","e","OLM_BAD_ENCRYPTED_MESSAGE","sender","err","payload","JSON","parse","recipient","OLM_BAD_RECIPIENT","recipient_keys","ed25519","deviceEd25519Key","OLM_BAD_RECIPIENT_KEY","intended","our_key","senderKeyUser","deviceList","getUserByIdentityKey","undefined","getSender","OLM_BAD_SENDER_CHECK_FAILED","OLM_BAD_SENDER","real_sender","OLM_FORWARDED_MESSAGE","reported_sender","getRoomId","OLM_BAD_ROOM","reported_room","claimedKeys","keys","clearEvent","senderCurve25519Key","claimedEd25519Key","theirDeviceIdentityKey","reallyDecryptMessage","myPromise","olmPrekeyPromise","catch","_this3","sessionIds","getSessionIdsForDevice","decryptionErrors","sessionId","body","log","foundSession","matchesSession","Error","length","stringify","res","createInboundSession","session_id"],"sources":["../../../src/crypto/algorithms/olm.ts"],"sourcesContent":["/*\nCopyright 2016 - 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Defines m.olm encryption/decryption\n */\n\nimport type { IEventDecryptionResult } from \"../../@types/crypto.ts\";\nimport { logger } from \"../../logger.ts\";\nimport * as olmlib from \"../olmlib.ts\";\nimport { DeviceInfo } from \"../deviceinfo.ts\";\nimport { DecryptionAlgorithm, EncryptionAlgorithm, registerAlgorithm } from \"./base.ts\";\nimport { Room } from \"../../models/room.ts\";\nimport { IContent, MatrixEvent } from \"../../models/event.ts\";\nimport { IEncryptedContent, IOlmEncryptedContent } from \"../index.ts\";\nimport { IInboundSession } from \"../OlmDevice.ts\";\nimport { DecryptionFailureCode } from \"../../crypto-api/index.ts\";\nimport { DecryptionError } from \"../../common-crypto/CryptoBackend.ts\";\n\nconst DeviceVerification = DeviceInfo.DeviceVerification;\n\nexport interface IMessage {\n type: number;\n body: string;\n}\n\n/**\n * Olm encryption implementation\n *\n * @param params - parameters, as per {@link EncryptionAlgorithm}\n */\nclass OlmEncryption extends EncryptionAlgorithm {\n private sessionPrepared = false;\n private prepPromise: Promise<void> | null = null;\n\n /**\n * @internal\n\n * @param roomMembers - list of currently-joined users in the room\n * @returns Promise which resolves when setup is complete\n */\n private ensureSession(roomMembers: string[]): Promise<void> {\n if (this.prepPromise) {\n // prep already in progress\n return this.prepPromise;\n }\n\n if (this.sessionPrepared) {\n // prep already done\n return Promise.resolve();\n }\n\n this.prepPromise = this.crypto\n .downloadKeys(roomMembers)\n .then(() => {\n return this.crypto.ensureOlmSessionsForUsers(roomMembers);\n })\n .then(() => {\n this.sessionPrepared = true;\n })\n .finally(() => {\n this.prepPromise = null;\n });\n\n return this.prepPromise;\n }\n\n /**\n * @param content - plaintext event content\n *\n * @returns Promise which resolves to the new event body\n */\n public async encryptMessage(room: Room, eventType: string, content: IContent): Promise<IOlmEncryptedContent> {\n // pick the list of recipients based on the membership list.\n //\n // TODO: there is a race condition here! What if a new user turns up\n // just as you are sending a secret message?\n\n const members = await room.getEncryptionTargetMembers();\n\n const users = members.map(function (u) {\n return u.userId;\n });\n\n await this.ensureSession(users);\n\n const payloadFields = {\n room_id: room.roomId,\n type: eventType,\n content: content,\n };\n\n const encryptedContent: IEncryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: this.olmDevice.deviceCurve25519Key!,\n ciphertext: {},\n };\n\n const promises: Promise<void>[] = [];\n\n for (const userId of users) {\n const devices = this.crypto.getStoredDevicesForUser(userId) || [];\n\n for (const deviceInfo of devices) {\n const key = deviceInfo.getIdentityKey();\n if (key == this.olmDevice.deviceCurve25519Key) {\n // don't bother sending to ourself\n continue;\n }\n if (deviceInfo.verified == DeviceVerification.BLOCKED) {\n // don't bother setting up sessions with blocked users\n continue;\n }\n\n promises.push(\n olmlib.encryptMessageForDevice(\n encryptedContent.ciphertext,\n this.userId,\n this.deviceId,\n this.olmDevice,\n userId,\n deviceInfo,\n payloadFields,\n ),\n );\n }\n }\n\n return Promise.all(promises).then(() => encryptedContent);\n }\n}\n\n/**\n * Olm decryption implementation\n *\n * @param params - parameters, as per {@link DecryptionAlgorithm}\n */\nclass OlmDecryption extends DecryptionAlgorithm {\n /**\n * returns a promise which resolves to a\n * {@link EventDecryptionResult} once we have finished\n * decrypting. Rejects with an `algorithms.DecryptionError` if there is a\n * problem decrypting the event.\n */\n public async decryptEvent(event: MatrixEvent): Promise<IEventDecryptionResult> {\n const content = event.getWireContent();\n const deviceKey = content.sender_key;\n const ciphertext = content.ciphertext;\n\n if (!ciphertext) {\n throw new DecryptionError(DecryptionFailureCode.OLM_MISSING_CIPHERTEXT, \"Missing ciphertext\");\n }\n\n if (!(this.olmDevice.deviceCurve25519Key! in ciphertext)) {\n throw new DecryptionError(\n DecryptionFailureCode.OLM_NOT_INCLUDED_IN_RECIPIENTS,\n \"Not included in recipients\",\n );\n }\n const message = ciphertext[this.olmDevice.deviceCurve25519Key!];\n let payloadString: string;\n\n try {\n payloadString = await this.decryptMessage(deviceKey, message);\n } catch (e) {\n throw new DecryptionError(DecryptionFailureCode.OLM_BAD_ENCRYPTED_MESSAGE, \"Bad Encrypted Message\", {\n sender: deviceKey,\n err: e as Error,\n });\n }\n\n const payload = JSON.parse(payloadString);\n\n // check that we were the intended recipient, to avoid unknown-key attack\n // https://github.com/vector-im/vector-web/issues/2483\n if (payload.recipient != this.userId) {\n throw new DecryptionError(\n DecryptionFailureCode.OLM_BAD_RECIPIENT,\n \"Message was intended for \" + payload.recipient,\n );\n }\n\n if (payload.recipient_keys.ed25519 != this.olmDevice.deviceEd25519Key) {\n throw new DecryptionError(\n DecryptionFailureCode.OLM_BAD_RECIPIENT_KEY,\n \"Message not intended for this device\",\n {\n intended: payload.recipient_keys.ed25519,\n our_key: this.olmDevice.deviceEd25519Key!,\n },\n );\n }\n\n // check that the device that encrypted the event belongs to the user that the event claims it's from.\n //\n // If the device is unknown then we check that we don't have any pending key-query requests for the sender. If\n // after that the device is still unknown, then we can only assume that the device logged out and accept it\n // anyway. Some event handlers, such as secret sharing, may be more strict and reject events that come from\n // unknown devices.\n //\n // This is a defence against the following scenario:\n //\n // * Alice has verified Bob and Mallory.\n // * Mallory gets control of Alice's server, and sends a megolm session to Alice using her (Mallory's)\n // senderkey, but claiming to be from Bob.\n // * Mallory sends more events using that session, claiming to be from Bob.\n // * Alice sees that the senderkey is verified (since she verified Mallory) so marks events those events as\n // verified even though the sender is forged.\n //\n // In practice, it's not clear that the js-sdk would behave that way, so this may be only a defence in depth.\n\n let senderKeyUser = this.crypto.deviceList.getUserByIdentityKey(olmlib.OLM_ALGORITHM, deviceKey);\n if (senderKeyUser === undefined || senderKeyUser === null) {\n // Wait for any pending key query fetches for the user to complete before trying the lookup again.\n try {\n await this.crypto.deviceList.downloadKeys([event.getSender()!], false);\n } catch (e) {\n throw new DecryptionError(\n DecryptionFailureCode.OLM_BAD_SENDER_CHECK_FAILED,\n \"Could not verify sender identity\",\n {\n sender: deviceKey,\n err: e as Error,\n },\n );\n }\n\n senderKeyUser = this.crypto.deviceList.getUserByIdentityKey(olmlib.OLM_ALGORITHM, deviceKey);\n }\n if (senderKeyUser !== event.getSender() && senderKeyUser !== undefined && senderKeyUser !== null) {\n throw new DecryptionError(\n DecryptionFailureCode.OLM_BAD_SENDER,\n \"Message claimed to be from \" + event.getSender(),\n {\n real_sender: senderKeyUser,\n },\n );\n }\n\n // check that the original sender matches what the homeserver told us, to\n // avoid people masquerading as others.\n // (this check is also provided via the sender's embedded ed25519 key,\n // which is checked elsewhere).\n if (payload.sender != event.getSender()) {\n throw new DecryptionError(\n DecryptionFailureCode.OLM_FORWARDED_MESSAGE,\n \"Message forwarded from \" + payload.sender,\n {\n reported_sender: event.getSender()!,\n },\n );\n }\n\n // Olm events intended for a room have a room_id.\n if (payload.room_id !== event.getRoomId()) {\n throw new DecryptionError(\n DecryptionFailureCode.OLM_BAD_ROOM,\n \"Message intended for room \" + payload.room_id,\n {\n reported_room: event.getRoomId() || \"ROOM_ID_UNDEFINED\",\n },\n );\n }\n\n const claimedKeys = payload.keys || {};\n\n return {\n clearEvent: payload,\n senderCurve25519Key: deviceKey,\n claimedEd25519Key: claimedKeys.ed25519 || null,\n };\n }\n\n /**\n * Attempt to decrypt an Olm message\n *\n * @param theirDeviceIdentityKey - Curve25519 identity key of the sender\n * @param message - message object, with 'type' and 'body' fields\n *\n * @returns payload, if decrypted successfully.\n */\n private decryptMessage(theirDeviceIdentityKey: string, message: IMessage): Promise<string> {\n // This is a wrapper that serialises decryptions of prekey messages, because\n // otherwise we race between deciding we have no active sessions for the message\n // and creating a new one, which we can only do once because it removes the OTK.\n if (message.type !== 0) {\n // not a prekey message: we can safely just try & decrypt it\n return this.reallyDecryptMessage(theirDeviceIdentityKey, message);\n } else {\n const myPromise = this.olmDevice.olmPrekeyPromise.then(() => {\n return this.reallyDecryptMessage(theirDeviceIdentityKey, message);\n });\n // we want the error, but don't propagate it to the next decryption\n this.olmDevice.olmPrekeyPromise = myPromise.catch(() => {});\n return myPromise;\n }\n }\n\n private async reallyDecryptMessage(theirDeviceIdentityKey: string, message: IMessage): Promise<string> {\n const sessionIds = await this.olmDevice.getSessionIdsForDevice(theirDeviceIdentityKey);\n\n // try each session in turn.\n const decryptionErrors: Record<string, string> = {};\n for (const sessionId of sessionIds) {\n try {\n const payload = await this.olmDevice.decryptMessage(\n theirDeviceIdentityKey,\n sessionId,\n message.type,\n message.body,\n );\n logger.log(\"Decrypted Olm message from \" + theirDeviceIdentityKey + \" with session \" + sessionId);\n return payload;\n } catch (e) {\n const foundSession = await this.olmDevice.matchesSession(\n theirDeviceIdentityKey,\n sessionId,\n message.type,\n message.body,\n );\n\n if (foundSession) {\n // decryption failed, but it was a prekey message matching this\n // session, so it should have worked.\n throw new Error(\n \"Error decrypting prekey message with existing session id \" +\n sessionId +\n \": \" +\n (<Error>e).message,\n );\n }\n\n // otherwise it's probably a message for another session; carry on, but\n // keep a record of the error\n decryptionErrors[sessionId] = (<Error>e).message;\n }\n }\n\n if (message.type !== 0) {\n // not a prekey message, so it should have matched an existing session, but it\n // didn't work.\n\n if (sessionIds.length === 0) {\n throw new Error(\"No existing sessions\");\n }\n\n throw new Error(\n \"Error decrypting non-prekey message with existing sessions: \" + JSON.stringify(decryptionErrors),\n );\n }\n\n // prekey message which doesn't match any existing sessions: make a new\n // session.\n\n let res: IInboundSession;\n try {\n res = await this.olmDevice.createInboundSession(theirDeviceIdentityKey, message.type, message.body);\n } catch (e) {\n decryptionErrors[\"(new)\"] = (<Error>e).message;\n throw new Error(\"Error decrypting prekey message: \" + JSON.stringify(decryptionErrors));\n }\n\n logger.log(\"created new inbound Olm session ID \" + res.session_id + \" with \" + theirDeviceIdentityKey);\n return res.payload;\n }\n}\n\nregisterAlgorithm(olmlib.OLM_ALGORITHM, OlmEncryption, OlmDecryption);\n"],"mappings":"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","ignoreList":[]}
@@ -1,32 +0,0 @@
1
- import { DeviceInfo } from "./deviceinfo.ts";
2
- export { CrossSigningKey } from "../crypto-api/index.ts";
3
- export type { GeneratedSecretStorageKey as IRecoveryKey, CreateSecretStorageOpts as ICreateSecretStorageOpts, } from "../crypto-api/index.ts";
4
- export type { ImportRoomKeyProgressData as IImportOpts, ImportRoomKeysOpts as IImportRoomKeysOpts, } from "../crypto-api/index.ts";
5
- export type { AddSecretStorageKeyOpts as IAddSecretStorageKeyOpts, PassphraseInfo as IPassphraseInfo, SecretStorageKeyDescription as ISecretStorageKeyInfo, } from "../secret-storage.ts";
6
- export interface IEncryptedEventInfo {
7
- /**
8
- * whether the event is encrypted (if not encrypted, some of the other properties may not be set)
9
- */
10
- encrypted: boolean;
11
- /**
12
- * the sender's key
13
- */
14
- senderKey: string;
15
- /**
16
- * the algorithm used to encrypt the event
17
- */
18
- algorithm: string;
19
- /**
20
- * whether we can be sure that the owner of the senderKey sent the event
21
- */
22
- authenticated: boolean;
23
- /**
24
- * the sender's device information, if available
25
- */
26
- sender?: DeviceInfo;
27
- /**
28
- * if the event's ed25519 and curve25519 keys don't match (only meaningful if `sender` is set)
29
- */
30
- mismatchedSender: boolean;
31
- }
32
- //# sourceMappingURL=api.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/crypto/api.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EACR,yBAAyB,IAAI,YAAY,EACzC,uBAAuB,IAAI,wBAAwB,GACtD,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACR,yBAAyB,IAAI,WAAW,EACxC,kBAAkB,IAAI,mBAAmB,GAC5C,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACR,uBAAuB,IAAI,wBAAwB,EACnD,cAAc,IAAI,eAAe,EACjC,2BAA2B,IAAI,qBAAqB,GACvD,MAAM,sBAAsB,CAAC;AAI9B,MAAM,WAAW,mBAAmB;IAChC;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB;;OAEG;IACH,gBAAgB,EAAE,OAAO,CAAC;CAC7B"}
package/lib/crypto/api.js DELETED
@@ -1,22 +0,0 @@
1
- /*
2
- Copyright 2021 The Matrix.org Foundation C.I.C.
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- */
16
-
17
- /* re-exports for backwards compatibility. */
18
- // CrossSigningKey is used as a value in `client.ts`, we can't export it as a type
19
- export { CrossSigningKey } from "../crypto-api/index.js";
20
-
21
- // TODO: Merge this with crypto.js once converted
22
- //# sourceMappingURL=api.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","names":["CrossSigningKey"],"sources":["../../src/crypto/api.ts"],"sourcesContent":["/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { DeviceInfo } from \"./deviceinfo.ts\";\n\n/* re-exports for backwards compatibility. */\n// CrossSigningKey is used as a value in `client.ts`, we can't export it as a type\nexport { CrossSigningKey } from \"../crypto-api/index.ts\";\nexport type {\n GeneratedSecretStorageKey as IRecoveryKey,\n CreateSecretStorageOpts as ICreateSecretStorageOpts,\n} from \"../crypto-api/index.ts\";\n\nexport type {\n ImportRoomKeyProgressData as IImportOpts,\n ImportRoomKeysOpts as IImportRoomKeysOpts,\n} from \"../crypto-api/index.ts\";\n\nexport type {\n AddSecretStorageKeyOpts as IAddSecretStorageKeyOpts,\n PassphraseInfo as IPassphraseInfo,\n SecretStorageKeyDescription as ISecretStorageKeyInfo,\n} from \"../secret-storage.ts\";\n\n// TODO: Merge this with crypto.js once converted\n\nexport interface IEncryptedEventInfo {\n /**\n * whether the event is encrypted (if not encrypted, some of the other properties may not be set)\n */\n encrypted: boolean;\n\n /**\n * the sender's key\n */\n senderKey: string;\n\n /**\n * the algorithm used to encrypt the event\n */\n algorithm: string;\n\n /**\n * whether we can be sure that the owner of the senderKey sent the event\n */\n authenticated: boolean;\n\n /**\n * the sender's device information, if available\n */\n sender?: DeviceInfo;\n\n /**\n * if the event's ed25519 and curve25519 keys don't match (only meaningful if `sender` is set)\n */\n mismatchedSender: boolean;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA,SAASA,eAAe,QAAQ,wBAAwB;;AAiBxD","ignoreList":[]}
@@ -1,227 +0,0 @@
1
- /**
2
- * Classes for dealing with key backup.
3
- */
4
- import type { IMegolmSessionData } from "../@types/crypto.ts";
5
- import { MatrixClient } from "../client.ts";
6
- import { DeviceInfo } from "./deviceinfo.ts";
7
- import { DeviceTrustLevel } from "./CrossSigning.ts";
8
- import { Curve25519SessionData, IAes256AuthData, ICurve25519AuthData, IKeyBackupInfo, IKeyBackupSession } from "./keybackup.ts";
9
- import { BackupTrustInfo } from "../crypto-api/keybackup.ts";
10
- import { BackupDecryptor } from "../common-crypto/CryptoBackend.ts";
11
- import { AESEncryptedSecretStoragePayload } from "../@types/AESEncryptedSecretStoragePayload.ts";
12
- type AuthData = IKeyBackupInfo["auth_data"];
13
- type SigInfo = {
14
- deviceId: string;
15
- valid?: boolean | null;
16
- device?: DeviceInfo | null;
17
- crossSigningId?: boolean;
18
- deviceTrust?: DeviceTrustLevel;
19
- };
20
- /** @deprecated Prefer {@link BackupTrustInfo} */
21
- export type TrustInfo = {
22
- usable: boolean;
23
- sigs: SigInfo[];
24
- trusted_locally?: boolean;
25
- };
26
- export interface IKeyBackupCheck {
27
- backupInfo?: IKeyBackupInfo;
28
- trustInfo: TrustInfo;
29
- }
30
- export interface IPreparedKeyBackupVersion {
31
- algorithm: string;
32
- auth_data: AuthData;
33
- recovery_key: string;
34
- privateKey: Uint8Array;
35
- }
36
- /** A function used to get the secret key for a backup.
37
- */
38
- type GetKey = () => Promise<ArrayLike<number>>;
39
- interface BackupAlgorithmClass {
40
- algorithmName: string;
41
- init(authData: AuthData, getKey: GetKey): Promise<BackupAlgorithm>;
42
- prepare(key?: string | Uint8Array | null): Promise<[Uint8Array, AuthData]>;
43
- checkBackupVersion(info: IKeyBackupInfo): void;
44
- }
45
- interface BackupAlgorithm {
46
- untrusted: boolean;
47
- encryptSession(data: Record<string, any>): Promise<Curve25519SessionData | AESEncryptedSecretStoragePayload>;
48
- decryptSessions(ciphertexts: Record<string, IKeyBackupSession>): Promise<IMegolmSessionData[]>;
49
- authData: AuthData;
50
- keyMatches(key: ArrayLike<number>): Promise<boolean>;
51
- free(): void;
52
- }
53
- export interface IKeyBackup {
54
- rooms: {
55
- [roomId: string]: {
56
- sessions: {
57
- [sessionId: string]: IKeyBackupSession;
58
- };
59
- };
60
- };
61
- }
62
- /**
63
- * Manages the key backup.
64
- */
65
- export declare class BackupManager {
66
- private readonly baseApis;
67
- readonly getKey: GetKey;
68
- private algorithm;
69
- backupInfo: IKeyBackupInfo | undefined;
70
- checkedForBackup: boolean;
71
- private sendingBackups;
72
- private sessionLastCheckAttemptedTime;
73
- private clientRunning;
74
- constructor(baseApis: MatrixClient, getKey: GetKey);
75
- /**
76
- * Stop the backup manager from backing up keys and allow a clean shutdown.
77
- */
78
- stop(): void;
79
- get version(): string | undefined;
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: IKeyBackupInfo): void;
88
- static makeAlgorithm(info: IKeyBackupInfo, getKey: GetKey): Promise<BackupAlgorithm>;
89
- enableKeyBackup(info: IKeyBackupInfo): Promise<void>;
90
- /**
91
- * Disable backing up of keys.
92
- */
93
- disableKeyBackup(): void;
94
- getKeyBackupEnabled(): boolean | null;
95
- prepareKeyBackupVersion(key?: string | Uint8Array | null, algorithm?: string | undefined): Promise<IPreparedKeyBackupVersion>;
96
- createKeyBackupVersion(info: IKeyBackupInfo): Promise<void>;
97
- /**
98
- * Deletes all key backups.
99
- *
100
- * Will call the API to delete active backup until there is no more present.
101
- */
102
- deleteAllKeyBackupVersions(): Promise<void>;
103
- /**
104
- * Deletes the given key backup.
105
- *
106
- * @param version - The backup version to delete.
107
- */
108
- deleteKeyBackupVersion(version: string): Promise<void>;
109
- /**
110
- * Check the server for an active key backup and
111
- * if one is present and has a valid signature from
112
- * one of the user's verified devices, start backing up
113
- * to it.
114
- */
115
- checkAndStart(): Promise<IKeyBackupCheck | null>;
116
- /**
117
- * Forces a re-check of the key backup and enables/disables it
118
- * as appropriate.
119
- *
120
- * @returns Object with backup info (as returned by
121
- * getKeyBackupVersion) in backupInfo and
122
- * trust information (as returned by isKeyBackupTrusted)
123
- * in trustInfo.
124
- */
125
- checkKeyBackup(): Promise<IKeyBackupCheck | null>;
126
- /**
127
- * Attempts to retrieve a session from a key backup, if enough time
128
- * has elapsed since the last check for this session id.
129
- */
130
- queryKeyBackupRateLimited(targetRoomId: string | undefined, targetSessionId: string | undefined): Promise<void>;
131
- /**
132
- * Check if the given backup info is trusted.
133
- *
134
- * @param backupInfo - key backup info dict from /room_keys/version
135
- */
136
- isKeyBackupTrusted(backupInfo?: IKeyBackupInfo): Promise<TrustInfo>;
137
- /**
138
- * Schedules sending all keys waiting to be sent to the backup, if not already
139
- * scheduled. Retries if necessary.
140
- *
141
- * @param maxDelay - Maximum delay to wait in ms. 0 means no delay.
142
- */
143
- scheduleKeyBackupSend(maxDelay?: number): Promise<void>;
144
- /**
145
- * Take some e2e keys waiting to be backed up and send them
146
- * to the backup.
147
- *
148
- * @param limit - Maximum number of keys to back up
149
- * @returns Number of sessions backed up
150
- */
151
- backupPendingKeys(limit: number): Promise<number>;
152
- backupGroupSession(senderKey: string, sessionId: string): Promise<void>;
153
- /**
154
- * Marks all group sessions as needing to be backed up and schedules them to
155
- * upload in the background as soon as possible.
156
- */
157
- scheduleAllGroupSessionsForBackup(): Promise<void>;
158
- /**
159
- * Marks all group sessions as needing to be backed up without scheduling
160
- * them to upload in the background.
161
- * @returns Promise which resolves to the number of sessions now requiring a backup
162
- * (which will be equal to the number of sessions in the store).
163
- */
164
- flagAllGroupSessionsForBackup(): Promise<number>;
165
- /**
166
- * Counts the number of end to end session keys that are waiting to be backed up
167
- * @returns Promise which resolves to the number of sessions requiring backup
168
- */
169
- countSessionsNeedingBackup(): Promise<number>;
170
- }
171
- export declare class Curve25519 implements BackupAlgorithm {
172
- authData: ICurve25519AuthData;
173
- private publicKey;
174
- private getKey;
175
- static algorithmName: string;
176
- constructor(authData: ICurve25519AuthData, publicKey: any, // FIXME: PkEncryption
177
- getKey: () => Promise<Uint8Array>);
178
- static init(authData: AuthData, getKey: () => Promise<Uint8Array>): Promise<Curve25519>;
179
- static prepare(key?: string | Uint8Array | null): Promise<[Uint8Array, AuthData]>;
180
- static checkBackupVersion(info: IKeyBackupInfo): void;
181
- get untrusted(): boolean;
182
- encryptSession(data: Record<string, any>): Promise<Curve25519SessionData>;
183
- decryptSessions(sessions: Record<string, IKeyBackupSession<Curve25519SessionData>>): Promise<IMegolmSessionData[]>;
184
- keyMatches(key: Uint8Array): Promise<boolean>;
185
- free(): void;
186
- }
187
- export declare class Aes256 implements BackupAlgorithm {
188
- readonly authData: IAes256AuthData;
189
- private readonly key;
190
- static algorithmName: "org.matrix.msc3270.v1.aes-hmac-sha2";
191
- constructor(authData: IAes256AuthData, key: Uint8Array);
192
- static init(authData: IAes256AuthData, getKey: () => Promise<Uint8Array>): Promise<Aes256>;
193
- static prepare(key?: string | Uint8Array | null): Promise<[Uint8Array, AuthData]>;
194
- static checkBackupVersion(info: IKeyBackupInfo): void;
195
- get untrusted(): boolean;
196
- encryptSession(data: Record<string, any>): Promise<AESEncryptedSecretStoragePayload>;
197
- decryptSessions(sessions: Record<string, IKeyBackupSession<AESEncryptedSecretStoragePayload>>): Promise<IMegolmSessionData[]>;
198
- keyMatches(key: Uint8Array): Promise<boolean>;
199
- free(): void;
200
- }
201
- export declare const algorithmsByName: Record<string, BackupAlgorithmClass>;
202
- /** @alias */
203
- export declare const DefaultAlgorithm: BackupAlgorithmClass;
204
- /**
205
- * Map a legacy {@link TrustInfo} into a new-style {@link BackupTrustInfo}.
206
- *
207
- * @param trustInfo - trustInfo to convert
208
- */
209
- export declare function backupTrustInfoFromLegacyTrustInfo(trustInfo: TrustInfo): BackupTrustInfo;
210
- /**
211
- * Implementation of {@link BackupDecryptor} for the libolm crypto backend.
212
- */
213
- export declare class LibOlmBackupDecryptor implements BackupDecryptor {
214
- private algorithm;
215
- readonly sourceTrusted: boolean;
216
- constructor(algorithm: BackupAlgorithm);
217
- /**
218
- * Implements {@link BackupDecryptor#free}
219
- */
220
- free(): void;
221
- /**
222
- * Implements {@link BackupDecryptor#decryptSessions}
223
- */
224
- decryptSessions(sessions: Record<string, IKeyBackupSession<Curve25519SessionData>>): Promise<IMegolmSessionData[]>;
225
- }
226
- export {};
227
- //# sourceMappingURL=backup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/crypto/backup.ts"],"names":[],"mappings":"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"}